🧬LLM ファインチューニングガイド

ファインチューニングの基本とベストプラクティスをすべて学びます。初心者向けです。

1. ファインチューニングとは何ですか?

ファインチューニング/トレーニング/事後トレーニングは、モデルの挙動をカスタマイズし、知識を追加・注入し、ドメインや特定のタスクに対する性能を最適化します。たとえば:

  • OpenAIの GPT-5 は指示に従う能力と有用なチャット挙動を改善するために事後トレーニングされました。

  • 事後トレーニングの標準的な方法は教師ありファインチューニング(SFT)と呼ばれます。その他の方法には選好最適化(DPO、ORPO)、蒸留、そして 強化学習(RL) (GRPO、GSPO)があります。ここでは「エージェント」が環境と相互作用し、 フィードバック報酬罰則.

の形で受け取ることで意思決定を学びます。 Unslotharrow-up-rightを使えば、Colab、Kaggle、あるいはローカルで3GBのVRAMだけで無料でファインチューニングやRLが可能です。当社の ノートブックarrow-up-rightを使うことで、事前学習済みモデルをデータセットでファインチューニングすることにより、次のことができます:

  • 知識の更新と学習: ドメイン固有の新しい情報を注入し学習させる。

  • 挙動のカスタマイズ: モデルの口調、人格または応答スタイルを調整する。

  • タスクの最適化: 特定のユースケースに対する精度と関連性を向上させる。

ファインチューニングやRLの利用例:

  • LLMが見出しが企業にとってプラスかマイナスかを予測できるようにする。

  • 過去の顧客とのやり取りを利用して、より正確でカスタムな応答を生成できるようにする。

  • 法的文書でLLMをファインチューニングして契約分析、判例調査、コンプライアンスに活用する。

ファインチューニングされたモデルは、特定のタスクをより効果的かつ効率的に行うための専門化されたエージェントと考えることができます。 ファインチューニングはRAGのすべての機能を再現できますが、その逆はできません。

LoRA/QLoRAとは何ですか?

LLMにはモデル重みがあり、Llama 70Bなら700億個の数値があります。すべての700億個の数値を変更する代わりに、各重みに薄い行列AとBを追加してそれらだけを最適化します。つまり重みの約1%だけを最適化することになります。LoRAは元のモデルが16ビットの非量子化(unquantized)である場合を指し、QLoRAはメモリを75%節約するために4ビットに量子化します。

モデル重み(黄色)を最適化する代わりに、2つの薄い行列AとBを最適化します。

ファインチューニングに関する誤解:

ファインチューニングはモデルに新しい知識を学習させないとか、RAGの方がファインチューニングより優れていると聞いたかもしれません。それは 誤りです。ファインチューニングやRLで専門的なコーディングモデルを訓練できますが、RAGは推論時にモデルが見るものを拡張するだけでモデルの重みを変更できません。FAQや誤解についての詳細は こちら:

🤔FAQ + ファインチューニングは私に向いているか?chevron-right

2. 適切なモデルと方法を選ぶ

初心者なら、Llama 3.1(8B)のような小さな指示型モデルから始めて実験するのが最良です。また、通常のファインチューニング、RL、QLoRA、LoRAのどれを使うかも決める必要があります:

  • 強化学習(RL) は、ラベル付きデータではなく環境と報酬関数を用いて特定の挙動(例:ツール呼び出し)で優れた性能を発揮するモデルが必要な場合に使われます。当社は複数の ノートブック例を用意していますが、ほとんどのユースケースでは標準のSFTで十分です。

  • LoRA はパラメータ効率の良いトレーニング手法で、通常はベースモデルの重みは固定したまま、小さな低ランクのアダプタ重み群(16ビット精度)だけを訓練します。

  • QLoRA はLoRAと4ビット精度を組み合わせ、大規模モデルを最小限のリソースで扱えるようにします。

  • Unslothはフルファインチューニング(FFT)や事前学習もサポートしますが、これらははるかに多くのリソースを必要とします。ただし正しく行えば、LoRAはFFTに匹敵できます。

  • Unsloth すべてのタイプのモデル: テキスト読み上げ(TTS), 埋め込み、GRPO、RL、 ビジョン、マルチモーダルなど。

circle-info

研究は次のことを示しています: 同じ精度でトレーニングとサービングを行うことが 精度維持に役立つ

ことが分かっています。つまり4ビットで提供したければ4ビットで訓練し、その逆も同様です。 当社はQLoRAから始めることを推奨します。これはトレーニングにおいて最も手軽かつ効果的な方法の一つです。当社のarrow-up-right 動的4ビット

