Gemini API でファインチューニングする

少数ショット プロンプトなどのプロンプト設計戦略では、必要な結果が得られない場合があります。ファインチューニングは、モデルの モデルが特定の出力に沿うように支援したり、 手順が不十分で一連の例がある場合に、 必要があります。

このページでは、Gemini API テキスト サービスの背後にあるテキストモデルのファインチューニングの概要について説明します。チューニングを始める準備ができたら、 ファインチューニング チュートリアルをご覧ください。ご希望の場合は、 特定のユースケースに合わせて LLM をカスタマイズする一般的な概要については、 LLM: ファインチューニング、抽出、プロンプト エンジニアリングML 集中講座

ファインチューニングの仕組み

ファインチューニングの目標は、1 対 1 または 1 の会話に対して できます。ファインチューニングは、モデルにトレーニング タスクの例を多数含むデータセットです。ニッチなタスクでは、少数の例でモデルをチューニングすることで、モデルのパフォーマンスを大幅に改善できます。この種のモデルのチューニングは、 教師ありファインチューニング。他の種類のファインチューニングと区別します。

トレーニング データは、プロンプト入力を使用したサンプルとして構造化する必要があります。 出力を返します。Google AI Studio でサンプルデータを使用してモデルを直接チューニングすることもできます。目的は、その動作やタスクを示す多くの例をモデルに提供して、目的の動作やタスクを模倣するようモデルに学習させることです。

チューニング ジョブを実行すると、モデルは、目的のタスクの実行や目的の動作の学習に必要な情報をエンコードする際に役立つ追加のパラメータを学習します。これらのパラメータは推論時に使用できます。出力は、 チューニング ジョブは新しいモデルであり、実質的には 元のモデルとの差を測定します。

データセットを準備する

ファインチューニングを開始する前に、モデルのチューニングに使用するデータセットが必要です。対象 データセットのサンプルは高品質でなければならず 多様で、実際の入力と出力を表しています。

形式

データセットに含まれるサンプルは、想定される本番環境と一致している必要があります トラフィックです。データセットに特定の書式、キーワード、指示、情報が含まれている場合は、本番データも同じ形式にし、同じ指示を含んでいる必要があります。

たとえば、データセットのサンプルに "question:""context:" が含まれている場合は、本番環境のトラフィックにも、データセットの例と同じ順序で "question:""context:" が含まれるように整形する必要があります。コンテキストを除外すると、データセット内の例に正確な質問が含まれていても、モデルはパターンを認識できません。

もう一つの例として、このアプリケーションの Python トレーニング データで シーケンスの次の数値を生成します。

training_data = [
  {"text_input": "1", "output": "2"},
  {"text_input": "3", "output": "4"},
  {"text_input": "-3", "output": "-2"},
  {"text_input": "twenty two", "output": "twenty three"},
  {"text_input": "two hundred", "output": "two hundred one"},
  {"text_input": "ninety nine", "output": "one hundred"},
  {"text_input": "8", "output": "9"},
  {"text_input": "-98", "output": "-97"},
  {"text_input": "1,000", "output": "1,001"},
  {"text_input": "10,100,000", "output": "10,100,001"},
  {"text_input": "thirteen", "output": "fourteen"},
  {"text_input": "eighty", "output": "eighty one"},
  {"text_input": "one", "output": "two"},
  {"text_input": "three", "output": "four"},
  {"text_input": "seven", "output": "eight"},
]

データセット内の各サンプルにプロンプトやプリアンブルを追加すると、 トレーニング済みモデルのパフォーマンスを改善しますプロンプトまたはプリアンブルが 含まれる場合、チューニングされたモデルに対するプロンプトに トレーニングされます。

制限事項

注: Gemini 1.5 Flash のファインチューニング データセットには次のものがあります。 制限事項:

  • 例ごとの最大入力サイズは 40,000 文字です。
  • 例あたりの最大出力サイズは 5,000 文字です。

トレーニング データサイズ

20 個のサンプルでモデルをファインチューニングできます。追加データ 一般的に回答の質が向上します。100 をターゲットとしてください 500 個の例があります次の表に示す さまざまな一般的なタスク向けにテキストモデルをファインチューニングするための推奨データセット サイズは次のとおりです。

