実行手順
以下はファインチューニングされたモデルにより「elyza-tasks-100-TV_0.jsonl」タスクを
推論した結果、output.jsonl ファイルを出力するまでを記述しています。
※google colab を例に説明しています。
google driveの接続
from google.colab import drive
drive.mount('/content/drive')
# 相対パス利用のため(環境に合わせて変更します)
%cd /content/drive/MyDrive/_prod/XXXXXXX/matome/perf
%ls
Hugging face の接続確認
from huggingface_hub import login
# Hugging Face Token を指定(token情報のため伏せています)
HF_TOKEN = "XXXXX"
# Hugging Face にログイン
try:
login(token=HF_TOKEN)
print("Hugging Faceへのログインに成功しました。")
except Exception as e:
print(f"Hugging Faceへのログインに失敗しました: {e}")
パッケージのインストール
!pip install ipywidgets --upgrade
!python -m pip install --upgrade pip
!pip uninstall unsloth -y
!pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
!pip install --upgrade torch
!pip install --upgrade xformers
!pip install accelerate bitsandbytes trl
Install Flash Attention 2 for softcapping support
import torch
if torch.cuda.get_device_capability()[0] >= 8:
!pip install --no-deps packaging ninja einops "flash-attn>=2.6.3"
print(torch.__version__)
print(torch.cuda.is_available())
hugging faceからモデルを読み込む
import os
# 4-bit量子化のCPUオフロードを有効にする
os.environ["llm_int8_enable_fp32_cpu_offload"] = "True"
from unsloth import FastLanguageModel
import torch
import json
from tqdm import tqdm
from datetime import datetime
from transformers import BitsAndBytesConfig
print("モデルの読み込み開始---")
model_name = "kakidara/llm-jp-3-13b-kaki-083711-089"
# モデルのコンフィグ
max_seq_length = 512
dtype = None # Noneにしておけば自動で設定
load_in_4bit = True # 今回は13Bモデルを扱うためTrue
# bitsandbytes config を設定
bnb_config = BitsAndBytesConfig(
load_in_4bit=load_in_4bit,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
llm_int8_enable_fp32_cpu_offload=True # CPUオフロードを明示的に有効化
)
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = model_name,
max_seq_length = max_seq_length,
dtype = dtype,
load_in_4bit = load_in_4bit,
token = "",
quantization_config=bnb_config, # bitsandbytes configを渡す
)
FastLanguageModel.for_inference(model)
タスクの読み込み(elyza-tasks-100-TV_0.jsonl)
print("データセットの読み込み---")
data = []
with open("./elyza-tasks-100-TV_0.jsonl", "r") as f:
item = ""
for line in f:
line = line.strip()
item += line
if item.endswith("}"):
data.append(json.loads(item))
item = ""
推論
print("推論---")
results = []
for dt in tqdm(data):
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})
推論結果の出力(output.jsonl)
# 出力
print("出力---")
with open(f"./output.jsonl", 'w', encoding='utf-8') as f:
for result in results:
json.dump(result, f, ensure_ascii=False)
f.write('\n')
※ 今回提出したoutputファイルは、「llm-jp-3-13b-kaki-083711-089_output.jsonl」として提出しました。
Uploaded model
- Developed by: kakidara
- 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.
Inference Providers
NEW
This model isn't deployed by any Inference Provider.
🙋
Ask for provider support
HF Inference deployability: The model has no pipeline_tag.
Model tree for kakidara/llm-jp-3-13b-kaki-083711-089
Base model
llm-jp/llm-jp-3-13b