View a markdown version of this page

Localisez les instances sur Amazon SageMaker HyperPod - 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.

Localisez les instances sur Amazon SageMaker HyperPod

Amazon SageMaker HyperPod prend en charge les instances Spot Amazon EC2, ce qui permet de réaliser d'importantes économies pour les charges de travail tolérantes aux pannes et sans état. AI/ML Les cas d'utilisation incluent l'inférence par lots et les tâches de formation, le réglage des hyperparamètres et les charges de travail expérimentales. Vous pouvez également utiliser les instances ponctuelles pour adapter automatiquement votre capacité de calcul lorsque cette capacité à faible coût est disponible et revenir à la On-Demand capacité lorsque la capacité ponctuelle ajoutée est récupérée.

Par défaut, la fonctionnalité de provisionnement continu HyperPod de Spot Instances on HyperPod work with permet de SageMaker HyperPod provisionner automatiquement la capacité restante en arrière-plan pendant que les charges de travail démarrent immédiatement sur les instances disponibles. Lorsque le provisionnement des nœuds rencontre des échecs en raison de contraintes de capacité ou d'autres problèmes, il réessaie SageMaker HyperPod automatiquement en arrière-plan jusqu'à ce que les clusters atteignent l'échelle souhaitée, afin que vos opérations de dimensionnement automatique restent résilientes et non bloquantes. Vous pouvez également utiliser les instances Spot avec mise à Karpenter-based l'échelle automatique.

Capacités et concepts clés à prendre en compte

  • Réalisez jusqu'à 90 % d'économies par rapport aux On-Demand instances

  • Utilisez les instances ponctuelles pour les tâches qui peuvent gérer les interruptions et pour lesquelles les heures de début et de fin des tâches sont flexibles

  • Lorsque vous utilisez Karpenter pour la mise à l'échelle automatique, vous pouvez le configurer HyperPod pour revenir automatiquement en On-Demand cas d'interruption ou d'indisponibilité de la capacité Spot

  • Accédez à un large éventail de types d'instances de processeurs, de GPU et d'accélérateurs pris en charge par HyperPod

  • La disponibilité de la capacité dépend de l'approvisionnement d'EC2 et varie selon la région et le type d'instance

  • Vous pouvez effectuer diverses actions, telles que l'identification de la probabilité d'obtenir les instances souhaitées ou d'être interrompu, à l'aide de divers outils tels que Spot Instance Advisor fourni par EC2

Prise en main

Conditions préalables

Avant de commencer, assurez-vous de disposer des éléments suivants :

AWS CLI installé et configuré

Configurez vos AWS informations d'identification et votre région :

aws configure

Reportez-vous à la documentation relative aux AWS informations d'identification pour obtenir des instructions détaillées.

Rôle IAM pour l'exécution SageMaker HyperPod

Pour mettre à jour le cluster, vous devez d'abord créer des autorisations de gestion des AWS identités et des accès (IAM) pour Karpenter. Pour obtenir des instructions, voir Création d'un rôle IAM pour la mise à HyperPod l'échelle automatique avec Karpenter.

Configuration du VPC et du cluster EKS

2.1 Création d'un VPC et d'un cluster EKS

Suivez le guide de configuration HyperPod EKS pour :

  1. Créez un VPC avec des sous-réseaux dans plusieurs zones de disponibilité

  2. Création d'un cluster EKS

  3. Installer les dépendances requises à l'aide des graphiques Helm

2.2 Définir les variables d'environnement

export EKS_CLUSTER_ARN="arn:aws:eks:REGION:ACCOUNT_ID:cluster/CLUSTER_NAME" export EXECUTION_ROLE="arn:aws:iam::ACCOUNT_ID:role/SageMakerExecutionRole" export BUCKET_NAME="your-s3-bucket-name" export SECURITY_GROUP="sg-xxxxx" export SUBNET="subnet-xxxxx" export SUBNET1="subnet-xxxxx" export SUBNET2="subnet-xxxxx" export SUBNET3="subnet-xxxxx"

