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.
Modelos de embeddings de texto compatíveis com previsões em lote
Todas as versões estáveis dos modelos de embedding de texto são compatíveis com previsões em lote, exceto os embeddings do Gemini (gemini-embedding-001). As versões estáveis têm suporte total para ambientes de produção. Para conferir a lista completa de modelos de embedding, 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 abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu 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 abaixo:
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
. Por 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
Instalar
pip install --upgrade google-genai
Para saber mais, consulte a documentação de referência do SDK.
Defina variáveis de ambiente para usar o SDK de IA generativa com a Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
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.