Différence entre les prédictions en ligne et les prédictions par lot
Les prédictions en ligne sont des requêtes synchrones adressées à un point de terminaison de modèle. Utilisez les prédictions en ligne pour effectuer des requêtes en réponse à des entrées d'application ou dans des situations nécessitant une inférence rapide.
Les prédictions par lots sont des requêtes asynchrones. Vous demandez des prédictions par lot directement à partir de la ressource de modèle sans avoir à le déployer sur un point de terminaison. Pour les données d'images, utilisez les prédictions par lot lorsque vous n'avez pas besoin d'une réponse immédiate et que vous souhaitez traiter des données accumulées à l'aide d'une seule requête.
Obtenir des prédictions en ligne
Déployer un modèle sur un point de terminaison
Vous devez déployer un modèle sur un point de terminaison avant de pouvoir utiliser ce modèle pour diffuser des prédictions en ligne. Le déploiement d'un modèle associe des ressources physiques au modèle afin qu'il puisse diffuser des prédictions en ligne avec une faible latence.
Vous pouvez déployer plusieurs modèles sur un point de terminaison et un modèle sur plusieurs points de terminaison. Pour en savoir plus sur les options et les cas d'utilisation du déploiement de modèles, consultez la page À propos du déploiement de modèles.
Utilisez l'une des méthodes suivantes pour déployer un modèle :
console Google Cloud
Accédez à la page Modèles de la console Google Cloud, dans la section Vertex AI.
Cliquez sur le nom du modèle que vous souhaitez déployer pour ouvrir sa page d'informations.
Sélectionnez l'onglet Déployer et tester.
Si votre modèle est déjà déployé sur des points de terminaison, ils sont répertoriés dans la section Déployer votre modèle.
Cliquez sur Déployer sur un point de terminaison.
Pour déployer votre modèle sur un nouveau point de terminaison, sélectionnez
Créer un point de terminaison et nommez le nouvel élément. Pour déployer votre modèle sur un point de terminaison existant, sélectionnez Ajouter à un point de terminaison existant, puis sélectionnez le point de terminaison dans la liste déroulante.Vous pouvez ajouter plusieurs modèles à un point de terminaison et un modèle à plusieurs points de terminaison. En savoir plus.
Si vous déployez votre modèle sur un point de terminaison existant qui contient un ou plusieurs modèles déployés, vous devez mettre à jour le pourcentage de répartition du trafic du modèle que vous déployez et des modèles déjà déployés afin que le pourcentage cumulé de tous les pourcentages soit égal à 100 %.
Sélectionnez AutoML Image et configurez comme suit :
Si vous déployez votre modèle sur un nouveau point de terminaison, acceptez la valeur 100 pour la répartition du trafic. Sinon, ajustez les valeurs de répartition du trafic pour tous les modèles sur le point de terminaison afin d'atteindre 100.
Saisissez le nombre de nœuds de calcul que vous souhaitez fournir pour votre modèle.
Il s'agit du nombre de nœuds disponibles pour ce modèle à tout moment. Vous êtes facturé pour les nœuds, même sans trafic de prédiction. Consultez la page des tarifs.
Découvrez comment modifier les paramètres par défaut pour la journalisation des prédictions.
Modèles de classification uniquement (facultatif) : dans la section Options d'explicabilité, sélectionnez Vertex Explainable AI. Acceptez les paramètres de visualisation existants ou choisissez de nouvelles valeurs, puis cliquez sur OK.
Activer les attributions de caractéristiques pour ce modèle pour activerLe déploiement de modèles de classification d'images AutoML avec Vertex Explainable AI configuré et l'exécution de prédictions avec des explications sont facultatifs. L'activation de Vertex Explainable AI au moment du déploiement entraîne des coûts supplémentaires en fonction du nombre de nœuds déployés et du temps de déploiement. Reportez-vous à la page Tarifs pour plus de détails.
Cliquez sur OK pour votre modèle, et lorsque tous les pourcentages de répartition du trafic sont corrects, cliquez sur Continuer.
La région dans laquelle le modèle est déployé s'affiche. Il doit s'agir de la région dans laquelle vous avez créé votre modèle.
Cliquez sur Déployer pour déployer votre modèle sur le point de terminaison.
API
Pour déployer un modèle à l'aide de l'API Vertex AI, vous devez effectuer les étapes suivantes :
- Créez un point de terminaison si nécessaire.
- Obtenez l'ID du point de terminaison.
- Déployez le modèle sur le point de terminaison.
Créer un point de terminaison
Si vous déployez un modèle sur un point de terminaison existant, vous pouvez ignorer cette étape.
gcloud
L'exemple suivant utilise la commande gcloud ai endpoints create
:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
Remplacez l'élément suivant :
- LOCATION_ID : région dans laquelle vous utilisez l'IA Vertex.
- ENDPOINT_NAME : nom du point de terminaison à afficher.
La création du point de terminaison par l'outil Google Cloud CLI peut prendre quelques secondes.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- LOCATION_ID : votre région.
- PROJECT_ID : l'ID de votre projet.
- ENDPOINT_NAME : nom du point de terminaison à afficher.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Corps JSON de la requête :
{ "display_name": "ENDPOINT_NAME" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata", "genericMetadata": { "createTime": "2020-11-05T17:45:42.812656Z", "updateTime": "2020-11-05T17:45:42.812656Z" } } }
"done": true
.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
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 l'ID du point de terminaison
Vous avez besoin de l'ID de point de terminaison pour déployer le modèle.
gcloud
L'exemple suivant utilise la commande gcloud ai endpoints list
:
gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME
Remplacez l'élément suivant :
- LOCATION_ID : région dans laquelle vous utilisez l'IA Vertex.
- ENDPOINT_NAME : nom du point de terminaison à afficher.
Notez le nombre qui s'affiche dans la colonne ENDPOINT_ID
. Utilisez cet ID à l'étape suivante.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- LOCATION_ID : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : l'ID de votre projet.
- ENDPOINT_NAME : nom du point de terminaison à afficher.
Méthode HTTP et URL :
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints?filter=display_name=ENDPOINT_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "endpoints": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID", "displayName": "ENDPOINT_NAME", "etag": "AMEw9yPz5pf4PwBHbRWOGh0PcAxUdjbdX2Jm3QO_amguy3DbZGP5Oi_YUKRywIE-BtLx", "createTime": "2020-04-17T18:31:11.585169Z", "updateTime": "2020-04-17T18:35:08.568959Z" } ] }
Déployer le modèle
Sélectionnez l'onglet correspondant à votre langage ou à votre environnement :
gcloud
Les exemples suivants utilisent la commande gcloud ai endpoints deploy-model
.
L'exemple suivant déploie la ressource Model
sur Endpoint
sans répartir le trafic entre plusieurs ressources DeployedModel
:
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- ENDPOINT_ID : ID du point de terminaison.
- LOCATION_ID : région dans laquelle vous utilisez Vertex AI.
- MODEL_ID : ID du modèle à déployer.
-
DEPLOYED_MODEL_NAME : nom de l'élément
DeployedModel
. Vous pouvez également utiliser le nom à afficher duModel
pour leDeployedModel
. - MIN_REPLICA_COUNT : nombre minimal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge de prédiction, dans la limite du nombre maximal de nœuds et jamais moins que ce nombre de nœuds.
-
MAX_REPLICA_COUNT : nombre maximal de nœuds pour ce déploiement.
Le nombre de nœuds peut être augmenté ou diminué selon les besoins de la charge de prédiction, jusqu'à atteindre ce nombre de nœuds mais jamais moins que le nombre minimal de nœuds.
Si vous omettez l'option
--max-replica-count
, le nombre maximal de nœuds est défini sur la valeur de--min-replica-count
.
Exécutez la commande gcloud ai endpoints deploy-model :
Linux, macOS ou Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100
Répartir le trafic
L'option --traffic-split=0=100
des exemples précédents envoie 100 % du trafic de prédiction que Endpoint
reçoit à la nouvelle ressource DeployedModel
, correspondant à l'ID temporaire 0
. Si votre Endpoint
dispose déjà d'autres ressources DeployedModel
, vous pouvez répartir le trafic entre le nouveau DeployedModel
et les anciens.
Par exemple, pour envoyer 20 % du trafic vers le nouveau DeployedModel
et 80 % vers une ressource plus ancienne, exécutez la commande suivante.
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- OLD_DEPLOYED_MODEL_ID : ID de la ressource
DeployedModel
existante.
Exécutez la commande gcloud ai endpoints deploy-model :
Linux, macOS ou Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
déployer le modèle ;
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : l'ID de votre projet.
- ENDPOINT_ID : ID du point de terminaison.
- MODEL_ID : ID du modèle à déployer.
-
DEPLOYED_MODEL_NAME : nom de l'élément
DeployedModel
. Vous pouvez également utiliser le nom à afficher duModel
pour leDeployedModel
. - MIN_REPLICA_COUNT : nombre minimal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge de prédiction, dans la limite du nombre maximal de nœuds et jamais moins que ce nombre de nœuds.
- MAX_REPLICA_COUNT : nombre maximal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou diminué selon les besoins de la charge de prédiction, jusqu'à atteindre ce nombre de nœuds mais jamais moins que le nombre minimal de nœuds.
- TRAFFIC_SPLIT_THIS_MODEL : pourcentage du trafic de prédiction vers ce point de terminaison à acheminer vers le modèle déployé avec cette opération. La valeur par défaut est 100. La somme des pourcentages de trafic doit être égale à 100. En savoir plus sur la répartition du trafic.
- DEPLOYED_MODEL_ID_N : facultatif. Si d'autres modèles sont déployés sur ce point de terminaison, vous devez mettre à jour les pourcentages de répartition du trafic pour que le pourcentage cumulé de tous les pourcentages soit égal à 100.
- TRAFFIC_SPLIT_MODEL_N : valeur en pourcentage de la répartition du trafic pour la clé de l'ID de modèle déployé.
- PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Corps JSON de la requête :
{ "deployedModel": { "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "automaticResources": { "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT } }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
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.
Découvrez comment modifier les paramètres par défaut pour la journalisation des prédictions.
Obtenir l'état de l'opération
Certaines requêtes démarrent des opérations de longue durée qui nécessitent du temps. Ces requêtes renvoient un nom d'opération, que vous pouvez utiliser pour afficher l'état de l'opération ou pour annuler l'opération. Vertex AI propose des méthodes d'assistance pour appeler les opérations de longue durée. Pour en savoir plus, consultez la section Travailler avec des opérations de longue durée.
Effectuer une prédiction en ligne à l'aide du modèle déployé
Pour effectuer une prédiction en ligne, envoyez un ou plusieurs éléments de test à un modèle pour analyse, et ce modèle renvoie des résultats basés sur l'objectif de votre modèle. Pour en savoir plus sur les résultats des prédictions, consultez la section Interpréter les résultats.
Console
Utilisez la console Google Cloud pour demander une prédiction en ligne. Votre modèle doit être déployé sur un point de terminaison.
Accédez à la page Modèles de Google Cloud Console, dans la section Vertex AI.
Dans la liste des modèles, cliquez sur le nom du modèle à partir duquel demander les prédictions.
Sélectionnez l'onglet Déployer et tester.
Dans la section Tester votre modèle, ajoutez des éléments de test pour demander une prédiction.
Les modèles AutoML pour les objectifs d'images nécessitent l'importation d'une image pour demander une prédiction.
Pour plus d'informations sur l'importance des caractéristiques locales, consultez la page Obtenir des explications.
Une fois la prédiction terminée, Vertex AI renvoie les résultats dans la console.
API
Utilisez l'API Vertex AI pour demander une prédiction en ligne. Votre modèle doit être déployé sur un point de terminaison.
Les objectifs de type de données d'image incluent la classification et la détection d'objets.
Prédiction par modèle Edge : lorsque vous utilisez des modèles Edge d'images AutoML pour la prédiction, vous devez convertir tout fichier de prédiction non-JPEG en fichier-JPEG avant d'envoyer la requête de prédiction. Pour obtenir un exemple de fonction de prétraitement Python, consultez le dépôt client Python pour le dépôt de l'API AutoML de Google Cloud.
gcloud
Créez un fichier nommé
request.json
avec le contenu suivant :{ "instances": [{ "content": "CONTENT" }], "parameters": { "confidenceThreshold": THRESHOLD_VALUE, "maxPredictions": MAX_PREDICTIONS } }
Remplacez l'élément suivant :
- CONTENT : contenu de l'image encodée en base64.
- THRESHOLD_VALUE Facultatif : le modèle ne renvoie que les prédictions dont le score de confiance est au moins égal à cette valeur.
- MAX_PREDICTIONS Facultatif : le modèle renvoie jusqu'à ce nombre de prédictions en commençant par les prédictions présentant les scores de confiance les plus élevés.
Exécutez la commande suivante :
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Remplacez les éléments suivants :
- ENDPOINT_ID : ID du point de terminaison.
- LOCATION_ID : région dans laquelle vous utilisez l'IA Vertex.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région où se trouve le point de terminaison. Exemple :
us-central1
. - PROJECT_ID : l'ID de votre projet.
- ENDPOINT_ID : ID du point de terminaison.
- CONTENT : contenu de l'image encodée en base64.
- THRESHOLD_VALUE Facultatif : le modèle ne renvoie que les prédictions dont le score de confiance est au moins égal à cette valeur.
- MAX_PREDICTIONS Facultatif : le modèle renvoie jusqu'à ce nombre de prédictions en commençant par les prédictions présentant les scores de confiance les plus élevés.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict
Corps JSON de la requête :
{ "instances": [{ "content": "CONTENT" }], "parameters": { "confidenceThreshold": THRESHOLD_VALUE, "maxPredictions": MAX_PREDICTIONS } }
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict"
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "predictions": [ { "confidences": [ 0.975873291, 0.972160876, 0.879488528, 0.866532683, 0.686478078 ], "displayNames": [ "Salad", "Salad", "Tomato", "Tomato", "Salad" ], "ids": [ "7517774415476555776", "7517774415476555776", "2906088397049167872", "2906088397049167872", "7517774415476555776" ], "bboxes": [ [ 0.0869686604, 0.977020741, 0.395135701, 1 ], [ 0, 0.488701463, 0.00157663226, 0.512249 ], [ 0.361617863, 0.509664357, 0.772928834, 0.914706349 ], [ 0.310678929, 0.45781514, 0.565507233, 0.711237729 ], [ 0.584359646, 1, 0.00116168708, 0.130817384 ] ] } ], "deployedModelId": "3860570043075002368" }
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
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.
Obtenir des prédictions par lot
Pour effectuer une requête de prédiction par lot, vous devez spécifier une source d'entrée et un format de sortie dans lesquels Vertex AI stocke les résultats des prédictions. Les prédictions par lot pour le type de modèle d'image AutoML nécessitent un fichier JSON Lines d'entrée et le nom d'un bucket Cloud Storage pour stocker le résultat.
Exigences concernant les données d'entrée
L'entrée des requêtes par lot spécifie les éléments à envoyer à votre modèle pour la prédiction. Pour les modèles de détection d'objets au sein des images, vous pouvez utiliser un fichier de lignes JSON pour spécifier une liste d'images afin de réaliser des prédictions, puis stocker le fichier de lignes JSON dans un bucket Cloud Storage. L'exemple suivant montre une seule ligne dans un fichier JSON Lines d'entrée :
{"content": "gs://sourcebucket/datasets/images/source_image.jpg", "mimeType": "image/jpeg"}
Demander une prédiction par lots
Pour les requêtes de prédiction par lot, vous pouvez utiliser la console Google Cloud ou l'API Vertex AI. Selon le nombre d'éléments d'entrée envoyés, la tâche de prédiction par lot peut prendre un certain temps.
console Google Cloud
Utilisez la console Google Cloud pour demander une prédiction par lot.
Dans la console Google Cloud, dans la section Vertex AI, accédez à la page Prédictions par lot.
Cliquez sur Créer pour ouvrir la fenêtre Nouvelle prédiction par lot et procédez comme suit :
- Saisissez un nom pour la prédiction par lot.
- Dans Nom du modèle, sélectionnez le nom du modèle à utiliser pour cette prédiction par lot.
- Dans le champ Chemin source, spécifiez l'emplacement Cloud Storage où se trouve votre fichier d'entrée JSON Lines.
- Pour le chemin d'accès de la destination, spécifiez un emplacement Cloud Storage où les résultats de la prédiction par lot sont stockés. Le format de sortie est déterminé par l'objectif de votre modèle. Les modèles AutoML pour les objectifs d'images génèrent des fichiers JSON Lines.
API
Envoyez des requêtes de prédiction par lot à l'aide de l'API Vertex AI.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région où le modèle est stocké et la tâche de prédiction par lot est exécutée. Exemple :
us-central1
. - PROJECT_ID : ID du projet.
- BATCH_JOB_NAME : nom à afficher du job par lot.
- MODEL_ID : ID du modèle à utiliser pour effectuer des prédictions.
- THRESHOLD_VALUE (facultatif) : Vertex AI ne renvoie que des prédictions ayant au moins cette valeur de score de confiance. La valeur par défaut est
0.0
. - MAX_PREDICTIONS (facultatif) : Vertex AI renvoie jusqu'à ce nombre de prédictions commençant par les prédictions ayant les scores de confiance les plus élevés. La valeur par défaut est
10
. - URI : URI Cloud Storage où se trouve le fichier JSON Lines d'entrée.
- BUCKET : votre bucket Cloud Storage.
- PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
Corps JSON de la requête :
{ "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT/locations/LOCATION/models/MODEL_ID", "modelParameters": { "confidenceThreshold": THRESHOLD_VALUE, "maxPredictions": MAX_PREDICTIONS }, "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": ["URI"], }, }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "OUTPUT_BUCKET", }, }, }
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID", "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": [ "CONTENT" ] } }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "BUCKET" } }, "state": "JOB_STATE_PENDING", "createTime": "2020-05-30T02:58:44.341643Z", "updateTime": "2020-05-30T02:58:44.341643Z", "modelDisplayName": "MODEL_NAME", "modelObjective": "MODEL_OBJECTIVE" }
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
.
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 des résultats de prédiction par lot
Vertex AI envoie une sortie de prédiction par lot à la destination spécifiée.
Lorsqu'une tâche de prédiction par lot est terminée, le résultat de la prédiction est stocké dans le bucket Cloud Storage que vous avez spécifié dans votre requête.
Exemples de résultats de prédictions par lot
Voici un exemple de prédiction par lot issu d'un modèle de détection d'objets au sein d'images.
Important : Les cadres de délimitation sont spécifiés comme suit :
"bboxes": [
[xMin, xMax, yMin, yMax],
...]
xMin
et xMax
sont les valeurs minimale et maximale x, et
yMin
et yMax
sont respectivement les valeurs minimale et maximale y.
{ "instance": {"content": "gs://bucket/image.jpg", "mimeType": "image/jpeg"}, "prediction": { "ids": [1, 2], "displayNames": ["cat", "dog"], "bboxes": [ [0.1, 0.2, 0.3, 0.4], [0.2, 0.3, 0.4, 0.5] ], "confidences": [0.7, 0.5] } }