セルフデプロイされた Model Garden モデルからバッチ予測を取得する

Model Garden で利用可能なモデルの一部は、独自の Google Cloud プロジェクトにセルフデプロイして、バッチ予測の提供に使用できます。バッチ予測を使用すると、レイテンシの影響を受けない複数のテキストのみのプロンプトをモデルで効率的に処理できます。

入力を準備する

始める前に、BigQuery テーブルまたは Cloud Storage の JSONL ファイルとして入力を準備します。両方のソースの入力は、次の例に示すように、OpenAI API スキーマの JSON 形式に従っている必要があります。

{"body": {"messages": [{"role": "user", "content": "Give me a recipe for banana bread"}], "max_tokens": 1000}}

BigQuery

BigQuery 入力テーブルは、次のスキーマに準拠している必要があります。

列名 説明
custom_id 入力と出力を照合するための各リクエストの ID。
method リクエスト メソッド。
URL リクエスト エンドポイント。
body(JSON) 入力プロンプト。
  • 入力テーブルには他の列を含めることができます。これらの列はバッチジョブで無視され、出力テーブルに直接渡されます。
  • バッチ予測ジョブは、バッチ予測出力用に response(JSON)id の 2 つの列名を予約します。入力テーブルではこれらの列を使用しないでください。
  • method 列と url 列は削除され、出力テーブルに含まれません。

Cloud Storage

Cloud Storage の場合、入力ファイルは Cloud Storage バケットにある JSONL ファイルである必要があります。

モデルに必要なリソースを取得する

モデルを選択し、そのリソース要件をクエリします。必要なリソースは、レスポンスの dedicatedResources フィールドに表示されます。このフィールドは、バッチ予測ジョブの構成で指定します。

REST

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

  • PUBLISHER: モデル パブリッシャー(metagooglemistral-aideepseek-ai など)。
  • PUBLISHER_MODEL_ID: モデルのパブリッシャーのモデル ID(llama3_1 など)。
  • VERSION_ID: モデルのパブリッシャー バージョン ID(llama-3.1-8b-instruct など)。

HTTP メソッドと URL:

GET "https://us-central1-aiplatform.googleapis.com/ui/publishers/PUBLISHER/models/PUBLISHER_MODEL_ID@VERSION_ID" | jq '.supportedActions.multiDeployVertex'

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

curl

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

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
""https://us-central1-aiplatform.googleapis.com/ui/publishers/PUBLISHER/models/PUBLISHER_MODEL_ID@VERSION_ID" | jq '.supportedActions.multiDeployVertex'"

PowerShell

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

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri ""https://us-central1-aiplatform.googleapis.com/ui/publishers/PUBLISHER/models/PUBLISHER_MODEL_ID@VERSION_ID" | jq '.supportedActions.multiDeployVertex'" | Select-Object -Expand Content

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

バッチ予測をリクエストする

BigQuery または Cloud Storage からの入力を使用して、セルフデプロイされた Model Garden モデルに対してバッチ予測を行います。予測の出力先として、BigQuery テーブルまたは Cloud Storage バケット内の JSONL ファイルのいずれかを選択できます。

BigQuery

BigQuery 入力テーブル、モデル、出力先を指定します。 バッチ予測ジョブとテーブルは同じリージョンに存在する必要があります。

