Receber respostas em lote é uma maneira de enviar com eficiência um grande número de solicitações de embeddings não sensíveis à latência. Diferente da obtenção de respostas on-line, em que há limitação para uma solicitação de entrada por vez, é possível enviar um grande número de solicitações do LLM em uma única solicitação em lote. De maneira semelhante à maneira como a previsão em lote é feita para dados tabulares na Vertex AI, você determina o local de saída, adiciona as entradas e as respostas são preenchidas de maneira assíncrona no local de saída.
Depois de enviar uma solicitação em lote e analisar os resultados, é possível ajustar o modelo por meio do ajuste de modelo. Após o ajuste, é possível enviar normalmente o modelo atualizado para gerações em lote. Para saber mais sobre o ajuste de modelos, consulte Ajustar modelos de fundação.
Modelos de embeddings de texto compatíveis com previsões em lote
Todas as versões estáveis do modelo textembedding-gecko
são compatíveis com previsões em lote, exceto textembedding-gecko-multilingual@001
. Versões estáveis são aquelas que não estão mais em pré-lançamento e têm compatibilidade total com ambientes de produção. Para ver a lista completa de modelos de embedding compatíveis, consulte Modelo e versões de embedding.
Preparar suas entradas
A entrada para solicitações em lote é uma lista de comandos que podem ser armazenados em uma tabela do BigQuery ou como um arquivo JSON Lines (JSONL) no Cloud Storage. Cada solicitação pode incluir até 30.000 comandos.
Exemplo de JSONL
Esta seção mostra exemplos de como formatar entradas e saídas JSONL.
Exemplo de entrada JSONL
{"content":"Give a short description of a machine learning model:"}
{"content":"Best recipe for banana bread:"}
Exemplo de saída JSONL
{"instance":{"content":"Give..."},"predictions": [{"embeddings":{"statistics":{"token_count":8,"truncated":false},"values":[0.2,....]}}],"status":""}
{"instance":{"content":"Best..."},"predictions": [{"embeddings":{"statistics":{"token_count":3,"truncated":false},"values":[0.1,....]}}],"status":""}
Exemplo do BigQuery
Esta seção mostra exemplos de como formatar entradas e saídas do BigQuery.
Exemplo de uma entrada do BigQuery
Este exemplo mostra uma tabela do BigQuery de coluna única.
conteúdo |
---|
"Faça uma breve descrição de um modelo de machine learning:" |
"Melhor receita para pão de banana:" |
Exemplo de uma saída do BigQuery
conteúdo | previsões | status |
---|---|---|
"Faça uma breve descrição de um modelo de machine learning:" |
'[{"embeddings": { "statistics":{"token_count":8,"truncated":false}, "Values":[0.1,....] } } ]' |
|
"Melhor receita para pão de banana:" |
'[{"embeddings": { "statistics":{"token_count":3,"truncated":false}, "Values":[0.2,....] } } ]' |
Solicitar uma resposta em lote
Dependendo do número de itens de entrada enviados, uma tarefa de previsão em lote pode levar algum tempo para ser concluída.
REST
Para testar um prompt de texto usando a API Vertex AI, envie uma solicitação POST para o endpoint do modelo do editor.
Antes de usar os dados da solicitação, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud.
- BP_JOB_NAME: o nome do job.
- INPUT_URI: o URI da origem da entrada. Pode ser um URI de tabela do BigQuery ou um URI de arquivo JSONL no Cloud Storage.
- OUTPUT_URI: URI de destino de saída.
Método HTTP e URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
Corpo JSON da solicitação:
{ "name": "BP_JOB_NAME", "displayName": "BP_JOB_NAME", "model": "publishers/google/models/textembedding-gecko", "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat":"bigquery", "bigqueryDestination":{ "outputUri": "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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/123456789012/locations/us-central1/batchPredictionJobs/1234567890123456789", "displayName": "BP_sample_publisher_BQ_20230712_134650", "model": "projects/{PROJECT_ID}/locations/us-central1/models/textembedding-gecko", "inputConfig": { "instancesFormat": "bigquery", "bigquerySource": { "inputUri": "bq://project_name.dataset_name.text_input" } }, "modelParameters": {}, "outputConfig": { "predictionsFormat": "bigquery", "bigqueryDestination": { "outputUri": "bq://project_name.llm_dataset.embedding_out_BP_sample_publisher_BQ_20230712_134650" } }, "state": "JOB_STATE_PENDING", "createTime": "2023-07-12T20:46:52.148717Z", "updateTime": "2023-07-12T20:46:52.148717Z", "labels": { "owner": "sample_owner", "product": "llm" }, "modelVersionId": "1", "modelMonitoringStatus": {} }
A resposta inclui um identificador exclusivo para a tarefa em lote.
É possível pesquisar o status da tarefa em lote usando BATCH_JOB_ID até que o job state
seja JOB_STATE_SUCCEEDED
. Exemplo:
curl \ -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs/BATCH_JOB_ID
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Recuperar saída em lote
Quando uma tarefa de previsão em lote é concluída, a saída é armazenada no bucket do Cloud Storage ou na tabela do BigQuery especificada na solicitação.
A seguir
- Saiba como usar embeddings de texto.