このモデルについて

このモデルは、ベースモデルである"llm-jp/llm-jp-3-13b"を下記のデータセットでインストラクションチューニングを行いました。
https://liat-aip.sakura.ne.jp/wp/llmのための日本語インストラクションデータ作成/llmのための日本語インストラクションデータ-公開/
関根聡, 安藤まや, 後藤美知子, 鈴木久美, 河原大輔, 井之上直也, 乾健太郎. ichikara-instruction: LLMのための日本語インストラクションデータの構築. 言語処理学会第30回年次大会(2024)
license-badge
また、学習にはUnslothとHuggingfaceのTRL libraryを使用しています。
This llama model was trained 2x faster with Unsloth and Huggingface's TRL library.

ライセンス・利用範囲

  • 上記のベースモデルおよびデータセットは CC BY-NC-SA でライセンスされており、本モデルも同じライセンスを継承します。
  • 本モデルの商用利用はできません。研究・学習用途のみでご使用ください。

使用方法

以下はGoogle Colabで実行する事を想定したコードです。
事前に、Hugging Faceのトークンを取得し、
GoogleColab画面左の鍵アイコンから、シークレットキーを"HF_TOKEN"という名前で設定してください。
また、ファイルアイコンから、タスクとなるデータ"elyza-tasks-100-TV_0.jsonl"をドラッグ&ドロップでアップロードしてください。
実行すると{adapter_id}-outputs.jsonlのファイル名で、タスクに回答を添えた結果が出力されます。

# 必要なライブラリをインストール
!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 = "junyamokubo/llm-jp-3-13b-12JM_01_lora"

# Hugging Face Token を取得
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)

# タスクとなるデータの読み込み
# 事前にデータをアップロードしてください
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})

# 結果を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 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 junyamokubo/llm-jp-3-13b-12JM_01_lora

Finetuned
(1122)
this model

Dataset used to train junyamokubo/llm-jp-3-13b-12JM_01_lora