Gemini モデルの教師ありファインチューニング データを準備する

このドキュメントでは、Gemini モデルの教師ありファインチューニング データセットを定義する方法について説明します。テキスト画像音声ドキュメントのデータ型をチューニングできます。

教師ありファインチューニング データセットについて

教師ありファインチューニング データセットは、事前トレーニング済みモデルを特定のタスクやドメインに合わせてファインチューニングするために使用されます。入力データは、モデルが実際の使用で遭遇すると想定される内容に近いものである必要があります。出力ラベルは、各入力の正解または結果を表すようにします。

トレーニング データセット

モデルをチューニングするには、トレーニング データセットを提供します。最適な結果を得るために、100 個のサンプルから始めることをおすすめします。必要に応じて、数千のサンプルにスケールアップできます。データセットは量よりも質の方がはるかに重要です。

制限事項:

  • サンプルあたりの入力トークンと出力トークンの最大数: 32,000
  • トレーニング データセットの最大ファイルサイズ: JSONL の場合、最大 1 GB。

検証データセット

検証データセットを提供することを強くおすすめします。検証データセットは、チューニング ジョブの効果を測定するのに役立ちます。

制限事項:

  • サンプルあたりの入力トークンと出力トークンの最大数: 32,000
  • 検証データセットのサンプルの最大数: 256
  • トレーニング データセットの最大ファイルサイズ: JSONL の場合、最大 1 GB。

データセットのフォーマット

モデルのチューニング用データセットは、JSON Lines(JSONL)形式で、各行に 1 つのチューニング サンプルが含まれている必要があります。モデルをチューニングする前に、データセットを Cloud Storage バケットにアップロードする必要があります。

gemini-1.5-progemini-1.5-flash のデータセットの例

{
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "fileData": {
            "mimeType": string,
            "fileUri": string
          }
        }
      ]
    }
  ]
}

パラメータ

リクエスト本文には、データと次のパラメータが含まれます。

パラメータ

contents

必須: Content

モデルとの現在の会話の内容。

シングルターンのクエリの場合、これは単一のインスタンスです。マルチターン クエリの場合、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。

systemInstruction

省略可: Content

gemini-1.5-flashgemini-1.5-progemini-1.0-pro-002 で使用できます。

モデルのパフォーマンスを向上させるための指示。たとえば、「できるだけ簡潔に答えて」、「専門用語は使用しない」などです。

text 文字列はトークンの上限に計上されます。

systemInstructionrole フィールドは無視されるため、モデルのパフォーマンスには影響しません。

コンテンツ

メッセージのマルチパート コンテンツを含む基本的な構造化データ型。

このクラスは、roleparts という 2 つの主要なプロパティで構成されています。role プロパティはコンテンツを生成している個人を表し、parts プロパティには複数の要素が含まれます。各要素はメッセージ内のデータ セグメントを表します。

パラメータ

role

省略可: string

メッセージを作成するエンティティの ID。次の値を使用できます。

  • user: メッセージが実際のユーザーによって送信されたことを示します(通常はユーザー生成のメッセージ)。
  • model: メッセージがモデルによって生成されたことを示します。

model 値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。

マルチターンではない会話の場合、このフィールドは空白のままにするか、未設定のままにできます。

parts

part

1 つのメッセージを構成する順序付きのパーツのリスト。パーツによって IANA MIME タイプが異なる場合があります。

トークンの最大数や画像の数など、入力に関する制限については、Google モデルのページでモデルの仕様をご覧ください。

リクエスト内のトークンの数を計算するには、トークン数を取得するをご覧ください。

パーツ

マルチパート Content メッセージの一部であるメディアを含むデータ型。

パラメータ

text

省略可: string

テキスト プロンプトまたはコード スニペット。

fileData

省略可: fileData

ファイルに保存されたデータ。

Gemini 1.0 Pro のデータセットの例

チューニング用データセットの各会話のサンプルは、必須のメッセージ フィールドで構成されています。

messages フィールドは、ロールとコンテンツのペアの配列で構成されます。role フィールドはメッセージの作成者を表し、systemusermodel のいずれかに設定されます。system ロールは省略可能で、メッセージ リストの最初の要素にのみ現れます。user または model のロールは必須で、交互に繰り返して設定できます。

content フィールドはメッセージの content です。

各サンプルで、contextmessages を合わせたトークンの最大長は 32,768 トークンです。また、モデル フィールドの各コンテンツ フィールドは 8,192 トークンを超えないようにしてください。

{
  "messages": [
    {
      "role": string,
      "content": string
    }
  ]
}

本番環境データとの整合性を維持する

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

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

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

チューニング ジョブを実行するには、1 つ以上のデータセットを Cloud Storage バケットにアップロードする必要があります。新しい Cloud Storage バケットを作成するか、既存のバケットを使用してデータセット ファイルを保存できます。バケットのリージョンは重要ではありませんが、モデルをチューニングする Google Cloud プロジェクトのバケットを使用することをおすすめします。

バケットの準備ができたら、データセット ファイルをバケットにアップロードします。

プロンプト設計のベスト プラクティスに従う

トレーニング データセットを作成してモデルをトレーニングしたら、プロンプトを設計します。トレーニング データセットでプロンプト設計のベスト プラクティスに従い、実行するタスクと出力の形式を詳細に記述することが重要です。

次のステップ