Receber previsões em lote de um modelo autoimplantado do Model Garden

Alguns dos modelos disponíveis no Model Garden podem ser autoimplantados no seu próprio projeto do Google Cloud e usados para fornecer predições em lote. As predições em lote permitem usar um modelo de maneira eficiente para processar vários comandos somente de texto que não são sensíveis à latência.

Preparar entrada

Antes de começar, prepare as entradas em uma tabela do BigQuery ou como um arquivo JSONL no Cloud Storage. A entrada para as duas fontes precisa seguir o formato JSON do esquema de API OpenAI, conforme mostrado no exemplo a seguir:

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

BigQuery

A tabela de entrada do BigQuery precisa seguir este esquema:

Nome da coluna Descrição
custom_id Um ID para cada solicitação para corresponder à entrada com a saída.
método O método de solicitação.
url O endpoint da solicitação.
body(JSON) Seu comando de entrada.
  • A tabela de entrada pode ter outras colunas, que são ignoradas pelo job em lote e transmitidas diretamente para a tabela de saída.
  • Os jobs de predição em lote reservam dois nomes de coluna para a saída da predição em lote: response(JSON) e id. Não use essas colunas na tabela de entrada.
  • As colunas method e url são descartadas e não são incluídas na tabela de saída.

Cloud Storage

Para o Cloud Storage, o arquivo de entrada precisa ser um arquivo JSONL localizado em um bucket do Cloud Storage.

Receber os recursos necessários para um modelo

Escolha um modelo e consulte os requisitos de recursos dele. Os recursos necessários aparecem na resposta, no campo dedicatedResources, que você especifica na configuração do job de predição em lote.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PUBLISHER: o editor do modelo, por exemplo, meta, google, mistral-ai ou deepseek-ai.
  • PUBLISHER_MODEL_ID: o ID do modelo do editor, por exemplo, llama3_1.
  • VERSION_ID: o ID da versão do editor para o modelo, por exemplo, llama-3.1-8b-instruct.

Método HTTP e URL:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o seguinte 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

execute o seguinte 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

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

Solicitar uma predição em lote

Faça uma previsão em lote em um modelo do Model Garden autoimplantado usando a entrada do BigQuery ou do Cloud Storage. É possível escolher de forma independente se as previsões serão enviadas para uma tabela do BigQuery ou um arquivo JSONL em um bucket do Cloud Storage.

BigQuery

Especifique a tabela de entrada, o modelo e o local de saída do BigQuery. O job de predição em lote e a tabela precisam estar na mesma região.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: uma região compatível com modelos autoimplantados do Model Garden.
  • PROJECT_ID: o ID do projeto. .
  • MODEL: o nome do modelo a ser ajustado, por exemplo, llama-3.1-8b-instruct.
  • PUBLISHER: o editor do modelo, por exemplo, meta, google, mistral-ai ou deepseek-ai.
  • INPUT_URI: a tabela do BigQuery em que a entrada da predição em lote está localizada, como myproject.mydataset.input_table.
  • OUTPUT_FORMAT: para enviar a saída para uma tabela do BigQuery, especifique bigquery. Para enviar para um bucket do Cloud Storage, especifique jsonl.
  • DESTINATION: para o BigQuery, especifique bigqueryDestination. No Cloud Storage, especifique gcsDestination.
  • OUTPUT_URI_FIELD_NAME: para o BigQuery, especifique outputUri. Para o Cloud Storage, especifique outputUriPrefix.
  • OUTPUT_URI: para o BigQuery, especifique o local da tabela, como myproject.mydataset.output_result. Para o Cloud Storage, especifique o bucket e o local da pasta, como gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: define o conjunto de recursos a serem implantados para o modelo, por exemplo, g2-standard-4.
  • ACC_TYPE: especifica aceleradores a serem adicionados ao job de predição em lote para melhorar o desempenho ao trabalhar com cargas de trabalho intensivas, por exemplo, NVIDIA_L4.
  • ACC_COUNT: o número de aceleradores a serem usados no job de predição em lote.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a seguinte.

Cloud Storage

Especifique o local do Cloud Storage, o modelo e o local de saída do arquivo JSONL.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: uma região compatível com modelos autoimplantados do Model Garden.
  • PROJECT_ID: o ID do projeto. .
  • MODEL: o nome do modelo a ser ajustado, por exemplo, llama-3.1-8b-instruct.
  • PUBLISHER: o editor do modelo, por exemplo, meta, google, mistral-ai ou deepseek-ai.
  • INPUT_URI: o local do Cloud Storage da entrada de predição em lote JSONL, como gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: para enviar a saída para uma tabela do BigQuery, especifique bigquery. Para enviar para um bucket do Cloud Storage, especifique jsonl.
  • DESTINATION: para o BigQuery, especifique bigqueryDestination. No Cloud Storage, especifique gcsDestination.
  • OUTPUT_URI_FIELD_NAME: para o BigQuery, especifique outputUri. Para o Cloud Storage, especifique outputUriPrefix.
  • OUTPUT_URI: para o BigQuery, especifique o local da tabela, como myproject.mydataset.output_result. Para o Cloud Storage, especifique o bucket e o local da pasta, como gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: define o conjunto de recursos a serem implantados para o modelo, por exemplo, g2-standard-4.
  • ACC_TYPE: especifica aceleradores a serem adicionados ao job de predição em lote para melhorar o desempenho ao trabalhar com cargas de trabalho intensivas, por exemplo, NVIDIA_L4.
  • ACC_COUNT: o número de aceleradores a serem usados no job de predição em lote.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a seguinte.

Ver o status de um job de predição em lote

Verifique o estado do job de predição em lote para saber se ele foi concluído com sucesso. A duração do job depende do número de itens de entrada que você enviou.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto. .
  • LOCATION: a região em que o job em lote está localizado.
  • JOB_ID: o ID do job em lote que foi retornado quando você criou o job.

Método HTTP e URL:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o seguinte 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

execute o seguinte 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

Você receberá uma resposta JSON semelhante a seguinte.

Recuperar saída

Quando um job de predição em lote for concluído, recupere a saída do local especificado:

  • Para o BigQuery, a saída está na coluna response(JSON) da tabela do BigQuery de destino.
  • No Cloud Storage, a saída é salva como um arquivo JSONL no local de saída do Cloud Storage.

Modelos compatíveis

A Gemini Enterprise Agent Platform é compatível com predições em lote para os seguintes modelos autoimplantados:

  • 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