Gemini Distillation Service

Gemini Distillation Service (抽出)を使用すると、より高性能な「教師」モデルの出力と推論パターンを使用する、より小さく効率的な「生徒」モデルをトレーニングできます。フロンティア モデルは AI の最先端を定義しますが、特定のエンタープライズ ユースケースではオーバー プロビジョニングされる可能性があります。抽出はこのギャップを埋め、より小さなモデルがより深いレベルの推論を実現できるようにしながら、本番環境レベルの効率(レイテンシとコストの削減)を実現します。

最終的なテキスト出力のみを使用する標準の教師ありファインチューニング(SFT)とは異なり、抽出では次のものが活用されます。

  • 教師のレスポンス: 最終的なテキスト出力。
  • 未加工の思考: 教師 モデルによって生成された内部推論パス。

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

早期アクセス期間中の抽出では、次のモデルがサポートされています。

  • 教師モデル: gemini-3.1-pro
  • 生徒モデル: gemini-2.5-flash

AI モデルの抽出プロセスの 5 つのステップを示すフローチャート。ステップ 1: 入力データセット(GCS)は、プロンプト データセット(JSONL)とオプションの検証データセットを受け取ります。ステップ 2: データの取り込みと準備では、並列処理のための形式の検証とシャーディングを行います。ステップ 3: 教師モデルの推論では、教師モデル(Gemini 3.1 Pro)を使用して、詳細な回答と内部推論パスで構成される高品質のラベル付きデータセットを生成します。ステップ 4: 蒸留トレーニングでは、回答、推論パターン、分布を使用して教師の思考プロセスを模倣することを学習する生徒モデル(Gemini 2.5 Flash)を使用します。ステップ 5:
出力: 抽出されたモデルの作成では、Model Registry に登録された最終的な抽出モデル、評価用に登録された 10 個の中間チェックポイント、チェックポイント用に自動的に作成された Agent Platform 予測エンドポイントの 3 つのアイテムが生成されます。

図 1. Gemini Distillation Service の仕組みのシステム図。

適切なユースケース

次のシナリオでは、標準のプロンプトや教師ありファインチューニング(SFT)よりも抽出をおすすめします。

  • 高ボリュームでレイテンシの影響を受けやすいアプリケーション: アプリケーションに Pro 階層モデルの推論機能が必要だが、厳格な レイテンシ SLA または Flash 階層モデルが必要となる予算制約を満たす必要がある場合。
  • グラウンド トゥルース データがない(SFT が実行不可能): ユーザー プロンプトまたはクエリの大規模な データセットがあるが、標準の SFT に必要な高品質のグラウンド トゥルースの回答を手動でラベル付け または生成するリソースがない場合。
  • 複雑な推論タスク: 複数のステップのロジック、 高度な技術文書の要約、ベースの Flash モデルでは困難だが Pro モデルでは成功する複雑なコーディング タスクを含むタスク。
  • パフォーマンスの大きなギャップ: 教師モデルが特定のタスクでベースの生徒モデルを大幅に 上回る場合、抽出中に転送する知識の明確な マージンを提供します。

前提条件とプロジェクトの設定

抽出ジョブを開始する前に、 環境が Google Cloud 正しく 構成されていることを確認してください。

  1. 許可リストへのアクセスをリクエストする: プロジェクト ID が Gemini Distillation Service 早期アクセスの許可リストに追加されていることを確認します。 Google Cloud プロジェクトを許可リストに追加するには、Google の営業担当者にお問い合わせください。
  2. API を有効にする: プロジェクトで Agent Platform API を有効にします。 Google Cloud
  3. IAM ロールの権限を設定する: Agent Platform 管理者(roles/aiplatform.admin) IAM ロールが必要です。
  4. リージョンを設定する: 抽出ジョブは us-central1 リージョンで実行する必要があります。

データセットの準備

このサービスの重要な機能は、プロンプトのみのデータセット を使用することです。教師モデルは抽出プロセス中にターゲット出力を生成するため、想定される回答を提供する必要はありません。

データセットの要件

