Recupero generazioni di testo batch

Le previsioni batch sono un modo per inviare in modo efficiente un numero elevato di richieste di prompt di testo non sensibili alla latenza. A differenza della previsione online, in cui si è limitati a una richiesta di input alla volta, è possibile inviare un numero elevato di richieste LLM in una singola richiesta batch. Analogamente a come viene eseguita la previsione batch per i dati tabulari in Vertex Generative AI, puoi determinare la posizione di output, aggiungere i prompt di input e le risposte verranno compilate in modo asincrono nella posizione di output.

Dopo aver inviato una richiesta batch per un modello di testo e aver esaminato i relativi risultati, puoi modificare il modello mediante l'ottimizzazione. 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.

Modelli di testo che supportano le previsioni batch

  • text-bison

Prepara gli input

L'input per le richieste batch specifica gli elementi da inviare al modello per una generazione batch. Quando usi la classificazione del testo sui modelli, puoi usare un file JSON Lines o una tabella BigQuery per specificare un elenco di input. Puoi archiviare la tabella BigQuery in BigQuery e il file Righe JSON in Cloud Storage.

Le richieste batch per i modelli di testo accettano solo origini di archiviazione BigQuery e Cloud Storage. Le richieste possono includere fino a 30.000 prompt.

Per ulteriori informazioni sulla formattazione, consulta:

Esempio JSONL

Formato di input JSONL

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

Output JSONL

{"instance":{"prompt":"Give..."},"predictions": [{"content":"A machine","safetyAttributes":{...}}],"status":""}
{"instance":{"prompt":"Best..."},"predictions": [{"content":"Sure", "safetyAttributes":{...}}],"status":""}

Esempio di BigQuery

Formato di input BigQuery

Questo esempio mostra una tabella BigQuery a colonna singola.

richiesta
"Fornisci una breve descrizione di un modello di machine learning:"
"La migliore ricetta del banana bread:"

Output BigQuery

richiesta previsioni. stato
"Fornisci una breve descrizione di un modello di machine learning:"
'[{
   "content": "A machine learning model is a
               statistical method",
   "safetyAttributes": {
     "blocked": false,
     "scores": [
       0.10000000149011612
     ],
     "categories": [
       "Violent"
     ]
   }
 }]'
 
"La migliore ricetta del banana bread:"
'[{"content": "Sure, here is a recipe for banana
               bread:\n\nIngredients:\n\n*",
   "safetyAttributes": {
     "scores": [
       0.10000000149011612
     ],
     "blocked": false,
     "categories": [
       "Violent"
     ]
   }
}]'

Richiedere una risposta batch

A seconda del numero di elementi di input che hai inviato, il completamento di un'attività di generazione 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: il nome del tuo progetto Google Cloud.
  • BP_JOB_NAME: il nome del job.
  • MODEL_PARAM: una mappa dei parametri del modello. Alcuni parametri accettabili includono: maxOutputTokens, topK, topP e temperature.
  • 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/text-bison",
    "model_parameters": "MODEL_PARAM"
    "inputConfig": {
      "instancesFormat":"bigquery",
      "bigquerySource":{
        "inputUri" : "INPUT_URI"
      }
    },
    "outputConfig": {
      "predictionsFormat":"bigquery",
      "bigqueryDestination":{
        "outputUri": "OUTPUT_URI"
        }
    }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

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

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, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'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)

Recupera output batch

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

Passaggi successivi