実行手順

以下はファインチューニングされたモデルにより「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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kakidara/llm-jp-3-13b-kaki-083711-089

Finetuned
(1119)
this model