このドキュメントでは、Gemini モデルの教師ありファインチューニング データセットを定義する方法について説明します。テキスト、画像、音声、ドキュメントのデータ型をチューニングできます。
教師ありファインチューニング データセットについて
教師ありファインチューニング データセットは、事前トレーニング済みモデルを特定のタスクやドメインに合わせてファインチューニングするために使用されます。入力データは、モデルが実際の使用で遭遇すると想定される内容に近いものである必要があります。出力ラベルは、各入力の正解または結果を表すようにします。
トレーニング データセット
モデルをチューニングするには、トレーニング データセットを提供します。最適な結果を得るために、100 個のサンプルから始めることをおすすめします。必要に応じて、数千のサンプルにスケールアップできます。データセットは量よりも質の方がはるかに重要です。
制限事項:
- サンプルあたりの入力トークンと出力トークンの最大数: 32,000
- トレーニング データセットの最大ファイルサイズ: JSONL の場合、最大 1 GB。
検証データセット
検証データセットを提供することを強くおすすめします。検証データセットは、チューニング ジョブの効果を測定するのに役立ちます。
制限事項:
- サンプルあたりの入力トークンと出力トークンの最大数: 32,000
- 検証データセットのサンプルの最大数: 256
- トレーニング データセットの最大ファイルサイズ: JSONL の場合、最大 1 GB。
データセットのフォーマット
モデルのチューニング用データセットは、JSON Lines(JSONL)形式で、各行に 1 つのチューニング サンプルが含まれている必要があります。モデルをチューニングする前に、データセットを Cloud Storage バケットにアップロードする必要があります。
gemini-1.5-pro
と gemini-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
}
}
]
}
]
}
パラメータ
リクエスト本文には、データと次のパラメータが含まれます。
パラメータ | |
---|---|
|
必須: モデルとの現在の会話の内容。 シングルターンのクエリの場合、これは単一のインスタンスです。マルチターン クエリの場合、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 |
|
省略可:
モデルのパフォーマンスを向上させるための指示。たとえば、「できるだけ簡潔に答えて」、「専門用語は使用しない」などです。
|
コンテンツ
メッセージのマルチパート コンテンツを含む基本的な構造化データ型。
このクラスは、role
と parts
という 2 つの主要なプロパティで構成されています。role
プロパティはコンテンツを生成している個人を表し、parts
プロパティには複数の要素が含まれます。各要素はメッセージ内のデータ セグメントを表します。
パラメータ | |
---|---|
|
省略可: メッセージを作成するエンティティの ID。次の値を使用できます。
マルチターンではない会話の場合、このフィールドは空白のままにするか、未設定のままにできます。 |
|
1 つのメッセージを構成する順序付きのパーツのリスト。パーツによって IANA MIME タイプが異なる場合があります。 トークンの最大数や画像の数など、入力に関する制限については、Google モデルのページでモデルの仕様をご覧ください。 リクエスト内のトークンの数を計算するには、トークン数を取得するをご覧ください。 |
パーツ
マルチパート Content
メッセージの一部であるメディアを含むデータ型。
パラメータ | |
---|---|
|
省略可: テキスト プロンプトまたはコード スニペット。 |
|
省略可: ファイルに保存されたデータ。 |
Gemini 1.0 Pro のデータセットの例
チューニング用データセットの各会話のサンプルは、必須のメッセージ フィールドで構成されています。
messages
フィールドは、ロールとコンテンツのペアの配列で構成されます。role
フィールドはメッセージの作成者を表し、system
、user
、model
のいずれかに設定されます。system
ロールは省略可能で、メッセージ リストの最初の要素にのみ現れます。user
または model
のロールは必須で、交互に繰り返して設定できます。
content
フィールドはメッセージの content
です。
各サンプルで、context
と messages
を合わせたトークンの最大長は 32,768 トークンです。また、モデル フィールドの各コンテンツ フィールドは 8,192 トークンを超えないようにしてください。
{
"messages": [
{
"role": string,
"content": string
}
]
}
本番環境データとの整合性を維持する
データセットに含まれるサンプルは、想定される本番環境のトラフィックと一致していなければなりません。データセットに特定の書式、キーワード、指示、情報が含まれている場合は、本番環境のデータも同じ形式にし、同じ指示を含んでいる必要があります。
たとえば、データセットのサンプルに "question:"
と "context:"
が含まれている場合は、本番環境のトラフィックにも、データセットの例と同じ順序で "question:"
と "context:"
が含まれるように整形する必要があります。コンテキストを除外すると、データセット内のサンプルに同じ質問が含まれていても、モデルはパターンを認識しません。
チューニング用データセットを Cloud Storage にアップロードする
チューニング ジョブを実行するには、1 つ以上のデータセットを Cloud Storage バケットにアップロードする必要があります。新しい Cloud Storage バケットを作成するか、既存のバケットを使用してデータセット ファイルを保存できます。バケットのリージョンは重要ではありませんが、モデルをチューニングする Google Cloud プロジェクトのバケットを使用することをおすすめします。
バケットの準備ができたら、データセット ファイルをバケットにアップロードします。
プロンプト設計のベスト プラクティスに従う
トレーニング データセットを作成してモデルをトレーニングしたら、プロンプトを設計します。トレーニング データセットでプロンプト設計のベスト プラクティスに従い、実行するタスクと出力の形式を詳細に記述することが重要です。
次のステップ
- モデルをチューニングするリージョンを選択する。
- 生成 AI ナレッジベースを構築するソリューションで教師ありファインチューニングを使用する方法について、ジャンプ スタート ソリューション: 生成 AI ナレッジベースを確認する。