Skip to content
 Introduction à l’auto-scaling sur Amazon SageMaker HyperPod avec Karpenter
Source: aws.amazon.com

Introduction à l’auto-scaling sur Amazon SageMaker HyperPod avec Karpenter

Sources: https://aws.amazon.com/blogs/machine-learning/introducing-auto-scaling-on-amazon-sagemaker-hyperpod, https://aws.amazon.com/blogs/machine-learning/introducing-auto-scaling-on-amazon-sagemaker-hyperpod/, AWS ML Blog

TL;DR

  • SageMaker HyperPod prend désormais en charge l’auto-scalage des nœuds géré par Karpenter pour ses clusters EKS.
  • La solution est gérée par le service, ce qui élimine le besoin d’installer ou de maintenir les contrôleurs Karpenter par vous-même et permet le scaling vers zéro.
  • En intégrant le provisionnement continu et KEDA en option, vous obtenez une architecture d’auto-scaling à deux niveaux qui ajuste les pods et les nœuds en fonction de la demande.
  • Cette approche met l’accent sur la résilience, la réponse rapide aux pics de trafic et l’efficacité des coûts pour les charges ML à grande échelle.
  • Les prérequis incluent des quotas, un rôle IAM pour Karpenter et l’activation du provisionnement continu dans un cluster SageMaker HyperPod EKS.

Contexte et arrière-plan

Amazon SageMaker HyperPod fournit une infrastructure performante et résiliente adaptée aux charges ML à grande échelle, y compris la formation et le déploiement à grande échelle. Alors que de plus en plus de clients passent de la formation de fondations modèles à l’inférence à grande échelle, la nécessité d’adapter automatiquement les ressources GPU au trafic de production tout en respectant les SLA et en maîtrisant les coûts devient cruciale. Karpenter est un gestionnaire du cycle de vie des nœuds Kubernetes en open source créé par AWS et est un choix populaire pour l’auto-scalage des clusters grâce à sa capacité à provisionner et déprovisionner rapidement les nœuds et à optimiser l’utilisation des ressources. Historiquement, les utilisateurs de Karpenter en mode self-managed supportaient une charge opérationnelle pour l’installation, la configuration et la maintenance des composants. SageMaker HyperPod propose désormais une expérience d’auto-scalage basée sur Karpenter gérée, éliminant ce travail lourd et offrant une meilleure intégration avec la résilience et l’observabilité de HyperPod. Une capacité clé de cette version est le support du scaling vers zéro, ce qui réduit le besoin de maintenir un contrôleur Karpenter dédié lorsque la demande de calcul est nulle, améliorant ainsi l’efficacité des coûts. L’association de l’infrastructure ML dédiée HyperPod avec la gestion du cycle de vie des nœuds par Karpenter offre une plateforme résiliente et évolutive adaptée aux charges ML lourdes. Des clients tels que Perplexity, HippocraticAI, H.AI et Articul8 utilisent déjà SageMaker HyperPod pour former et déployer des modèles; à mesure que le trafic croît, l’auto-scalage devient essentiel pour répondre aux besoins réels de production.

Quoi de neuf

Cette version introduit une solution d’auto-scalage basée sur Karpenter entièrement gérée, installée et maintenue par SageMaker HyperPod. Elle permet l’auto-scalage des clusters SageMaker HyperPod EKS d’une capacité statique vers une infrastructure dynamique et optimisée en coût qui évolue avec la demande. Les composants clés incluent :

  • Une implémentation Karpenter gérée intégrée dans les clusters SageMaker HyperPod EKS, éliminant le besoin que le client configure et maintienne Karpenter.
  • Des capacités de provisionnement continu qui permettent à HyperPod de provisionner automatiquement la capacité restante en arrière-plan pendant que les charges démarrent sur des instances disponibles.
  • Des tentatives automatiques en cas d’échec de provisionnement dû à des contraintes de capacité, afin que les opérations d’auto-scalage restent résilientes et non bloquantes.
  • HyperpodNodeClass, une ressource personnalisée qui mappe à des groupes d’instances pré-créés dans SageMaker HyperPod et qui définit des contraintes sur les types d’instances et les zones de disponibilité utilisées pour les décisions d’auto-scalage de Karpenter.
  • NodePool, qui définit le matériel (types d’instances) et le placement (Zone de disponibilité) pour les pods. Le NodePool guide le déclenchement des ressources de calcul pour les pods.
  • L’intégration optionnelle avec Kubernetes Event-driven Autoscaling (KEDA) pour le scaling au niveau des pods basé sur des métriques et événements. Pour mettre en œuvre une solution d’auto-scalage de bout en bout, vous pouvez associer KEDA et Karpenter dans HyperPod. Lorsque KEDA augmente ou diminue les pods en fonction des métriques, Karpenter provisionne ou supprime automatiquement les nœuds en réponse à ces changements.

Pourquoi c’est important (impact pour les développeurs/entreprises)

