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.
Pour être déployable, le modèle doit être visible dans Vertex AI Model Registry. Pour en savoir plus sur Model Registry, y compris sur la manière d'importer des artefacts de modèles ou de les créer directement dans Model Registry, consultez la page Présentation de Vertex AI Model Registry.
Vous pouvez déployer plusieurs modèles sur un point de terminaison ou le même modèle sur plusieurs points de terminaison. Pour en savoir plus sur les options et les cas d'utilisation de déploiement de modèles, consultez la section Motifs de déploiement de plusieurs modèles sur le même point de terminaison ci-dessous.
Déployer un modèle sur un point de terminaison
Utilisez l'une des méthodes suivantes pour déployer un modèle :
Console Google Cloud
Dans la section Vertex AI de la console Google Cloud, accédez à la page Modèles.
Cliquez sur le nom et l'ID de version 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 nouveau point de terminaison. 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 déployer plusieurs modèles sur un point de terminaison ou déployer le même modèle sur plusieurs points de terminaison.
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 %.
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 qui doivent être disponibles pour le modèle à tout moment.
Les nœuds utilisés vous sont facturés, que ce soit pour gérer la charge de prédiction ou pour les nœuds de secours (minimum), même sans le trafic de prédiction. Consultez la page des tarifs.
Le nombre de nœuds de calcul peut augmenter en cas de nécessité pour gérer le trafic de prédiction, mais celui-ci ne dépassera jamais le nombre maximal de nœuds.
Pour utiliser l'autoscaling, saisissez le nombre maximal de nœuds de calcul que vous souhaitez que Vertex AI puisse effectuer.
Sélectionnez un type de machine.
Des ressources de plus grande capacité améliorent les performances des prédictions et augmentent les coûts. Comparez les types de machines disponibles.
Sélectionnez un Type d'accélérateur et un Nombre d'accélérateurs.
Si vous avez activé l'utilisation de l'accélérateur lorsque vous avez importé ou créé le modèle, cette option s'affiche.
Pour connaître le nombre d'accélérateurs, consultez la table GPU pour vérifier le nombre de GPU valides que vous pouvez utiliser avec chaque type de machine. Le nombre d'accélérateurs fait référence au nombre d'accélérateurs par nœud, et non au nombre total d'accélérateurs dans votre déploiement.
Si vous souhaitez utiliser un compte de service personnalisé pour le déploiement, sélectionnez un compte de service dans la boîte déroulante Compte de service.
Découvrez comment modifier les paramètres par défaut pour la journalisation des prédictions.
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 :
Create
un point de terminaison si nécessaire.Get
l'ID du point de terminaison.Deploy
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_ID \
--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
.
Terraform
L'exemple suivant utilise la ressource Terraform google_vertex_ai_endpoint
pour créer un point de terminaison.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
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_ID \
--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 un Model
sur un Endpoint
sans utiliser de GPU pour accélérer la diffusion des prédictions et 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
. -
MACHINE_TYPE : facultatif. Ressources machine utilisées pour chaque nœud de ce déploiement. Le paramètre par défaut est
n1-standard-2
. En savoir plus sur les types de machines. - ACCELERATOR_TYPE : type d'accélérateur à associer à la machine. Facultatif si ACCELERATOR_COUNT n'est pas spécifié ou est égal à zéro. Il n'est pas recommandé pour les modèles AutoML ni les modèles personnalisés qui utilisent des images non GPU. En savoir plus
- ACCELERATOR_COUNT : nombre d'accélérateurs pour chaque instance dupliquée à utiliser. Facultatif. Doit être égal à zéro ou non spécifié pour les modèles AutoML ou les modèles personnalisés qui utilisent des images non GPU.
- 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. Cette valeur doit être supérieure ou égale à 1.
- 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/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": "ACCELERATOR_COUNT" }, "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/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.
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.
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.
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.
Limites
- Si vous avez activé VPC Service Controls, le conteneur de votre modèle déployé n'aura pas accès à Internet.
Configurer le déploiement du modèle
Lors du déploiement du modèle, vous prenez les décisions importantes suivantes concernant l'exécution de la prédiction en ligne :
Ressource créée | Paramètre spécifié lors de la création de la ressource |
---|---|
Point de terminaison | Emplacement dans lequel exécuter les prédictions |
Modèle | Conteneur à utiliser (ModelContainerSpec ) |
DeployedModel | Machines à utiliser pour la prédiction en ligne |
Vous ne pouvez pas mettre à jour ces paramètres répertoriés après la création initiale du modèle ou du point de terminaison, et vous ne pouvez pas les remplacer dans la requête de prédiction en ligne. Pour modifier ces paramètres, vous devez redéployer votre modèle.
Déroulement du déploiement d'un modèle
Lorsque vous déployez un modèle sur un point de terminaison, vous associez des ressources physiques (machine) au modèle afin qu'il puisse diffuser les prédictions en ligne. Les prédictions en ligne présentent des exigences de latence faible. Fournir des ressources au modèle à l'avance réduit la latence.
Le type d'entraînement (AutoML ou personnalisé) et le type de données (AutoML) du modèle déterminent les types de ressources physiques disponibles pour le modèle. Après le déploiement du modèle, vous pouvez mutate
certaines de ces ressources sans créer de déploiement.
La ressource de point de terminaison fournit le point de terminaison (URL) du service que vous utilisez pour demander la prédiction. Exemple :
https://us-central1-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/{endpoint}:predict
Motifs de déploiement de plusieurs modèles sur le même point de terminaison
Le déploiement de deux modèles sur le même point de terminaison vous permet de remplacer progressivement un modèle par l'autre. Par exemple, supposons que vous utilisiez un modèle et que vous cherchiez un moyen d'améliorer la précision de ce modèle avec de nouvelles données d'entraînement. Toutefois, vous ne souhaitez pas mettre à jour votre application pour qu'elle pointe vers une nouvelle URL de point de terminaison et vous ne souhaitez pas modifier soudainement l'application. Vous pouvez ajouter le nouveau modèle au même point de terminaison, diffuser un petit pourcentage de trafic, puis augmenter progressivement la répartition du trafic pour le nouveau modèle jusqu'à ce qu'il diffuse 100% du trafic.
Étant donné que les ressources sont associées au modèle plutôt qu'au point de terminaison, vous pouvez déployer des modèles de différents types sur le même point de terminaison. Toutefois, la bonne pratique consiste à déployer des modèles d'un type spécifique (par exemple tabulaire AutoML, entraînement personnalisé) sur un point de terminaison. Cette configuration est plus facile à gérer.
Motifs de déploiement d'un modèle sur plusieurs points de terminaison
Vous souhaitez peut-être déployer vos modèles avec différentes ressources pour divers environnements d'application, tels que les tests et la production. Vous pouvez également être compatible avec différents SLO pour vos requêtes de prédiction. Il est possible que l'une de vos applications présente des besoins de performances bien plus élevés que les autres. Dans ce cas, vous avez la possibilité de déployer ce modèle sur un point de terminaison plus performant avec davantage de ressources de machine. Pour optimiser les coûts, vous pouvez également déployer le modèle sur un point de terminaison à faible performances avec moins de ressources de machine.
Comportement du scaling
Lorsque vous déployez un modèle pour la prédiction en ligne en tant que DeployedModel
, vous pouvez configurer les nœuds de prédiction pour qu'ils assurent le scaling automatique. Pour ce faire, définissez dedicatedResources.maxReplicaCount
sur une valeur supérieure à dedicatedResources.minReplicaCount
.
Lorsque vous configurez un DeployedModel
, vous devez définir dedicatedResources.minReplicaCount
sur une valeur d'au moins 1. En d'autres termes, vous ne pouvez pas configurer le modèle DeployedModel
pour qu'il soit réduit à 0 nœud de prédiction lorsqu'il n'est pas utilisé.
Utilisation cible et configuration
Par défaut, si vous déployez un modèle sans ressources GPU dédiées, Vertex AI ajuste automatiquement le nombre d'instances dupliquées afin que l'utilisation du processeur corresponde à la valeur par défaut de 60 %.
Par défaut, si vous déployez un modèle avec des ressources GPU dédiées (si machineSpec.accelerator_count
est supérieur à 0), Vertex AI effectuera automatiquement un scaling à la hausse ou à la baisse du nombre d'instances répliquées jusqu'à ce que l'utilisation du CPU ou du GPU (selon la valeur la plus élevée) corresponde à la valeur cible par défaut de 60 %. Par conséquent, si votre débit de prédiction entraîne une utilisation élevée des GPU, mais pas une utilisation élevée du processeur, Vertex AI effectue un scaling à la hausse, et l'utilisation du processeur sera très faible, ce qui est visible dans la surveillance. Si votre conteneur personnalisé sous-utilise les GPU, mais dispose d'un processus sans lien qui entraîne une utilisation du CPU supérieure à 60 %, Vertex AI effectue un scaling à la hausse, même si cela n'était peut-être pas nécessaire pour atteindre les objectifs de RPS et de latence.
Vous pouvez remplacer la métrique de seuil et la cible par défaut en spécifiant autoscalingMetricSpecs
.
Notez que si votre déploiement est configuré pour évoluer uniquement en fonction de l'utilisation du processeur, il ne peut pas évoluer à la hausse, même si l'utilisation du GPU est élevée.
Gérer l'utilisation des ressources
Vous pouvez surveiller votre point de terminaison pour effectuer le suivi de métriques telles que l'utilisation du processeur et de l'accélérateur, le nombre de requêtes, la latence, ainsi que le nombre actuel et cible d'instances dupliquées. Ces informations peuvent vous aider à comprendre le comportement des ressources et leur utilisation des points de terminaison.
N'oubliez pas que chaque instance dupliquée n'exécute qu'un seul conteneur. Cela signifie que si un conteneur de prédiction ne peut pas utiliser pleinement la ressource de calcul sélectionnée, telle que du code à thread unique pour une machine multicœur ou un modèle personnalisé qui appelle un autre service dans le cadre de la prédiction, il est possible que le scaling à la hausse de vos nœuds ne soit pas effectué.
Par exemple, si vous utilisez FastAPI ou tout serveur de modèles comportant un nombre configurable de nœuds de calcul ou de threads, il existe de nombreux cas où l'utilisation de plusieurs nœuds de calcul peut augmenter l'utilisation des ressources. Cela permet au service d'adapter automatiquement le nombre d'instances dupliquées.
Nous vous recommandons généralement de commencer par un nœud de calcul ou un thread par cœur. Si vous remarquez que l'utilisation du processeur est faible, en particulier en cas de charge élevée, ou que votre modèle n'effectue pas de scaling à la hausse, car l'utilisation du CPU est faible, augmentez le nombre de nœuds de calcul. En revanche, si vous remarquez que l'utilisation est trop élevée et que vos latences augmentent plus que prévu sous la charge, diminuez le nombre de nœuds de calcul. Si vous n'utilisez qu'un seul nœud de calcul, utilisez un type de machine plus petit.
Comportement et délai du scaling
Vertex AI ajuste le nombre d'instances dupliquées toutes les 15 secondes à l'aide des données de la fenêtre des 5 minutes précédentes. Pour chaque cycle de 15 secondes, le système mesure l'utilisation du serveur et génère un nombre cible d'instances dupliquées selon la formule suivante :
target # of replicas = Ceil(current # of replicas * (current utilization / target utilization))
Par exemple, si deux instances répliquées sont actuellement utilisées à 100 %, la cible est de 4 :
4 = Ceil(3.33) = Ceil(2 * (100% / 60%))
Autre exemple, si vous avez actuellement 10 instances répliquées et que l'utilisation chute à 1 %, la cible est de 1 :
1 = Ceil(.167) = Ceil(10 * (1% / 60%))
À la fin de chaque cycle de 15 secondes, le système ajuste le nombre d'instances dupliquées afin qu'elles correspondent à la valeur cible la plus élevée de la fenêtre des 5 minutes précédentes. Notez que comme la valeur choisie est la valeur cible la plus élevée, votre point de terminaison n'effectue pas de scaling à la baisse en cas de pic d'utilisation pendant cet intervalle de 5 minutes, même si l'utilisation globale est très faible. En revanche, si le système doit faire l'objet d'un scaling à la hausse, il le fera dans les 15 secondes, car la valeur cible la plus élevée est choisie plutôt que la moyenne.
Gardez à l'esprit que même après que Vertex AI ajuste le nombre d'instances dupliquées, le démarrage ou la désactivation des instances dupliquées prend un certain temps. Ainsi, il existe un délai supplémentaire avant que le point de terminaison puisse s'adapter au trafic. Les principaux facteurs qui contribuent à ce délai sont les suivants :
- Temps de provisionnement et de démarrage des VM Compute Engine
- Heure du téléchargement du conteneur à partir du registre
- Temps de chargement du modèle depuis l'espace de stockage
La meilleure façon de comprendre le comportement de scaling réel de votre modèle consiste à exécuter un test de charge et à optimiser les caractéristiques importantes pour votre modèle et votre cas d'utilisation. Si l'autoscaler n'effectue pas un scaling assez rapide pour votre application, provisionnez suffisamment de min_replicas
pour gérer le trafic de référence attendu.
Mettre à jour la configuration du scaling
Si vous avez spécifié une valeur pour DedicatedResources
ou AutomaticResources
lorsque vous avez déployé le modèle, vous pouvez mettre à jour la configuration du scaling sans redéployer le modèle en appelant mutateDeployedModel
.
Par exemple, la requête suivante met à jour max_replica
et autoscaling_metric_specs
, et désactive la journalisation des conteneurs.
{
"deployedModel": {
"id": "2464520679043629056",
"dedicatedResources": {
"maxReplicaCount": 9,
"autoscalingMetricSpecs": [
{
"metricName": "aiplatform.googleapis.com/prediction/online/cpu/utilization",
"target": 50
}
]
},
"disableContainerLogging": true
},
"update_mask": {
"paths": [
"dedicated_resources.max_replica_count",
"dedicated_resources.autoscaling_metric_specs",
"disable_container_logging"
]
}
}
Consignes d'utilisation :
- Vous ne pouvez pas modifier le type de machine ni passer de
DedicatedResources
àAutomaticResources
, ou inversement. Les seuls champs de configuration de scaling que vous pouvez modifier sont :min_replica
,max_replica
etAutoscalingMetricSpec
(DedicatedResources
uniquement). - Vous devez répertorier tous les champs que vous souhaitez mettre à jour dans
updateMask
. Les champs non répertoriés sont ignorés. - L'état DeployedModel doit être à l'état
DEPLOYED
. Il peut y avoir au plus une opération de mutation active par modèle déployé. mutateDeployedModel
vous permet également d'activer ou de désactiver la journalisation des conteneurs. Pour en savoir plus, consultez la section Journalisation des prédictions en ligne.
Étapes suivantes
- Découvrez comment obtenir une prédiction en ligne.
- Obtenez des informations sur les points de terminaison privés.