Ricevi previsioni batch di incorporamenti di testo

Ricevere risposte in batch è un modo per inviare in modo efficiente un numero elevato di richieste di incorporamenti non sensibili alla latenza. A differenza della ricezione di risposte online, in cui sei limitato a una richiesta di input alla volta, puoi inviare un numero elevato di richieste LLM in un'unica richiesta batch. In modo simile alla previsione batch per i dati tabulari in Vertex AI, puoi determinare la posizione di output, aggiungere l'input e le risposte inserite in modo asincrono nella posizione di output.

Dopo aver inviato una richiesta batch e aver esaminato i suoi risultati, puoi perfezionare il modello. Dopo l'ottimizzazione, puoi inviare il modello aggiornato per le generazioni batch, come di consueto. Per scoprire di più sull'ottimizzazione dei modelli, consulta Ottimizzazione dei modelli di base linguistici.

Modelli di incorporamenti di testo che supportano le previsioni batch

Tutte le versioni stabili del modello textembedding-gecko supportano le previsioni batch. Le versioni stabili sono versioni che non sono più in anteprima e sono completamente supportate per gli ambienti di produzione. Per visualizzare l'elenco completo dei modelli di incorporamento supportati, consulta la sezione Modello e versioni di incorporamento.

Prepara gli input

L'input per le richieste batch è un elenco di prompt che possono essere archiviati in una tabella BigQuery o come file JSON Lines (JSONL) in Cloud Storage. Ogni richiesta può includere fino a 30.000 prompt.

Esempio JSONL

Questa sezione mostra esempi di come formattare input e output JSONL.

Esempio di input JSONL

{"content":"Give a short description of a machine learning model:"}
{"content":"Best recipe for banana bread:"}

Esempio di output 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":""}

Esempio di BigQuery

Questa sezione mostra esempi di come formattare l'input e l'output di BigQuery.

Esempio di input BigQuery

Questo esempio mostra una tabella BigQuery con una singola colonna.

content
"Fornisci una breve descrizione di un modello di machine learning:"
"Miglior ricetta per il banana bread:"

Esempio di output BigQuery

content previsioni. stato
"Fornisci una breve descrizione di un modello di machine learning:"
'[{"embeddings":
    { "statistics":{"token_count":8,"truncated":false},
      "Values":[0.1,....]
    }
  }
]'
 
"Miglior ricetta per il banana bread:"
'[{"embeddings":
    { "statistics":{"token_count":3,"truncated":false},
      "Values":[0.2,....]
    }
  }
]'

Richiedi una risposta batch

A seconda del numero di elementi di input che hai inviato, il completamento di un'attività di generazione in batch può richiedere del tempo.

REST

Per testare un prompt di testo utilizzando l'API Vertex AI, invia una richiesta POST all'endpoint del modello del publisher.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • BP_JOB_NAME: il nome del job.
  • INPUT_URI: l'URI di origine di input. Si tratta dell'URI di una tabella BigQuery o di un file JSONL in Cloud Storage.
  • OUTPUT_URI: URI di destinazione di output.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
    "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"
    }
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo 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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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": {}
}

La risposta include un identificatore univoco per il job batch. Puoi eseguire il polling dello stato del job batch utilizzando BATCH_JOB_ID fino a quando il job state non è JOB_STATE_SUCCEEDED. Ad esempio:

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

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.

from vertexai.preview.language_models import TextEmbeddingModel
textembedding_model = TextEmbeddingModel.from_pretrained("textembedding-gecko")
batch_prediction_job = textembedding_model.batch_predict(
  dataset=["gs://BUCKET_NAME/test_table.jsonl"],
  destination_uri_prefix="gs://BUCKET_NAME/tmp/2023-05-25-vertex-LLM-Batch-Prediction/result3",
)
print(batch_prediction_job.display_name)
print(batch_prediction_job.resource_name)
print(batch_prediction_job.state)

Recuperare l'output batch

Quando un'attività di previsione batch è completa, l'output viene archiviato nel bucket Cloud Storage o nella tabella BigQuery specificata nella richiesta.

Passaggi successivi