教師ありファインチューニングを使用して Gemini モデルをチューニングする

このドキュメントでは、教師ありファインチューニングを使用して Gemini モデルをチューニングする方法について説明します。

始める前に

始める前に、教師ありファインチューニング データセットを準備する必要があります。ユースケースに応じて、データセットの準備に関する要件は異なります。

サポートされているモデル

教師ありチューニングは、次の Gemini モデルでサポートされています。

クリックしてサポートされているモデルを開く

チューニング ジョブを作成する

教師ありファインチューニング ジョブは、 Google Cloud コンソール、Google Gen AI SDK、Agent Platform SDK for Python、REST API、または Colab Enterprise を使用して作成できます。

省略可:(プレビュー)チューニング ジョブの完了後に Gen AI Evaluation Service を使用して評価を自動的に実行するには、evaluationConfig を含めます。この評価構成は us-central1 リージョンで使用できます。

コンソール

Google Cloud コンソールを使用し、教師ありファインチューニングでテキストモデルをチューニングするには、次のステップを実行します。

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

    Agent Platform Studio に移動

  2. [チューニング済みモデルを作成] をクリックします。
  3. [モデルの詳細] で、次のように構成します。
    1. [チューニング済みモデル名] フィールドに、新しいチューニング済みモデルの名前を入力します(最大 128 文字)。
    2. [ベースモデル] フィールドで、チューニングする基盤モデルを選択します。
    3. [リージョン] プルダウン フィールドで、パイプライン チューニング ジョブが実行されるリージョンと、チューニングされたモデルがデプロイされるリージョンを選択します。
  4. [チューニング設定] で、次のように構成します。
    1. [エポック数] フィールドに、モデルのチューニングで実行するステップ数を入力します。
    2. [アダプタサイズ] フィールドに、モデルのチューニングに使用するアダプタサイズを入力します。
    3. [学習率の乗数] フィールドに、各イテレーションのステップサイズを入力します。デフォルト値は 1 です.
  5. 省略可: 中間チェックポイントを無効にして最新のチェックポイントのみを使用するには、[最後のチェックポイントのみをエクスポート] 切り替えボタンをクリックします。
  6. [続行] をクリックします。

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

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

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

Gen AI SDK

Google Gen AI SDK をインストールします。

pip install --upgrade google-genai

詳しくは、SDK リファレンス ドキュメントをご覧ください。

Gemini Enterprise Agent Platform で Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_ENTERPRISE=True

チューニング ジョブを作成します。

import time

from google import genai
from google.genai.types import HttpOptions, CreateTuningJobConfig, TuningDataset, EvaluationConfig, OutputConfig, GcsDestination, Metric

# TODO(developer): Update and un-comment below line
# output_gcs_uri = "gs://your-bucket/your-prefix"

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))

training_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
)
validation_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl",
)

evaluation_config = EvaluationConfig(
    metrics=[
        Metric(
            name="FLUENCY",
            prompt_template="""Evaluate this {prediction}"""
        )
    ],
    output_config=OutputConfig(
        gcs_destination=GcsDestination(
            output_uri_prefix=output_gcs_uri,
        )
    ),
)

tuning_job = client.tunings.tune(
    base_model="gemini-2.5-flash",
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        validation_dataset=validation_dataset,
        evaluation_config=evaluation_config,
    ),
)

running_states = set([
    "JOB_STATE_PENDING",
    "JOB_STATE_RUNNING",
])

while tuning_job.state in running_states:
    print(tuning_job.state)
    tuning_job = client.tunings.get(name=tuning_job.name)
    time.sleep(60)

