プリファレンス チューニングを使用して Gemini モデルをチューニングする

このドキュメントでは、Gemini モデルでプリファレンス チューニングを行う方法について説明します。

始める前に

始める前に、Gemini モデルのプリファレンス チューニング データを準備するの手順に沿ってデータセットを準備する必要があります。

調整ジョブを作成する

コンソール

Google Cloud コンソールを使用してプリファレンス チューニングを構成するには、次の操作を行います。

  1. Google Cloud コンソールの [Vertex AI] セクションで、[Vertex AI Studio] ページに移動します。

    [Vertex AI Studio] に移動

  2. [チューニング済みモデルを作成] をクリックします。

  3. [プリファレンス チューニング] を選択します。

  4. [モデルの詳細] で、次のように構成します。

    1. [チューニング済みモデル名] フィールドに、新しいチューニング済みモデルの名前を入力します(最大 128 文字)。
    2. [ベースモデル] フィールドで、チューニングする基盤モデルを選択します。
    3. [リージョン] プルダウン フィールドで、パイプライン チューニング ジョブが実行されるリージョンと、チューニングされたモデルがデプロイされるリージョンを選択します。
  5. [チューニング設定] で、次のように構成します。

    1. [エポック数] フィールドに、モデルのチューニングで実行するステップ数を入力します。
    2. [アダプタサイズ] フィールドに、モデルのチューニングに使用するアダプタサイズを入力します。
    3. 省略可: [ベータ] フィールドに、必要なベータ値を入力します。ベータは、チューニングされたモデルがベースラインにどの程度適合するかを制御する係数です。
    4. [学習率の乗数] フィールドに、各イテレーションのステップサイズを入力します。デフォルト値は 1 です。
  6. 省略可: 中間チェックポイントを無効にして最新のチェックポイントのみを使用するには、[最後のチェックポイントのみをエクスポート] 切り替えボタンをクリックします。

  7. [続行] をクリックします。

    [チューニング用データセット] ページが開きます。

  8. データセット ファイルをアップロードするには、次のいずれかを選択します。

    1. まだデータセットをアップロードしていない場合は、[ファイルを Cloud Storage にアップロード] のラジオボタンを選択します。
    2. [JSONL ファイルの選択] フィールドで [参照] をクリックし、データセット ファイルを選択します。
    3. [データセットの場所] で [参照] をクリックし、データセット ファイルを保存する Cloud Storage バケットを選択します。
    4. データセット ファイルがすでに Cloud Storage バケットにある場合は、[Cloud Storage 上の既存ファイル] のラジオボタンを選択します。
    5. [Cloud Storage のファイルパス] フィールドで [参照] をクリックし、データセット ファイルがある Cloud Storage バケットを選択します。
  9. (省略可)トレーニング中に検証指標を取得するには、[モデル検証を有効にする] 切り替えボタンをクリックします。

    1. [検証データセット] に、検証データセットの Cloud Storage パスを入力します。
  10. [チューニングを開始] をクリックします。

    新しいモデルは、[チューニングと抽出] ページの [マネージド チューニング] セクションに表示されます。モデルのチューニングが完了すると、[ステータス] に「成功」と表示されます。

REST