データセットは JSON Lines(JSONL)形式で、Cloud Storage バケットに保存する必要があります。各エントリは、次の要件に加えて、Gemini チューニング データセット形式に 準拠している必要があります。

  • システム命令: オプションの systemInstruction フィールド(「system」ロール)を含めて、システム プロンプトを定義できます。
  • 入力: 主な入力には、コンテンツ フィールド(「user」ロール)が必要です。
  • マルチターン プロンプト: 「user」ロールと「model」ロールを交互に使用できます。 シーケンスの最後のエントリが「user」であれば。

以下に、2 つの dataset.jsonl ファイルの例を示します。

{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "You're the artist here. Choose as many strands of thread as you like, as long as you're using three or more. Go for color combinations that you think would make a pretty pattern. Get creative! If you only use one color of thread, you won't be able to create a pattern.\n\nProvide a summary of the article in two or three sentences:\n\n"
        }
      ]
    }
  ]
},
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "You're the artist here. Choose as many strands of thread as you like, as long as you're using three or more. Go for color combinations that you think would make a pretty pattern. Get creative! If you only use one color of thread, you won't be able to create a pattern.\n\nProvide a summary of the article in two or three sentences:\n\n"
        }
      ]
    },
    {
      "role": "model",
      "parts": [
        {
          "text": "Choose several strands of embroidery thread in a variety of colors."
        }
      ]
    },
    {
      "role": "user",
      "parts": [
        {
          "text": "You will need one egg (raw or hard boiled but hard boiled is best) and one spoon for each person participating in the race. You might even like to use dyed Easter eggs as something special for Easter. It's best to have this race on grass or some other soft surface, to give dropped eggs a chance!"
        }
      ]
    }
  ]
}

ベスト プラクティス

データセットを作成する際は、次のガイドラインを使用してください。

  • サイズ: 品質を大幅に改善するには、1,000 個以上のサンプルを使用することをおすすめします。
  • 多様性: プロンプトが、本番環境のトラフィックで想定されるエッジケースとさまざまな長さ をカバーしていることを確認します。

抽出リクエストを構成する

抽出ジョブでは、教師の生成動作と生徒のトレーニング ハイパーパラメータの両方を構成する必要があります。

教師モデルの生成動作を構成する

教師モデルがデータセットにどのように応答するかを定義する必要があります。生徒モデルの品質は、教師の出力の品質に直接依存します。教師モデルの生成動作を構成するには、candidateCount を設定します。

  • candidateCount: 生成するレスポンスのバリエーションの数。(例: 4。範囲 [1, 5])。リクエストで指定されていない場合は、デフォルト値の 4 が使用されます。

抽出ハイパーパラメータを設定する

抽出ハイパーパラメータは、生徒モデルのトレーニング プロセスを制御します。Gemini Enterprise Agent Platform のハイパーパラメータの詳細については、教師ありファインチューニング ガイドの 「チューニング ジョブを作成する」セクションをご覧ください

抽出ジョブを作成するときは、次のハイパーパラメータを設定する必要があります。

  • epochCount: 生徒モデルがデータセットを反復処理する回数。(例: 20。範囲 [1, 100])。指定しない場合は、デフォルト値の 4 が使用されます。
  • learningRateMultiplier: 生徒モデルの基本学習率を変更します。(例: 2.0。範囲 [0.25, 4])。指定しない場合は、デフォルト値の 1 が使用されます。

抽出ジョブを開始する

早期アクセス期間中は、Agent Platform API の REST バージョンを使用して、抽出ジョブを送信してモニタリングできます。新しい抽出 ジョブを開始することも、すでに抽出されたモデル チェックポイントで継続的な チューニングを行うこともできます。

新しい抽出ジョブを作成する

ジョブ構成を含む request.json という名前の JSON ファイルを作成します。次の例では、教師の生成構成が hyperParameters フィールド内にネストされています。

{
    "description": "Distillation testing job.",
    "baseModel": "gemini-2.5-flash",
    "tunedModelDisplayName": "flash-distillation-run-1",
    "distillationSpec": {
        "promptDatasetUri": "gs://your-bucket/path/to/prompt_dataset.jsonl",
        "validationDatasetUri": "",
        "base_teacher_model": "gemini-3.1-pro-preview",
        "hyperParameters": {
            "epochCount": "20",
            "learningRateMultiplier": 2.0,
            "generation_config": {
              "candidateCount": 5
            }
        }
    }
}

curl を使用してジョブを送信します。

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/tuningJobs \
  -d @request.json

