Uploaded model

  • Developed by: sejeshin
  • License: apache-2.0
  • Finetuned from model : llm-jp/llm-jp-3-13b

This llama model was trained 2x faster with Unsloth and Huggingface's TRL library.

出力方法の流れ

  1. 必要ライブラリのインストール
  2. 必要ライブラリの読み込み
  3. ベースモデルと学習したLoRAのアダプタの指定
  4. Hugging Face Tokenの設定
  5. unslothのFastLanguageModelで元のモデルのロード
  6. 元のモデルへのLoRAのアダプタの統合
  7. タスクとなるデータ(elyza-tasks-100-TV_0.jsonl)の読み込み
  8. モデルを用いてタスクの推論
  9. 結果をjsonlへ保存

コード

1. 必要ライブラリのインストール

pip install unsloth
pip uninstall unsloth -y && pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
pip install -U torch
pip install -U peft

2. 必要ライブラリの読み込み

from unsloth import FastLanguageModel
from peft import PeftModel
import torch
import json
from tqdm import tqdm
import re

3. ベースモデルと学習したLoRAのアダプタの指定

model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "sejeshin/llm-jp-3-13b-it2"

4. Hugging Face Tokenの設定

HF_TOKEN = "" #Hugging Faceのトークン

5. unslothのFastLanguageModelで元のモデルのロード

dtype = None # Noneにしておけば自動で設定
load_in_4bit = True # 今回は13Bモデルを扱うためTrue

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name=model_id,
    dtype=dtype,
    load_in_4bit=load_in_4bit,
    trust_remote_code=True,
)

6. 元のモデルへのLoRAのアダプタの統合

model = PeftModel.from_pretrained(model, adapter_id, token = HF_TOKEN)

7. タスクとなるデータ(elyza-tasks-100-TV_0.jsonl)の読み込み

datasets = []
with open("./elyza-tasks-100-TV_0.jsonl", "r") as f:
    item = ""
    for line in f:
      line = line.strip()
      item += line
      if item.endswith("}"):
        datasets.append(json.loads(item))
        item = ""

8. モデルを用いてタスクの推論

FastLanguageModel.for_inference(model)

results = []
for dt in tqdm(datasets):
  input = dt["input"]

  prompt = f"""### 指示\n{input}\n### 回答\n"""

  inputs = tokenizer([prompt], return_tensors = "pt").to(model.device)

  outputs = model.generate(**inputs, max_new_tokens = 512, use_cache = True, do_sample=False, repetition_penalty=1.2)
  prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).split('\n### 回答')[-1]

  results.append({"task_id": dt["task_id"], "input": input, "output": prediction})

9. 結果をjsonlへ保存

json_file_id = re.sub(".*/", "", adapter_id)
with open(f"/content/{json_file_id}_output.jsonl", 'w', encoding='utf-8') as f:
    for result in results:
        json.dump(result, f, ensure_ascii=False)
        f.write('\n')
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference API
Unable to determine this model’s pipeline type. Check the docs .

Model tree for sejeshin/llm-jp-3-13b-it2

Finetuned
(1141)
this model