File size: 5,007 Bytes
000fec4 17ecdb6 000fec4 8844bbf 17ecdb6 000fec4 8844bbf 000fec4 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 9110b79 17ecdb6 8844bbf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
---
base_model: llm-jp/llm-jp-3-13b
tags:
- text-generation-inference
- transformers
- unsloth
- llama
- trl
license: apache-2.0
language:
- ja
datasets:
- elyza/ELYZA-tasks-100
---
# Uploaded model
- **Developed by:** KKFurudate
- **License:** apache-2.0
- **Finetuned from model :** llm-jp/llm-jp-3-13b
このモデルは日本語タスクに特化し、指示に基づく応答を行うためにファインチューニングされたLLM用アダプタです。
`llm-jp/llm-jp-3-13b`をベースモデルとして、ichikara-instructionデータとELYZA-tasks-100を用いて微調整を行っています。
This llama model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)
# Instruction Tuning
以下の日本語データセットで微調整を行いました:
| Language | Dataset | Description |
|:---|:---|:---|
| Japanese | [ichikara-instruction-003-001-1.json](https://liat-aip.sakura.ne.jp/wp/llm%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF-%E5%85%AC%E9%96%8B/) | 手動構築の日本語指示データセット |
| Japanese | ichikara-instruction-003-003-1.fixed.json | ichikara-instruction-003-003-1.jsonの無効なエスケープシーケンスを手動修正したデータセット |
| Japanese | [elyza/ELYZA-tasks-100](https://huggingface.co/datasets/elyza/ELYZA-tasks-100) | 日本語多目的タスク用データセット |
## Usage
下記コマンドで環境整備(本コードはGoogle Colabでの動作を想定しています):
```python
!pip install -U unsloth
!pip uninstall unsloth -y && pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
!pip install -U torch
!pip install -U peft
```
```python
from unsloth import FastLanguageModel
from peft import PeftModel
import torch
import json
from tqdm import tqdm
import re
```
```python
HF_TOKEN = "YOUR-HF-TOKEN"
```
ベースのモデルと学習済みLoRAのアダプタ(Hugging FaceのIDを指定)。
```python
model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "KKFurudate/llm-jp-3-13b-v6_lora"
```
```python
# unslothのFastLanguageModelで元のモデルをロード。
dtype = None
load_in_4bit = True
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=model_id,
dtype=dtype,
load_in_4bit=load_in_4bit,
trust_remote_code=True,
)
```
ベースのモデルに学習済みLoRAのアダプタを統合。
```python
model = PeftModel.from_pretrained(model, adapter_id, token = HF_TOKEN)
```
```python
datasets = []
with open("./YOUR-DATA.jsonl", "r") as f:
item = ""
for line in f:
line = line.strip()
item += line
if item.endswith("}"):
datasets.append(json.loads(item))
item = ""
```
モデルを用いてタスクの推論。
```python
FastLanguageModel.for_inference(model)
results = []
for dt in tqdm(datasets):
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})
```
結果をjsonlで保存。
```python
json_file_id = re.sub(".*/", "", adapter_id)
with open(f"{outdir}/{json_file_id}_output.jsonl", 'w', encoding='utf-8') as f:
for result in results:
json.dump(result, f, ensure_ascii=False)
f.write('\n')
```
## License
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
## Base Model
base_model:- llm-jp/llm-jp-3-13b
## Citations
@software{unsloth,
author = {Daniel Han, Michael Han and Unsloth team},
title = {Unsloth},
url = {http://github.com/unslothai/unsloth},
year = {2023}
}
@misc{ichikara-instruction,
title={ichikara-instruction:LLMのための日本語インストラクションデータの構築. 言語処理学会第30回年次大会(2024)},
url={https://liat-aip.sakura.ne.jp/wp/llmのための日本語インストラクションデータ作成/llmのための日本語インストラクションデータ-公開/},
author={関根聡, 安藤まや, 後藤美知子, 鈴木久美, 河原大輔, 井之上直也, 乾健太郎},
year={2024},
}
@misc{elyzatasks100,
title={ELYZA-tasks-100: 日本語instructionモデル評価データセット},
url={https://huggingface.co/elyza/ELYZA-tasks-100},
author={Akira Sasaki and Masato Hirakawa and Shintaro Horie and Tomoaki Nakamura},
year={2023},
} |