継続的なチューニングを行う

以前に抽出したモデル チェックポイントからチューニングを再開する場合は、request.json ファイルに preTunedModel ブロックを含めます。継続的なチューニングは、同じベースの生徒モデルを使用して、以前に抽出したモデル チェックポイントでのみサポートされています。以前に教師ありファインチューニングされたモデル チェックポイント(同じベースの生徒モデルでも)はサポートされていません。

以前に抽出したモデル チェックポイントの継続的なチューニングを設定する例を次に示します。

{
    "description": "Continuous distillation testing job.",
    "preTunedModel": {
      "tunedModelName": "projects/YOUR_PROJECT_ID/locations/us-central1/models/PRETUNED_MODEL_ID@1",
      "checkpointId": "1",
      "baseModel": "gemini-2.5-flash"
    },
    "tunedModelDisplayName": "flash-distillation-continuous",
    "distillationSpec": {
        "promptDatasetUri": "gs://your-bucket/path/to/prompt_dataset.jsonl",
        "validationDatasetUri": "",
        "base_teacher_model": "gemini-3.1-pro-preview",
        "hyperParameters": {
            "epochCount": "20",
            "learningRateMultiplier": 2.0,
            "generation_config": {
              "candidateCount": 5,
            }
        }
    }
}

curl を使用してペイロードを送信します。

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/tuningJobs \
  -d @request.json

抽出ジョブをモニタリングする

送信レスポンスは、 JOB_ID を含むジョブ名を返します。GET リクエストを送信して、ジョブのステータス(state、エラー、最終的なハイパーパラメータ)を確認できます。

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/tuningJobs/JOB_ID

**Agent Platform > チューニング** に移動して us-central1 リージョンを選択すると、 Google Cloud コンソールで進行状況を視覚的にモニタリングすることもできます。

この早期アクセス リリースでは、Agent Platform コンソール UI に次の既知の制限があります。

  • 教師のサンプリングの進行状況: 教師 モデルのサンプリング プロセスの進行状況ウィジェットはありません。ステータスに「チューニングの準備中」と表示される場合がありますが、ジョブはバックグラウンドで正常に進行しています。
  • 生徒のチューニング チャート: 生徒モデルのチューニング段階では、UI に損失曲線とトレーニング テキスト トークンの合計のグラフが表示されます。
  • チェックポイント テーブル: UI に中間チェックポイントの表と、評価用に生成された Agent Platform 予測エンドポイントへのリンクが表示されます。既知の問題により、この表の [エポック] 列に「0」が表示されます。

抽出ジョブをキャンセルする

進行中の抽出ジョブをキャンセルするには、次のいずれかを行います。

  • Google Cloud コンソールを使用し、次の URL を変更します。 Google Cloud

    https://console.cloud.google.com/agent-platform/tuning/managed?project=YOUR_PROJECT_ID&vertex_ai_region=us-central1

    YOUR_PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  • curl を使用して POST リクエストを送信し、ジョブをキャンセルします。

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      https://us-central1-aiplatform.googleapis.com/v1beta1/projects/YOUR_PROJECT_ID/locations/us-central1/tuningJobs/YOUR_JOB_ID:cancel
    

    次のように置き換えます。

    • YOUR_PROJECT_ID: プロジェクト ID。
    • YOUR_JOB_ID: ジョブ ID。

結果の評価

抽出ジョブが正常に完了すると、新しい生徒モデルが Gemini Enterprise Agent Platform Model Registry に自動的に登録され、予測を処理するために 1 つ以上の専用エンドポイントが作成されます。結果を評価するには、エンドポイントを見つけて予測リクエストを送信し、最後に評価します。

