As previsões em lote são uma maneira de enviar com eficiência um grande número de solicitações de texto confidencial sem latência. Ao contrário da previsão 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 solicitações de entrada e as respostas são preenchidas de maneira assíncrona no local de saída.
Depois de enviar uma solicitação em lote para um modelo de texto e analisar os resultados, é possível ajustar o modelo por meio do ajuste do modelo. Após o ajuste, é possível enviar o modelo atualizado para gerações em lote normalmente. Para saber mais sobre o ajuste de modelos, consulte Ajustar modelos de base.
Modelos de texto compatíveis com previsões em lote
text-bison
Preparar suas entradas
A entrada de solicitações em lote especifica os itens a serem enviados ao modelo para uma geração em lote. Ao usar a classificação de texto em modelos, é possível usar um arquivo de linhas JSON ou uma tabela do BigQuery para especificar uma lista de entradas. Você armazena sua tabela do BigQuery no BigQuery e seu arquivo de linhas JSON no Cloud Storage.
As solicitações em lote para modelos de texto aceitam apenas origens de armazenamento do BigQuery e o Google Cloud Storage. As solicitações podem incluir até 30.000 solicitações.
Para saber mais sobre formatação, consulte:
Exemplo de JSONL
Formato de entrada JSONL
{"prompt":"Give a short description of a machine learning model:"}
{"prompt":"Best recipe for banana bread:"}
Saída JSONL
{"instance":{"prompt":"Give..."},"predictions": [{"content":"A machine","safetyAttributes":{...}}],"status":""}
{"instance":{"prompt":"Best..."},"predictions": [{"content":"Sure", "safetyAttributes":{...}}],"status":""}
Exemplo do BigQuery
Formato de entrada do BigQuery
Este exemplo mostra uma tabela do BigQuery de coluna única.
prompt |
---|
"Faça uma breve descrição de um modelo de machine learning:" |
"Melhor receita para pão de banana:" |
Saída do BigQuery
prompt | Previsões | status |
---|---|---|
"Faça uma breve descrição de um modelo de machine learning:" |
'[{ "content": "A machine learning model is a statistical method", "safetyAttributes": { "blocked": false, "scores": [ 0.10000000149011612 ], "categories": [ "Violent" ] } }]' |
|
"Melhor receita para pão de banana:" |
'[{"content": "Sure, here is a recipe for banana bread:\n\nIngredients:\n\n*", "safetyAttributes": { "scores": [ 0.10000000149011612 ], "blocked": false, "categories": [ "Violent" ] } }]' |
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 nome do seu projeto do Google Cloud;
- BP_JOB_NAME: o nome do job.
- MODEL_PARAM: um mapa de parâmetros do modelo. Alguns parâmetros aceitáveis incluem: maxOutputTokens, topK, topP e temperatura.
- INPUT_URI: o URI da origem de 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/text-bison", "model_parameters": "MODEL_PARAM" "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/{PROJECT_ID}/locations/us-central1/batchPredictionJobs/{BATCH_JOB_ID}", "displayName": "BP_sample_publisher_BQ_20230712_134650", "model": "projects/{PROJECT_ID}/locations/us-central1/models/text-bison", "inputConfig": { "instancesFormat": "bigquery", "bigquerySource": { "inputUri": "bq://sample.text_input" } }, "modelParameters": {}, "outputConfig": { "predictionsFormat": "bigquery", "bigqueryDestination": { "outputUri": "bq://sample.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 ou atualizar o Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
from vertexai.preview.language_models import TextGenerationModel text_model = TextGenerationModel.from_pretrained("text-bison") batch_prediction_job = text_model.batch_predict( source_uri=["gs://BUCKET_NAME/test_table.jsonl"], destination_uri_prefix="gs://BUCKET_NAME/tmp/2023-05-25-vertex-LLM-Batch-Prediction/result3", # Optional: model_parameters={ "maxOutputTokens": "200", "temperature": "0.2", "topP": "0.95", "topK": "40", }, ) print(batch_prediction_job.display_name) print(batch_prediction_job.resource_name) print(batch_prediction_job.state)
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 testar prompts de texto.
- Conheça outras estratégias de design de solicitações específicas para tarefas:
- Saiba como ajustar um modelo.