Gemma などの生成 AI(AI)モデルのファインチューニングを行うと、モデルの動作が変更されます。通常、Gemma は、特定のタスクやドメインでのパフォーマンスを向上させるか、カスタマー サービスなどの役割をより適切に果たす目的で微調整します。Gemma モデルはオープン重み付けでリリースされます。つまり、これらの重みを変更してモデルの動作を変更できます。Gemma モデルのファインチューニングの一般的な手順は次のとおりです。
フレームワークを選択する
Gemma モデルは、さまざまな AI チューニング フレームワークと互換性があります。各フレームワークにはさまざまな利点があり、通常は特定のモデル形式に制限されています。さまざまなフレームワークで Gemma モデルをチューニングするためのガイドは次のとおりです。
- LoRA を使用した Keras
- JAX 用 Gemma ライブラリ
- Hugging Face
- Google Cloud GKE(HF Transformer を使用したマルチ GPU)
- Unsloth
- Axolotl
- 分散チューニングを使用した Keras
目的のデプロイ モデル形式(Keras 形式、Safetensors、GGUF など)が、選択したフレームワークによって出力としてサポートされていることを確認します。
データの収集
モデルのチューニングにはデータが必要です。通常、チューニング データは、期待されるレスポンスと入力データのペアで構成されます。さまざまなタスクや出力のトレーニング用に、オンラインで利用可能な一般公開データセットが多数あります。たとえば、自動車部品の説明を部品番号に変換する Gemma モデルをトレーニングする場合、データセットには次のような内容が含まれます。
training_data = [
{"input_text": "Part number for A4 brake caliper", "output_text": "4M0615107BS"},
{"input_text": "Part number for Beetle fuel pump", "output_text": "6A127026H"},
{"input_text": "Part number for Camaro cylinder head", "output_text": "12711770"},
]
Gemma モデルに特定のタスクまたはロールのセットを実行させる場合は、通常、そのタスクの複数のバリエーションを示すデータセットをコンパイルする必要があります。モデルのチューニングに必要なデータ量は、目標、特にモデルに期待する動作の変化の程度と、達成するタスクと入力データのばらつきの程度に基づいて決定します。
一般に、タスクのチューニングには少量のデータセットから始め、トレーニング パラメータを調整し、ニーズを満たすタスクのパフォーマンスが得られるまでデータを追加する必要があります。サンプル アプリケーションの一部では、20 個のプロンプトとレスポンス ペアで Gemma モデルの動作に影響を与えることができます。詳しくは、Gemma を使用してビジネス用メールの AI アシスタントを構築すると Gemma による音声言語のタスクをご覧ください。
モデルをチューニングしてテストする
チューニング フレームワークとチューニング データが用意できたら、Gemma モデルのチューニング プロセスを開始できます。チューニングを行う際は、チューニング方法をいくつか選択できます。選択した方法によって、チューニングを完了するために必要なリソースが変わります。また、チューニング済みモデルのテストプランを用意して、チューニング後に期待どおりに動作しているかどうかを評価する必要があります。
パラメータ効率チューニング
Gemma などのオープン重みモデルをファインチューニングする場合は、モデルのすべてのパラメータをチューニングするか、リソースをあまり消費しないパラメータ効率的なチューニング手法を使用して、パラメータのサブセットを更新できます。完全なチューニング アプローチとは、チューニング データを適用するときに、モデルのすべてのパラメータの新しい重みを計算することを意味します。このアプローチは、数十億のパラメータに対してこれらの計算を実行するため、コンピューティングとメモリを大量に消費します。リソースをあまり使用しないチューニング方法(パラメータ効率の高いファインチューニング(PEFT))を使用すると、Low Rank Adapter(LoRA)チューニングなどの手法で、コンピューティング リソースを抑えながら同様の結果を得ることができます。LoRA を使用してリソースを抑えながらチューニングを行う方法については、LoRA を使用して Keras で Gemma モデルをファインチューニングすると Hugging Face で Gemma モデルをファインチューニングするをご覧ください。
チューニング済みモデルのテスト
特定のタスク用にモデルをチューニングしたら、実行するタスクセットに対してそのパフォーマンスをテストする必要があります。モデルは、トレーニングに使用しなかったタスクまたはリクエストでテストする必要があります。チューニング済みモデルのテスト方法は、モデルで実行するタスクと、モデルの入力と出力をどれだけ厳密に管理するかによって異なります。生成モデルのテスト管理によく使用されるのは、成功、失敗、境界ケースを使用する方法です。
- 成功テスト: チューニング済みモデルが常に正常に実行できることをリクエストします。
- 失敗テスト: チューニング済みモデルが常に実行できないようにするか、リクエストされた場合に明示的に実行を拒否するようにリクエストします。
- 境界テスト: 許容される出力動作の定義済みの境界または境界セット内にある場合に、チューニング済みモデルが実行できるリクエスト。
生成 AI アプリケーションの障害条件や境界条件をテストする場合は、責任ある生成 AI ツールキットで説明されている生成 AI の安全性に関するアプローチ、手法、ツールも適用する必要があります。
モデルをデプロイする
チューニングが完了し、テストが正常に完了したら、モデルをデプロイします。通常、チューニング済みモデルをデプロイする方法については、選択したフレームワークのドキュメントをご覧ください。
LoRA でチューニングされた重みを持つモデルをデプロイする場合、通常、この手法では、元のモデルとその重みの両方をデプロイし、LoRA 重みをモデルの追加計算レイヤとして使用します。