Generazione di testo in batch

Le previsioni batch sono un modo per inviare in modo efficiente più prompt multimodali non sensibili alla latenza. A differenza delle previsioni online, dove ti trovi limitato a un solo prompt di input alla volta, puoi inviare un numero di prompt multimodali in una singola richiesta batch. Le risposte vengono poi compilate in modo asincrono nella posizione di output dello spazio di archiviazione BigQuery.

Le richieste batch per i modelli Gemini sono scontate del 50% rispetto alle richieste standard richieste. Per scoprire di più, consulta la pagina dei prezzi.

Modelli multimodali che supportano le previsioni batch

I seguenti modelli multimodali supportano le previsioni batch.

  • gemini-1.5-flash-002
  • gemini-1.5-flash-001
  • gemini-1.5-pro-002
  • gemini-1.5-pro-001
  • gemini-1.0-pro-002
  • gemini-1.0-pro-001

Prepara gli input

Le richieste batch per i modelli multimodali accettano origini di archiviazione BigQuery e Cloud Storage.

Input dello spazio di archiviazione BigQuery

  • I contenuti nella colonna request devono essere in formato JSON valido. Questi dati JSON rappresenta l'input per il modello.
  • Il contenuto delle istruzioni JSON deve corrispondere alla struttura di un GenerateContentRequest
  • La tabella di input può avere colonne diverse da request. Sono ignorato per la generazione di contenuti, ma incluso nella tabella di output. Il sistema preleva due nomi di colonna per l'output: response e status. Questi parametri vengono utilizzati per fornire informazioni sul risultato del job di previsione batch.
  • La previsione batch supporta solo gli URI pubblici dei bucket YouTube e Cloud Storage nel campo fileData per o Gemini.
  • Il supporto di fileData è limitato ad alcuni modelli Gemini.
Input di esempio (JSON)
        
{
  "contents": [
    {
      "role": "user",
      "parts": {
        "text": "Give me a recipe for banana bread."
      }
    }
  ],
  "system_instruction": {
    "parts": [
      {
        "text": "You are a chef."
      }
    ]
  }
}
        
        

Input di Cloud Storage

  • Formato file: JSON Lines (JSONL)
  • Si trova presso us-central1
  • Autorizzazioni di lettura appropriate per l'account di servizio
  • La previsione batch supporta solo gli URI dei bucket YouTube e Cloud Storage pubblici nel campo fileData per Gemini.
  • Il supporto di fileData è limitato a determinati modelli Gemini.
    Input di esempio (JSONL)
    
    {"request":{"contents": [{"role": "user", "parts": [{"text": "What is the relation between the following video and image samples?"}, {"file_data": {"file_uri": "gs://cloud-samples-data/generative-ai/video/animals.mp4", "mime_type": "video/mp4"}}, {"file_data": {"file_uri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg", "mime_type": "image/jpeg"}}]}]}}
    {"request":{"contents": [{"role": "user", "parts": [{"text": "Describe what is happening in this video."}, {"file_data": {"file_uri": "gs://cloud-samples-data/generative-ai/video/another_video.mov", "mime_type": "video/mov"}}]}]}}
        

Richiedi una risposta batch

In base al numero di elementi inseriti, viene inviata una di generazione batch può richiedere del tempo.

REST

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

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

  • PROJECT_ID: il nome del tuo progetto Google Cloud.
  • BP_JOB_NAME: un nome che scegli per il tuo lavoro.
  • INPUT_URI: l'URI di origine di input. Questo è un URI della tabella BigQuery modulo bq://PROJECT_ID.DATASET.TABLE. Oppure l'URI del tuo bucket Cloud Storage.
  • INPUT_SOURCE: il tipo di origine dati. Le opzioni sono bigquerySource e gcsSource.
  • INSTANCES_FORMAT: formato delle istanze di input. Può essere "jsonl" o "bigquery".
  • OUTPUT_URI: l'URI della tabella di output o di destinazione, nel modulo bq://PROJECT_ID.DATASET.TABLE. Se la tabella non esiste già, viene creato automaticamente.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
    "displayName": "BP_JOB_NAME",
    "model": "publishers/google/models/gemini-1.0-pro-002",
    "inputConfig": {
      "instancesFormat":"INSTANCES_FORMAT",
      "inputSource":{ INPUT_SOURCE
        "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, quindi esegui il comando seguente:

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, quindi esegui il comando seguente:

$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": "My first batch prediction",
  "model": "projects/{PROJECT_ID}/locations/us-central1/models/gemini-1.0-pro-002",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "bq://{PROJECT_ID}.mydataset.batch_predictions_input"
    }
  },
  "modelParameters": {},
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "bq://{PROJECT_ID}.mydataset.batch_predictions_output"
    }
  },
  "state": "JOB_STATE_PENDING",
  "createTime": "2023-07-12T20:46:52.148717Z",
  "updateTime": "2023-07-12T20:46:52.148717Z",
  "modelVersionId": "1"
}

La risposta include un identificatore univoco per il job batch. Puoi eseguire il polling dello stato del job batch utilizzando BATCH_JOB_ID finché 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

Recuperare l'output batch

Al termine di un'attività di previsione batch, l'output viene archiviato nella tabella BigQuery specificata nella richiesta.

Esempio di output BigQuery

richiesta risposta stato
'{"content":[{...}]}'
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "In a medium bowl, whisk together the flour, baking soda, baking powder."
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.14057204,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.14270912
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 8,
    "candidatesTokenCount": 396,
    "totalTokenCount": 404
  }
}

Esempio di output di Cloud Storage

PROJECT_ID=[PROJECT ID]
REGION="us-central1"
MODEL_URI="publishers/google/models/gemini-1.0-pro-001@default"
INPUT_URI="[GCS INPUT URI]"
OUTPUT_URI="[OUTPUT URI]"

# Setting variables based on parameters
ENDPOINT="${REGION}-autopush-aiplatform.sandbox.googleapis.com"
API_VERSION=v1
ENV=autopush
BP_JOB_NAME="BP_testing_`date +%Y%m%d_%H%M%S`"

curl \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/${API_VERSION}/projects/${PROJECT_ID}/locations/${REGION}/batchPredictionJobs \
-d '{
    "name": "'${BP_JOB_NAME}'",
    "displayName": "'${BP_JOB_NAME}'",
    "model": "'${MODEL_URI}'",
    "inputConfig": {
      "instancesFormat":"jsonl",
      "gcsSource":{
        "uris" : "'${INPUT_URI}'"
      }
    },
    "outputConfig": {
      "predictionsFormat":"jsonl",
      "gcsDestination":{
        "outputUriPrefix": "'${OUTPUT_URI}'"
      }
    },
    "labels": {"stage": "'${ENV}'"},
}'

Passaggi successivi