Utilisation des déploiements propagés
Lorsque vous mettez à jour votre point de terminaison, vous pouvez spécifier un déploiement propagé afin de déplacer progressivement le trafic de votre ancienne flotte vers une nouvelle flotte. Vous pouvez contrôler la taille des étapes de déplacement du trafic, ainsi que définir une période d'évaluation pour surveiller les nouvelles instances afin de détecter les problèmes avant de résilier les instances de l'ancienne flotte. Avec les déploiements propagés, les instances de l'ancienne flotte sont nettoyées après chaque déplacement de trafic vers la nouvelle flotte, ce qui réduit le nombre d'instances supplémentaires nécessaires pour mettre à jour votre point de terminaison. Cela est particulièrement utile pour les instances accélérées très demandées.
Les déploiements propagés remplacent progressivement le déploiement précédent de la version de votre modèle par la nouvelle version en mettant à jour votre point de terminaison dans des tailles de lots configurables. Le comportement de déplacement du trafic des déploiements progressifs est similaire au mode de déplacement de trafic linéaire des déploiements bleus/verts, mais les déploiements propagés vous permettent de réduire les besoins en capacité par rapport aux déploiements bleus/verts. Grâce aux déploiements propagés, moins d'instances sont actives à la fois et vous pouvez contrôler de manière plus précise le nombre d'instances que vous souhaitez mettre à jour dans la nouvelle flotte. Vous devriez envisager d'utiliser un déploiement propagé plutôt qu'un déploiement bleu/vert si vous avez de grands modèles ou un point de terminaison volumineux comportant de nombreuses instances.
La liste suivante décrit les principales caractéristiques des déploiements propagés dans Amazon SageMaker AI :
-
Période de préparation.La période de préparation est une durée définie pour contrôler la nouvelle flotte avant de passer à la phase de déploiement suivante. Si l'une des alarmes prédéfinies se déclenche au cours d'une période de préparation, tout le trafic des points de terminaison est restauré sur l'ancienne flotte. La période de préparation vous aide à renforcer la confiance dans votre mise à jour avant de rendre le déplacement de trafic permanent.
-
Taille du lot propagé. Vous pouvez contrôler de manière précise la taille de chaque lot pour le déplacement du trafic, ou le nombre d'instances que vous souhaitez mettre à jour dans chaque lot. Ce nombre peut varier de 5 à 50 % de la taille de votre flotte. Vous pouvez spécifier la taille du lot sous forme de nombre d'instances ou de pourcentage global de votre flotte.
-
Restaurations automatiques.Vous pouvez spécifier des alarmes Amazon CloudWatch que SageMaker AI utilise pour surveiller la nouvelle flotte. Si un problème lié au code mis à jour déclenche l’une des alarmes, SageMaker AI lance une restauration automatique de l’ancienne flotte afin de maintenir la disponibilité, minimisant ainsi les risques.
Note
Si votre point de terminaison utilise l'une des fonctionnalités répertoriées sur la page Exclusions, vous ne pouvez pas utiliser de déploiement propagé.
Comment ça marche
Lors d’un déploiement propagé, SageMaker AI fournit l’infrastructure nécessaire pour déplacer le trafic de l’ancienne flotte vers la nouvelle flotte sans avoir à provisionner toutes les nouvelles instances en une seule fois. SageMaker AI suit les étapes suivantes pour déplacer le trafic :
-
SageMaker AI provisionne le premier lot d’instances de la nouvelle flotte.
-
Une partie du trafic est transférée des anciennes instances vers le premier lot de nouvelles instances.
-
Après la période de préparation, si aucune alarme Amazon CloudWatch n’est déclenchée, SageMaker AI nettoie un lot d’anciennes instances.
-
SageMaker AI continue de provisionner, de déplacer et de nettoyer les instances par lots jusqu’à ce que le déploiement soit terminé.
Si une alarme se déclenche pendant l'une des périodes de préparation, le trafic est restauré vers l'ancienne flotte dans des lots d'une taille que vous spécifiez. Vous pouvez également spécifier le déploiement propagé pour rediriger 100 % du trafic vers l'ancienne flotte si une alarme se déclenche.
Le schéma suivant montre la progression d'un déploiement propagé réussi, comme décrit dans les étapes précédentes.
Pour créer un déploiement propagé, il vous suffit de spécifier la configuration de déploiement souhaitée. SageMaker AI gère ensuite le provisionnement des nouvelles instances, en résiliant les anciennes et en déplaçant le trafic pour vous. Vous pouvez créer et gérer votre déploiement via les commandes AWS Command Line Interface et d'API UpdateEndpoint et CreateEndpoint SageMaker existantes.
Prérequis
Avant de configurer un déploiement propagé, vous devez créer des alarmes Amazon CloudWatch pour contrôler les métriques à partir de votre point de terminaison. Si l'une des alarmes se déclenche pendant la période de préparation, le trafic commence alors à se restaurer sur votre ancienne flotte. Pour découvrir comment configurer des alarmes CloudWatch sur un point de terminaison, consultez la page des conditions préalables Configuration et surveillance de la restauration automatique. Pour en savoir plus sur les alarmes CloudWatch, consultez Utilisation des alarmes Amazon CloudWatch dans le Guide de l’utilisateur Amazon CloudWatch.
Consultez également la page Exclusions pour vous assurer que votre point de terminaison répond aux exigences d'un déploiement propagé.
Détermination de la taille du lot propagé
Avant de mettre à jour votre point de terminaison, déterminez la taille du lot que vous souhaitez utiliser pour transférer progressivement le trafic vers la nouvelle flotte.
Pour les déploiements propagés, vous pouvez spécifier une taille de lot comprise entre 5 et 50 % de la capacité de votre flotte. Si vous choisissez un lot de grande taille, le déploiement s'effectue plus rapidement. Cependant, gardez à l'esprit que le point de terminaison a besoin de plus de capacité lors de la mise à jour, ce qui correspond à peu près à la surcharge de la taille du lot. Si vous choisissez une taille de lot plus petite, le déploiement prend plus de temps, mais vous utilisez moins de capacité pendant le déploiement.
Configuration d'un déploiement propagé
Une fois que vous êtes prêt et que vous avez configuré les alarmes CloudWatch pour votre point de terminaison, vous pouvez utiliser l’API UpdateEndpoint SageMaker AI ou la commande update-endpoint dans l’AWS Command Line Interface pour lancer le déploiement.
Comment mettre à jour un point de terminaison
L’exemple suivant montre comment vous pouvez mettre à jour le point de terminaison à l’aide de la méthode update_endpoint
Pour configurer un déploiement propagé, utilisez l'exemple et les champs suivants :
-
Pour
EndpointName, utilisez le nom du point de terminaison existant que vous souhaitez mettre à jour. -
Pour
EndpointConfigName, utilisez le nom de la configuration de point de terminaison que vous souhaitez utiliser. -
Dans l'objet
AutoRollbackConfiguration, dans le champAlarms, vous pouvez ajouter vos alarmes CloudWatch par nom. Créez unAlarmName: <your-cw-alarm>pour chaque alarme que vous souhaitez utiliser. -
Sous
DeploymentConfig, pour l'objetRollingUpdatePolicy, spécifiez les champs suivants :-
MaximumExecutionTimeoutInSeconds: la limite de temps pour le déploiement total. Le dépassement de cette limite entraîne un délai d'attente. La valeur maximale que vous pouvez spécifier pour ce champ est de 28 800 secondes, soit 8 heures. -
WaitIntervalInSeconds: la durée de la période de préparation, pendant laquelle SageMaker AI surveille les alarmes pour chaque lot de la nouvelle flotte. -
MaximumBatchSize: spécifiez leTypede lot que vous souhaitez utiliser (le nombre d'instances ou le pourcentage global de votre flotte) et laValue, ou la taille de chaque lot. -
RollbackMaximumBatchSize: utilisez cet objet pour spécifier la stratégie de restauration en cas de déclenchement d'une alarme. Spécifiez leTypede lot que vous souhaitez utiliser (le nombre d'instances ou le pourcentage global de votre flotte) et laValue, ou la taille de chaque lot. Si vous ne spécifiez pas ces champs, ou si vous définissez la valeur sur 100 % de votre point de terminaison, SageMaker AI utilise une stratégie de restauration bleu/vert et ramène tout le trafic vers l’ancienne flotte lorsqu’une alarme se déclenche.
-
import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" }, ] }, "RollingUpdatePolicy": { "MaximumExecutionTimeoutInSeconds": number, "WaitIntervalInSeconds": number, "MaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, "RollbackMaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, } } )
Après avoir mis à jour votre point de terminaison, vous souhaiterez peut-être vérifier le statut de votre déploiement propagé et vérifier son état. Vous pouvez consulter l’état du point de terminaison dans la console SageMaker AI ou à l’aide de l’API DescribeEndpoint.
Dans l'objet VariantStatus renvoyé par l'API DescribeEndpoint, le champ Status vous indique le déploiement actuel ou le statut opérationnel de votre point de terminaison. Pour plus d'informations sur les statuts possibles et leur signification, consultez ProductionVariantStatus.
Si vous avez tenté d'effectuer un déploiement propagé et que le statut de votre point de terminaison est UpdateRollbackFailed, consultez la section suivante pour obtenir de l'aide avec le dépannage.
Gestion des défaillances
Si vos déploiements propagés échouent et que la restauration automatique échoue également, votre point de terminaison peut se retrouver avec un statut UpdateRollbackFailed. Ce statut signifie que différentes configurations de point de terminaison sont déployées sur les instances situées derrière votre point de terminaison et que celui-ci fonctionne avec un mélange d'anciennes et de nouvelles configurations de point de terminaison.
Vous pouvez effectuer un autre appel à l'API UpdateEndpoint pour rétablir l'état de santé de votre point de terminaison. Spécifiez la configuration de point de terminaison et la configuration de déploiement souhaitées (déploiement propagé, déploiement bleu/vert, ou aucun des deux) pour mettre à jour votre point de terminaison.
Vous pouvez appeler l'API DescribeEndpoint pour vérifier à nouveau l'état de votre point de terminaison, qui est renvoyé dans l'objet VariantStatus sous forme de champ Status. Si votre mise à jour est réussie, le Status de votre point de terminaison revient à InService.