結果を評価するには、次の操作を行います。

  1. 次の GET リクエストを送信して、チューニング ジョブのステータスを確認します。

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      https://us-central1-aiplatform.googleapis.com/v1beta1/projects/YOUR_PROJECT_ID/locations/us-central1/tuningJobs/YOUR_JOB_ID
    

    次のように置き換えます。

    • YOUR_PROJECT_ID: プロジェクト ID。
    • YOUR_JOB_ID: ジョブ ID。
  2. 完了したジョブには、tunedModel オブジェクト内にネストされた endpoint フィールドが表示されます。返されたパス文字列の末尾から ENDPOINT_ID を抽出します(例: projects/.../endpoints/YOUR_ENDPOINT_ID)。エンドポイント ID をメモします。

    チューニング ジョブがまだ実行中または失敗している間はエンドポイントを使用できないため、チューニング ジョブが正常に完了していることを確認してください。endpoint フィールドがない場合は、ジョブの state キーまたは error キーを表示して、チューニング ジョブをデバッグします。

  3. プロンプトを含む generate_content_request.json という名前の JSON ペイロード リクエストを作成します。

    {
      "contents": {
        "role": "user",
        "parts": [
          {
            "text": "hi, say something"
          }
        ]
      }
    }
    
  4. 次の POST の例を使用して、予測リクエストを送信します。

    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      https://us-central1-aiplatform.googleapis.com/v1beta1/projects/YOUR_PROJECT_ID/locations/us-central1/endpoints/YOUR_ENDPOINT_ID:generateContent \
      -d @generate_content_request.json
    

    次のように置き換えます。

    • YOUR_PROJECT_ID: プロジェクト ID。
    • YOUR_JOB_ID: ジョブ ID。
    • ENDPOINT_ID: エンドポイント ID。
  5. 結果を評価するには、次の操作を行います。

    1. トレーニング データに含まれていないプロンプトを使用して、新たに抽出したモデルに対してホールドアウト テストセットを実行します。

    2. 出力をベースの gemini-2.5-flash モデルと比較して、品質の改善度を測定します。

    3. 出力を gemini-3.1-pro モデルと比較して、生徒が教師の推論にどの程度近づいているかを判断します。

制限事項

次の表に、抽出の制限事項を示します。

抽出には次の制限があります。

  • モデルの制限:
  • データセットの制限:
    • ボリュームの上限:
      • トレーニング セットの最大容量は 50,000 個のサンプルです。
      • ソース JSONL ファイルのサイズは 1 GB を超えないようにしてください。
    • コンテキスト ウィンドウの仕様:
      • このサービスでは、エントリあたり最大 8,000 個の入力トークンに対応できます。 提供された エントリの 10% を超えるエントリがこの確立されたしきい値を超えると、抽出ジョブは終了します。
      • 教師モデルのサンプリングは、最大出力 24,000 トークンに制限されています。教師モデルが 24,000 トークンを超えるトークンを生成する場合、コンテンツはこの上限で切り捨てられるため、生徒モデルのパフォーマンスに 影響する可能性があります。
    • モダリティ: テキストベースのデータに限定されます。動画、画像、関数呼び出しなどのマルチモーダル入力はサポートされていません。
  • 構成とハイパーパラメータの制限
    • distillationSpec とその関連するハイパーパラメータを定義する場合は、次の境界に従ってください。
      • 暗号化: Google のファーストパーティ モデルを含む抽出タスクでは CMEK を使用できません。
      • epochCount: 1 ~ 100 の整数値に制限されます。
      • learningRateMultiplier: 値は浮動小数点範囲 0.25-4.0 内にする必要があります。
  • ワンステップ抽出: 教師モデルのサンプリングと生徒モデル のチューニングは、1 回の API 呼び出しで実行されます。サンプリングするデータ量が多い場合は、次のチューニングで同じデータを再度サンプリングする必要があります。

利用方法

Gemini Distillation Service の試験運用に関心をお持ちの場合は、 cloud-ai-tuning-service-support@google.com のチューニング サービス チームにお問い合わせいただき、アクセスとプロジェクトの許可リストへの登録をリクエストしてください。

最適なパフォーマンスとリソース管理を確保するため、抽出タスク専用の プロジェクト Google Cloud を作成することをおすすめします。チームにお問い合わせの際は、許可リストへの登録プロセスを迅速に進めるために、プロジェクト ID またはプロジェクト番号をお知らせください。

割り当てとアクセス ポリシー

次の割り当てとアクセス ポリシーが適用されます。

  • 容量: 許可リストに最近追加されたプロジェクトには、デフォルトの同時実行割り当てとして 4 がプロビジョニングされます。リソースの競合を避けるため、他の Gemini チューニング ジョブをすでに実行しているプロジェクトではなく、別のプロジェクトを使用することをおすすめします。

  • アクセス期間: 最初の 30 日間はアクセス権が付与されます。