モデルのチューニング ジョブを作成するには、tuningJobs.create メソッドを使用して POST リクエストを送信します。一部のパラメータは、すべてのモデルでサポートされているわけではありません。チューニングするモデルに適用可能なパラメータのみを含めるようにしてください。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID。
  • TUNING_JOB_REGION: チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。
  • BASE_MODEL: チューニングする基盤モデルの名前。
  • TRAINING_DATASET_URI: トレーニング データセットの Cloud Storage URI。データセットは JSONL ファイル形式でなければなりません。最適な結果を得るには、少なくとも 100~500 個のサンプルを含めます。詳細については、教師ありチューニング データセットについてをご覧ください。
  • VALIDATION_DATASET_URI: 省略可。検証データセット ファイルの Cloud Storage URI。
  • EPOCH_COUNT: 省略可。トレーニング中にモデルがトレーニング データセット全体に対して行った完全なパスの数。事前入力された推奨値を使用する場合は、未設定のままにします。
  • BETA省略可: チューニングされたモデルがベースラインにどの程度適合するかを制御する係数。
  • ADAPTER_SIZE省略可: チューニング ジョブに使用するアダプタのサイズ。チューニング ジョブのアダプタのサイズは、トレーニング可能なパラメータの数に影響します。アダプタサイズが大きいほど、モデルはより複雑なタスクを学習できますが、より大きなトレーニング データセットと長いトレーニング時間が必要になります。
  • LEARNING_RATE_MULTIPLIER: 省略可。推奨学習率に適用する乗数。推奨値を使用する場合は、未設定のままにします。
  • EXPORT_LAST_CHECKPOINT_ONLY: 省略可: 最新のチェックポイントのみを使用する場合は、true に設定します。
  • TUNED_MODEL_DISPLAYNAME: 省略可。チューニングされたモデルの表示名。設定されていない場合は、ランダムな名前が生成されます。
  • KMS_KEY_NAME: 省略可。リソースの保護に使用される顧客管理の暗号鍵の Cloud KMS リソース ID。キーの形式は projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key です。鍵は、コンピューティング リソースが作成されているのと同じリージョンに存在する必要があります。詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。
  • SERVICE_ACCOUNT: 省略可。チューニング ジョブ ワークロードが実行されるサービス アカウント。指定しない場合、プロジェクト内の Vertex AI セキュア ファインチューニング サービス エージェントが使用されます。チューニング サービス エージェントをご覧ください。顧客管理のサービス アカウントを使用する場合は、サービス アカウントに roles/aiplatform.tuningServiceAgent ロールを付与する必要があります。また、顧客管理のサービス アカウントにチューニング サービス エージェント roles/iam.serviceAccountTokenCreator ロールを付与します。

HTTP メソッドと URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

リクエストの本文(JSON):

{
  "baseModel": "BASE_MODEL",
  "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": "EPOCH_COUNT",
          "beta": "BETA",
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

curl コマンドの例

PROJECT_ID=myproject
LOCATION=global
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
   "baseModel": "${BASE_MODEL}",
   "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "gs://mybucket/preference_tuning/data/train_data.jsonl",
      "validationDatasetUri": "gs://mybucket/preference_tuning/data/validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

ハイパーパラメータのチューニング

最初のチューニング ジョブは、ハイパーパラメータを変更せずに送信することをおすすめします。デフォルト値はモデル出力の品質を最大限に高めることが期待される、ベンチマークの結果に基づく推奨値です。

  • エポック: トレーニング中にモデルがトレーニング データセット全体に対して行う完全なパスの数。Vertex AI では、トレーニング データセットのサイズに合わせてデフォルト値が自動的に調整されます。この値はベンチマークの結果に基づいて、モデル出力の品質を最適化します。
  • ベータ版: チューニングされたモデルがベースラインにどの程度適合するかを制御する係数。ベータ版の値が小さいほど、優先される回答に向けてより積極的に更新されます。推奨範囲は 0.01~0.5 です(両端を含む)。ベータ値が 0 の場合、モデルは学習を停止します。
  • アダプタのサイズ: チューニング ジョブに使用するアダプタのサイズ。チューニング ジョブのアダプタのサイズは、トレーニング可能なパラメータの数に影響します。アダプタサイズが大きいほど、モデルはより複雑なタスクを学習できますが、より大きなトレーニング データセットと長いトレーニング時間が必要になります。
  • 学習率の乗数: 推奨学習率に適用する乗数。この値を増やすと収束が早まり、値を減らすと過学習を回避できます。

チューニング ジョブを表示またはキャンセルする

チューニング ジョブのリスト表示、チューニング ジョブの詳細の表示、チューニング ジョブのキャンセル、チューニング済みモデルの削除を行うには、教師ありファインチューニングのドキュメントの次のセクションをご覧ください。

モデル チューニングの指標

モデルのチューニング ジョブは、次のチューニング指標を自動的に収集します。

  • /preference_optimization_train_loss: トレーニング ステップでのチューニング データセットのプリファレンスの損失。

モデル検証の指標

検証データが提供されると、モデルのチューニング ジョブは次の検証指標を自動的に収集します。

  • /eval_total_loss: 検証ステップでの検証データセットのプリファレンスの損失。

指標の可視化は、チューニング ジョブの実行が開始された後に利用できます。チューニングの進行に応じてリアルタイムで更新されます。チューニング ジョブの作成時に検証データセットを指定しなかった場合、チューニング指標の可視化のみを行うことができます。

次のステップ