Quotas de service pour les instances Spot

Vérifiez que vous disposez des quotas requis pour les instances que vous allez créer dans le SageMaker HyperPod cluster. Pour consulter vos quotas, sur la console Service Quotas, choisissez les AWS services dans le volet de navigation, puis choisissez SageMaker. Par exemple, la capture d'écran suivante montre le quota disponible pour les instances c5.

Image contenant des informations sur les régions de coûts.

Vérifiez la disponibilité des places

Avant de créer des groupes d'instances Spot, vérifiez la disponibilité dans les différentes zones de disponibilité :

aws ec2 get-spot-placement-scores \ --region us-west-2 \ --instance-types c5.2xlarge \ --target-capacity 10 \ --single-availability-zone \ --region-names us-west-2

Conseil  : ciblez les zones de disponibilité présentant des scores de placement plus élevés pour une meilleure disponibilité. Vous pouvez également consulter les tarifs de Spot Instance Advisor et EC2 Spot pour connaître la disponibilité. Sélectionnez la zone de disponibilité requise avec un meilleur score de disponibilité et configurez le groupe d'instances avec le sous-réseau associé pour lancer l'instance dans cette zone de disponibilité.

Création d'un groupe d'instances (pas de mise à l'échelle automatique)

CreateCluster (Lieu)

aws sagemaker create-cluster \ --cluster-name clusterNameHere \ --orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \ --node-provisioning-mode "Continuous" \ --cluster-role 'arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole' \ --instance-groups '[{ "InstanceGroupName": "auto-spot-c5-2x-az1", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 2, "CapacityRequirements: { "Spot": {} } "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET1'"] } }]' --vpc-config '{ "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET'"] }'

Mettre à jour le cluster (Spot + On-Demand)

aws sagemaker update-cluster \ --cluster-name "my-cluster" \ --instance-groups '[{ "InstanceGroupName": "auto-spot-c5-x-az3", "InstanceType": "ml.c5.xlarge", "InstanceCount": 2, "CapacityRequirements: { "Spot": {} }, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET3'"] } }, { "InstanceGroupName": "auto-spot-c5-2x-az2", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 2, "CapacityRequirements: { "Spot": {} } "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET2'"] } }, { "InstanceGroupName": "auto-ondemand-c5-2x-az1", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 2, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET1'"] } }]'

CapacityRequirementsne peut pas être modifié une fois qu'un groupe d'instances est créé.

Décrire le cluster

aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --region us-west-2
## Sample Response { "ClusterName": "my-cluster", "InstanceGroups": [ { "InstanceGroupName": "ml.c5.2xlarge", "InstanceType": "ml.c5.xlarge", "InstanceCount": 5, "CurrentCount": 3, "CapacityRequirements: { "Spot": {} }, "ExecutionRole": "arn:aws:iam::account:role/SageMakerExecutionRole", "InstanceStorageConfigs": [...], "OverrideVpcConfig": {...} } // Other IGs ] }

DescribeClusterNode

aws sagemaker describe-cluster-node --cluster-name $HP_CLUSTER_NAME --region us-west-2
## Sample Response { "NodeDetails": { "InstanceId": "i-1234567890abcdef1", "InstanceGroupName": "ml.c5.2xlarge", "CapacityType": "Spot", "InstanceStatus": {...} } }

Utilisation de la console

Création et configuration d'un SageMaker HyperPod cluster

Pour commencer, lancez et configurez votre cluster SageMaker HyperPod EKS et vérifiez que le mode de provisionnement continu est activé lors de la création du cluster. Procédez comme suit :

  1. Sur la console SageMaker AI, choisissez HyperPod des clusters dans le volet de navigation.

  2. Choisissez Créer un HyperPod cluster et orchestrer sur Amazon EKS.

  3. Pour les options de configuration, sélectionnez Configuration personnalisée.

  4. Pour Nom, entrez un nom.

  5. Pour Restauration d'instance, sélectionnez Automatique.

  6. Pour le mode de provisionnement d'instance, sélectionnez Utiliser le provisionnement continu.

  7. CapacityType : Sélectionnez un endroit

  8. Sélectionnez Soumettre.

Capture d'écran de la console :

Une image contenant le flux du cluster de création.

Cette configuration crée la configuration nécessaire, telle qu'un cloud privé virtuel (VPC), des sous-réseaux, des groupes de sécurité et un cluster EKS, et installe des opérateurs dans le cluster. Vous pouvez également fournir des ressources existantes telles qu'un cluster EKS si vous souhaitez utiliser un cluster existant au lieu d'en créer un nouveau. Cette configuration prendra environ 20 minutes.

Ajouter un nouveau groupe d'instances Spot au même cluster

Pour ajouter un Spot IG à votre cluster HyperPod EKS existant. Procédez comme suit :

  1. Sur la console SageMaker AI, choisissez HyperPod des clusters dans le volet de navigation.

  2. Sélectionnez un HyperPod cluster existant avec Amazon EKS Orchestration (assurez-vous que le provisionnement continu est activé).

  3. Cliquez sur Modifier.

  4. Sur la page Modifier le cluster, cliquez sur Créer un groupe d'instances.

  5. Sélectionnez le type de capacité : Localisez l'instance dans la configuration du groupe d'instances.

  6. Cliquez sur Créer un groupe d'instances.

  7. Cliquez sur Soumettre.

Capture d'écran de la console :

Image contenant le flux de création du groupe d'instances.

Utilisation CloudFormation

Resources: TestCluster: Type: AWS::SageMaker::Cluster Properties: ClusterName: "SampleCluster" InstanceGroups: - InstanceGroupName: group1 InstanceType: ml.c5.2xlarge InstanceCount: 1 LifeCycleConfig: SourceS3Uri: "s3://'$BUCKET_NAME'" OnCreate: "on_create_noop.sh" ExecutionRole: "'$EXECUTION_ROLE'", ThreadsPerCore: 1 CapacityRequirements: Spot: {} VpcConfig: Subnets: - "'$SUBNET1'" SecurityGroupIds: - "'$SECURITY_GROUP'" Orchestrator: Eks: ClusterArn: '$EKS_CLUSTER_ARN' NodeProvisioningMode: "Continuous" NodeRecovery: "Automatic"

Veuillez consulter https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-eks-console-create-cluster-cfn.html pour plus de détails.

Autoscaling basé sur Karpenter

Créer un rôle de cluster

Étape 1 : Accédez à la console IAM

  1. Accédez au Console de gestion AWS → service IAM

  2. Cliquez sur Rôles dans la barre latérale gauche

  3. Cliquez sur Créer un rôle

Étape 2 : Configuration de la politique de confiance

  1. Sélectionnez Politique de confiance personnalisée (au lieu de AWS service)

  2. Remplacez le JSON par défaut par cette politique de confiance :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "hyperpod.sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

cliquez sur Suivant

Étape 3 : Création d'une politique d'autorisations personnalisée

Comme il s'agit SageMaker d'autorisations spécifiques, vous devez créer une politique personnalisée :

  1. Cliquez sur Créer une politique (ouvre un nouvel onglet)

  2. Cliquez sur l'onglet JSON

  3. Entrez cette politique :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:BatchAddClusterNodes", "sagemaker:BatchDeleteClusterNodes" ], "Resource": "*" } ] }
  4. Cliquez sur Suivant

  5. Donnez-lui un nom comme SageMakerHyperPodRolePolicy

  6. Cliquez sur Créer une politique

Étape 4 : Associer la politique au rôle

  1. Retournez à l'onglet de création de votre rôle

  2. Actualiser la liste des politiques

  3. Recherchez et sélectionnez la politique que vous venez de créer

  4. Cliquez sur Suivant

Étape 5 : Nommer et créer un rôle

  1. Entrez un nom de rôle (par exemple,SageMakerHyperPodRole)

  2. Ajoutez une description si vous le souhaitez

  3. Passez en revue la politique de confiance et les autorisations

  4. Cliquez sur Créer un rôle

Vérification

Après la création, vous pouvez vérifier en :

  • La vérification de l'onglet Relations de confiance affiche le service Hyperpod

  • La vérification de l'onglet Autorisations affiche votre politique personnalisée

  • Le rôle ARN sera disponible pour être utilisé avec HyperPod

Le format ARN des rôles sera le suivant :

arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole

Créez un cluster avec AutoScaling :

Pour une meilleure disponibilité, créez des IG dans plusieurs zones de zone de disponibilité en configurant des sous-réseaux. Vous pouvez également inclure des IG à la demande comme solution de secours.

aws sagemaker create-cluster \ --cluster-name clusterNameHere \ --orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \ --node-provisioning-mode "Continuous" \ --cluster-role 'arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole' \ --instance-groups '[{ "InstanceGroupName": "auto-spot-c5-2x-az1", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 0, // For Auto scaling keep instance count as 0 "CapacityRequirements: { "Spot": {} } "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET1'"] } }]' --vpc-config '{ "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET'"] }' --auto-scaling ' { "Mode": "Enable", "AutoScalerType": "Karpenter" }'

Mettre à jour le cluster (Spot + On-Demand)

aws sagemaker update-cluster \ --cluster-name "my-cluster" \ --instance-groups '[{ "InstanceGroupName": "auto-spot-c5-x-az3", "InstanceType": "ml.c5.xlarge", "InstanceCount": 2, "CapacityRequirements: { "Spot": {} }, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET3'"] } }, { "InstanceGroupName": "auto-spot-c5-2x-az2", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 2, "CapacityRequirements: { "Spot": {} } "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET2'"] } }, { "InstanceGroupName": "auto-ondemand-c5-2x-az1", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 2, "LifeCycleConfig": { "SourceS3Uri": "s3://'$BUCKET_NAME'", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "'$EXECUTION_ROLE'", "ThreadsPerCore": 1, "OverrideVpcConfig": { "SecurityGroupIds": ["'$SECURITY_GROUP'"], "Subnets": ["'$SUBNET1'"] } }]'

