L'obtention de réponses par lot permet d'envoyer efficacement un grand nombre de requêtes d'embeddings non sensibles à la latence. Contrairement à la prédiction en ligne, où vous êtes limité à une requête à la fois, vous pouvez envoyer un grand nombre de requêtes LLM en une seule requête par lot. Comme pour la prédiction par lot de données tabulaires dans Vertex AI, vous déterminez votre emplacement de sortie, vous ajoutez vos entrées, et vos réponses sont renseignées de manière asynchrone dans votre emplacement de sortie.
Après avoir envoyé une requête par lot et examiné les résultats, vous pouvez ajuster le modèle grâce au processus de réglage. Après le réglage, vous pouvez utiliser votre modèle mis à jour pour les générations par lot en procédant comme d'habitude. Pour en savoir plus sur le réglage des modèles, consultez la section Régler les modèles de fondation.
Modèles d'embeddings de texte compatibles avec les prédictions par lot
Toutes les versions stables du modèle textembedding-gecko
sont compatibles avec les prédictions par lot, à l'exception de textembedding-gecko-multilingual@001
. Les versions stables sont des versions qui ne sont plus en version preview et qui sont entièrement compatibles avec les environnements de production. Pour consulter la liste complète des modèles d'embedding compatibles, consultez Modèles et versions d'embedding.
Préparer les entrées
L'entrée des requêtes par lot est une liste d'indications qui peuvent être stockées dans une table BigQuery ou sous forme de fichier JSON Lines (JSONL) dans Cloud Storage. Chaque requête peut inclure jusqu'à 30 000 indications.
Exemple JSONL
Cette section présente des exemples de mise en forme de l'entrée et de la sortie JSONL.
Exemple d'entrée JSONL
{"content":"Give a short description of a machine learning model:"}
{"content":"Best recipe for banana bread:"}
Exemple de sortie 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":""}
Exemple BigQuery
Cette section présente des exemples de mise en forme d'entrée et de sortie BigQuery.
Exemple d'entrée BigQuery
Cet exemple montre une table BigQuery à une seule colonne.
contenu |
---|
"Donner une brève description d'un modèle de machine learning :" |
"Meilleure recette de pain à la banane :" |
Exemple de sortie BigQuery
contenu | prédictions | état |
---|---|---|
"Donner une brève description d'un modèle de machine learning :" |
'[{"embeddings": { "statistics":{"token_count":8,"truncated":false}, "Values":[0.1,....] } } ]' |
|
"Meilleure recette de pain à la banane :" |
'[{"embeddings": { "statistics":{"token_count":3,"truncated":false}, "Values":[0.2,....] } } ]' |
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 de texte à l'aide de l'API Vertex AI, envoyez une requête POST au point de terminaison du modèle de l'éditeur.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud.
- BP_JOB_NAME : le nom du job.
- INPUT_URI : URI source de l'entrée. Il s'agit d'un URI de table BigQuery ou d'un URI de fichier JSONL dans Cloud Storage.
- OUTPUT_URI : URI cible de sortie.
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 :
{ "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" } } }
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/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 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
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Récupérer une sortie par lot
Lorsqu'une tâche de prédiction par lot est terminée, le résultat est stocké dans le bucket Cloud Storage ou la table BigQuery que vous avez spécifié dans votre requête.
Étapes suivantes
- Découvrez comment obtenir des embeddings de texte.