Fine-tuned LLM-jp Model for ELYZA Tasks

このモデルはLLM-jp-13bをベースに、ichikara-instructionデータセットでファインチューニングを行ったモデルです。

Model Details

  • Base Model: LLM-jp-3-13b
  • Training Data: ichikara-instruction dataset
  • Purpose: ELYZA-tasks-100-TVタスクの推論

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("llm-jp-3-13b-finetune202412141913")
tokenizer = AutoTokenizer.from_pretrained("llm-jp-3-13b-finetune202412141913")

ELYZA-tasks-100-TV推論用コード 以下のコードを使用して、ELYZA-tasks-100-TVの出力を生成できます。生成されたjsonlファイルは課題提出用フォーマットに準拠しています。

必要なライブラリのインストール !pip install -U bitsandbytes !pip install -U transformers !pip install -U accelerate !pip install -U datasets !pip install -U peft !pip install ipywidgets --upgrade

モデルの読み込みと推論の実行 from transformers import ( AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, ) from peft import PeftModel import torch from tqdm import tqdm import json

Hugging Faceトークンの設定

from google.colab import userdata HF_TOKEN = userdata.get('HF_TOKEN')

モデルIDの設定

base_model_id = "llm-jp/llm-jp-3-13b" adapter_id = "ike3don3/llm-jp-3-13b-finetune202412141913"

量子化の設定

bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16, )

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

model = AutoModelForCausalLM.from_pretrained( base_model_id, quantization_config=bnb_config, device_map="auto", token=HF_TOKEN ) tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True, token=HF_TOKEN)

アダプターの統合

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 = ""

推論の実行

results = [] for data in tqdm(datasets): input = data["input"] prompt = f"""### 指示 {input} ### 回答 """ tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device) attention_mask = torch.ones_like(tokenized_input)

with torch.no_grad():
    outputs = model.generate(
        tokenized_input,
        attention_mask=attention_mask,
        max_new_tokens=100,
        do_sample=False,
        repetition_penalty=1.2,
        pad_token_id=tokenizer.eos_token_id
    )[0]
output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)

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

結果の保存

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

ライセンス このモデルは、学習データのライセンスに従いCC-BY-NC-SAライセンスの下で提供されています。商用利用はできませんのでご注意ください。

引用 このモデルの学習に使用したデータセットを引用する場合は、以下の文献を参照してください: 関根聡, 安藤まや, 後藤美知子, 鈴木久美, 河原大輔, 井之上直也, 乾健太郎. ichikara-instruction: LLMのための日本語インストラクションデータの構築. 言語処理学会第30回年次大会(2024)

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for ike3don3/llm-jp-3-13b-finetune202412141913

Finetuned
(1129)
this model