Créez HyperpodNodeClass

HyperpodNodeClassest une ressource personnalisée qui correspond à des groupes d'instances précréés dans SageMaker HyperPod, définissant les contraintes relatives aux types d'instances et aux zones de disponibilité pris en charge pour les décisions de dimensionnement automatique de Karpenter. Pour l'utiliserHyperpodNodeClass, il vous suffit de spécifier les noms InstanceGroups de votre SageMaker HyperPod cluster que vous souhaitez utiliser comme source pour les ressources de AWS calcul à utiliser pour faire évoluer vos pods dans votre NodePools. Le HyperpodNodeClass nom que vous utilisez ici est transféré NodePool dans la section suivante où vous le référencez. Cela indique de NodePool qui vous HyperpodNodeClass devez puiser les ressources. Pour créer unHyperpodNodeClass, procédez comme suit :

  1. Créez un fichier YAML (par exemple, nodeclass.yaml) similaire au code suivant. Ajoutez InstanceGroup les noms que vous avez utilisés lors de la création du SageMaker HyperPod cluster. Vous pouvez également ajouter de nouveaux groupes d'instances à un cluster SageMaker HyperPod EKS existant.

  2. Faites référence au HyperPodNodeClass nom dans votre NodePool configuration.

Voici un exemple HyperpodNodeClass :

apiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: name: multiazg6 spec: instanceGroups: # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created # before this step can be completed. # MaxItems: 10 - auto-spot-c5-2x-az1 - auto-spot-c5-2x-az2 - auto-spot-c5-x-az3 - auto-ondemand-c5-2x-az1

Karpenter donne la priorité aux groupes d'instances Spot par rapport aux On-Demand instances, en les utilisant On-Demand comme solution de repli lorsque cela est spécifié dans la configuration. La sélection des instances est triée en fonction des scores de placement EC2 Spot associés à la zone de disponibilité de chaque sous-réseau.

Appliquez la configuration à votre cluster EKS en utilisant kubectl :

kubectl apply -f nodeclass.yaml

Le HyperPod cluster doit être AutoScaling activé et AutoScaling son état doit passer à InService avant de HyperpodNodeClass pouvoir être appliqué. Il affiche également les capacités des groupes d'instances sous la forme Spot ou OnDemand. Pour plus d'informations et des considérations clés, consultez Autoscaling sur SageMaker HyperPod EKS.

Par exemple

apiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: creationTimestamp: "2025-11-30T03:25:04Z" name: multiazc6 uid: ef5609be-15dd-4700-89ea-a3370e023690 spec: instanceGroups: -spot1 status: conditions: // true when all IGs in the spec are present in SageMaker cluster, false otherwise - lastTransitionTime: "2025-11-20T03:25:04Z" message: "" observedGeneration: 3 reason: InstanceGroupReady status: "True" type: InstanceGroupReady // true if subnets of IGs are discoverable, false otherwise - lastTransitionTime: "2025-11-20T03:25:04Z" message: "" observedGeneration: 3 reason: SubnetsReady status: "True" type: SubnetsReady // true when all dependent resources are Ready [InstanceGroup, Subnets] - lastTransitionTime: "2025-11-30T05:47:55Z" message: "" observedGeneration: 3 reason: Ready status: "True" type: Ready instanceGroups: - instanceTypes: - ml.c5.2xlarge name:auto-spot-c5-2x-az2 subnets: - id: subnet-03ecc649db2ff20d2 zone: us-west-2a zoneId: usw2-az2 - capacities: {"Spot": {}}