REST

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

  • LOCATION: Model Garden のセルフデプロイ モデルをサポートするリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • MODEL: チューニングするモデルの名前(llama-3.1-8b-instruct など)。
  • PUBLISHER: モデル パブリッシャー(metagooglemistral-aideepseek-ai など)。
  • INPUT_URI: バッチ予測入力が配置されている BigQuery テーブル(myproject.mydataset.input_table など)。
  • OUTPUT_FORMAT: BigQuery テーブルに出力するには、bigquery を指定します。Cloud Storage バケットに出力するには、jsonl を指定します。
  • DESTINATION: BigQuery の場合は、bigqueryDestination を指定します。Cloud Storage の場合は、gcsDestination を指定します。
  • OUTPUT_URI_FIELD_NAME: BigQuery の場合は、outputUri を指定します。Cloud Storage の場合は、outputUriPrefix を指定します。
  • OUTPUT_URI: BigQuery の場合は、テーブルの場所(myproject.mydataset.output_result など)を指定します。Cloud Storage の場合は、バケットとフォルダの場所(gs://mybucket/path/to/outputfile など)を指定します。
  • MACHINE_TYPE: モデルにデプロイするリソースのセットを定義します(例: g2-standard-4)。
  • ACC_TYPE: 集約型のワークロードを扱う際のパフォーマンス向上に役立つように、バッチ予測ジョブに追加するアクセラレータを指定します(例: NVIDIA_L4)。
  • ACC_COUNT: バッチ予測ジョブで使用するアクセラレータの数。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

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

'{
  "displayName": "JOB_NAME",
  "model": "publishers/PUBLISHER/models/MODEL",
  "inputConfig": {
    "instancesFormat":"bigquery",
    "bigquerySource":{
      "inputUri" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  },
  "dedicated_resources": {
    "machine_spec": {
      "machine_type": "MACHINE_TYPE",
      "accelerator_type": "ACC_TYPE",
      "accelerator_count": ACC_COUNT,
    },
    "starting_replica_count": 1,
  },
}'

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

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

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

Cloud Storage

JSONL ファイルの Cloud Storage のロケーション、モデル、出力場所を指定します。

REST

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

  • LOCATION: Model Garden のセルフデプロイ モデルをサポートするリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • MODEL: チューニングするモデルの名前(llama-3.1-8b-instruct など)。
  • PUBLISHER: モデル パブリッシャー(metagooglemistral-aideepseek-ai など)。
  • INPUT_URI: JSONL バッチ予測入力の Cloud Storage の場所(gs://bucketname/path/to/jsonl など)。
  • OUTPUT_FORMAT: BigQuery テーブルに出力するには、bigquery を指定します。Cloud Storage バケットに出力するには、jsonl を指定します。
  • DESTINATION: BigQuery の場合は、bigqueryDestination を指定します。Cloud Storage の場合は、gcsDestination を指定します。
  • OUTPUT_URI_FIELD_NAME: BigQuery の場合は、outputUri を指定します。Cloud Storage の場合は、outputUriPrefix を指定します。
  • OUTPUT_URI: BigQuery の場合は、テーブルの場所(myproject.mydataset.output_result など)を指定します。Cloud Storage の場合は、バケットとフォルダの場所(gs://mybucket/path/to/outputfile など)を指定します。
  • MACHINE_TYPE: モデルにデプロイするリソースのセットを定義します(例: g2-standard-4)。
  • ACC_TYPE: 集約型のワークロードを扱う際のパフォーマンス向上に役立つように、バッチ予測ジョブに追加するアクセラレータを指定します(例: NVIDIA_L4)。
  • ACC_COUNT: バッチ予測ジョブで使用するアクセラレータの数。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

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

'{
  "displayName": "JOB_NAME",
  "model": "publishers/PUBLISHER/models/MODEL",
  "inputConfig": {
    "instancesFormat":"jsonl",
    "gcsDestination":{
      "uris" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  },
  "dedicated_resources": {
    "machine_spec": {
        "machine_type": "MACHINE_TYPE",
        "accelerator_type": "ACC_TYPE",
        "accelerator_count": ACC_COUNT,
    },
    "starting_replica_count": 1,
  },
}'

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

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

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

バッチ予測ジョブのステータスを取得する

バッチ予測ジョブの状態を取得して、正常に完了したかどうかを確認します。ジョブの長さは、送信した入力アイテムの数によって異なります。

REST

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

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: バッチジョブが配置されているリージョン。
  • JOB_ID: ジョブの作成時に返されたバッチジョブ ID。

HTTP メソッドと URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID

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

curl

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

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

PowerShell

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

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

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

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

出力を取得する

バッチ予測ジョブが完了したら、指定したロケーションから出力を取得します。

  • BigQuery の場合、出力は宛先 BigQuery テーブルの response(JSON) 列にあります。
  • Cloud Storage の場合、出力は出力 Cloud Storage のロケーションに JSONL ファイルとして保存されます。

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

Vertex AI は、次のセルフデプロイ モデルのバッチ予測をサポートしています。

  • Llama
    • publishers/meta/models/llama3_1@llama-3.1-8b-instruct
    • publishers/meta/models/llama3_1@llama-3.1-70b-instruct
    • publishers/meta/models/llama3_1@llama-3.1-405b-instruct-fp8
    • publishers/meta/models/llama3-2@llama-3.2-1b-instruct
    • publishers/meta/models/llama3-2@llama-3.2-3b-instruct
    • publishers/meta/models/llama3-2@llama-3.2-90b-vision-instruct
  • Gemma
    • publishers/google/models/gemma@gemma-1.1-2b-it
    • publishers/google/models/gemma@gemma-7b-it
    • publishers/google/models/gemma@gemma-1.1-7b-it
    • publishers/google/models/gemma@gemma-2b-it
    • publishers/google/models/gemma2@gemma-2-2b-it
    • publishers/google/models/gemma2@gemma-2-9b-it
    • publishers/google/models/gemma2@gemma-2-27b-it
  • Mistral
    • publishers/mistral-ai/models/mistral@mistral-7b-instruct-v0.2
    • publishers/mistral-ai/models/mistral@mistral-7b-instruct-v0.3
    • publishers/mistral-ai/models/mistral@mistral-7b-instruct-v0.1
    • publishers/mistral-ai/models/mistral@mistral-nemo-instruct-2407
  • Deepseek
    • publishers/deepseek-ai/models/deepseek-r1@deepseek-r1-distill-llama-8b