モデルの著作情報

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

This LLaMA model was trained 2x faster with Unsloth and Hugging Face's TRL library.


モデル(loRAアダプタ)の概要

このリポジトリは、unslothライブラリを使用して、ELYZA-tasks-100-TVデータセットに対する推論を行うためのLoRAアダプタを提供します。推論の結果は、データセットに含まれる各タスクに対する予測結果を、JSON形式で保存します。具体的には、各タスクには一意の識別子(task_id)が付けられており、対応するモデルの出力(output)が生成されます。これらの予測結果は、JSONL形式でファイルに保存され、後から簡単に利用することができます。

必要な環境

注意事項

  • 推論用データ(elyza-tasks-100-TV_0.jsonl)を事前にColabにアップロードしておく必要があります。
  • 推論用データは東京大学松尾研究室主催の大規模言語モデル2024の教材フォルダページから取得できるデータです。
  • Hugging Faceトークンはセキュリティに注意して管理してください。

推論手順(Unsloth + Google Colab)

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

Google Colab上で以下のコードを実行して、必要なライブラリをインストールします。

%%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 peft

2. 必要なライブラリのインポート

次に、推論を行うために必要なライブラリをインポートします。これにより、モデルのロードやデータの処理、推論の実行が可能になります。

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

3. モデルとアダプタの読み込み

ここでは、ベースモデル(llm-jp/llm-jp-3-13b)とLoRAアダプタ(trgt-tgrt/llm-jp-3-13b-instruction_lora)を読み込みます。これにより、LoRAアダプタを使った推論が可能になります。

# ベースモデルとLoRAアダプタのID
model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "trgt-tgrt/llm-jp-3-13b-instruction_lora"

# Hugging Faceトークンを入力
HF_TOKEN = "hoge"  # 取得したトークンをここに入力

# モデルの読み込み
dtype = None  # 自動設定
load_in_4bit = True  # 13Bモデルのため4bit量子化を有効化

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)

4. タスクデータの読み込み

次に、推論に使用するデータセット(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 = ""

5. 推論の実行

ここでは、読み込んだデータをモデルに入力し、推論を実行します。出力は、モデルによって生成された予測結果として取得されます。

FastLanguageModel.for_inference(model) # 推論モードに切り替え

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

    prompt = f"### 指示\n{input_text}\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"], "output": prediction})

6. 結果をJSONL形式で保存

推論結果は、課題提出用フォーマットであるJSONLファイルとして保存されます。各タスクのIDとその結果が記録されます。

# ファイル名を決定して保存
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 Providers NEW
This model is not currently available via any of the supported third-party Inference Providers, and HF Inference API was unable to determine this model’s pipeline type.

Model tree for trgt-tgrt/llm-jp-3-13b-instruction_lora

Finetuned
(1124)
this model