Utilisez des déploiements progressifs - Amazon SageMaker AI

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.

Utilisez des déploiements progressifs

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 transfert du trafic des déploiements progressifs est similaire au mode de transfert linéaire du trafic lors du blue/green deployments, but rolling deployments provide you with the benefit of reduced capacity requirements when compared to blue/green deployments. With rolling deployments, fewer instances are active at a time, and you have more granular control over how many instances you want to update in the new fleet. You should consider using a rolling deployment instead of a blue/green déploiement si vous avez de grands modèles ou un point de terminaison de grande taille comportant de nombreuses instances.

La liste suivante décrit les principales fonctionnalités des déploiements progressifs 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 les CloudWatch alarmes Amazon que l' SageMaker IA utilise pour surveiller le nouveau parc. Si un problème lié au code mis à jour déclenche l'une des alarmes, l' SageMaker IA initie un retour automatique à 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 continu, l' SageMaker IA 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 L'IA utilise les étapes suivantes pour transférer le trafic :

  1. SageMaker AI 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, l' SageMaker IA nettoie un lot d'anciennes instances.

  4. SageMaker L'IA 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 L'IA 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 par le biais de l'CreateEndpoint SageMaker API UpdateEndpointet des AWS Command Line Interface commandes 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 l'UpdateEndpointAPI SageMaker AI ou la commande update-endpoint 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 SageMaker Boto3 AI.

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 l' SageMaker IA surveille les alarmes 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, l' SageMaker IA utilise une stratégie de réduction bleu/vert et ramène 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 console SageMaker AI, ou vous pouvez consulter l'état de votre point de terminaison à l'aide de l'DescribeEndpointAPI.

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'UpdateEndpointAPI pour rétablir l'état de santé 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 l'DescribeEndpointAPI pour 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.