モデルの概要

このモデルは、松尾研大規模言語モデル講座2024の最終課題として作成された提出モデルです。 ベースとなるモデルは「llm-jp/llm-jp-3-13b」です。このベースモデルを元に以下のデータセットを用いて追加学習を行いました。 ・ichikara-Instruction ・ELIZA-task-100 これらのデータセットを活用することで、モデルの指示対応能力とタスク処理能力を向上させています。

推論用コード

以下のコードを実行すると、HuggingFace上の本モデル「Gamoooo/llm-jp-3-13b-last」を実行して、最終課題用入力データ「elyza-tasks-100-TV_0.jsonl」(課題用オリジナルデータセット)を推論し、その結果を{json_file_id}-outputs.jsonlというファイルに出力できます。

ライブラリーのインストール&セットアップ

Google Colab環境向けインストール手順

以下のコマンドをGoogle Colabのセルに入力して実行してください:

!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

Hugging FaceのTokenの指定

以下のコードを使用して、Hugging Faceのトークンを指定してください:

HF_TOKEN = "your-token" #@param {type:"string"}

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

量子化パラメータの設定

ベースモデルは13Bの大規模モデルであるため、量子化(4bit)を行います。

model_id = "llm-jp/llm-jp-3-13b" # ベースモデルのID
adapter_id = "Gamoooo/llm-jp-3-13b-last" # 本モデルのアダプタモデルID

dtype = None 
load_in_4bit = True # メモリ効率化のため4bit量子化を有効化

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

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

入力データの準備

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次の要件を満たしてください:\n1. 簡潔に回答する。\n2. 必要なら箇条書きを使用して要点を整理する。\n3. 指示された内容に忠実に答える。\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})

出力の保存

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 Inference Providers.
The model cannot be deployed to the HF Inference API: The model has no library tag.

Model tree for Gamoooo/llm-jp-3-13b-last

Finetuned
(1120)
this model