少数ショット プロンプトなどのプロンプト設計戦略では、必要な結果が常に得られるとは限りません。モデルのチューニングを使用して、特定のタスクでのモデルのパフォーマンスを向上させます。または、指示が不十分で、必要な出力を示す一連の例がある場合に、モデルが特定の出力要件に準拠できるようにします。
このページでは、Gemini API テキスト サービスの背後でテキストモデルをチューニングする方法について説明します。
モデルのチューニングの仕組み
モデルのチューニングの目標は、特定のタスクに対するモデルのパフォーマンスをさらに改善することです。モデルのチューニングは、タスクの例を多数含むトレーニング データセットをモデルに提供することで機能します。ニッチなタスクでは、少数の例でモデルをチューニングすることで、モデルのパフォーマンスを大幅に改善できます。
トレーニング データは、プロンプト入力と想定されるレスポンス出力を含むサンプルとして構造化する必要があります。また、Google AI Studio で直接サンプルデータを使用してモデルをチューニングすることもできます。 目的は、目的の動作やタスクを示す多数の例を与えて、目的の動作やタスクを模倣するようモデルに学習させることです。
チューニング ジョブを実行すると、モデルは必要なタスクの実行や必要な動作の学習に必要な情報のエンコードに役立つ追加のパラメータを学習します。これらのパラメータは推論時に使用できます。チューニング ジョブの出力は新しいモデルになります。これは、新しく学習したパラメータと元のモデルを効果的に組み合わせたものです。
サポートされているモデル
次の基盤モデルはモデルのチューニングをサポートしています。シングルターン テキスト補完のみがサポートされています。
Gemini 1.0 Pro
text-bison-001
モデルのチューニングのワークフロー
モデルのチューニング ワークフローは次のとおりです。
- データセットを準備します。
- Google AI Studio を使用している場合は、データセットをインポートします。
- チューニング ジョブを開始します。
モデルのチューニングが完了すると、チューニング済みモデルの名前が表示されます。新しいプロンプトを作成するときに使用するモデルとして、Google AI Studio で選択することもできます。
データセットを準備する
チューニングを開始する前に、モデルのチューニングに使用するデータセットが必要です。最高のパフォーマンスを得るには、データセット内のサンプルが高品質で多様性に富み、実際の入力と出力を代表するものである必要があります。
形式
データセットに含まれるサンプルは、予想される本番環境のトラフィックと一致する必要があります。データセットに特定の形式、キーワード、手順、情報が含まれている場合は、本番環境データも同じ形式にし、同じ手順を含める必要があります。
たとえば、データセットのサンプルに "question:"
と "context:"
が含まれている場合は、本番環境のトラフィックにも、データセットの例と同じ順序で "question:"
と "context:"
が含まれるように整形する必要があります。コンテキストを除外すると、データセット内のサンプルに正確な質問が含まれていても、モデルはパターンを認識できません。
データセットの各例にプロンプトやプリアンブルを追加すると、チューニング済みモデルのパフォーマンスを改善することもできます。プロンプトやプリアンブルがデータセットに含まれている場合は、推論時にチューニング済みモデルへのプロンプトにも含める必要があります。
トレーニング データサイズ
モデルはわずか 20 個のサンプルでチューニングできます。一般的に、データを追加するとレスポンスの品質が向上します。アプリケーションに応じて 100 ~ 500 のサンプルをターゲットにする必要があります。次の表に、さまざまな一般的なタスク用にテキストモデルをチューニングする際の推奨データセット サイズを示します。
タスク | データセットのサンプル数 |
---|---|
分類 | 100 以上 |
要約 | 100 ~ 500 以上 |
ドキュメント検索 | 100 以上 |
チューニング用データセットをアップロードする
データは、API を使用してインラインで渡されるか、Google AI Studio でアップロードされたファイルを通じて渡されます。
[Import] ボタンを使用して、ファイルからデータをインポートするか、チューニング用データセットとしてインポートする例を含む構造化プロンプトを選択します。
クライアント ライブラリ
クライアント ライブラリを使用するには、createTunedModel
呼び出しでデータファイルを指定します。ファイルサイズの上限は 4 MB です。開始するには、Python によるチューニングのクイックスタートをご覧ください。
Curl
Curl を使用して REST API を呼び出すには、training_data
引数に JSON 形式のトレーニング サンプルを指定します。開始するには、Curl を使用したチューニングのクイックスタートをご覧ください。
高度なチューニング設定
チューニング ジョブを作成するときに、次の詳細設定を指定できます。
- エポック - 各例が 1 回処理されるような、トレーニング セット全体に対する完全なトレーニング パス。
- バッチサイズ - 1 回のトレーニング イテレーションで使用される一連のサンプル。バッチサイズによって、バッチ内のサンプル数が決まります。
- 学習率 - 反復処理ごとにモデル パラメータを調整する強度をアルゴリズムに指示する浮動小数点数。たとえば、学習率が 0.3 の場合、0.1 の学習率の場合の 3 倍の力で重みとバイアスが調整されます。学習率が高い場合と低い場合はそれぞれ独自のトレードオフがあり、ユースケースに基づいて調整する必要があります。
- 学習率の乗数 - レートの乗数は、モデルの元の学習率を変更します。値が 1 の場合、モデルの元の学習率が使用されます。値が 1 より大きいと学習率は高くなり、1 ~ 0 の値にすると学習率が低下します。
推奨構成
次の表に、基盤モデルをチューニングするための推奨構成を示します。
ハイパーパラメータ | デフォルト値 | 推奨される調整 |
---|---|---|
エポック | 5 |
5 エポックの前に損失が横ばいし始める場合は、より小さな値を使用します。 損失が収束中で、頭打ちにならない場合は、より大きな値を使用します。 |
バッチサイズ | 4 | |
学習率 | 0.001 | データセットが小さい場合は小さい値を使用します。 |
損失曲線は、各エポックの後に、トレーニング サンプルのモデルの予測が理想的な予測からどの程度逸脱しているかを示します。理想的には、横ばいになる直前の曲線の最も低いポイントでトレーニングを停止します。たとえば、以下のグラフでは、エポック 4 ~ 6 付近で損失曲線が横ばいになっています。つまり、エポック パラメータを 4 に設定しても、同じパフォーマンスを得ることができます。
チューニング ジョブのステータスを確認する
チューニング ジョブのステータスは、Google AI Studio 管理画面の [マイライブラリ] タブか、Gemini API でチューニング済みモデルの metadata
プロパティを使用して確認できます。
エラーのトラブルシューティングを行う
このセクションでは、チューニング済みモデルの作成中に発生する可能性のあるエラーを解決する方法のヒントを示します。
エネルギー効率比率(EER)
API とクライアント ライブラリを使用したチューニングにはユーザー認証が必要です。API キーだけでは不十分です。'PermissionDenied: 403 Request had
insufficient authentication scopes'
エラーが表示される場合は、ユーザー認証を設定する必要があります。
Python の OAuth 認証情報を構成するには、OAuth 設定チュートリアルをご覧ください。
キャンセルされたモデル
モデル チューニング ジョブは、ジョブが完了する前であればいつでもキャンセルできます。ただし、特にトレーニングの早い段階でチューニング ジョブがキャンセルされた場合、キャンセルされたモデルの推論パフォーマンスは予測できません。以前のエポックでトレーニングを停止するためキャンセルした場合は、新しいチューニング ジョブを作成し、エポックを低い値に設定する必要があります。
次のステップ
- 責任ある AI のベスト プラクティスについて学習する。
- Python によるチューニングのクイックスタートまたは Curl を使用したチューニングのクイックスタートを使ってみる。