print(tuning_job.tuned_model.model)
print(tuning_job.tuned_model.endpoint)
print(tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# projects/123456789012/locations/us-central1/metadataStores/default/contexts/tuning-experiment-2025010112345678

if tuning_job.tuned_model.checkpoints:
    for i, checkpoint in enumerate(tuning_job.tuned_model.checkpoints):
        print(f"Checkpoint {i + 1}: ", checkpoint)
    # Example response:
    # Checkpoint 1:  checkpoint_id='1' epoch=1 step=10 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789000000'
    # Checkpoint 2:  checkpoint_id='2' epoch=2 step=20 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789012345'

Agent Platform SDK


import time

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-2.0-flash-001",
    # 1.5 and 2.0 models use the same JSONL format
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-1_5/text/sft_train_data.jsonl",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# <google.cloud.aiplatform.metadata.experiment_resources.Experiment object at 0x7b5b4ae07af0>

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: 省略可。トレーニング中にモデルがトレーニング データセット全体に対して行った完全なパスの数。事前入力された推奨値を使用する場合は、未設定のままにします。
  • ADAPTER_SIZE省略可: チューニング ジョブに使用するアダプタのサイズ。チューニング ジョブのアダプタのサイズは、トレーニング可能なパラメータの数に影響します。アダプタサイズが大きいほど、モデルはより複雑なタスクを学習できますが、より大きなトレーニング データセットと長いトレーニング時間が必要になります。
  • LEARNING_RATE_MULTIPLIER: 省略可。推奨学習率に適用する乗数。推奨値を使用する場合は、未設定のままにします。
  • EXPORT_LAST_CHECKPOINT_ONLY: 省略可: 最新のチェックポイントのみを使用する場合は、true に設定します。
  • METRIC_SPEC: 省略可: Gen AI Evaluation Service を使用して評価を実行するために使用する 1 つ以上の指標仕様。指標仕様として、"pointwise_metric_spec""pairwise_metric_spec""exact_match_spec""bleu_spec""rouge_spec" を使用できます。
  • METRIC_SPEC_FIELD_NAME: 省略可: 選択した指標仕様に必要なフィールド。例: "metric_prompt_template"
  • METRIC_SPEC_FIELD_NAME_CONTENT: 省略可: 選択した指標仕様のフィールド コンテンツ。たとえば、ポイントワイズ評価には "Evaluate the fluency of this sentence: {response}. Give score from 0 to 1. 0 - not fluent at all. 1 - very fluent." のようなフィールド コンテンツを使用できます。
  • CLOUD_STORAGE_BUCKET: 省略可: Gen AI Evaluation Service によって実行された評価の結果を保存する Cloud Storage バケット。
  • TUNED_MODEL_DISPLAYNAME: 省略可。チューニングされたモデルの表示名。設定されていない場合は、ランダムな名前が生成されます。
  • KMS_KEY_NAME: 省略可。リソースの保護に使用される顧客管理の暗号鍵の Cloud KMS リソース ID。キーの形式は projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key です。鍵は、コンピューティング リソースが作成されているのと同じリージョンに存在する必要があります。詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。
  • SERVICE_ACCOUNT: 省略可。チューニング ジョブ ワークロードが実行されるサービス アカウント。指定しない場合、プロジェクト内の Agent Platform セキュア ファインチューニング サービス エージェントが使用されます。チューニング サービス エージェントをご覧ください。顧客管理のサービス アカウントを使用する場合は、サービス アカウントに 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",
  "supervisedTuningSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": "EPOCH_COUNT",
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
      "evaluationConfig": {
          "metrics": [
              {
                  "aggregation_metrics": ["AVERAGE", "STANDARD_DEVIATION"],
                  "METRIC_SPEC": {
                      "METRIC_SPEC_FIELD_NAME":
                          METRIC_SPEC_FIELD_CONTENT
                  }
              },
          ],
          "outputConfig": {
              "gcs_destination": {
                  "output_uri_prefix": "CLOUD_STORAGE_BUCKET"
              }
          },
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

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

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

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": "gemini-2.5-flash",
   "supervisedTuningSpec" : {
      "training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
      "validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

Colab Enterprise

Agent Platform でモデル チューニング ジョブを作成するには、Colab Enterprise のサイドパネルを使用します。サイドパネルは、関連するコード スニペットをノートブックに追加します。次に、コード スニペットを変更して実行し、チューニング ジョブを作成します。Agent Platform のチューニング ジョブでサイドパネルを使用する方法の詳細については、Agent Platform を操作してモデルをチューニングするをご覧ください。

  1. Google Cloud コンソールで、Colab Enterprise の [マイ ノートブック] ページに移動します。

    [マイ ノートブック] に移動

  2. [リージョン] メニューで、ノートブックを含むリージョンを選択します。

  3. 開きたいノートブックをクリックします。ノートブックをまだ作成していない場合は、ノートブックを作成します。

  4. ノートブックの右側のサイドパネルで、 [チューニング] ボタンをクリックします。

    サイドパネルで [チューニング] タブが開きます。

  5. [Gemini モデルをチューニングする] ボタンをクリックします。

    Colab Enterprise により、Gemini モデルをチューニングするためのコードセルがノートブックに追加されます。

  6. ノートブックで、パラメータ値を格納するコードセルを探します。これらのパラメータを使用して Vertex AI を操作します。

  7. 次のパラメータの値を更新します。

    • PROJECT_ID: ノートブックが含まれるプロジェクトの ID。
    • REGION: ノートブックが配置されているリージョン。
    • TUNED_MODEL_DISPLAY_NAME: チューニング済みモデルの名前。
  8. 次のコードセルのモデル チューニング パラメータを更新します。

    • source_model: 使用する Gemini モデル(例: gemini-2.0-flash-001)。
    • train_dataset: トレーニング データセットの URL。
    • validation_dataset: 検証データセットの URL。
    • 必要に応じて、残りのパラメータを調整します。
  9. サイドパネルからノートブックに追加されたコードセルを実行します。

  10. 最後のコードセルが実行されたら、表示された  [チューニング ジョブを表示] ボタンをクリックします。

  11. サイドパネルには、モデル チューニング ジョブに関する情報が表示されます。

    • 指標の準備が整うと、[モニタリング] タブにチューニング指標が表示されます。
    • [データセット] タブには、データセットが処理された後、データセットに関するサマリーと指標が表示されます。
    • [詳細] タブには、チューニング方法や使用したベースモデル(ソースモデル)など、チューニング ジョブに関する情報が表示されます。
  12. チューニング ジョブが完了したら、[チューニングの詳細] タブから直接、モデルをテストできるページに移動できます。[テスト] をクリックします。

    Google Cloud コンソールで Vertex AI の [テキスト チャット] ページが開きます。ここでモデルをテストできます。

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

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

  • エポック: トレーニング中にモデルがトレーニング データセット全体に対して行う完全なパスの数。Gemini Enterprise Agent Platform では、トレーニング データセットのサイズに合わせてデフォルト値が自動的に調整されます。この値はベンチマークの結果に基づいて、モデル出力の品質を最適化します。
  • アダプタのサイズ: チューニング ジョブに使用するアダプタのサイズ。チューニング ジョブのアダプタのサイズは、トレーニング可能なパラメータの数に影響します。アダプタサイズが大きいほど、モデルはより複雑なタスクを学習できますが、より大きなトレーニング データセットと長いトレーニング時間が必要になります。
  • 学習率の乗数: 推奨学習率に適用する乗数。この値を増やすと収束が早まり、値を減らすと過学習を回避できます。

教師ありファインチューニングのベスト プラクティスについては、ブログ投稿「Gemini の教師ありファインチューニング: ベスト プラクティス ガイド」をご覧ください。

チューニング ジョブのリストを表示する

現在のプロジェクトのチューニング ジョブのリストを表示するには、Google Cloud コンソール、Google Gen AI SDK、Agent Platform SDK for Python を使用するか、tuningJobs メソッドを使用して GET リクエストを送信します。

コンソール

Google Cloud コンソールでチューニング ジョブを表示するには、[Agent Platform Studio] ページに移動します。

Agent Platform Studio に移動

Gemini チューニング ジョブは、[チューニング済みモデル] セクションの表に表示されます。

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

responses = client.tunings.list()
for response in responses:
    print(response.name)
    # Example response:
    # projects/123456789012/locations/us-central1/tuningJobs/123456789012345

Agent Platform SDK for Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7c85287b2680>
# resource name: projects/12345678/locations/us-central1/tuningJobs/123456789012345

REST

モデルのチューニング ジョブのリストを表示するには、tuningJobs.list メソッドを使用して GET リクエストを送信します。

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

  • PROJECT_ID:
  • TUNING_JOB_REGION: チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。

HTTP メソッドと URL:

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

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

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

チューニング ジョブの詳細を取得する

現在のプロジェクトのチューニング ジョブの詳細を取得するには、Google Cloud コンソール、Google Gen AI SDK、Agent Platform SDK for Python を使用するか、tuningJobs メソッドを使用して GET リクエストを送信します。

コンソール

  1. チューニング済みモデルの詳細を Google Cloud コンソールで表示するには、[Agent Platform Studio] ページに移動します。

    Agent Platform Studio に移動

  2. [チューニング済みモデル] の表でモデルを見つけて、[詳細] をクリックします。

    モデルの詳細が表示されます。

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

print(tuning_job.tuned_model.model)
print(tuning_job.tuned_model.endpoint)
print(tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# projects/123456789012/locations/us-central1/metadataStores/default/contexts/tuning-experiment-2025010112345678

Agent Platform SDK for Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
response = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)

print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7cc4bb20baf0>
# resource name: projects/1234567890/locations/us-central1/tuningJobs/4982013113894174720

REST

モデルのチューニング ジョブのリストを表示するには、tuningJobs.get メソッドを使用して GET リクエストを送信し、TuningJob_ID を指定します。

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

  • PROJECT_ID:
  • TUNING_JOB_REGION: チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。
  • TUNING_JOB_ID: チューニング ジョブの ID。

HTTP メソッドと URL:

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

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

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

チューニング ジョブをキャンセルする

現在のプロジェクトのチューニング ジョブをキャンセルするには、 Google Cloud コンソールまたは Agent Platform SDK for Python を使用するか、tuningJobs メソッドを使用して POST リクエストを送信します。

REST

モデルのチューニング ジョブのリストを表示するには、tuningJobs.cancel メソッドを使用して GET リクエストを送信し、TuningJob_ID を指定します。

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

  • PROJECT_ID:
  • TUNING_JOB_REGION: チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。
  • TUNING_JOB_ID: チューニング ジョブの ID。

HTTP メソッドと URL:

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

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

curl

次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

Agent Platform SDK for Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
job = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)
job.cancel()

コンソール

  1. Google Cloud コンソールでチューニング ジョブをキャンセルするには、[Agent Platform Studio] ページに移動します。

    Agent Platform Studio に移動

  2. [チューニング済みモデル] の表で、[ 実行を管理] をクリックします。

  3. [キャンセル] をクリックします。

チューニング済みモデルを評価する

チューニング ジョブの後に自動的に実行するように Gen AI Evaluation Service を構成していない場合は、Agent Platform SDK for Python または Google Gen AI SDK を使用するか、generateContent メソッドを使用して POST リクエストを送信することで、ベース Gemini と同じ方法でチューニング済みモデル エンドポイントを操作できます。

思考モデルの場合、最適なパフォーマンスと費用効率を実現するために、チューニングされたタスクで思考を無効にするか、思考予算を最小値に設定することをおすすめします。そうすることで、教師ありファインチューニングにおいてモデルがチューニング データセットの正解を模倣するように学習し、思考プロセスを省略します。そのため、チューニングされたモデルは、思考予算なしでタスクを効果的に処理できます。

次の例では、「空はなぜ青いの?」という質問をモデルに提示します。

コンソール

  1. チューニング済みモデルの詳細を Google Cloud コンソールで表示するには、[Agent Platform Studio] ページに移動します。

    Agent Platform Studio に移動

  2. [チューニング済みモデル] テーブルで、[テスト] を選択します。

    チューニングしたモデルで会話を作成できるページが表示されます。

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

contents = "Why is the sky blue?"

# Predicts with the tuned endpoint.
response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents=contents,
)
print(response.text)
# Example response:
# The sky is blue because ...

Agent Platform SDK for Python

    from vertexai.preview.tuning import sft
    from vertexai.generative_models import GenerativeModel

    sft_tuning_job = sft.SupervisedTuningJob("projects//locations//tuningJobs/")
    tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
    content = "Why is sky blue?"
    print(tuned_model.generate_content(content))
    

REST

プロンプトを使用してチューニング済みモデルをテストするには、POST リクエストを送信して `MREP_LOCATION` と `ENDPOINT_ID` を指定します。

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

  • MREP_LOCATION: チューニング ジョブが実行される Google Cloudマルチリージョン エンドポイントのロケーション。次の値が使用できます。
    • us
    • eu
  • PROJECT_ID: [プロジェクト ID](/resource-manager/docs/creating-managing-projects#identifiers)。
  • ENDPOINT_ID: GET API から取得したチューニング済みモデルのエンドポイント ID。
  • TEMPERATURE: 温度は、topPtopK が適用された場合に発生するレスポンス生成時のサンプリングに使用されます。温度は、トークン選択のランダム性の度合いを制御します。温度が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度が 0 の場合、確率が最も高いトークンが常に選択されます。この場合、特定のプロンプトに対するレスポンスはほとんど確定的ですが、わずかに変動する可能性は残ります。

    モデルが返すレスポンスが一般的すぎる、短すぎる、あるいはフォールバック(代替)レスポンスが返ってくる場合は、温度を高く設定してみてください。モデルが無限生成の状態に移行した場合は、温度を 0.1 以上に引き上げると、結果が改善される可能性があります。

    1.0 は、Temperature の推奨開始値です。
  • TOP_P: Top-P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が Top-P 値に等しくなるまで、確率の高いものから低いものへと選択されます。たとえば、トークン A、B、C の確率が 0.3、0.2、0.1 であり、トップ P 値が 0.5 であるとします。この場合、モデルは温度を使用して A または B を次のトークンとして選択し、C は候補から除外します。

    ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。

  • TOP_K: Top-K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものであることになります(グリーディ デコードとも呼ばれます)。Top-K が 3 の場合は、最も確率が高い上位 3 つのトークンから次のトークン選択されることになります(温度を使用します)。

    トークン選択のそれぞれのステップで、最も高い確率を持つ Top-K のトークンがサンプリングされます。その後、トークンはトップ P に基づいてさらにフィルタリングされ、最終的なトークンは温度サンプリングを用いて選択されます。

    ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。

  • MAX_OUTPUT_TOKENS: レスポンスで生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンは約 60~80 語に相当します。

    回答を短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。

HTTP メソッドと URL:

POST https://aiplatform.MREP_LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/MREP_LOCATION/endpoints/ENDPOINT_ID:generateContent

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

{
    "contents": [
        {
            "role": "USER",
            "parts": {
                "text" : "Why is sky blue?"
            }
        }
    ],
    "generation_config": {
        "temperature":TEMPERATURE,
        "topP": TOP_P,
        "topK": TOP_K,
        "maxOutputTokens": MAX_OUTPUT_TOKENS
    }
}

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

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.MREP_LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/MREP_LOCATION/endpoints/ENDPOINT_ID:generateContent"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.MREP_LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/MREP_LOCATION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

REST

プロンプトを使用してチューニング済みモデルをテストするには、POST リクエストを送信して `TUNED_ENDPOINT_ID` を指定します。

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

  • PROJECT_ID: [プロジェクト ID](/resource-manager/docs/creating-managing-projects#identifiers)。
  • TUNING_JOB_REGION: チューニング ジョブを実行するリージョン。これは、チューニング済みのモデルをアップロードするデフォルトのリージョンでもあります。
  • ENDPOINT_ID: GET API から取得したチューニング済みモデルのエンドポイント ID。
  • TEMPERATURE: 温度は、topPtopK が適用された場合に発生するレスポンス生成時のサンプリングに使用されます。温度は、トークン選択のランダム性の度合いを制御します。温度が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度が 0 の場合、確率が最も高いトークンが常に選択されます。この場合、特定のプロンプトに対するレスポンスはほとんど確定的ですが、わずかに変動する可能性は残ります。

    モデルが返すレスポンスが一般的すぎる、短すぎる、あるいはフォールバック(代替)レスポンスが返ってくる場合は、温度を高く設定してみてください。モデルが無限生成の状態に移行した場合は、温度を 0.1 以上に引き上げると、結果が改善される可能性があります。

    1.0 は、Temperature の推奨開始値です。
  • TOP_P: Top-P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が Top-P 値に等しくなるまで、確率の高いものから低いものへと選択されます。たとえば、トークン A、B、C の確率が 0.3、0.2、0.1 であり、トップ P 値が 0.5 であるとします。この場合、モデルは温度を使用して A または B を次のトークンとして選択し、C は候補から除外します。

    ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。

  • TOP_K: Top-K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものであることになります(グリーディ デコードとも呼ばれます)。Top-K が 3 の場合は、最も確率が高い上位 3 つのトークンから次のトークン選択されることになります(温度を使用します)。

    トークン選択のそれぞれのステップで、最も高い確率を持つ Top-K のトークンがサンプリングされます。その後、トークンはトップ P に基づいてさらにフィルタリングされ、最終的なトークンは温度サンプリングを用いて選択されます。

    ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。

  • MAX_OUTPUT_TOKENS: レスポンスで生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンは約 60~80 語に相当します。

    回答を短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。

HTTP メソッドと URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent

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

{
    "contents": [
        {
            "role": "USER",
            "parts": {
                "text" : "Why is sky blue?"
            }
        }
    ],
    "generation_config": {
        "temperature":TEMPERATURE,
        "topP": TOP_P,
        "topK": TOP_K,
        "maxOutputTokens": MAX_OUTPUT_TOKENS
    }
}

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

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

チューニング済みモデルを削除する

チューニング済みモデルを削除するには:

REST

models.delete メソッドを呼び出します。

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

  • PROJECT_ID:
  • REGION: チューニング済みモデルが配置されているリージョン。
  • MODEL_ID: 削除するモデル。

HTTP メソッドと URL:

DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID

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

curl

次のコマンドを実行します。

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID" | Select-Object -Expand Content

成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

Agent Platform SDK for Python

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=LOCATION)

# To find out which models are available in Model Registry
models = aiplatform.Model.list()

model = aiplatform.Model(MODEL_ID)
model.delete()

チューニングと検証の指標

モデルのチューニングとモデルの評価の指標を収集して報告するよう、モデルのチューニング ジョブを構成できます。その後、Agent Platform Studio でこれらの指標を可視化できます。

  1. チューニング済みモデルの詳細を Google Cloud コンソールで表示するには、[Agent Platform Studio] ページに移動します。

    Agent Platform Studio に移動

  2. [チューニングと抽出] テーブルで、指標を表示する調整済みモデルの名前をクリックします。

    チューニング指標は [モニタリング] タブに表示されます。

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

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

  • /train_total_loss: トレーニング ステップでのチューニング データセットの損失。
  • /train_fraction_of_correct_next_step_preds: トレーニング ステップでのトークンの精度。単一の推論は、一連の予測されるトークンで構成されます。この指標は、チューニング用データセットのグラウンド トゥルースと比較したときに予測される、トークンの精度を測定します。
  • /train_num_predictions トレーニング ステップで予測されるトークンの数。

モデル検証の指標

モデルのチューニング ジョブを構成して、Gemini 2.0 Flash について次の検証指標を収集できます。

  • /eval_total_loss: 検証ステップでの検証データセットの損失。
  • /eval_fraction_of_correct_next_step_preds: 評価ステップでのトークンの精度。単一の推論は、一連の予測されるトークンで構成されます。この指標は、検証データセットのグラウンド トゥルースと比較したときに予測されるトークンの精度を測定します。
  • /eval_num_predictions: 検証ステップで予測されるトークンの数。

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

次のステップ