Créez NodePool

Il NodePool définit des contraintes sur les nœuds qui peuvent être créés par Karpenter et sur les pods qui peuvent s'exécuter sur ces nœuds. Il NodePool peut être configuré pour effectuer diverses actions, telles que :

  • Définissez des étiquettes et des couleurs pour limiter les pods qui peuvent s'exécuter sur les nœuds créés par Karpenter

  • Limitez la création de nœuds à certaines zones, types d'instances et architectures informatiques, etc.

Pour plus d'informations sur NodePool, reportez-vous à NodePools. SageMaker HyperPod managed Karpenter prend en charge un ensemble limité d'exigences bien connues de Kubernetes et Karpenter, que nous expliquons dans cet article.

Pour créer un NodePool, procédez comme suit :

Créez un fichier YAML nommé nodepool.yaml avec la NodePool configuration souhaitée. Le code suivant est un exemple de configuration permettant de créer un exemple NodePool. Nous spécifions NodePool pour inclure notre type d' SageMaker instance ml.g6.xlarge, et nous le spécifions également pour une zone. Reportez-vous à NodePools pour plus de personnalisations.

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpunodepool spec: template: spec: nodeClassRef: group: karpenter.sagemaker.amazonaws.com kind: HyperpodNodeClass name: multiazg6 expireAfter: Never requirements: - key: node.kubernetes.io/instance-type operator: Exists - key: "node.kubernetes.io/instance-type" // Optional otherwise Karpenter will decide based on Job config resource requirements operator: In values: ["ml.c5.2xlarge"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a"]

Conseil  : En cas d'interruption d'EC2 Spot, Hyperpod contamine le nœud pour déclencher l'expulsion du pod. Le processus de consolidation de Karpenter respecte les budgets de perturbation des pods et effectue une expulsion normale de Kubernetes, mais si vous définissez ConsolidateAfter : 0, la consolidation peut avoir lieu immédiatement, ce qui ne laisse que très peu de temps pour une expulsion progressive des pods. Réglez-le sur une valeur non nulle jusqu'à 2 minutes pour permettre l'expulsion gracieuse des capsules pour tous les besoins en matière de points de contrôle.

