Obtenha previsões em lote a partir de um modelo do Model Garden implementado autonomamente

Alguns dos modelos disponíveis no Model Garden podem ser implementados automaticamente no seu próprio Google Cloud projeto e usados para fornecer previsões em lote. As previsões em lote permitem-lhe usar um modelo de forma eficiente para processar vários comandos apenas de texto que não sejam sensíveis à latência.

Prepare a entrada

Antes de começar, prepare as entradas numa tabela do BigQuery ou como um ficheiro JSONL no Cloud Storage. A entrada para ambas as origens tem de seguir o formato JSON do esquema da API OpenAI, conforme mostrado no seguinte exemplo:

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

BigQuery

A tabela de entrada do BigQuery tem de seguir o seguinte esquema:

Nome da coluna Descrição
custom_id Um ID para cada pedido de correspondência entre a entrada e a saída.
método O método de pedido.
url O ponto final do pedido.
body(JSON) O seu comando de entrada.
  • A tabela de entrada pode ter outras colunas, que são ignoradas pela tarefa em lote e passadas diretamente para a tabela de saída.
  • As tarefas de previsão em lote reservam dois nomes de colunas para o resultado da previsão em lote: response(JSON) e id. Não use estas colunas na tabela de entrada.
  • As colunas method e url são ignoradas e não incluídas na tabela de saída.

Cloud Storage

Para o Cloud Storage, o ficheiro de entrada tem de ser um ficheiro JSONL localizado num contentor do Cloud Storage.

Obtenha os recursos necessários para um modelo

Escolha um modelo e consulte os respetivos requisitos de recursos. Os recursos necessários aparecem na resposta, no campo dedicatedResources, que especifica na configuração da tarefa de previsão em lote.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PUBLISHER: o publicador do modelo, por exemplo, meta, google, mistral-ai ou deepseek-ai.
  • PUBLISHER_MODEL_ID: O ID do modelo do publicador para o modelo, por exemplo, llama3_1.
  • VERSION_ID: o ID da versão do publicador 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 o seu pedido, 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

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Peça uma previsão em lote

Faça uma previsão em lote com base num modelo do Model Garden implementado por si, usando a entrada do BigQuery ou do Cloud Storage. Pode optar por gerar previsões de forma independente para uma tabela do BigQuery ou um ficheiro JSONL num contentor do Cloud Storage.

BigQuery

Especifique a tabela de entrada, o modelo e a localização de saída do BigQuery. A tarefa de previsão em lote e a sua tabela têm de estar na mesma região.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: uma região que suporta modelos implementados automaticamente do Model Garden.
  • PROJECT_ID: o seu ID do projeto.
  • MODEL: o nome do modelo a ajustar, por exemplo, llama-3.1-8b-instruct.
  • PUBLISHER: o publicador do modelo, por exemplo, meta, google, mistral-ai ou deepseek-ai.
  • INPUT_URI: a tabela do BigQuery onde se encontra a entrada de previsão em lote, como myproject.mydataset.input_table.
  • OUTPUT_FORMAT: para gerar resultados numa tabela do BigQuery, especifique bigquery. Para gerar resultados num contentor do Cloud Storage, especifique jsonl.
  • DESTINATION: para o BigQuery, especifique bigqueryDestination. Para o 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 a localização da tabela, como myproject.mydataset.output_result. Para o Cloud Storage, especifique a localização do contentor e da pasta, como gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: define o conjunto de recursos a implementar para o seu modelo, por exemplo, g2-standard-4.
  • ACC_TYPE: especifica os aceleradores a adicionar à sua tarefa de previsão em lote para ajudar a melhorar o desempenho quando trabalha com cargas de trabalho intensivas, por exemplo, NVIDIA_L4.
  • ACC_COUNT: o número de aceleradores a usar no seu trabalho de previsão em lote.

Método HTTP e URL:

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

Corpo JSON do pedido:

'{
  "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 o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte.

Cloud Storage

Especifique a localização do Cloud Storage, o modelo e a localização de saída do ficheiro JSONL.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: uma região que suporta modelos implementados automaticamente do Model Garden.
  • PROJECT_ID: o seu ID do projeto.
  • MODEL: o nome do modelo a ajustar, por exemplo, llama-3.1-8b-instruct.
  • PUBLISHER: o publicador do modelo, por exemplo, meta, google, mistral-ai ou deepseek-ai.
  • INPUT_URI: a localização do Cloud Storage da entrada de previsão em lote JSONL, como gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: para gerar resultados numa tabela do BigQuery, especifique bigquery. Para gerar resultados num contentor do Cloud Storage, especifique jsonl.
  • DESTINATION: para o BigQuery, especifique bigqueryDestination. Para o 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 a localização da tabela, como myproject.mydataset.output_result. Para o Cloud Storage, especifique a localização do contentor e da pasta, como gs://mybucket/path/to/outputfile.
  • MACHINE_TYPE: define o conjunto de recursos a implementar para o seu modelo, por exemplo, g2-standard-4.
  • ACC_TYPE: especifica os aceleradores a adicionar à sua tarefa de previsão em lote para ajudar a melhorar o desempenho quando trabalha com cargas de trabalho intensivas, por exemplo, NVIDIA_L4.
  • ACC_COUNT: o número de aceleradores a usar no seu trabalho de previsão em lote.

Método HTTP e URL:

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

Corpo JSON do pedido:

'{
  "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 o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte.

Obtenha o estado de uma tarefa de previsão em lote

Obtenha o estado da sua tarefa de previsão em lote para verificar se foi concluída com êxito. A duração da tarefa depende do número de itens introduzidos que enviou.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o seu ID do projeto.
  • LOCATION: a região onde o seu trabalho em lote está localizado.
  • JOB_ID: o ID da tarefa em lote que foi devolvido quando criou a tarefa.

Método HTTP e URL:

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

Para enviar o seu pedido, 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

Deve receber uma resposta JSON semelhante à seguinte.

Recuperar saída

Quando um trabalho de previsão em lote é concluído, obtenha o resultado da localização especificada:

  • Para o BigQuery, o resultado encontra-se na coluna response(JSON) da tabela de destino do BigQuery.
  • Para o Cloud Storage, o resultado é guardado como um ficheiro JSONL na localização do Cloud Storage de saída.

Modelos suportados

A Vertex AI suporta previsões em lote para os seguintes modelos implementados automaticamente:

  • 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