Pour les charges d’inférence en trafic réel, l’auto-scalage est essentiel pour respecter les SLA de latence tout en maîtrisant les coûts. L’approche gérée par Karpenter réduit la charge opérationnelle, accélère les décisions d’évolutivité et permet le scaling vers zéro lorsque l’activité est faible. Les bénéfices pour les développeurs et les entreprises incluent :

  • Une réponse plus rapide aux pics de trafic et des temps de réponse plus stables pendant les charges élevées.
  • Une charge opérationnelle réduite puisque SageMaker HyperPod gère l’installation et la maintenance de Karpenter.
  • Une meilleure efficacité des coûts grâce au scaling vers zéro et à l’ajustement précis des ressources à la demande réelle.
  • Une infrastructure ML robuste avec observabilité et outils optimisés pour l’entraînement et le déploiement à grande échelle.

Détails techniques ou Implémentation

Prérequis et configuration initiale

  • Vérifier les quotas pour les types d’instances prévus via la console Quotas de service (par exemple g5.12xlarge).
  • Créer un rôle IAM pour l’auto-scalage HyperPod avec Karpenter et accorder les autorisations requises.
  • Lancer et configurer votre cluster SageMaker HyperPod EKS avec le mode de provisionnement continu activé lors de la création. Si vous préférez, vous pouvez utiliser un cluster EKS existant.
  • Assurer que chaque InstanceGroup est limité à une seule zone en utilisant OverrideVpcConfig et en sélectionnant une seule sous-réseau par InstanceGroup. Activation de Karpenter dans votre cluster HyperPod
  • Après la création du cluster, mettre à jour le cluster pour activer Karpenter (CLI AWS UpdateCluster ou via Boto3). Vérifier ensuite que Karpenter est actif via l’API DescribeCluster. Configuration HyperPodNodeClass et NodePool
  • HyperpodNodeClass est une ressource personnalisée qui mappe à des groupes d’instances et définit les contraintes d’instances et de zones pour le scaling.
  • Pour utiliser HyperpodNodeClass, référencez les noms des InstanceGroups à partir desquels Karpenter puisera les ressources pour les nœuds. Le nom HyperpodNodeClass est transmis au NodePool qui l’utilise pour la sélection des ressources.
  • Le NodePool spécifie le type de matériel et le placement (zone) pour les pods, et permet de restreindre les choix de nœuds et l’emplacement des pods. Mise en place de l’auto scaling et observabilité
  • Pour une solution complète, vous pouvez ajouter KEDA, qui autorise le scaling des pods basé sur des métriques telles que CloudWatch, métriques Prometheus, ou longueurs de files SQS.
  • En combinant KEDA et Karpenter, les pods augmentent pour répondre à la demande pendant que Karpenter provisionne les nœuds nécessaires et les diminue lorsque la demande baisse. Gestion des ressources et nettoyage
  • Pour éviter des coûts récurrents, supprimez votre cluster HyperPod lorsque vous n’en avez plus besoin.
  • L’intégration Karpenter dans HyperPod permet à vos workloads ML de s’adapter automatiquement, d’optimiser l’utilisation des ressources et de contrôler les coûts en scalant précisément quand il le faut. Notes d’implémentation
  • Le scaling basé sur Karpenter dans HyperPod a été conçu pour être résilient et non bloquant, avec des tentatives en arrière-plan en cas de contraintes de capacité.
  • L’intégration de Karpenter avec HyperPod et, si souhaité, avec KEDA offre une architecture d’auto-scalage robuste pour les charges ML lourdes.

Points clés

  • SageMaker HyperPod inclut désormais un auto-scalage des nœuds géré par Karpenter.
  • Le scaling vers zéro est pris en charge, réduisant les coûts lorsque l’activité est faible.
  • Le provisionnement continu et les tentatives en arrière-plan évitent les blocages lors de l’évolutivité.
  • HyperPodNodeClass et NodePool offrent un contrôle fin sur les types d’instances et l’emplacement des pods.
  • L’intégration avec KEDA fournit un scaling basé sur les métriques en temps réel.

FAQ

  • Que fait exactement l’auto-scalage avec Karpenter dans HyperPod ?

    Il offre une auto-scalabilité gérée pour les clusters HyperPod EKS, avec le scaling vers zéro et le provisionnement continu, afin d’adapter les ressources à la demande.

  • uels prérequis faut-il avant d’activer Karpenter ?

    Vérifier les quotas pour les types d’instances, créer un rôle IAM pour l’auto-scalage et activer le provisionnement continu.

  • Comment activer Karpenter sur mon cluster HyperPod ?

    Mettre à jour le cluster via UpdateCluster (CLI AWS) ou via Boto3, puis vérifier via DescribeCluster.

  • u’est-ce que HyperPodNodeClass et NodePool ?

    HyperPodNodeClass mappe à des groupes d’instances et contraint les types d’instances et les zones; NodePool précise le matériel et l’emplacement des pods.

  • Puis-je combiner KEDA et Karpenter dans HyperPod ?

    Oui, KEDA peut piloter le scaling des pods pendant que Karpenter ajuste dynamiquement le nombre de nœuds.

Références

More news

aws.amazon.com

Utiliser les AWS Deep Learning Containers avec SageMaker AI géré MLflow

Découvrez comment les AWS Deep Learning Containers (DLCs) s’intègrent à SageMaker AI géré par MLflow pour équilibrer le contrôle de l’infrastructure et une gouvernance ML robuste. Un flux TensorFlow pour la prédiction de l’âge des abalones illustre le suivi de bout en bout et la traçabilité des modè