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 and Huggingface's TRL library.
・LLM2024コンペティションのために本モデルは作成いたしました。
概略 まずサンプルコードを回して回答を確認すると「RGBの問題」と、「大喜利」についてうまく答えられていないことがわかったため、
それらに対して ichikara-instructionに 大喜利とRGBに関する以下のデータを追加したものを作成しました。 「だじゃれ」は客観的にもそうであるということがわかる言葉遊びであるためそれを意識して自分で例題を作り追加しました。
[
{
"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})
結果として大喜利については以下のような答えになっていました。
{"task_id": 68, "input": "大喜利に挑戦してみましょう。大喜利とはお題に対して面白い回答を考える遊びです。大喜利のコツは色々とありますが、1つは「共感を呼ぶ答えをひとひねりする」ことです。誰もが経験したことや思ったことに対して、少し変わった視点や表現で回答することで、共感と笑いを誘うことができます。\n\nそれでは、以下のお題について大喜利で答えてください。\nお題:人間と仲良くなりたい妖精が取った行動とは?", "output": "\n人間と仲良くなりたい妖精が、ある日突然やってきて、こう言いました。\n\n「私、この仕事向いてません。辞めたいんです。あなたの会社紹介してもらえませんか?」"}
思っていた形ではないですが、気にかけていた大喜利に対する回答としては向上したと思います。
使用した/できそうなデータセット一覧(各自追加していただけるとありがたいです)
Apache license 2.0 weblab-GENIAC/aya-ja-nemotron-dpo-masked
Model tree for NibiruTwin/llm-jp-3-13b-it_lora-DPO-12-07
Base model
llm-jp/llm-jp-3-13b