量子化により、QLoRAの精度損失はLoRAと比べて大部分が回復されています。モデル名はHugging Face上のモデル名に合わせて好きなモデル名に変更できます。例:''.

unsloth/llama-3.1-8b-unsloth-bnb-4bit '会話チャットテンプレート(ChatML、ShareGPTなど)を使った直接的なファインチューニングが可能で、 ベースモデル (Alpaca、Vicunaなどを用いる)と比べて少ないデータで済むため、 指示型モデル.

  • から始めることを推奨します。 モデル名が unsloth-bnb-4bit で終わる場合、それはarrow-up-right Unslothの動的4ビット量子化モデルであることを示します。

  • これらのモデルは標準のBitsAndBytes 4ビットモデルより若干多くのVRAMを消費しますが、はるかに高い精度を提供します。 モデル名が単にbnb-4bit

  • で終わり、"unsloth"が含まれない場合、それは標準のBitsAndBytes 4ビット量子化を指します。 サフィックスが ない モデルは元の16ビットまたは8ビット形式

のままです。公式のモデル作成者による元のモデルでありながら、当社ではチャットテンプレートやトークナイザの修正など重要な修正を含めることがあるため、可能であれば当社版の使用を推奨します。

  • 切り替え可能ないくつかの設定があります: max_seq_length = 2048

  • – コンテキスト長を制御します。Llama-3は8192をサポートしますが、テストでは2048を推奨します。Unslothは4倍の長いコンテキストでのファインチューニングを可能にします。 dtype = None – デフォルトはNoneです。torch.float16 torch.bfloat16

  • は新しいGPU向けに使います。 load_in_4bit = True – 4ビット量子化を有効にし、ファインチューニング時のメモリ使用量を4分の1に削減します。これを無効にするとLoRAの16ビットファインチューニングが有効になります。16ビットLoRAを有効にするには

  • load_in_16bit = True を設定してください。フルファインチューニング(FFT)を有効にするには、 full_finetuning = True.

  • を設定します。8ビットファインチューニングには、 load_in_8bit = True を設定してください。 注意:

circle-info

同時に有効にできるトレーニング方法は1つだけです。

一般的な誤りは、計算資源を大量に消費するフルファインチューニング(FFT)にいきなり飛びつくことです。まずはLoRAやQLoRAでテストしてください。そちらでうまくいかない場合、FFTでもうまくいく可能性はほとんどありません。LoRAが失敗したからといってFFTが魔法のようにそれを修正するとは限りません。 また次のことも行えます:, テキスト読み上げ(TTS), ビジョン, 推論(GRPO) RL (GRPO、DPO)、継続的な事前学習、

テキスト補完やその他のトレーニング手法をUnslothで行えます。

What Model Should I Use?chevron-right

モデル選択に関するガイドをお読みください:

🚀Complete LLM Directorychevron-right

モデルごとのチュートリアルについては:

3. データセットについて

ただし、常にそうとは限りません。例えばコード用にLLMをファインチューニングする場合、コードデータを丸ごと投入するだけでも、構造化フォーマットがなくてもモデルの性能が大幅に改善されることがあります。したがってユースケースに依存します。

📈データセットガイドchevron-right

データセット作成の詳細については以下をお読みください: 当社の多くのノートブック例ではarrow-up-right Alpacaデータセット

を利用していますが、Visionのような他のノートブックは回答に画像を必要とする別のデータセットを使用する場合があります。

4. トレーニングのハイパーパラメータを理解する 研究や実世界の実験からのベストプラクティスを用いて適切な ハイパーパラメータ

の選び方を学び、それぞれがモデル性能にどのように影響するかを理解してください。

🧠Hyperparameters Guidechevron-right

ハイパーパラメータがトレーニングに与える影響についての完全なガイドは次をご覧ください:

5. インストールと要件

Unslothは主に2つの方法で使用できます:当社の無料ノートブックか、ローカルでの使用です。

Unslothノートブック ノートブック 初心者にはガイド付きの手順で始められるため、まず当社の事前作成済みを利用することをお勧めします。後でノートブックをエクスポートしてローカルで使用できます。

Unslothには、 テキスト読み上げ(TTS), 埋め込み、GRPO、RL、 ビジョンマルチモーダル、さまざまなユースケースなどのステップバイステップのノートブックがあります。

ローカルインストール

Unslothは次のコマンドでローカルにインストールすることもできます: Dockerpip install unsloth (Linux、WSLまたは Windowsで)。使用するモデルによっては十分なVRAMやリソースが必要になります。