Appliquez le NodePool à votre cluster :

kubectl apply -f nodepool.yaml

Surveillez l' NodePool état pour vous assurer que la condition Prêt dans le statut est définie sur True :

kubectl get nodepool gpunodepool -oyaml

Cet exemple montre comment NodePool utiliser a pour spécifier le matériel (type d'instance) et l'emplacement (zone de disponibilité) des pods.

Lancez une charge de travail simple

La charge de travail suivante exécute un déploiement Kubernetes dans lequel les modules en cours de déploiement demandent 1 processeur et 256 Mo de mémoire par réplique et par espace. Les cosses n'ont pas encore été filées.

kubectl apply -f https://raw.githubusercontent.com/aws/karpenter-provider-aws/refs/heads/main/examples/workloads/inflate.yaml

Lorsque nous appliquons cela, nous pouvons voir un déploiement et le lancement d'un nœud unique dans notre cluster, comme indiqué dans la capture d'écran suivante.

Pour redimensionner ce composant, utilisez la commande suivante :

kubectl scale deployment inflate --replicas 10

Pour plus d’informations, consultez https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling.html.

Gestion de l'interruption des nœuds

Les instances Spot peuvent être récupérées à tout moment. EC2 fournit un préavis d'interruption de 2 minutes dans la plupart des cas, mais cet avis n'est pas garanti. Dans certaines situations, EC2 peut mettre fin aux instances Spot immédiatement sans avertissement préalable. HyperPod gère automatiquement les deux scénarios :

  • Avec un préavis de 2 minutes : retente automatiquement l'expulsion progressive des capsules et le remplacement contrôlé de la capacité lorsque la capacité Spot devient disponible.

  • Sans préavis (résiliation immédiate) : nouvelle tentative automatique de remplacement du nœud (lorsque la capacité Spot devient disponible) sans expulsion gracieuse

Fonctionnement

Lorsque EC2 envoie un avis d'interruption ponctuelle, HyperPod automatiquement :

  1. Détecte le signal d'interruption

  2. Corrige le nœud : empêche la planification de nouveaux pods sur l'instance interrompue

  3. Expulse gracieusement les pods : donne aux pods en cours d'exécution le temps de terminer leur travail ou de le vérifier (en respectant Kubernetes) terminationGracePeriodSeconds

  4. Capacité de remplacement : tente automatiquement de provisionner les instances de remplacement (ponctuelles ou On-Demand en fonction de la disponibilité).

    Le remplacement de capacité fonctionne en provisionnant automatiquement les instances de remplacement. Lorsque la capacité n'est pas immédiatement disponible, le système continue de vérifier jusqu'à ce que les ressources soient accessibles. Dans le cas de groupes d'instances qui ne sont pas dotés d'un dimensionnement automatique, HyperPod tente d'augmenter la taille au sein du même groupe d'instances jusqu'à ce que la capacité requise soit disponible. Pour les groupes d' Karpenter-basedinstances, Karpenter implémente un mécanisme de repli vers les autres groupes d'instances configurés dans la classe Node lorsque le groupe principal ne peut pas répondre à la demande. En outre, vous pouvez la configurer On-Demand comme option de secours, permettant à Karpenter de passer automatiquement aux On-Demand instances s'il ne parvient pas à faire évoluer les groupes d'instances Spot.

  5. Replanifie les charges de travail : Kubernetes replanifie automatiquement les pods expulsés sur des nœuds sains

Trouver votre utilisation et votre facture

Pour vérifier votre utilisation et votre facturation des instances Spot, HyperPod vous pouvez utiliser la console AWS Cost Explorer. Accédez à Facturation et gestion des coûts > Facture

Image contenant des informations sur les régions de coûts.

Pour explorer l'utilisation et la facturation sur la console, accédez à Facturation et gestion des coûts > Explorateur des coûts

Une image indiquant le coût et l'utilisation.