File size: 6,346 Bytes
000fec4 8cd3363 000fec4 17ecdb6 000fec4 779a0ef 000fec4 d5ea9cb 000fec4 8844bbf 000fec4 8844bbf 779a0ef 8844bbf 5e51e17 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf 17ecdb6 8844bbf d5ea9cb 17ecdb6 8844bbf 7f989f4 17ecdb6 8844bbf 7f989f4 8844bbf d5ea9cb 17ecdb6 8844bbf 17ecdb6 7f989f4 17ecdb6 d5ea9cb 17ecdb6 8844bbf 17ecdb6 8844bbf 7f989f4 17ecdb6 8844bbf 5e51e17 8cd3363 779a0ef 8844bbf 8cd3363 779a0ef 8cd3363 d719b35 8844bbf 17ecdb6 9110b79 17ecdb6 8844bbf 25a3a49 d1111ad 25a3a49 |
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 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
---
base_model: llm-jp/llm-jp-3-13b
tags:
- text-generation-inference
- transformers
- unsloth
- llama
- trl
license: cc-by-nc-sa-4.0
language:
- ja
datasets:
- elyza/ELYZA-tasks-100
---
# Uploaded model
- **Developed by:** KKFurudate
- **License:** cc-by-nc-sa-4.0
- **Finetuned from model :** llm-jp/llm-jp-3-13b
本モデルは日本語タスクに特化し、指示に基づく応答を行うためにファインチューニングされたLLM用のLoRAアダプタです。
`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](ttps://liat-aip.sakura.ne.jp/wp/llmのための日本語インストラクションデータ作成/llmのための日本語インストラクションデータ-公開/) | 日本語指示データセット |
| Japanese | ichikara-instruction-003-003-1.fixed.json | [ichikara-instruction-003-003-1.json](ttps://liat-aip.sakura.ne.jp/wp/llmのための日本語インストラクションデータ作成/llmのための日本語インストラクションデータ-公開/) の無効なエスケープシーケンスを手動修正したデータセット |
| 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"
```
```python
# ベースモデルと学習済みLoRAアダプタ(Hugging FaceのIDを指定)。
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,
)
```
```python
# ベースモデルに学習済みLoRAのアダプタを統合。
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})
```
```python
# 結果をjsonlで保存。
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
本モデルは、データセットの[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en)を継承して公開されています。:
Base Model(LLM-jp/llm-jp-3-13b):
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
ichikara-instruction:
[CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en)
elyzatasks100:
[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en)
免責事項:
本モデルは研究目的で提供されており、あらゆる保証を伴わない形で公開されています。
また商用利用を行った場合の問題については一切責任を負いません。
## 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},
}
## 謝辞
本モデルならびにコードは、松尾・岩澤研究室が提供する[「大規模言語モデル Deep Learning 応用講座」(2024)](https://weblab.t.u-tokyo.ac.jp/lecture/course-list/large-language-model/)の最終課題、およびLLM開発コンペティションの提出物の一部です。
運営・講師の皆さま、このような貴重な学びの場を提供していただき、本当にありがとうございました。講義や実践的な課題を通じて、LLMの基礎から応用までを体系的に学ぶ機会をいただきました。
この経験を糧に、さらなる研究・開発に励んでまいります。 |