Previsões em lote

Este guia mostra como receber previsões em lote de modelos Llama, abordando os seguintes tópicos:

O diagrama a seguir resume o fluxo de trabalho geral:

Com a previsão em lote, é possível enviar com eficiência vários comandos somente de texto que não são sensíveis à latência para um modelo da Llama. Em comparação com as previsões on-line, em que você envia um comando de entrada para cada solicitação, é possível agrupar um grande número de comandos de entrada em uma única solicitação.

Não há cobranças para previsões em lote durante o período de pré-lançamento.

Modelos Llama compatíveis

A Vertex AI é compatível com previsões em lote para os seguintes modelos Llama:

Prepare sua entrada

Você pode fornecer os comandos de entrada em uma tabela do BigQuery ou como um arquivo JSONL no Cloud Storage. A entrada para ambas as fontes precisa seguir o formato JSON do esquema da API OpenAI, conforme mostrado no exemplo a seguir:

Origem da entrada Descrição Caso de uso
BigQuery Os dados de entrada são armazenados em uma tabela do BigQuery. Ideal quando seus dados já estão no BigQuery, para conjuntos de dados estruturados em grande escala e quando você quer usar o SQL para preparação de dados.
Cloud Storage Os dados de entrada são armazenados como um arquivo JSONL em um bucket do Cloud Storage. Adequado para dados não estruturados ou semiestruturados, quando os dados vêm de várias fontes ou para fluxos de trabalho mais simples baseados em arquivos.
{"custom_id": "test-request-0", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta/llama-3.1-405b-instruct-maas", "messages": [{"role": "system", "content": "You are a chef."}, {"role": "user", "content": "Give me a recipe for banana bread"}], "max_tokens": 1000}}

BigQuery

Sua tabela de entrada do BigQuery precisa ter o seguinte esquema:

Nome da coluna Descrição
custom_id Um ID para cada solicitação que corresponde à entrada e à saída.
method O método de solicitação.
url O endpoint de solicitação.
body(JSON) Seu comando de entrada.
  • A tabela de entrada pode ter outras colunas. Eles são ignorados pelo job em lote e transmitidos diretamente para a tabela de saída.
  • O job de previsão em lote reserva response(JSON) e id como nomes de colunas para a saída. Para evitar conflitos, não use esses nomes para colunas na tabela de entrada.
  • O job de previsão em lote descarta as colunas method e url, que não são incluídas na tabela de saída.

Cloud Storage

A entrada precisa ser um arquivo JSONL em um bucket do Cloud Storage. Cada linha no arquivo precisa ser um objeto JSON válido que segue o esquema necessário.

Solicitar uma predição em lote

Para solicitar uma previsão em lote de um modelo do Llama, use a entrada do BigQuery ou do Cloud Storage. Você pode gerar previsões em uma tabela do BigQuery ou em um arquivo JSONL em um bucket do Cloud Storage, independente da origem de entrada.

BigQuery

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

REST

Depois de configurou seu ambiente use REST para testar uma solicitação de texto. O exemplo a seguir envia uma solicitação ao publisher endpoint do modelo.

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

  • LOCATION: uma região compatível com modelos Llama.
  • PROJECT_ID: o ID do projeto.
  • MODEL: o nome do modelo a ser ajustado.
  • INPUT_URI: a tabela do BigQuery em que a entrada de previsão em lote está localizada, como myproject.mydataset.input_table.
  • OUTPUT_FORMAT: para gerar uma saída em uma tabela do BigQuery, especifique bigquery. Para gerar saída em 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 local do bucket e da pasta, como gs://mybucket/path/to/outputfile.

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/meta/models/MODEL",
  "inputConfig": {
    "instancesFormat":"bigquery",
    "bigquerySource":{
      "inputUri" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  }
}'

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 a seguir:

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

Depois de configurou seu ambiente use REST para testar uma solicitação de texto. O exemplo a seguir envia uma solicitação ao publisher endpoint do modelo.

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

  • LOCATION: uma região compatível com modelos Llama.
  • PROJECT_ID: o ID do projeto.
  • MODEL: o nome do modelo a ser ajustado.
  • INPUT_URI: o local no Cloud Storage da entrada de previsão em lote JSONL, como gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: para gerar uma saída em uma tabela do BigQuery, especifique bigquery. Para gerar saída em 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 local do bucket e da pasta, como gs://mybucket/path/to/outputfile.

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/meta/models/MODEL",
  "inputConfig": {
    "instancesFormat":"jsonl",
    "gcsDestination":{
      "uris" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  }
}'

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 a seguir:

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 previsão em lote

Depois de enviar a solicitação, você pode conferir o status do job de predição em lote para verificar se ele foi concluído. O tempo necessário para a conclusão do job depende do número de itens de entrada enviados.

REST

Depois de configurou seu ambiente use REST para testar uma solicitação de texto. O exemplo a seguir envia uma solicitação ao publisher endpoint do modelo.

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 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 sua saída

Depois que o job de previsão em lote é concluído, a saída é salva no destino especificado na solicitação.

  • BigQuery: a saída está na coluna response(JSON) da tabela de destino.
  • Cloud Storage: a saída é salva como um arquivo JSONL no bucket de destino.