Prédictions par lots

Les prédictions par lot vous permettent d'envoyer efficacement plusieurs requêtes textuelles qui ne sont pas sensibles à la latence à un modèle Llama. Contrairement aux prédictions en ligne, pour lesquelles vous envoyez une invite d'entrée pour chaque requête, vous pouvez regrouper un grand nombre d'invites d'entrée dans une seule requête.

Les prédictions par lot sont gratuites pendant la période de preview.

Modèles Llama compatibles

Vertex AI est compatible avec les prédictions par lot pour les modèles Llama suivants:

  • Llama 3.1 405B (llama-3.1-405b-instruct-maas)
  • Llama 3.1 70B (llama-3.1-70b-instruct-maas)
  • Llama 3.1 8B (llama-3.1-8b-instruct-maas)

Préparer l'entrée

Avant de commencer, préparez vos entrées dans une table BigQuery ou sous forme de fichier JSONL dans Cloud Storage. L'entrée pour les deux sources doit suivre le format JSON du schéma de l'API OpenAI, comme illustré dans l'exemple suivant:

{"custom_id": "test-request-0", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta/llama-3.1-405b-instruct-maas", "messages": [{"role": "system", "content": "You are a chef."}, {"role": "user", "content": "Give me a recipe for banana bread"}], "max_tokens": 1000}}

BigQuery

Votre table d'entrée BigQuery doit respecter le schéma suivant:

Nom de la colonne Description
custom_id ID de chaque requête permettant de faire correspondre l'entrée à la sortie.
méthode Méthode de la requête.
url Point de terminaison de la requête.
body(JSON) Votre requête d'entrée.
  • Votre table d'entrée peut comporter d'autres colonnes, qui sont ignorées par l'ordre de traitement par lot et transmises directement à la table de sortie.
  • Les tâches de prédiction par lot réservent deux noms de colonnes pour la sortie de la prédiction par lot: response(JSON) et id. N'utilisez pas ces colonnes dans le tableau d'entrée.
  • Les colonnes method (Méthode) et url (URL) sont supprimées et ne sont pas incluses dans le tableau de sortie.

Cloud Storage

Pour Cloud Storage, le fichier d'entrée doit être un fichier JSONL situé dans un bucket Cloud Storage.

Demander une prédiction par lots

Effectuez une prédiction par lot sur un modèle Llama à l'aide d'entrées provenant de BigQuery ou de Cloud Storage. Vous pouvez choisir indépendamment d'exporter les prédictions vers une table BigQuery ou un fichier JSONL dans un bucket Cloud Storage.

BigQuery

Spécifiez votre table d'entrée BigQuery, votre modèle et l'emplacement de la sortie. La tâche de prédiction par lot et votre table doivent se trouver dans la même région.

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester une requête textuelle. L'exemple suivant envoie une requête 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 :

  • LOCATION: région compatible avec les modèles Llama.
  • PROJECT_ID : l'ID de votre projet.
  • MODEL: nom du modèle à régler.
  • INPUT_URI: table BigQuery dans laquelle se trouve votre entrée de prédiction par lot, par exemple myproject.mydataset.input_table.
  • OUTPUT_FORMAT: pour générer une sortie dans une table BigQuery, spécifiez bigquery. Pour générer une sortie dans un bucket Cloud Storage, spécifiez jsonl.
  • DESTINATION: pour BigQuery, spécifiez bigqueryDestination. Pour Cloud Storage, indiquez gcsDestination.
  • OUTPUT_URI_FIELD_NAME : pour BigQuery, spécifiez outputUri. Pour Cloud Storage, indiquez outputUriPrefix.
  • OUTPUT_URI: pour BigQuery, spécifiez l'emplacement de la table, par exemple myproject.mydataset.output_result. Pour Cloud Storage, spécifiez l'emplacement du bucket et du dossier, par exemple gs://mybucket/path/to/outputfile.

Méthode HTTP et URL :

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

Corps JSON de la requête :

'{
  "displayName": "JOB_NAME",
  "model": "publishers/meta/models/MODEL",
  "inputConfig": {
    "instancesFormat":"bigquery",
    "bigquerySource":{
      "inputUri" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Cloud Storage

Spécifiez l'emplacement Cloud Storage, le modèle et l'emplacement de sortie de votre fichier JSONL.

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester une requête textuelle. L'exemple suivant envoie une requête 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 :

  • LOCATION: région compatible avec les modèles Llama.
  • PROJECT_ID : l'ID de votre projet.
  • MODEL: nom du modèle à régler.
  • INPUT_URI: emplacement Cloud Storage de votre entrée de prédiction par lot JSONL, par exemple gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: pour générer une sortie dans une table BigQuery, spécifiez bigquery. Pour générer une sortie dans un bucket Cloud Storage, spécifiez jsonl.
  • DESTINATION: pour BigQuery, spécifiez bigqueryDestination. Pour Cloud Storage, indiquez gcsDestination.
  • OUTPUT_URI_FIELD_NAME : pour BigQuery, spécifiez outputUri. Pour Cloud Storage, indiquez outputUriPrefix.
  • OUTPUT_URI: pour BigQuery, spécifiez l'emplacement de la table, par exemple myproject.mydataset.output_result. Pour Cloud Storage, spécifiez l'emplacement du bucket et du dossier, par exemple gs://mybucket/path/to/outputfile.

Méthode HTTP et URL :

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

Corps JSON de la requête :

'{
  "displayName": "JOB_NAME",
  "model": "publishers/meta/models/MODEL",
  "inputConfig": {
    "instancesFormat":"jsonl",
    "gcsDestination":{
      "uris" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Obtenir l'état d'une tâche de prédiction par lot

Obtenez l'état de votre tâche de prédiction par lot pour vérifier si elle a bien été exécutée. La durée de la tâche dépend du nombre d'éléments d'entrée que vous avez envoyés.

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester une requête textuelle. L'exemple suivant envoie une requête 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 : l'ID de votre projet.
  • LOCATION: région où se trouve votre tâche par lot.
  • JOB_ID: ID de la tâche par lot renvoyé lorsque vous avez créé la tâche.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID"

PowerShell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Récupérer la sortie

Une fois une tâche de prédiction par lot terminée, récupérez la sortie à partir de l'emplacement que vous avez spécifié. Pour BigQuery, la sortie se trouve dans la colonne response(JSON) de votre table BigQuery de destination. Pour Cloud Storage, la sortie est enregistrée sous forme de fichier JSONL dans l'emplacement Cloud Storage de sortie.