Generazione di previsioni batch da un modello Model Garden autodeployato

Alcuni dei modelli disponibili in Model Garden possono essere sottoposti a self-deployment nel tuo Google Cloud progetto e utilizzati per fornire previsioni batch. Le previsioni batch ti consentono di utilizzare in modo efficiente un modello per elaborare più prompt di solo testo che non sono sensibili alla latenza.

Preparare l'input

Prima di iniziare, prepara gli input in una tabella BigQuery o come file JSONL in Cloud Storage. L'input per entrambe le origini deve seguire il formato JSON dello schema dell'API OpenAI, come mostrato nell'esempio seguente:

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

BigQuery

La tabella di input BigQuery deve rispettare lo schema seguente:

Nome colonna Descrizione
custom_id Un ID per ogni richiesta per abbinare l'input all'output.
method Il metodo di richiesta.
url L'endpoint della richiesta.
body(JSON) Il prompt di input.
  • La tabella di input può avere altre colonne, che vengono ignorate dal job batch e passate direttamente alla tabella di output.
  • I job di previsioni in batch riservano due nomi di colonna per l'output delle previsioni in batch: response(JSON) e id. Non utilizzare queste colonne nella tabella di input.
  • Le colonne method e url vengono eliminate e non incluse nella tabella di output.

Cloud Storage

Per Cloud Storage, il file di input deve essere un file JSONL che si trova in un bucket Cloud Storage.

Recuperare le risorse richieste per un modello

Scegli un modello ed esegui una query sui relativi requisiti di risorse. Le risorse richieste vengono visualizzate nella risposta, nel campo dedicatedResources, che specifichi nella configurazione del job di previsioni in batch.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PUBLISHER: l'editore del modello, ad esempio meta, google, mistral-ai o deepseek-ai.
  • PUBLISHER_MODEL_ID: l'ID modello dell'editore per il modello, ad esempio llama3_1.
  • VERSION_ID: l'ID versione dell'editore per il modello, ad esempio llama-3.1-8b-instruct.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.

Richiedere previsioni in batch

Esegui una previsione batch su un modello di Model Garden sottoposto a self-deployment utilizzando l'input di BigQuery o Cloud Storage. Puoi scegliere in modo indipendente di generare l'output delle previsioni in una tabella BigQuery o in un file JSONL in un bucket Cloud Storage.

BigQuery

Specifica la tabella di input BigQuery, il modello e il percorso di output. Il job di previsioni in batch e la tabella devono trovarsi nella stessa regione.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • LOCATION: una regione che supporta i modelli di Model Garden sottoposti a self-deployment.
  • PROJECT_ID: Il tuo ID progetto. .
  • MODEL: il nome del modello da ottimizzare, ad esempio llama-3.1-8b-instruct.
  • PUBLISHER: l'editore del modello, ad esempio meta, google, mistral-ai o deepseek-ai.
  • INPUT_URI: la tabella BigQuery in cui si trova l'input per le previsioni in batch, ad esempio myproject.mydataset.input_table.
  • OUTPUT_FORMAT: per generare l'output in una tabella BigQuery, specifica bigquery. Per generare l'output in un bucket Cloud Storage, specifica jsonl.
  • DESTINATION: per BigQuery, specifica bigqueryDestination. Per Cloud Storage, specifica gcsDestination.
  • OUTPUT_URI_FIELD_NAME: per BigQuery, specifica outputUri. Per Cloud Storage, specifica outputUriPrefix.
  • OUTPUT_URI: per BigQuery, specifica la posizione della tabella, ad esempio myproject.mydataset.output_result. Per Cloud Storage, specifica la posizione del bucket e della cartella, ad esempio gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: definisce l'insieme di risorse da sottoporre a deployment per il modello, ad esempio g2-standard-4.
  • ACC_TYPE: specifica gli acceleratori da aggiungere al job di previsioni in batch per migliorare le prestazioni quando si lavora con carichi di lavoro intensivi, ad esempio NVIDIA_L4.
  • ACC_COUNT: il numero di acceleratori da utilizzare nel job di previsioni in batch.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

'{
  "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,
  },
}'

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, e quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente.

Cloud Storage

Specifica la posizione di Cloud Storage del file JSONL, il modello e il percorso di output.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • LOCATION: una regione che supporta i modelli di Model Garden sottoposti a self-deployment.
  • PROJECT_ID: Il tuo ID progetto. .
  • MODEL: il nome del modello da ottimizzare, ad esempio llama-3.1-8b-instruct.
  • PUBLISHER: l'editore del modello, ad esempio meta, google, mistral-ai o deepseek-ai.
  • INPUT_URI: la posizione di Cloud Storage dell'input di previsioni in batch JSONL, ad esempio gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: per generare l'output in una tabella BigQuery, specifica bigquery. Per generare l'output in un bucket Cloud Storage, specifica jsonl.
  • DESTINATION: per BigQuery, specifica bigqueryDestination. Per Cloud Storage, specifica gcsDestination.
  • OUTPUT_URI_FIELD_NAME: per BigQuery, specifica outputUri. Per Cloud Storage, specifica outputUriPrefix.
  • OUTPUT_URI: per BigQuery, specifica la posizione della tabella, ad esempio myproject.mydataset.output_result. Per Cloud Storage, specifica la posizione del bucket e della cartella, ad esempio gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: definisce l'insieme di risorse da sottoporre a deployment per il modello, ad esempio g2-standard-4.
  • ACC_TYPE: specifica gli acceleratori da aggiungere al job di previsioni in batch per migliorare le prestazioni quando si lavora con carichi di lavoro intensivi, ad esempio NVIDIA_L4.
  • ACC_COUNT: il numero di acceleratori da utilizzare nel job di previsioni in batch.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

'{
  "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,
  },
}'

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, e quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente.

Recuperare lo stato di un job di previsioni in batch

Recupera lo stato del job di previsioni in batch per verificare se è stato completato correttamente. La durata del job dipende dal numero di elementi di input che hai inviato.

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: Il tuo ID progetto. .
  • LOCATION: la regione in cui si trova il job batch.
  • JOB_ID: l'ID del job batch restituito quando hai creato il job.

Metodo HTTP e URL:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente.

Recuperare l'output

Al termine di un job di previsioni in batch, recupera l'output dalla località che hai specificato:

  • Per BigQuery, l'output si trova nella colonna response(JSON) della tabella BigQuery di destinazione.
  • Per Cloud Storage, l'output viene salvato come file JSONL nella località di output di Cloud Storage.

Modelli supportati

Gemini Enterprise Agent Platform supporta le previsioni batch per i seguenti modelli sottoposti a self-deployment:

  • 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