Uploaded model
- Developed by: JaneJohnDoe
- 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.
概要
このドキュメントでは、Hugging Face で公開されているモデル llm-jp/llm-jp-3-13b
を使用して、与えられた入力データ ( elyza-tasks-100-TV_0.jsonl
) を推論し、その結果をファイルに出力する手順を説明します。
準備
- 実行環境: Python が利用できる環境 (例: Google Colab、AWS SageMakerなど) を用意してください。
- Hugging Face トークン: Hugging Face のアクセストークン (
HF_TOKEN
) を取得してください。
セットアップ
以下の手順で、必要なライブラリのインストールと、Hugging Face トークンの設定を行います。
1. ライブラリのインストール
!pip install -U bitsandbytes
!pip install -U transformers
!pip install -U accelerate
!pip install -U datasets
!pip install -U peft
!pip install ipywidgets --upgrade
2. Hugging Face トークンの設定
環境に合わせてトークンを設定します。Google Colab の例を以下に示します。
from google.colab import userdata
HF_TOKEN = userdata.get('HF_TOKEN')
モデルとトークナイザの読み込み
以下のコードを実行して、Hugging Face からモデルとトークナイザを読み込みます。
ここでは、効率的な推論のために量子化 (QLoRA) を適用しています。
import torch
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
)
import json
from tqdm import tqdm
import re
# モデルIDを設定
model_id = "llm-jp/llm-jp-3-13b"
# QLoRA用の設定
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
# モデルのロード
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=bnb_config,
device_map="auto",
token=HF_TOKEN
)
# トークナイザのロード
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, token=HF_TOKEN)
入力データの準備
elyza-tasks-100-TV_0.jsonl
ファイルからデータを読み込み、リストに格納します。
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 = data["input"]
prompt = f"""### 指示
{input_data}
### 回答
"""
# 推論用の入力を作成
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=200,
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({
"input": input_data,
"output": output
})
出力結果の保存
推論結果を、モデルIDに基づいたファイル名 ( [model_id]-outputs.jsonl
) で保存します。
# モデルIDからファイル名を作成
jsonl_id = re.sub(".*/", "", model_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')
まとめ
上記の手順を実行することで、モデルによる推論結果が [model_id]-outputs.jsonl
というファイルに保存されます。このファイルには、入力データとそれに対するモデルの出力が含まれます。
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 JaneJohnDoe/llm-jp-3-13b-it
Base model
llm-jp/llm-jp-3-13b