見出し画像

Llama3-8Bは日本語データによるfine-tuningでも素晴らしい性能を出しました。 基本性能の高さが大きく貢献しているのでしょう。 日本語のタスクにも十分使える可能性がありそうです!

前回はLlama3-70Bの性能の高さをご紹介しました。でも、Llama3には小型の8Bモデルも有り、以前からfine-tuningして自身のタスクに合わせて使ってみたいと思ってました。小型なのでコストも安く、演算速度も速いので、タスクが明確に決まっているならばこの8Bモデルもきっと選択肢に入ってくるでしょう。そこで今回は公開されているLivedoor-newsの日本語記事(3)をいくつかのジャンルに判別するタスク用に、Llama3-8Bモデルをfine-tuningし、その精度を確認しようと思います。それでは始めましょう!


1.Alpacaスタイルのデータセット作成
Livedoor-newsの日本語記事は以下の9ジャンルに分かれてます。また、それぞれのジャンルの分布は以下のチャートになります。

  • kaden-channel',

  • 'livedoor-homme',

  • 'topic-news',

  • 'sports-watch',

  • 'peachy',

  • 'dokujo-tsushin',

  • 'it-life-hack',

  • 'movie-enter',

  • 'smax'

各ジャンルの分布・サンプル数

今回は訓練データ・検証データともランダムに1000サンプル抽出して、実際に各記事を上記9つのジャンルに判別、高い精度が出せるかを検証してみたいと思います。データのフォーマットとしてはAlpacaを採用してます。以下のように、instruction,inputそしてoutputと構成されています。ここではinstructionは各サンプル共通としてます。

Livedoor newsの例



2.Hugging face TRL+"unsloth"を使いfine tuningを実施
今回はHugging faceのTRL(1)というLLMのfine-tune用のライブラリに"unsloth"という訓練を加速するためのライブラリも加え、効率的にfine tuningを実行しました。開発環境はGoogle colabで有料のL4(GPU)インスタンスを用意しました。訓練時間は4エポックで約100分でした。 L4はGPU-RAMが22.5GBあり、今回の訓練には充分な大きさです。また、"unsloth"はfine tuning用に4ビット量子化したモデルを用意してくれてますので、そのままHugging Face Hubからダウンロードして使うことができて便利です。今回の訓練プロセスは"unsloth"のnotebook(2)を参考にさせて頂きました。訓練の高速化に興味のある方はぜひ調べてみて下さい。

"unsloth"でのモデル



3.モデル精度を検証
最初は、シンプルに「この角度が無いところからペナルティーキックを決める技術は凄い」と聞いてみました。回答は"sports-watch"でした。サッカーのお話ですので、妥当な回答だと思います。

次に「iphoneとアンドロイドはどちらが性能が良いですか?」と聞いてみました。答えは"it-life-hack"でした。これも良い回答ですね。

一つ一つ入力するのは大変ですし、実際の記事はもっと長くて複雑です。今回は検証データ1000sampleを用意して試してみました。結果は正解率94.5%と大変優秀な成績でした。inputは日本語ですので、Llama3としては苦戦するかとも思いましたが、あっさり90%を超えたので驚きました。きっと15兆トークンの巨大コーパスで事前訓練した効果でしょう。8Bモデルでもfine-tuningすれば、日本語でも実用化できそうですね。



いかがでしたでしょうか? Llama3-8Bは小型でも潜在能力は高く、いろんなところで活躍しそうです。 タスクごとにfine-tuningは必要ですが、"unsloth"を使えば高速化が図れます。訓練時間を短縮したい方は是非、試して見て下さい。今回は一般向けシングルGPUでも2時間程度で十分な精度が得られました。私たちの様な小さなスタートアップにとって心強い味方です!
また新しい知見が得られたらupdateしていきます。お楽しみに。Stay tuned!

p.s.   訓練用notebookを公開しました






(1) TRL - Transformer Reinforcement Learning
(2) Alpaca + Llama-3 8b full example.ipynb  
(3) Livedoor-newsの日本語記事


Notice: ToshiStats Co., Ltd. and I do not accept any responsibility or liability for loss or damage occasioned to any person or property through using materials, instructions, methods, algorithms or ideas contained herein, or acting or refraining from acting as a result of such use. ToshiStats Co., Ltd. and I expressly disclaim all implied warranties, including merchantability or fitness for any particular purpose. There will be no duty on ToshiStats Co., Ltd. and me to correct any errors or defects in the codes and the software.

この記事が気に入ったらサポートをしてみませんか?