Update README.md
Browse files
README.md
CHANGED
@@ -11,10 +11,185 @@ language:
|
|
11 |
- en
|
12 |
---
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
# Uploaded model
|
15 |
|
16 |
- **Developed by:** sabia0080
|
17 |
-
- **License:** apache-2.0
|
18 |
- **Finetuned from model :** llm-jp/llm-jp-3-13b
|
19 |
|
20 |
This llama model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
|
|
|
11 |
- en
|
12 |
---
|
13 |
|
14 |
+
# llm-jp-3-13b-it-b02_lora
|
15 |
+
|
16 |
+
このモデルはllm-jp-3-13bをベースにEvolutionary Alpaca Generation 3のデータセットでファインチューニングを行ったLoRAアダプタです。
|
17 |
+
|
18 |
+
## 動作環境
|
19 |
+
- GPU: NVIDIA L4(24GB)以上のGPUメモリ
|
20 |
+
- RAM: 16GB以上推奨
|
21 |
+
- Python 3.10以上
|
22 |
+
|
23 |
+
## モデルの概要
|
24 |
+
|
25 |
+
- ベースモデル: llm-jp/llm-jp-3-13b
|
26 |
+
- 学習データ: [GENIAC-Team-Ozaki/Evol-Alpaca-gen3-500_cleaned](https://huggingface.co/datasets/GENIAC-Team-Ozaki/Evol-Alpaca-gen3-500_cleaned)
|
27 |
+
- 手法: QLoRA(unslothを使用)
|
28 |
+
- コンテキスト長: 512トークン
|
29 |
+
|
30 |
+
## データセット前処理
|
31 |
+
|
32 |
+
学習データは以下の手順で前処理を行いました:
|
33 |
+
|
34 |
+
1. データセットの読み込みと変換:
|
35 |
+
```python
|
36 |
+
from datasets import load_dataset
|
37 |
+
|
38 |
+
# データセットの読み込み
|
39 |
+
processor = DatasetProcessor()
|
40 |
+
processor.load_and_process_dataset(
|
41 |
+
dataset_name="GENIAC-Team-Ozaki/Evol-Alpaca-gen3-500_cleaned",
|
42 |
+
instruction_column="instruction",
|
43 |
+
output_column="output",
|
44 |
+
input_column="input",
|
45 |
+
transform_type="basic"
|
46 |
+
)
|
47 |
+
|
48 |
+
# 処理済みデータをJSONとして保存
|
49 |
+
processor.save_combined_dataset("evol_alpaca_dataset.json")
|
50 |
+
```
|
51 |
+
|
52 |
+
2. データセットの統計情報:
|
53 |
+
- 総サンプル数: 507
|
54 |
+
- 入力フィールドあり/なしの割合を保持
|
55 |
+
- instruction/outputの平均長を維持
|
56 |
+
|
57 |
+
## 出力の再現性について
|
58 |
+
本READMEの手順に従うことで、提出したjsonlファイルと同様の出力を再現することができます。再現性を確保するため、以下の点に注意してください:
|
59 |
+
- モデルの推論設定(repetition_penalty=1.2, do_sample=False など)を変更しない
|
60 |
+
- 入力プロンプトのフォーマット(### 指示\n...\n### 回答\n)を維持する
|
61 |
+
- 乱数シードは設定していないため、完全な一致は保証されません
|
62 |
+
- PyTorchのバージョンは2.5.1以上を推奨
|
63 |
+
|
64 |
+
## ベンチマーク出力方法
|
65 |
+
|
66 |
+
ELYZA-tasks-100-TVのベンチマーク出力を生成するための手順:
|
67 |
+
|
68 |
+
1. 環境準備
|
69 |
+
```python
|
70 |
+
import os
|
71 |
+
import torch
|
72 |
+
import json
|
73 |
+
from tqdm import tqdm
|
74 |
+
from unsloth import FastLanguageModel, is_bfloat16_supported
|
75 |
+
|
76 |
+
# 必要なパッケージのインストール
|
77 |
+
!pip uninstall unsloth -y
|
78 |
+
!pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
|
79 |
+
!pip install --upgrade torch xformers
|
80 |
+
```
|
81 |
+
|
82 |
+
2. モデルとトークナイザーの準備
|
83 |
+
```python
|
84 |
+
# GPU設定の確認
|
85 |
+
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
86 |
+
print(f"Using device: {device}")
|
87 |
+
|
88 |
+
# モデルとトークナイザーの読み込み
|
89 |
+
max_seq_length = 512
|
90 |
+
model, tokenizer = FastLanguageModel.from_pretrained(
|
91 |
+
model_name="[YOUR_USERNAME]/llm-jp-3-13b-it-b01_lora",
|
92 |
+
dtype=None,
|
93 |
+
load_in_4bit=True,
|
94 |
+
trust_remote_code=True,
|
95 |
+
)
|
96 |
+
|
97 |
+
# 推論モードに設定
|
98 |
+
FastLanguageModel.for_inference(model)
|
99 |
+
model = model.to(device)
|
100 |
+
```
|
101 |
+
|
102 |
+
3. 評価用データの読み込みと推論実行、出力生成
|
103 |
+
```python
|
104 |
+
# 評価用データの読み込み
|
105 |
+
datasets = []
|
106 |
+
with open("elyza-tasks-100-TV_0.jsonl", "r") as f:
|
107 |
+
item = ""
|
108 |
+
for line in f:
|
109 |
+
line = line.strip()
|
110 |
+
item += line
|
111 |
+
if item.endswith("}"):
|
112 |
+
datasets.append(json.loads(item))
|
113 |
+
item = ""
|
114 |
+
|
115 |
+
# モデルを推論モードに設定し、推論を実行
|
116 |
+
FastLanguageModel.for_inference(model)
|
117 |
+
|
118 |
+
results = []
|
119 |
+
for dt in tqdm(datasets):
|
120 |
+
input = dt["input"]
|
121 |
+
prompt = f"""### 指示\n{input}\n### 回答\n"""
|
122 |
+
|
123 |
+
inputs = tokenizer([prompt], return_tensors="pt").to(device)
|
124 |
+
outputs = model.generate(
|
125 |
+
**inputs,
|
126 |
+
max_new_tokens=512,
|
127 |
+
use_cache=True,
|
128 |
+
do_sample=False,
|
129 |
+
repetition_penalty=1.2
|
130 |
+
)
|
131 |
+
prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).split('\n### 回答')[-1]
|
132 |
+
|
133 |
+
results.append({
|
134 |
+
"task_id": dt["task_id"],
|
135 |
+
"input": input,
|
136 |
+
"output": prediction
|
137 |
+
})
|
138 |
+
|
139 |
+
# 結果をjsonl形式で保存
|
140 |
+
output_file = "llm-jp-3-13b-it-b01_output.jsonl"
|
141 |
+
with open(output_file, 'w', encoding='utf-8') as f:
|
142 |
+
for result in results:
|
143 |
+
json.dump(result, f, ensure_ascii=False)
|
144 |
+
f.write('\n')
|
145 |
+
|
146 |
+
print(f"Output saved to {output_file}")
|
147 |
+
```
|
148 |
+
|
149 |
+
必要なファイル:
|
150 |
+
- elyza-tasks-100-TV_0.jsonl(評価用データ)
|
151 |
+
|
152 |
+
出力ファイル:
|
153 |
+
- llm-jp-3-13b-it-b01_output.jsonl(ベンチマークの出力結果)
|
154 |
+
|
155 |
+
## 学習設定
|
156 |
+
|
157 |
+
モデルは以下の設定で学習を行いました:
|
158 |
+
|
159 |
+
- ライブラリ: unsloth
|
160 |
+
- rank (r): 32
|
161 |
+
- lora_alpha: 32
|
162 |
+
- lora_dropout: 0.05
|
163 |
+
- target_modules: ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]
|
164 |
+
- バッチサイズ: 2
|
165 |
+
- 勾配累積ステップ: 4
|
166 |
+
- エポック数: 1
|
167 |
+
- 学習率: 2e-4
|
168 |
+
- warmup_steps: 10
|
169 |
+
- max_seq_length: 512
|
170 |
+
|
171 |
+
## ライセンス
|
172 |
+
|
173 |
+
このモデルは、元のllm-jp-3-13bおよびEvolutionary Alpacaデータセット��ライセンスに従います。商用利用の際は、各ライセンスをご確認ください。
|
174 |
+
|
175 |
+
## 引用
|
176 |
+
|
177 |
+
このモデルを使用する場合は、以下を引用してください:
|
178 |
+
|
179 |
+
```bibtex
|
180 |
+
@misc{llm-jp-3-13b-it-b01,
|
181 |
+
author = {[YOUR_NAME]},
|
182 |
+
title = {llm-jp-3-13b-it-b01: Instruction-tuned LLM-JP-3-13B with QLoRA},
|
183 |
+
year = {2024},
|
184 |
+
publisher = {Hugging Face},
|
185 |
+
journal = {Hugging Face Hub},
|
186 |
+
howpublished = {\url{https://huggingface.co/[YOUR_USERNAME]/llm-jp-3-13b-it-b01_lora}},
|
187 |
+
}
|
188 |
+
```
|
189 |
+
|
190 |
# Uploaded model
|
191 |
|
192 |
- **Developed by:** sabia0080
|
|
|
193 |
- **Finetuned from model :** llm-jp/llm-jp-3-13b
|
194 |
|
195 |
This llama model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
|