Update README.md
Browse files
README.md
CHANGED
|
@@ -1,22 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
-
|
| 6 |
-
-
|
| 7 |
-
-
|
| 8 |
-
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
---
|
| 13 |
|
| 14 |
-
#
|
|
|
|
|
|
|
|
|
|
| 15 |
|
| 16 |
-
-
|
| 17 |
-
- **License:** apache-2.0
|
| 18 |
-
- **Finetuned from model :** llm-jp/llm-jp-3-13b
|
| 19 |
|
| 20 |
-
|
|
|
|
|
|
|
| 21 |
|
| 22 |
-
|
|
|
|
| 1 |
+
# LLM-JP 3-13B Finetune
|
| 2 |
+
|
| 3 |
+
## 概要
|
| 4 |
+
このモデルは、LLM-JP 3-13B をベースに Elyza タスクデータセットでファインチューニングされ、指示に基づく日本語生成タスクに適しています。本モデルでは、Unslothを用いて効率的にLoRAアダプタを利用し、高速な学習を実現しました。
|
| 5 |
+
|
| 6 |
+
---
|
| 7 |
+
|
| 8 |
+
## 使用方法
|
| 9 |
+
|
| 10 |
+
### 推論の実行
|
| 11 |
+
以下のコードを使用して、モデルをロードし、推論を実行できます。
|
| 12 |
+
|
| 13 |
+
```python
|
| 14 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 15 |
+
|
| 16 |
+
# モデルとトークナイザーのロード
|
| 17 |
+
model_id = "deepkick/llm-jp-3-13b-finetune"
|
| 18 |
+
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
| 19 |
+
model = AutoModelForCausalLM.from_pretrained(model_id)
|
| 20 |
+
|
| 21 |
+
# 推論
|
| 22 |
+
input_text = "日本語での生成タスクの例を示してください。"
|
| 23 |
+
input_ids = tokenizer(input_text, return_tensors="pt").input_ids
|
| 24 |
+
output = model.generate(input_ids, max_new_tokens=50)
|
| 25 |
+
print(tokenizer.decode(output[0], skip_special_tokens=True))
|
| 26 |
+
```
|
| 27 |
+
|
| 28 |
+
---
|
| 29 |
+
|
| 30 |
+
### JSONLファイルの使用方法
|
| 31 |
+
以下のコードを使用して、JSONL形式の入力データを用いたバッチ推論を行えます。
|
| 32 |
+
|
| 33 |
+
```python
|
| 34 |
+
import json
|
| 35 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 36 |
+
|
| 37 |
+
# モデルのロード
|
| 38 |
+
model_id = "deepkick/llm-jp-3-13b-finetune"
|
| 39 |
+
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
| 40 |
+
model = AutoModelForCausalLM.from_pretrained(model_id)
|
| 41 |
+
|
| 42 |
+
# JSONLファイルの読み込み
|
| 43 |
+
with open("elyza-tasks-100-TV_0.jsonl", "r") as f:
|
| 44 |
+
datasets = [json.loads(line) for line in f]
|
| 45 |
+
|
| 46 |
+
# 推論
|
| 47 |
+
results = []
|
| 48 |
+
for data in datasets:
|
| 49 |
+
input_text = data["input"]
|
| 50 |
+
input_ids = tokenizer(input_text, return_tensors="pt").input_ids
|
| 51 |
+
output = model.generate(input_ids, max_new_tokens=50)
|
| 52 |
+
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
|
| 53 |
+
results.append({"task_id": data["task_id"], "output": output_text})
|
| 54 |
+
|
| 55 |
+
# 結果を保存
|
| 56 |
+
with open("outputs.jsonl", "w") as f:
|
| 57 |
+
for result in results:
|
| 58 |
+
f.write(json.dumps(result) + "\n")
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
---
|
| 62 |
+
|
| 63 |
+
## モデルのトレーニング詳細
|
| 64 |
+
|
| 65 |
+
- **ベースモデル**: `llm-jp/llm-jp-3-13b`
|
| 66 |
+
- **ファインチューニング手法**: LoRA (Low-Rank Adaptation)
|
| 67 |
+
- **使用ライブラリ**: 🤗 Transformers, Unsloth
|
| 68 |
+
- **データセット**: Elyza-tasks-100-TV
|
| 69 |
+
|
| 70 |
+
### 学習設定
|
| 71 |
+
- 学習率: 2e-4
|
| 72 |
+
- バッチサイズ: 2 (デバイスあたり)
|
| 73 |
+
- 勾配蓄積ステップ: 4
|
| 74 |
+
- 学習エポック数: 1
|
| 75 |
+
- 最大シーケンス長: 512トークン
|
| 76 |
+
- LoRA設定:
|
| 77 |
+
- `r=32`
|
| 78 |
+
- `lora_alpha=32`
|
| 79 |
+
- `lora_dropout=0.05`
|
| 80 |
+
|
| 81 |
---
|
| 82 |
|
| 83 |
+
## 著者
|
| 84 |
+
- 開発者: deepkick
|
| 85 |
+
- ライセンス: Apache-2.0
|
| 86 |
+
- Hugging Face リンク: [deepkick](https://huggingface.co/deepkick)
|
| 87 |
|
| 88 |
+
---
|
|
|
|
|
|
|
| 89 |
|
| 90 |
+
## 注意点
|
| 91 |
+
- 本モデルはLoRAアダプタのみを保存しています。詳細な推論方法については、`Model_Inference_Template_unsloth_20241127.ipynb` を参照してください。
|
| 92 |
+
- Hugging Faceのリポジトリにアップロードされたモデルを利用する際は、公開 (public) 設定にする必要があります。
|
| 93 |
|
| 94 |
+
--
|