Uploaded model

  • Developed by: ykuma777
  • 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.


実行手順

以下の手順に従うことで、Hugging Face上のモデル(llm-jp/llm-jp-3-13b+ykuma777/my_model_name)を用いて 入力データ(elyza-tasks-100-TV_0.jsonl)を推論し、 その結果を{adapter_id}-outputs.jsonlというファイルに出力できます。

前提条件

Python環境があること(例: Google Colab)
Hugging Faceのアクセストークン (HF_TOKEN) が取得済みであること

以下はGoogle Colabでuserdataを使う例です(実行環境に合わせて適宜変更してください)。

セットアップ 必要なライブラリのインストールを行います。

# 必要なライブラリをインストール
%%capture
!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

# 必要なライブラリを読み込み
from unsloth import FastLanguageModel
from peft import PeftModel
import torch
import json
from tqdm import tqdm
import re

# ベースとなるモデルと学習したLoRAのアダプタ(Hugging FaceのIDを指定)
model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "ykuma777/my_model_name"

Hugging Faceのトークンを取得していることを確認してください。

# Hugging Faceのトークンを取得
from google.colab import userdata
HF_TOKEN = userdata.get('HF_TOKEN')

モデル・トークナイザの読み込み

# 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,
)

# 元のモデルにLoRAのアダプタを統合。
model = PeftModel.from_pretrained(model, adapter_id, token = HF_TOKEN)

入力データの準備

# タスクとなるデータセットの読み込み。
# ./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 = ""

# 推論するためにモデルのモードを変更
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})

出力の保存 最後に、adapter_idをベースにしたファイル名でJSONL形式の出力ファイルを保存します。

# 推論の結果を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')

以上の手順で、{json_file_id}_output.jsonlというファイルに推論結果が書き出されます。


Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API: The model has no pipeline_tag.

Model tree for ykuma777/my_model_name

Finetuned
(1124)
this model