今回、modelの学習については東京科学大学Tsubame4.0のH100GPU1基、推論についてはOmnicampus内で提供されたL4GPUを用いて開発を行った。
まず、ベースとなるモデルには国立情報学研究所大規模言語モデル研究開発センターが開発したllm-jp-3-13Bモデルを用いた。SFT用のデータセットについては、以下のデータセットを引用した。
input:次の内容を350字以内で要約して、文章として出力してください\\n[内容]\\n{input}
output:gemma-9b-itが出力したnewsの要約
という形の要約タスクデータセットに変換した。gemmaを用いたデータセットの作成に関しては、gemmaの利用規約を参照し、「Gemmaを利用して生成した出力に対して、Googleは権利を主張しない。利用者が単独で責任を負う。」という内容の記載があったため、問題ないと判断した。
・gemma利用規約
・gemma禁止事項
また、尾崎さんが作成してくださったデータセットはLlama3.1のライセンスを踏襲しており、こちらのデータセットをgemmaの入力に用いて良いのかは疑問が残ったが、Llama3.1コミュニティ ライセンス規約とLlama3.1の許容可能な使用ポリシーを参照して、おそらく問題ないと判断した。ただし、こちらに関しては本当に問題がないとは断言し難い。次に学習について、まずソースコードのベースには運営の方から共有されたLoRA_template_unsloth2.ipynbを用いた。ただしunslothを使えるようにするための環境構築が非常に難しかったため、これを諦めてpeftを用いたLoRA-Fine-Turningを行った。学習方法としては、初めに上記のデータセットの組み合わせのいくつかに対して、提供されたソースコード(ハイパーパラメーター含め、一切の変更なし)を用いてLoRA-Fine-Turningを行った。それぞれのTunedモデルの推論で得られたELYZA-tasks-100-TVの解答データをgemini-flashによる採点と目視によって採点した。この中で、スコアの最も良いと思われるデータセットを選択した。
続いて、いくつかのハイパーパラメーターを変えて選択した学習データを用いたLoRA-Fine-Turningを行った。この際に用いたベースモデルは、データセット別にFine-Turningをしたモデルではなく、Fine-Turning前のllm-jp-3-13Bである。
まず、データセット別のFine-Turning結果について示す。以下の表はpandasのdescribe()を用いて表示したデータセット別のスコア統計情報である。
Ichikara_003_001 | ichikara_003_001 + ELYZA_100 | Ichikawa_003_001 + news_2024 | ichikara_003_001 + Tengentoppa | Ichikawa_003_001 + dolly-15k-ja | |
---|---|---|---|---|---|
count | 100 | 100 | 100 | 100 | 100 |
mean | 3.760000 | 3.43000 | 3.680000 | 3.560000 | 3.280000 |
std | 1.326650 | 1.458206 | 1.427578 | 1.451714 | 1.498012 |
min | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
25% | 3.000000 | 2.000000 | 2.000000 | 2.000000 | 2.000000 |
50% | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 |
75% | 5.000000 | 5.000000 | 5.000000 | 5.000000 | 5.000000 |
max | 5.000000 | 5.000000 | 5.000000 | 5.000000 | 5.000000 |
スコア統計情報の結果を見ると、ichikara_003_001のデータセットのみを単発で用いた場合のデータセットが最もスコアが良いことが分かった。また、下に掲載してあるのは各データセットに関するスコアのヒストグラムである。