Gemma などの生成 AI モデルをファインチューニングすると、モデルの動作が変更されます。通常、Gemma は特定のタスクやドメインでのパフォーマンスを向上させること、またはカスタマー サービスなどの役割をより適切に果たすことを目的としてファインチューニングされます。Gemma モデルはオープン ウェイトでリリースされます。つまり、これらの重みを変更して、モデルの動作を変更できます。Gemma モデルをファインチューニングする一般的な手順は次のとおりです。
フレームワークを選択する
Gemma モデルは、さまざまな AI チューニング フレームワークと互換性があります。各フレームワークにはさまざまな利点があり、通常は特定のモデル形式に限定されます。さまざまなフレームワークで Gemma モデルをチューニングするためのガイドは次のとおりです。
- LoRA を使用した Keras
- JAX 用 Gemma ライブラリ
- Hugging Face
- Google Cloud GKE (HF Transformers を使用したマルチ GPU)
- Google Cloud Vertex AI
- 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 などのオープン ウェイト モデルをファインチューニングする場合は、モデルのすべてのパラメータをチューニングするか、リソース消費量の少ないパラメータ効率の高いチューニング手法を使用して、パラメータのサブセットを更新できます。フル チューニング アプローチでは、チューニング データを適用するときに、モデルのすべてのパラメータの新しい重みを計算します。このアプローチでは、数十億のパラメータに対してこれらの計算を行うため、コンピューティングとメモリを大量に消費します。Low Rank Adapter(LoRA)チューニングなどの手法を含む、パラメータ効率の高いファインチューニング(PEFT)と呼ばれる、リソース消費量の少ないチューニング アプローチを使用すると、コンピューティング リソースを削減しながら同様の結果を得ることができます。LoRA を使用してリソースを削減してチューニングを行う方法の詳細については、LoRA を使用して Keras で Gemma モデルをファインチューニングすると Hugging Face で Gemma モデルをファインチューニングするをご覧ください。
チューニング済みモデルをテストする
特定のタスク用にモデルをチューニングしたら、実行させたいタスクのセットに対してパフォーマンスをテストする必要があります。モデルをテストする際は、モデルが特別にトレーニングされていないタスクやリクエストを使用する必要があります。チューニングされたモデルのテスト方法は、モデルに実行させたいタスクと、モデルの入力と出力をどの程度厳密に管理するかによって異なります。生成モデルのテストを管理する一般的な方法は、成功ケース、失敗ケース、境界ケースを使用することです。
- 成功テスト: チューニングされたモデルが常に正常に実行できるリクエスト。
- 失敗テスト: チューニングされたモデルが常に実行できない、またはリクエストされた場合に明示的に実行を拒否する必要があるリクエスト。
- 境界テスト: チューニングされたモデルが、許容可能な出力動作の定義された境界または境界のセット内に収まる場合に実行できるリクエスト。
生成 AI アプリケーションの障害条件または境界条件をテストする場合は、責任ある生成 AI ツールキットで説明されている生成 AI の安全性に関するアプローチ、手法、ツールも適用する必要があります。
モデルをデプロイする
チューニングとテストが完了したら、モデルをデプロイします。通常、チューニングされたモデルをデプロイする方法については、選択したフレームワークのドキュメントを参照してください。
LoRA チューニングされた重みを使用してモデルをデプロイする場合は、この手法では通常、元のモデルとその重みの両方をデプロイし、LoRA 重みをモデルの追加の計算レイヤとして使用することに注意してください。