バッチ予測を使用すると、レイテンシの影響を受けない複数のプロンプトを Anthropic Claude モデルに送信できます。リクエストごとに 1 つの入力プロンプトを送信するオンライン予測とは異なり、バッチ予測では 1 つのリクエストで大量の入力プロンプトをバッチ処理できます。
サポートされている Anthropic Claude モデル
Vertex AI は、次の Anthropic Claude モデルのバッチ予測をサポートしています。
- Claude 3.5 Sonnet v2(
claude-3-5-sonnet-v2@20241022
) - Claude 3.5 Haiku(
claude-3-5-haiku@20241022
)
入力を準備する
始める前に、BigQuery テーブルまたは Cloud Storage の JSONL ファイルとして入力データセットを準備します。両方のソースの入力は、次の例に示すように、Anthropic Claude API スキーマの JSON 形式に従っている必要があります。
{
"custom_id": "request-1",
"request": {
"messages": [{"role": "user", "content": "Hello!"}],
"anthropic_version": "vertex-2023-10-16",
"max_tokens": 50
}
}
BigQuery 入力テーブルは、次のスキーマに準拠している必要があります。
列名 | 説明 |
---|---|
custom_id | 入力と出力を照合するための各リクエストの ID。 |
リクエスト | リクエスト本文: 入力プロンプトであり、Anthropic Claude API スキーマに準拠する必要があります。 |
- 入力テーブルには他の列を含めることができます。これらの列はバッチジョブで無視され、出力テーブルに直接渡されます。
- バッチ予測ジョブは、バッチ予測出力用に
response(JSON)
とstatus
の 2 つの列名を予約します。入力テーブルではこれらの列を使用しないでください。
Cloud Storage の場合、入力ファイルは Cloud Storage バケットにある JSONL ファイルである必要があります。
バッチ予測をリクエストする
BigQuery または Cloud Storage からの入力を使用して、Claude モデルに対してバッチ予測を行います。予測の出力先として、BigQuery テーブルまたは Cloud Storage バケット内の JSONL ファイルのいずれかを選択できます。
BigQuery
BigQuery 入力テーブル、モデル、出力先を指定します。バッチ予測ジョブとテーブルは同じリージョンに存在する必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
LOCATION : 選択した Anthropic Claude モデルをサポートするリージョン(Claude リージョンをご覧ください)。PROJECT_ID : 実際のプロジェクト ID。MODEL : モデルの名前。INPUT_URI : バッチ予測入力が配置されている BigQuery テーブル(bq://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 の場合は、テーブルの場所(bq://myproject.mydataset.output_result
など)を指定します。Cloud Storage の場合は、バケットとフォルダの場所(gs://mybucket/path/to/outputfile
など)を指定します。
HTTP メソッドと URL:
POST https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs
リクエストの本文(JSON):
'{ "displayName": "JOB_NAME ", "model": "publishers/anthropic/models/MODEL ", "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI " } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT ", "DESTINATION ":{ "OUTPUT_URI_FIELD_NAME ": "OUTPUT_URI " } } }'
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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 レスポンスが返されます。
レスポンス
{ "name": "projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/BATCH_JOB_ID ", "displayName": "JOB_NAME ", "model": "publishers/anthropic/models/MODEL ", "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI " } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT ", "DESTINATION ":{ "OUTPUT_URI_FIELD_NAME ": "OUTPUT_URI " } }, "state": "JOB_STATE_PENDING", "createTime": "2024-10-16T19:33:59.153782Z", "updateTime": "2024-10-16T19:33:59.153782Z", "modelVersionId": "1" }
Cloud Storage
JSONL ファイルの Cloud Storage のロケーション、モデル、出力ロケーションを指定します。
リクエストのデータを使用する前に、次のように置き換えます。
LOCATION : 選択した Anthropic Claude モデルをサポートするリージョン(Claude リージョンをご覧ください)。PROJECT_ID : 実際のプロジェクト ID。MODEL : モデルの名前。INPUT_URIS : 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 の場合は、テーブルの場所(bq://myproject.mydataset.output_result
など)を指定します。Cloud Storage の場合は、バケットとフォルダの場所(gs://mybucket/path/to/outputfile
など)を指定します。
HTTP メソッドと URL:
POST https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs
リクエストの本文(JSON):
'{ "displayName": "JOB_NAME ", "model": "publishers/anthropic/models/MODEL ", "inputConfig": { "instancesFormat":"jsonl", "gcsSource":{ "uris" : "INPUT_URIS " } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT ", "DESTINATION ":{ "OUTPUT_URI_FIELD_NAME ": "OUTPUT_URI " } } }'
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を 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"
リクエスト本文を 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 レスポンスが返されます。
レスポンス
{ "name": "projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/BATCH_JOB_ID ", "displayName": "JOB_NAME ", "model": "publishers/anthropic/models/MODEL ", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": [ "INPUT_URIS " ] } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT ", "DESTINATION ":{ "OUTPUT_URI_FIELD_NAME ": "OUTPUT_URI " } }, "state": "JOB_STATE_PENDING", "createTime": "2024-10-16T19:33:59.153782Z", "updateTime": "2024-10-16T19:33:59.153782Z", "modelVersionId": "1" }
バッチ予測ジョブのステータスを取得する
バッチ予測ジョブのステータスを取得して、正常に完了したかどうかを確認します。
リクエストのデータを使用する前に、次のように置き換えます。
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 -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/JOB_ID "
次のコマンドを実行します。
$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 レスポンスが返されます。
レスポンス
{ "name": "projects/PROJECT_ID /locations/LOCATION /batchPredictionJobs/BATCH_JOB_ID ", "displayName": "JOB_NAME ", "model": "publishers/anthropic/models/MODEL ", "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI " } }, "outputConfig": { "predictionsFormat":"OUTPUT_FORMAT ", "DESTINATION ":{ "OUTPUT_URI_FIELD_NAME ": "OUTPUT_URI " } }, "state": "JOB_STATE_SUCCEEDED", "createTime": "2024-10-16T19:33:59.153782Z", "updateTime": "2024-10-16T19:33:59.153782Z", "modelVersionId": "1" }
バッチ予測の出力を取得する
バッチ予測ジョブが完了したら、指定したロケーションから出力を取得します。BigQuery の場合、出力は宛先 BigQuery テーブルの response(JSON)
列にあります。Cloud Storage の場合、出力は JSONL ファイルとして出力 Cloud Storage のロケーションに保存されます。
既知の問題
この機能に関する既知の問題は次のとおりです。
リージョン内の最初のバッチジョブの内部エラー。
リージョンでバッチ予測を初めて使用するユーザーの場合、バッチ予測ジョブが失敗し、次のメッセージが表示されることがあります。
"state": "JOB_STATE_FAILED", "error": { "code": 13, "message": "INTERNAL" }
この問題は、バッチ予測ジョブを実行する内部サービス アカウントが新しく作成され、プロビジョニング パイプラインを介して伝播されていないために、バッチジョブが内部で権限エラーで失敗するため発生します。このエラーが発生した場合は、10 分ほど待ってからバッチ リクエストの送信を再試行してください。
キャンセルされたジョブからは結果が返されません。
既知のバグにより、ジョブが完了する前にキャンセルされた場合やタイムアウトした場合、出力場所に結果は表示されません。