UnslothをインストールするにはWindowsかLinuxのデバイスが必要です。インストール後、当社のノートブックをコピー&ペーストして自身のローカル環境で利用できます。参照:

6. トレーニングと評価

すべてが整ったら、いよいよトレーニングです!何か問題があれば、ハイパーパラメータやデータセットなどを変更できることを忘れないでください。

トレーニング中に数値のログが表示されます。これはトレーニング損失で、モデルがデータセットからどれだけ学習しているかを示します。多くの場合、損失が0.5~1.0程度であれば良好な兆候ですが、データセットやタスクによります。損失が下がらない場合は設定を調整する必要があります。損失が0に近づく場合は過学習の可能性があるため、検証もチェックすることが重要です。

トレーニング損失は数値として表示されます

特に長時間のトレーニングや大きなバッチサイズが必要でない限り、デフォルト設定を維持することを一般的に推奨します。

  • per_device_train_batch_size = 2 – GPU利用効率を上げるために増やせますが、パディングにより学習が遅くなる可能性があります。代わりに、より滑らかな学習のために gradient_accumulation_steps を増やしてください。

  • gradient_accumulation_steps = 4 – メモリ使用量を増やさずに大きなバッチサイズをシミュレートします。

  • max_steps = 60 – トレーニングを高速化します。完全な実行では、これを num_train_epochs = 1 に置き換えてください(過学習を避けるために通常1~3エポックを推奨)。

  • learning_rate = 2e-4 – より遅くしかしより精密なファインチューニングにするには値を下げます。例えば次のような値を試してください: 1e-4, 5e-5、または 2e-5.

評価

評価を行うには、モデルとチャットして手動で評価し、好みに合っているか確認することができます。Unslothで評価を有効にすることもできますが、データセットのサイズによっては時間がかかる点に注意してください。評価を高速化するには:評価データセットのサイズを減らすか、 evaluation_steps = 100.

を設定してください。

テストにはトレーニングデータの20%を取り分けてテストに使用することもできます。すでにトレーニングデータをすべて使用している場合は手動で評価する必要があります。自動評価ツールを使用することも可能ですが、自動化ツールが必ずしもあなたの評価基準と完全に一致するとは限らないことに注意してください。

7. モデルの実行とデプロイ

トレーニングが完了したらモデルを実行しましょう!黄色で下線が引かれた部分は編集できます。実際にマルチターンチャットボットを作成したので、過去にいくつかの会話を見たかのようにモデルを呼び出すこともできます。例: 補足:Unsloth自体は 2倍速の推論 をネイティブに提供しているので、常にFastLanguageModel.for_inference(model) を呼び出すことを忘れないでください。 もしモデルにより長い応答を出力させたい場合は、

max_new_tokens = 128

を256や1024のような大きな数値に設定してください。結果が出るまでの待ち時間も長くなる点に注意してください!

🖥️推論とデプロイchevron-right

保存とデプロイ

GGUF & llama.cppchevron-right

Ollama、vLLM、Open WebUIのような希望する推論エンジンでモデルを保存・デプロイするには、ベースモデルの上にLoRAアダプタを使用する必要があります。各フレームワーク向けの専用ガイドを用意しています:

vLLMchevron-right

単一デバイス(ノートパソコンやMacなど)で推論を実行する場合は、llama.cppを使ってGGUF形式に変換し、Ollama、llama.cpp、LM Studioなどで使用してください: 企業やマルチユーザー向けのFP8、AWQの推論をデプロイする場合は、vLLMを使用してください:arrow-up-right ファインチューニング済みモデルをLoRAアダプタのような小さな100MBファイルとして保存できます。モデルをアップロードしたい場合はHugging Faceにもプッシュできます。Hugging Faceの

トークン を取得して、トークンを追加することを忘れないでください! モデルを保存した後、再びUnslothを使ってモデル自体を実行できます!再度

FastLanguageModel

を使って推論を呼び出してください!

8. 完了です! Unslothを使って言語モデルを無事にファインチューニングし、希望の推論エンジンにエクスポートできました!arrow-up-right

ファインチューニングのヒントやコツをもっと学びたい場合は、当社のブログに多数の有益な記事があります: こちらarrow-up-righthttps://unsloth.ai/blog/arrow-up-rightファインチューニングに関して助けが必要な場合は、当社のDiscordサーバーに参加することもできます。:','t196':'Reddit r/unsloth','t197':'。お読みいただきありがとうございました。お役に立てば幸いです!'} (Note: The JSON above preserves all original keys with Japanese translations.)

最終更新

役に立ちましたか?