File size: 13,363 Bytes
9b405f4 8b0962e 9b405f4 488cd67 8b0962e 133da77 7780c47 091391b 7780c47 091391b 7780c47 091391b 7780c47 091391b 7780c47 091391b 7780c47 091391b 7780c47 133da77 7995c6e 8b0962e 133da77 f722ecb 7995c6e 133da77 7995c6e 133da77 9b405f4 66ad4e0 7995c6e 3960c1c 8b68a97 66ad4e0 68f6b99 66ad4e0 68f6b99 7d2e768 66ad4e0 8b0962e 66ad4e0 7d2e768 41b673b 7d2e768 66ad4e0 8b0962e 7995c6e f722ecb 68f6b99 f722ecb 7995c6e 133da77 68f6b99 66ad4e0 133da77 68f6b99 8b0962e |
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 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
---
base_model: llm-jp/llm-jp-3-13b
tags:
- text-generation-inference
- transformers
- unsloth
- llama
- trl
license: apache-2.0
language:
- en
- ja
datasets:
- weblab-GENIAC/aya-ja-nemotron-dpo-masked
---
# Uploaded model
- **Developed by:** NibiruTwin
- **License:** apache-2.0
- **Finetuned from model :** llm-jp/llm-jp-3-13b
This llama model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
・LLM2024コンペティションのために本モデルは作成いたしました。
|Japanese| ichikara-instruction-003-001-1.json A manually constructed instruction dataset|
|データセット作成チーム|関根聡, 安藤まや, 後藤美知子, 鈴木久美, 河原大輔, 井之上直也, 乾健太郎. ichikara-instruction: LLMのための日本語インストラクションデータの構築. 言語処理学会第30回年次大会(2024)|
〇Usage
```
!pip install -U bitsandbytes
!pip install -U transformers
!pip install -U accelerate
!pip install -U datasets
```
```
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
)
import torch
from tqdm import tqdm
import json
HF_TOKEN = "YOUR-TOKEN"
model_name = "NibiruTwin/llm-jp-3-13b-it_lora-DPO-12-07"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=False,
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
device_map="auto",
token = HF_TOKEN
)
```
```
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True, token = HF_TOKEN)
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 = ""
results = []
for data in tqdm(datasets):
input = data["input"]
prompt = f"""### 指示
{input}
### 回答:
"""
```
```
tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
tokenized_input,
max_new_tokens=512,
do_sample=False,
repetition_penalty=1.2
)[0]
output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
results.append({"task_id": data["task_id"], "input": input, "output": output})
import re
model_name = re.sub(".*/", "", model_name)
with open(f"./{model_name}-outputs.jsonl", 'w', encoding='utf-8') as f:
for result in results:
json.dump(result, f, ensure_ascii=False) # ensure_ascii=False for handling non-ASCII characters
f.write('\n')
```
〇作成時に考えたこと
まずサンプルコードを回して回答を確認すると「RGBの問題」と、「大喜利」についてうまく答えられていないことがわかったため、
それらに対して
ichikara-instructionに
大喜利とRGBに関する以下のデータを追加したものを作成しました。
「だじゃれ」は客観的にもそうであるということがわかる言葉遊びであるためそれを意識して自分で例題を作り追加しました。
```python:追加したjson
[
{
"ID": "1",
"text": "大喜利に挑戦してみましょう。大喜利とはお題に対して面白い回答を考える遊びです。大喜利のコツは色々とありますが、1つは「共感を呼ぶ答えをひとひねりする」ことです。誰もが経験したことや思ったことに対して、少し変わった視点や表現で回答することで、共感と笑いを誘うことができます。 例えば、以下の例を見てみましょう お題: ナルシスト漁師の特徴を教えてください 回答: キャッチ&キス&リリース このお題では、「普通の漁師の特徴」の「キャッチ&リリース」に対して、ナルシストという観点からの捻りを加え、語感がいいようにまとめていて面白いです。 それでは、以下のお題について大喜利で答えてください。 お題:初めてマジシャンに挨拶するのですが、アドバイスをお願いします",
"output": "ここでは「マジシャン」を使って韻を踏むことでウケを狙おうと思います。また関西人になりきって答えます。回答: マジシャンさん、噂通りにかっこいいやん。噂はマジじゃん"
},{
"ID": "2",
"text": "大喜利に挑戦してみましょう。大喜利とはお題に対して面白い回答を考える遊びです。大喜利のコツは色々とありますが、1つは「共感を呼ぶ答えをひとひねりする」ことです。誰もが経験したことや思ったことに対して、少し変わった視点や表現で回答することで、共感と笑いを誘うことができます。 例えば、以下の例を見てみましょう お題: ナルシスト漁師の特徴を教えてください 回答: キャッチ&キス&リリース このお題では、「普通の漁師の特徴」の「キャッチ&リリース」に対して、ナルシストという観点からの捻りを加え、語感がいいようにまとめていて面白いです。 それでは、以下のお題について大喜利で答えてください。 お題:初めてワーウルフに挨拶するのですが、アドバイスをお願いします",
"output": "ここでは「ワーウルフ」を使って韻を踏むことでウケを狙おうと思います。また関西人になりきって答えます。回答: ワーウルフさん、こんばんわーうるふやで"
},{
"ID": "3",
"text": "大喜利に挑戦してみましょう。大喜利とはお題に対して面白い回答を考える遊びです。大喜利のコツは色々とありますが、1つは「共感を呼ぶ答えをひとひねりする」ことです。誰もが経験したことや思ったことに対して、少し変わった視点や表現で回答することで、共感と笑いを誘うことができます。 例えば、以下の例を見てみましょう お題: ナルシスト漁師の特徴を教えてください 回答: キャッチ&キス&リリース このお題では、「普通の漁師の特徴」の「キャッチ&リリース」に対して、ナルシストという観点からの捻りを加え、語感がいいようにまとめていて面白いです。 それでは、以下のお題について大喜利で答えてください。 お題:初めてドラゴンを退治しに行くのですが、アドバイスをお願いします",
"output": "ここでは「ドラゴン」を使って韻を踏む回答を作ることでウケを狙おうと思います。また関西人になりきって答えます。回答: ドロンコで、ドラゴンは倒せるらしいで"
},
{
"ID": "4",
"text": "RGB(255, 0, 0) の色は?",
"output": "赤"
}
]
```
上記のinstrcutionデータを用いて、unslothを使ったサンプルコードを使って
LoRAだけ保存しているモデルを作成いたしました。
他に変更したのは
num_train_epochs = 5です
https://huggingface.co/NibiruTwin/llm-jp-3-13b-c_it
それを、藤越さんの手法でDPOを用いて作成したのが今回のモデルです。
その際には
`weblab-GENIAC/aya-ja-nemotron-dpo-masked`
のデータセットを使用しました。
A100の環境を用いても、DPOを回すのはGPUのメモリが足りなかったり、epoch数に限界があったので
```
num_train_epochs = 3,
```
でtrainしました。
```
==((====))== Unsloth - 2x faster free finetuning | Num GPUs = 1
\\ /| Num examples = 100 | Num Epochs = 3
O^O/ \_/ \ Batch size per device = 2 | Gradient Accumulation steps = 4
\ / Total batch size = 8 | Total steps = 36
"-____-" Number of trainable parameters = 125,173,760
```python:
[36/36 01:54, Epoch 2/3]
Step Training Loss rewards / chosen rewards / rejected rewards / accuracies rewards / margins logps / rejected logps / chosen logits / rejected logits / chosen
1 0.000100 3.348554 -6.467402 1.000000 9.815956 -169.229355 -175.684265 0.611595 0.875623
2 0.000100 2.975397 -6.360792 1.000000 9.336189 -154.576660 -196.990601 0.632885 0.986017
3 0.000100 4.033119 -4.941322 1.000000 8.974442 -127.297821 -175.932999 0.575199 1.004188
4 0.000200 3.079573 -5.701199 1.000000 8.780772 -139.620758 -173.067078 -0.431688 0.508375
5 0.000200 3.642621 -5.261364 1.000000 8.903986 -121.130615 -171.747650 0.855356 0.792505
6 0.000300 3.081389 -5.276991 1.000000 8.358380 -131.040268 -180.695892 1.087221 1.099403
7 0.000400 4.341475 -4.463219 1.000000 8.804693 -115.383461 -138.774704 -0.299891 0.583815
8 0.001200 2.155223 -5.431589 1.000000 7.586812 -133.833633 -142.437195 0.526511 0.799039
9 0.000500 2.844069 -4.996197 1.000000 7.840266 -150.136200 -176.394653 0.631835 0.720139
10 0.001800 3.158137 -3.853688 1.000000 7.011826 -108.524597 -141.101532 0.738414 0.989277
11 0.001300 3.399171 -3.538917 1.000000 6.938087 -78.884750 -146.172821 0.182737 0.624548
12 0.003200 2.742315 -4.005011 1.000000 6.747325 -95.816872 -137.083588 -0.016122 0.276348
13 0.000300 2.219271 -6.403042 1.000000 8.622313 -166.142792 -178.155762 0.178710 0.761686
14 0.000300 2.699187 -6.124379 1.000000 8.823566 -131.572098 -140.794952 0.002769 0.447839
15 0.000500 4.734462 -4.763044 1.000000 9.497507 -111.550545 -181.736755 1.172358 1.424275
16 0.000100 3.982580 -5.619477 1.000000 9.602057 -129.902466 -197.776779 0.071804 0.588056
17 0.000100 4.331498 -6.222175 1.000000 10.553673 -165.588058 -164.591766 1.094546 0.889692
18 0.000100 4.991781 -4.481319 1.000000 9.473101 -91.877243 -150.005219 -0.047461 0.751593
19 0.000200 3.501364 -6.373612 1.000000 9.874977 -140.134232 -170.552658 0.189669 0.601683
20 0.000200 3.605657 -5.074142 1.000000 8.679799 -117.568741 -153.246170 -0.309885 0.501098
21 0.000200 3.203712 -6.348371 1.000000 9.552082 -156.897690 -186.776581 1.007442 1.271394
22 0.000200 3.929119 -5.364758 1.000000 9.293877 -112.621918 -93.523651 -0.448841 0.339729
23 0.000200 4.845633 -4.518156 1.000000 9.363789 -96.659676 -147.822693 -0.233996 0.634066
24 0.000200 3.045211 -6.681721 1.000000 9.726932 -144.385818 -143.605927 0.440999 0.664074
25 0.000200 2.850045 -6.654698 1.000000 9.504744 -190.274475 -173.323746 1.471910 0.817418
26 0.000100 3.326446 -6.145639 1.000000 9.472086 -139.847061 -194.209137 1.316685 1.462867
27 0.000100 3.676937 -6.083375 1.000000 9.760312 -129.533386 -160.582367 -0.027238 0.892122
28 0.000100 4.144113 -5.807096 1.000000 9.951208 -145.089432 -207.662384 1.121619 1.289729
29 0.000100 3.373916 -6.345547 1.000000 9.719462 -183.863174 -159.793610 0.931905 0.620221
30 0.000200 3.944859 -5.516920 1.000000 9.461779 -128.763199 -124.433006 0.235643 0.282284
31 0.000200 3.264518 -6.059732 1.000000 9.324250 -132.112762 -134.414032 0.035966 0.557026
32 0.000100 3.494095 -6.447097 1.000000 9.941193 -130.592957 -129.188766 -0.017757 0.388424
33 0.000200 3.858253 -5.999524 1.000000 9.857778 -144.017731 -133.201035 0.412320 0.247053
34 0.000200 4.195073 -5.941508 1.000000 10.136581 -144.858795 -162.841766 -0.020949 0.564567
35 0.000100 5.392914 -4.364581 1.000000 9.757494 -97.780762 -143.621002 0.270843 0.839165
36 0.000100 2.788383 -7.393952 1.000000 10.182335 -154.236618 -184.300690 0.392709 0.757870
TrainOutput(global_step=36, training_loss=0.00038064550871139445, metrics={'train_runtime': 118.2651, 'train_samples_per_second': 2.537, 'train_steps_per_second': 0.304, 'total_flos': 0.0, 'train_loss': 0.00038064550871139445, 'epoch': 2.88})
```
結果として大喜利については以下のような答えになっていました。
```python:大喜利の答えについて
{"task_id": 68, "input": "大喜利に挑戦してみましょう。大喜利とはお題に対して面白い回答を考える遊びです。大喜利のコツは色々とありますが、1つは「共感を呼ぶ答えをひとひねりする」ことです。誰もが経験したことや思ったことに対して、少し変わった視点や表現で回答することで、共感と笑いを誘うことができます。\n\nそれでは、以下のお題について大喜利で答えてください。\nお題:人間と仲良くなりたい妖精が取った行動とは?", "output": "\n人間と仲良くなりたい妖精が、ある日突然やってきて、こう言いました。\n\n「私、この仕事向いてません。辞めたいんです。あなたの会社紹介してもらえませんか?」"}
```
思っていた形ではないですが、気にかけていた大喜利に対する回答としては向上したと思います。
[使用した/できそうなデータセット一覧(各自追加していただけるとありがたいです)](https://www.notion.so/6adbd79a4bc148da8ec1a5012572918f?pvs=21)
Apache license 2.0
weblab-GENIAC/aya-ja-nemotron-dpo-masked
[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth) |