Les prédictions par lot permettent d'envoyer efficacement plusieurs requêtes multimodales non sensibles à la latence. Contrairement à la prédiction en ligne, où vous êtes limité à une requête d'entrée à la fois, vous pouvez envoyer un grand nombre de requêtes multimodales en une seule requête par lot. Ensuite, vos réponses sont renseignées de manière asynchrone dans votre emplacement de sortie de stockage BigQuery.
Modèles multimodaux compatibles avec les prédictions par lot
Les modèles multimodaux suivants sont compatibles avec les prédictions par lot.
gemini-1.5-flash-001
gemini-1.5-pro-001
gemini-1.0-pro-002
gemini-1.0-pro-001
Préparer les entrées
Les requêtes par lots pour les modèles multimodaux n'acceptent que les sources de stockage BigQuery. Pour en savoir plus, consultez la page Présentation du stockage BigQuery.
Stockez votre entrée dans une table BigQuery avec une colonne JSON appelée request
.
- Le contenu de la colonne
request
doit être un fichier JSON valide. - Le contenu des instructions JSON doit correspondre à la structure d'un
GenerateContentRequest
. - Votre table d'entrée peut contenir des colonnes autres que
request
. Elles sont ignorées pour la génération de contenu, mais sont incluses dans la table de sortie. Le système réserve deux noms de colonne pour la sortie:response
etstatus
. Ils permettent de fournir des informations sur le résultat de la tâche de prédiction par lot. - La prédiction par lot n'est pas compatible avec le champ
fileData
pour Gemini.
Exemple d'entrée BigQuery
request |
---|
{ "contents": [ { "role": "user", "parts": { "text": "Give me a recipe for banana bread." } } ], "system_instruction": { "parts": [ { "text": "You are a chef." } ] } } |
Demander une réponse par lot
Selon le nombre d'éléments d'entrée envoyés, la tâche de génération par lot peut prendre un certain temps.
REST
Pour tester une requête multimodale à l'aide de l'API Vertex AI, envoyez une requête POST au point de terminaison du modèle du diffuseur.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : le nom de votre projet Google Cloud
- BP_JOB_NAME: nom que vous avez choisi pour votre tâche.
- INPUT_URI : URI source de l'entrée. Il s'agit d'un URI de table BigQuery au format
bq://PROJECT_ID.DATASET.TABLE
. - OUTPUT_URI: URI BigQuery de la table de sortie cible, au format
bq://PROJECT_ID.DATASET.TABLE
. Si la table n'existe pas déjà, elle est créée pour vous.
Méthode HTTP et URL :
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
Corps JSON de la requête :
{ "displayName": "BP_JOB_NAME", "model": "publishers/google/models/gemini-1.0-pro-002", "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat":"bigquery", "bigqueryDestination":{ "outputUri": "OUTPUT_URI" } } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
{ "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 réponse inclut un identifiant unique pour le job par lot.
Vous pouvez interroger l'état de la tâche par lot à l'aide de BATCH_JOB_ID jusqu'à ce que le paramètre state
soit défini sur JOB_STATE_SUCCEEDED
. Exemple :
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
Récupérer une sortie par lot
Une fois la tâche de prédiction par lot terminée, le résultat est stocké dans la table BigQuery que vous avez spécifiée dans votre requête.
Exemple de sortie BigQuery
request | réponse | état |
---|---|---|
'{"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 } } |
Étape suivante
- Découvrez comment régler un modèle Gemini dans Présentation du réglage du modèle pour Gemini.
- Découvrez l'API de prédiction par lot.