Déploiements propagés - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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 fonctionnalités des déploiements progressifs sur Amazon SageMaker :

  • 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 les CloudWatch alarmes Amazon SageMaker à utiliser pour surveiller le nouveau parc. Si un problème lié au code mis à jour déclenche l'une des alarmes, SageMaker déclenche un retour automatique à l'ancien parc 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

Au cours d'un déploiement continu, SageMaker fournit l'infrastructure nécessaire pour transférer le trafic de l'ancienne flotte vers la nouvelle flotte sans avoir à fournir toutes les nouvelles instances en même temps. SageMaker utilise les étapes suivantes pour transférer le trafic :

  1. SageMaker approvisionne le premier lot d'instances de la nouvelle flotte.

  2. Une partie du trafic est transférée des anciennes instances vers le premier lot de nouvelles instances.

  3. Après la période de cuisson, si aucune CloudWatch alarme Amazon n'est déclenchée, un lot d'anciennes instances est SageMaker nettoyé.

  4. SageMaker 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.

Les étapes d'un déploiement continu permettent de transférer avec succès le trafic de l'ancienne flotte à la nouvelle.

Pour créer un déploiement propagé, il vous suffit de spécifier la configuration de déploiement souhaitée. SageMaker Gère ensuite le provisionnement de nouvelles instances, la résiliation des anciennes instances et le transfert du trafic pour vous. Vous pouvez créer et gérer votre déploiement à l'aide des AWS Command Line Interface commandes UpdateEndpointet CreateEndpoint SageMaker APIet existantes.

Prérequis

Avant de configurer un déploiement continu, vous devez créer des CloudWatch alarmes Amazon pour surveiller les métriques depuis votre terminal. 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 savoir comment configurer des CloudWatch alarmes sur un terminal, consultez la page des conditions préalables : Configuration et surveillance de la restauration automatique. Pour en savoir plus sur les CloudWatch alarmes, consultez la section Utilisation des CloudWatch alarmes Amazon dans le guide de CloudWatch l'utilisateur Amazon.

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 pour votre déploiement et que vous avez configuré des CloudWatch alarmes pour votre terminal, vous pouvez utiliser la SageMaker UpdateEndpointAPIcommande update-endpoint contenue dans le 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 votre point de terminaison avec un déploiement continu à l'aide de la méthode update_endpoint du client Boto3. SageMaker

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'AutoRollbackConfigurationobjet, dans le Alarms champ, vous pouvez ajouter vos CloudWatch alarmes par leur nom. Créez un AlarmName: <your-cw-alarm> pour chaque alarme que vous souhaitez utiliser.

  • Sous DeploymentConfig, pour l'objet RollingUpdatePolicy, 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 cuisson, pendant laquelle SageMaker les alarmes de surveillance sont signalées pour chaque lot du nouveau parc.

    • MaximumBatchSize : spécifiez le Type de lot que vous souhaitez utiliser (le nombre d'instances ou le pourcentage global de votre flotte) et la Value, 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 le Type de lot que vous souhaitez utiliser (le nombre d'instances ou le pourcentage global de votre flotte) et la Value, 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 terminal, utilisez une SageMaker stratégie de réduction bleu/vert et redirige tout le trafic vers l'ancien parc 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 de votre point de terminaison dans la SageMaker console, ou vous pouvez consulter l'état de votre point de terminaison à l'aide du DescribeEndpointAPI.

Dans l'VariantStatusobjet renvoyé par le DescribeEndpointAPI, le Status champ vous indique le déploiement actuel ou l'état opérationnel de votre point de terminaison. Pour plus d'informations sur les statuts possibles et leur signification, voir 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 passer un autre appel au UpdateEndpointAPIpour rétablir le bon état de fonctionnement de votre terminal. 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 le DescribeEndpointAPIpour vérifier à nouveau l'état de votre point de terminaison, qui est renvoyé dans l'VariantStatusobjet sous forme de Status champ. Si votre mise à jour est réussie, le Status de votre point de terminaison revient à InService.