タスク データセット内のサンプル数
分類 100 以上
要約 100 ~ 500 以上
ドキュメント検索 100 以上

チューニング用データセットをアップロードする

データは、API を使用してインラインで渡されるか、Google Cloud にアップロードされたファイルを通じて渡されます。 説明します。

クライアント ライブラリを使用するには、createTunedModel 呼び出しでデータファイルを指定します。 ファイルサイズの上限は 4 MB です。始める前に、Python によるファインチューニングのクイックスタートをご覧ください。

cURL を使用して REST API を呼び出すには、JSON 形式のトレーニング サンプルを training_data 引数。詳しくは、 cURL を使用したチューニングのクイックスタート ご覧ください。

高度なチューニング設定

チューニング ジョブを作成するときに、次の詳細設定を指定できます。

  • エポック: トレーニング セット全体に対するフル トレーニング パス。 1 回だけ処理されています。
  • バッチサイズ: 1 回のトレーニング イテレーションで使用されるサンプルのセット。「 バッチサイズはバッチのサンプル数を決定します
  • 学習率: アルゴリズムに学習過程を指示する浮動小数点数 モデルのパラメータを強く調整する必要があります。たとえば、学習率が 0.3 の場合、重みとバイアスの調整は学習率が 0.1 の場合の 3 倍強くなります。学習率が高い / 低いことでは、 独自のトレードオフがあり、ユースケースに応じて調整する必要があります。
  • 学習率の乗数: レートの乗数は、モデルの 予測します。値を 1 にすると、元の学習率が使用されます。 モデルです。値が 1 より大きい場合、学習率は高くなり、1 の間の値になります。 0 に設定すると学習率が低下します。

次の表に、Cloud Storage オブジェクトを微調整するための 基盤モデル:

ハイパーパラメータ デフォルト値 推奨される調整
エポック 5

5 エポックより前に損失が横ばいし始めた場合は、小さい値を使用します。

損失が収束しつつあり、横ばい状態でないと思われる場合は、より大きな値を使用します。

バッチサイズ 4
学習率 0.001 データセットが小さい場合は、小さい値を使用します。

損失曲線は、モデルの予測が理想からどの程度逸脱しているかを示します。 エポックごとにトレーニングサンプルで予測が行われます。テストを中断して 停滞する直前の曲線の最も低いポイントでトレーニングを行うことになります。たとえば 下のグラフはエポック 4 ~ 6 頃で損失曲線が横ばい状態になっていることを表しています。 Epoch パラメータを 4 に設定しても、同じパフォーマンスが得られます。

モデルの損失曲線を示す折れ線グラフ入力と出力の間の線は
第 1 エポックと第 2 エポックで 0 に近い値まで急激に減少し、
3 エポック後に終了します。

チューニング ジョブのステータスを確認する

チューニング ジョブのステータスは、Google AI Studio の [マイライブラリ] タブを使用するか、metadata Gemini API

エラーのトラブルシューティングを行う

このセクションでは、エラー発生時に発生する可能性のあるエラーの解決方法に関するヒントを紹介します。 モデルを作成します。

認証

API とクライアント ライブラリを使用してチューニングを行うには、ユーザー認証が必要です。API キー 単独では不十分です'PermissionDenied: 403 Request had insufficient authentication scopes' エラーが発生した場合は、ユーザーを設定する必要があります。 あります。

Python 用の OAuth 認証情報を設定するには、このモジュールの OAuth 設定チュートリアルをご覧ください。

キャンセルされたモデル

ファインチューニング ジョブは、ジョブが完了する前であればいつでもキャンセルできます。ただし、 キャンセルされたモデルの推論パフォーマンスは予測不可能です。 調整ジョブはトレーニングの早い段階でキャンセルされます。次の理由で解約した場合: 以前のエポックでトレーニングを停止する場合は、新しいチューニング エポックを低い値に設定します。

チューニング済みモデルの制限事項

注: チューニング済みモデルには次の制限があります。

  • チューニング済みの Gemini 1.5 Flash モデルの入力上限は 40,000 文字です。
  • JSON モードは、チューニング済みモデルではサポートされていません。
  • テキスト入力のみがサポートされています。

次のステップ

ファインチューニングのチュートリアルを開始する: