昨日、HuggingfaceのTRLライブラリを使って、finetuningしてみました。
TRL(Transformer Reinforcement Learning)はhuggingfaceのトレーニング用ライブラリで、RLHFなどの強化学習を簡単に行うことができます。もちろん、SFTなどのfinetuningも可能です。
初めての試しですが、非常に使いやすかったです。
また、flash-attentionも試してみました。Flash Attentionは、Transformerモデルのアテンション計算を高速化し、モデルのトレーニング速度を向上させる技術です。
具体的には、既存のTransformerの実装におけるアテンション層を、ほとんどモデルの構造やハイパーパラメータを変更することなく、シームレスに置き換えることができます。これにより、モデルの高速化を実現できます。
試した結果、学習速度が確かに速くなり、トレーニングにかかる時間を短縮することができました。
以下は今回試したfinetuningの流れです。
1.データセット
使用したデータセットは、HuggingFaceで見つけた、日本の官公庁のWebサイトに掲載されている「よくある質問」のQAデータです。30000件程度なので、今回の試しには最適だと思って使いました。(イメージは⇩です)
2.トレーニング結果
トレーニングは約1時間半で終わりました。(9000ステップを1時間半でこなすことができました。半年前に同じくらいの量をトレーニングしたときは、20時間ほどかかった記憶があります。もちろん、モデルの大きさやGPUの性能、パラメータの設定などの違いもありますが、それでも大幅に高速化されたと実感しています。)
(wandbでのlossは⇩、少しづつに下がりました。2.5⇒1くらいまで(3epoch終了時点))
3.検証結果
モデルの試し結果は⇩です。(finetuning前)
質問の内容は理解していますが、英語または日本語で一言を繰り返すようになっています。(ここで試したのはinstructionモデルではないので、このような繰り返しが起こるのは問題ないと言えます。むしろ、こういう課題を解決するためにfinetuningが必要です)
finetuning後の結果は⇩です。(パラメーターなどはすべて同じように設定しています)
モデルが日本語でこの質問に答えられるようになったことが確認できました。label(origianl answer)の回答とは異なりますが、それでも正しい内容となっていますので、finetuningは成功したと言えます。
もちろん精度上げたいなら色々改善点ありますが、今回はTRLの試しなのでこれで以上です。
興味ある方:
TRL:
ここでfinetuningしたモデル: