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.
Commencer à SageMaker HyperPod utiliser le AWS CLI
Le didacticiel suivant montre comment créer un nouveau SageMaker HyperPod cluster avec Slurm à l'aide des AWS CLI commandes pour. SageMaker HyperPod À la fin de ce didacticiel, vous disposerez d'un cluster Slurm fonctionnel avec un nœud contrôleur, un nœud de connexion et un groupe de travailleurs de calcul, prêt à planifier et à exécuter des charges de travail ML. Le didacticiel couvre la configuration de la topologie Slurm, les options de configuration du cycle de vie des nœuds, le stockage partagé FSx en option et la manière de se connecter à votre cluster.
Avant de commencer, assurez-vous d'avoir terminé les tâches Prérequis pour l'utilisation SageMaker HyperPod (VPC, quotas, FSx) et Gestion des identités et des accès AWS pour SageMaker HyperPod (rôles IAM, rôle d'exécution avec). AmazonSageMakerClusterInstanceRolePolicy
Concepts clés
Cette section couvre les principaux concepts de configuration pour créer un cluster SageMaker HyperPod Slurm. La compréhension de ces concepts vous aidera à faire des choix éclairés lors de la configuration de votre cluster, mais si vous souhaitez commencer immédiatement, vous pouvez accéder directement à Créer votre cluster cette section et y revenir si nécessaire.
Lors de la création d'un Slurm-orchestrated cluster, vous pouvez effectuer deux choix de configuration indépendants :
-
Configuration de la topologie Slurm — Comment est définie la topologie du cluster Slurm (rôles des nœuds, partitions) ?
-
Configuration du cycle de vie des nœuds : comment les nœuds sont-ils provisionnés et personnalisés ?
Pour la topologie Slurm, ce didacticiel utilise l'approche de API-driven configuration, dans laquelle vous définissez les rôles et les partitions des nœuds directement dans la CreateCluster demande, en utilisant SlurmConfig chaque groupe d'instances et Orchestrator.Slurm au niveau du cluster. Il s'agit de l'approche recommandée pour les nouveaux clusters. Il fournit une source unique de vérité, une validation intégrée et une détection de dérive de la configuration des partitions sans aucun fichier supplémentaire à gérer. Vous pouvez également utiliser un ancien provisioning_parameters.json fichier stocké dans Amazon S3 pour assurer la rétrocompatibilité avec les clusters existants. Pour plus de détails sur l'approche héritée, voirSageMaker HyperPod Configuration de Slurm.
Pour la configuration du cycle de vie des nœuds, SageMaker HyperPod prend en charge trois options. Dans le cas le plus simple, vous omettez LifeCycleConfig complètement et configurez HyperPod automatiquement les nœuds à l'aide de la AMI-based configuration, de la configuration de Slurm et de packages essentiels tels que Docker, Enroot et Pyxis pour exécuter des charges de travail ML, sans aucun script ni compartiment Amazon S3 requis. Si vous avez besoin de personnalisations en plus de la AMI-based configuration, vous pouvez fournir un script d'extension OnInitComplete qui s'exécute une fois la configuration terminée. Pour un contrôle total sur l'ensemble de la séquence de provisionnement, le OnCreate chemin permet à vos scripts de tout contrôler, y compris au démarrage de Slurm.
Pour les charges de travail ML, vous aurez généralement également besoin d'un système de fichiers partagé hautes performances pour les données d'entraînement, les points de contrôle et les bibliothèques partagées. SageMaker HyperPod prend en charge Amazon FSx pour Lustre et FSx pour OpenZFS, configurés par groupe d'instances via. InstanceStorageConfigs La configuration FSx est facultative pour la création de clusters mais recommandée pour les charges de travail de production.
Configuration de la topologie de Slurm via l'API
Tous les exemples de ce didacticiel utilisent la configuration topologique API-driven Slurm, dans laquelle vous définissez la structure du cluster Slurm directement dans la demande d'CreateClusterAPI plutôt que via un fichier de configuration distinct.
Un cluster Slurm nécessite au moins un nœud contrôleur (qui exécute le slurmctld démon et coordonne la planification des tâches) et un ou plusieurs nœuds de calcul (qui exécutent les tâches). Vous pouvez éventuellement ajouter un nœud de connexion pour fournir aux utilisateurs un point d'accès dédié à la soumission et à la gestion des tâches sans se connecter directement au contrôleur. Dans la demande d'API, vous attribuez à chaque groupe d'instances son rôle Slurm en SlurmConfig spécifiant si le groupe sert de contrôleur, de connexion ou de nœud de calcul. Les groupes de calcul sont également mappés à une ou plusieurs partitions Slurm, qui agissent comme des files d'attente logiques qui organisent la façon dont les tâches sont planifiées sur différents ensembles de nœuds.
Au niveau du cluster, Orchestrator.Slurm contrôle la manière dont HyperPod la configuration des partitions est gérée dansslurm.conf. Vous choisissez une stratégie qui détermine s'il s' HyperPod agit de la source unique de vérité pour la topologie des partitions, si elle remplace les modifications manuelles ou si elle fusionne la API-defined configuration avec les modifications manuelles que vous avez apportées. Voici une référence pour les champs utilisés.
SlurmConfig(par groupe d'instances) :
"SlurmConfig": { "NodeType": "Controller | Login | Compute", "PartitionNames": ["partition-name"] }
| Champ | Description |
|---|---|
NodeType |
Obligatoire. Le rôle Slurm pour ce groupe d'instances. Valeurs valides : Controller, Login, Compute. Exactement un seul groupe d'instances doit l'êtreController. |
PartitionNames |
Conditionnelle. Noms des partitions de Slurm. Obligatoire pour le type de Compute nœud ; non autorisé pour Controller ouLogin. |
Orchestrator.Slurm(niveau du cluster) :
"Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed | Overwrite | Merge" } }
SlurmConfigStrategydétermine comment HyperPod gère les mappages partition-nœud slurm.conf sur le nœud contrôleur. Lorsque vous créez ou mettez à jour un cluster, HyperPod écrit la configuration de partition sur la slurm.conf base de ce SlurmConfig que vous avez défini pour chaque groupe d'instances, en mappant les groupes d'instances de calcul aux partitions qui leur sont attribuées et en enregistrant les nœuds de contrôleur et de connexion avec les rôles Slurm appropriés.
La stratégie que vous choisissez contrôle ce qui se passe lorsque la configuration de la partition slurm.conf est modifiée en dehors de l'API, par exemple par un administrateur modifiant le fichier directement sur le nœud du contrôleur. AvecManaged, HyperPod traite l'API comme la source unique de vérité et détecte et bloque les mises à jour en cas de dérive slurm.conf sur le disque. AvecOverwrite, HyperPod force la API-defined configuration sur le contrôleur, annulant toute modification manuelle apportée à. slurm.conf Ceci est utile pour récupérer après une modification involontaire. AvecMerge, HyperPod préserve les modifications manuelles apportées à la configuration de l'API slurm.conf et les fusionne avec celle-ci, ce qui permet aux utilisateurs avancés de conserver des slurm.conf paramètres personnalisés en plus API-managed des partitions.
| Stratégie | Détection de dérive de partition | Modifications manuelles | Cas d’utilisation |
|---|---|---|---|
Managed (par défaut) |
Activé ; bloque les mises à jour en cas de détection d'une dérive | Non pris en charge | Une source unique de vérité |
Overwrite |
Désactivé | Remplacé lors de la mise à jour | Remise à la dérive |
Merge |
Désactivé | Préservé et fusionné | slurm.confBesoins personnalisés |
Important
La détection de dérive s'applique uniquement à la configuration de la partition Slurm dans slurm.conf (mappages partition-nœud définis via l'API). Les modifications apportées à d'autres slurm.conf paramètres, tels que les paramètres de planification, les limites de ressources ou la configuration comptable, ne sont pas surveillées et ne seront pas détectées ni signalées par HyperPod.
Note
Si vous préférez définir la topologie de Slurm à l'aide d'un provisioning_parameters.json fichier plutôt que de l'API, SlurmConfig omettez les groupes d'instances et la demande Orchestrator.Slurm de cluster, puis chargez le fichier sur Amazon S3 avec les scripts de cycle de vie de votre nœud. Pour en savoir plus, consultez SageMaker HyperPod Configuration de Slurm.
Options de configuration du cycle de vie des nœuds
Lorsque vous créez un cluster SageMaker HyperPod Slurm, vous choisissez la manière dont les nœuds de chaque groupe d'instances sont provisionnés en configurant le LifeCycleConfig bloc dans la demande. CreateCluster SageMaker HyperPod prend en charge trois options de configuration du cycle de vie des nœuds, chacune offrant un niveau de contrôle différent sur le processus de provisionnement.
Avec AMI-based la configuration uniquement, vous omettez LifeCycleConfig complètement. HyperPod configure automatiquement les nœuds à l'aide de AMI-based la configuration, de la configuration de Slurm, de l'installation des packages essentiels et du démarrage de tous les services requis. Il s'agit du chemin le plus simple qui ne nécessite aucun bucket ou script Amazon S3.
Avec l'option Extension, vous spécifiez « OnInitComplete in LifeCycleConfig » en SourceS3Uri pointant vers votre script d'extension dans Amazon S3. HyperPod exécute d'abord la AMI-based configuration complète, puis exécute votre script. Cela vous permet d'ajouter des personnalisations, telles que des agents de surveillance, une intégration LDAP ou des montages de stockage supplémentaires, sans gérer le provisionnement de base.
Avec l'option Personnalisé, vous pouvez LifeCycleConfig le spécifier OnCreate en SourceS3Uri pointant vers votre script de cycle de vie complet défini dans Amazon S3. HyperPod n'exécute pas AMI-based la configuration et ne démarre pas Slurm. Vos scripts possèdent l'intégralité de la séquence de provisionnement. Cela vous donne un contrôle total sur les logiciels installés, leur configuration et le moment où Slurm démarre.
| Option de cycle de vie des nœuds | Vous avez besoin d'un compartiment Amazon S3 ? | Des scripts à télécharger ? | LifeCycleConfig dans l'API ? |
|---|---|---|---|
| AMI-based configuration uniquement (la plus simple) | Non | Non | Omettre complètement |
Prolongation (OnInitComplete) |
Oui | Seul votre script d'extension | OnInitComplete + SourceS3Uri |
Personnalisé (OnCreate) |
Oui | Ensemble de scripts du cycle de vie complet | OnCreate + SourceS3Uri |
Note
La configuration optionnelle du cycle de vie des nœuds n'est prise en charge que pour les Slurm-orchestrated clusters. EKS-orchestrated Les clusters Amazon continuent d'être nécessaires LifeCycleConfig avec OnCreate et SourceS3Uri sur chaque groupe d'instances.
Note
OnCreateet OnInitComplete s'excluent mutuellement. La spécification des deux sur le même groupe d'instances entraîne une erreur de validation.
Configuration FSx et VPC
Pour les charges de travail de machine learning, un système de fichiers hautes performances partagé est essentiel pour stocker les données d'entraînement, les points de contrôle des modèles et les bibliothèques partagées sur les nœuds du cluster. SageMaker HyperPod prend en charge Amazon FSx pour Lustre et FSx pour OpenZFS, configurés par groupe d'instances via. InstanceStorageConfigs Les systèmes de fichiers FSx résident dans votre VPC, une configuration VPC personnalisée (VpcConfig) est donc requise lors de l'utilisation de FSx.
La configuration FSx fonctionne avec les trois options de configuration du cycle de vie des nœuds. Lorsque vous utilisez AMI-based la configuration ouOnInitComplete, HyperPod gère automatiquement le montage FSx. Lors de l'utilisationOnCreate, vos scripts de cycle de vie sont responsables du montage.
FSx pour Lustre :
"InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ]
| Champ | Description |
|---|---|
DnsName |
Obligatoire. Le nom DNS du système de fichiers FSx pour Lustre. |
MountPath |
Facultatif. Le chemin de montage local sur l'instance. Valeur par défaut : /fsx |
MountName |
Obligatoire. Le nom de montage du système de fichiers FSx pour Lustre. Vous pouvez le trouver dans la console FSx for Lustre ou viaaws fsx describe-file-systems. |
FSx pour OpenZFS :
"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } } ]
| Champ | Description |
|---|---|
DnsName |
Obligatoire. Le nom DNS du système de fichiers FSx pour OpenZFS. |
MountPath |
Facultatif. Le chemin de montage local sur l'instance. Valeur par défaut : /home |
Note
Chaque groupe d'instances peut avoir au plus un FSx pour Lustre et un FSx pour la configuration OpenZFS. Différents groupes d'instances peuvent monter différents systèmes de fichiers.
Configuration du VPC (requise pour FSx) :
Ajoutez VpcConfig au niveau du cluster dans votre CreateCluster demande :
"VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] }
Pour plus d'informations sur la configuration d'un VPC, consultezPrérequis pour l'utilisation SageMaker HyperPod. Pour plus d'informations sur la configuration de FSx, consultezPrérequis pour l'utilisation SageMaker HyperPod.
Créer votre cluster
Cette section explique comment créer un cluster à l'aide de chacune des trois options de configuration du cycle de vie des nœuds décrites dansOptions de configuration du cycle de vie des nœuds. Pour la plupart des utilisateurs, nous recommandons de commencer par l'option A, AMI-based configuration uniquement. Il ne nécessite aucun script ni compartiment Amazon S3 et fournit un cluster entièrement fonctionnel prêt à l'emploi. Choisissez l'option B si vous devez ajouter des personnalisations en plus de la AMI-based configuration, ou l'option C si vous avez besoin d'un contrôle total sur le processus de provisionnement.
ExecutionRoleDans tous les exemples, indiquez l'ARN du rôle IAM que vous avez créé avec le gestionnaire AmazonSageMakerClusterInstanceRolePolicy dansPrérequis pour l'utilisation SageMaker HyperPod.
Option A : AMI-based configuration uniquement (sans configuration du cycle de vie)
C'est le chemin le plus simple. Aucun compartiment, script ou fichier de configuration Amazon S3 n'est nécessaire. SageMaker HyperPod configure les nœuds automatiquement à l'aide de AMI-based la configuration, en installant les logiciels essentiels et en appliquant des configurations afin que le cluster soit prêt à exécuter des charges de travail ML prêtes à l'emploi. Tous les packages logiciels sont intégrés à l'AMI, de sorte qu'aucun accès Internet n'est requis lors du provisionnement.
Le tableau suivant répertorie les fonctionnalités incluses dans AMI-based la configuration :
| Capacité | Description |
|---|---|
| Démons Slurm | Les démons de contrôleur et de calcul ont démarré automatiquement |
| Docker | Container Runtime pour créer et exécuter des conteneurs ML |
| Enraciner | Exécution de conteneurs sans racine pour les charges de travail Slurm |
| Pyxis | Plugin Slurm pour l'intégration de conteneurs |
| Comptabilité Slurm | Configure la comptabilité des tâches Slurm pour suivre l'historique des tâches et la consommation de ressources |
| MariaDB | Déploie MariaDB sur le nœud du contrôleur en tant que base de données de sauvegarde pour la comptabilité Slurm |
| Génération de clés SSH | Paire de clés générée pour l'utilisateur Ubuntu par défaut |
| Propagation SSH | Informations d'identification utilisateur propagées sur les nœuds de calcul pour les tâches multi-nœuds |
| Rotation du journal Slurm | Prévient la surcharge des journaux et les problèmes de saturation du disque |
| Configuration du répertoire personnel | Répertoire personnel de l'utilisateur Ubuntu monté sur un système de fichiers partagé |
-
Enregistrez les informations suivantes sous
create_cluster.json:{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ] } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a"] } }Notez que non n'
LifeCycleConfigest spécifié pour aucun groupe d'instances.La topologie Slurm est définie pour chaque groupe d'instances : le
Controllerrôlemy-controller-groupest attribué (s'exécuteslurmctld), ellemy-login-groupsert deLoginnœud pour l'accès utilisateur etworker-group-1est unComputenœud auquel est attribuépartition-1pour la planification des tâches.SlurmConfigAu niveau du cluster,SlurmConfigStrategy: "Managed"s'assure HyperPod qu'il s'agit de la seule source fiable pour la configuration des partitions. Le groupe de travail inclut un système de fichiers FSx pour Lustre monté sur/fsxpour le stockage partagé, etVpcConfigest spécifié au niveau du cluster comme requis pour FSx.Astuce
Si vous testez sans FSx, vous pouvez omettre
InstanceStorageConfigset supprimerFsxLustreConfigVpcConfigde la demande. FSx n'est pas requis pour la création de clusters, mais il est recommandé pour les charges de travail ML de production. -
Créez le cluster :
aws sagemaker create-cluster \ --cli-input-jsonfile://create_cluster.json -
Vérifiez le statut :
aws sagemaker describe-cluster --cluster-namemy-hyperpod-clusterAvec AMI-based la configuration uniquement, les groupes d'instances de la réponse n'incluent pas de
LifeCycleConfigbloc. Voici un exemple tronqué illustrant le groupe d'instances du contrôleur :{ "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" } } ] }Une fois que le statut est passé à
InService, passez àConnectez-vous à votre cluster.
Option B : étendre AMI-based la configuration avec OnInitComplete
Utilisez cette option lorsque vous avez besoin de personnalisations en plus de la AMI-based configuration, telles que des agents de surveillance, une LDAP/SSSD intégration ou des supports de stockage supplémentaires. SageMaker HyperPod lance d'abord AMI-based la configuration, puis exécute le script de votre extension.
-
Écrivez votre script d'extension. Par exemple
extend-defaults.sh:#!/bin/bash set -e echo "Running post-initialization customizations..." # Example: Install a monitoring agent # apt-get install -y my-monitoring-agent # Example: Configure LDAP integration # /opt/custom/setup-ldap.sh # Example: Mount an additional S3 bucket # mount-s3 my-data-bucket /mnt/s3-data echo "Custom extensions complete."Utilisation de scripts d'extension du référentiel Awsome Distributed Training
Le dossier https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/Extensions
Extensions du référentiel Awsome Distributed Training fournit des scripts d'extension prêts à l'emploi pour les tâches courantes telles que l'ajout d'utilisateurs et l'activation de l'observabilité. Chaque fonctionnalité est contenue de manière autonome dans son propre répertoire avec son propre script de point d'entrée qui peut être fourni directement sous forme de OnInitCompletescript.Pour les clusters nécessitant plusieurs fonctionnalités, nous vous recommandons d'utiliser le
run_extensions.shscript disponible au niveau supérieur du dossier Extensions. Ce script orchestre tous les scripts d'extension disponibles et fournit des bascules booléens simples pour activer ou désactiver chaque fonctionnalité. Pour l'utiliser, chargez l'intégralité du dossier Extensions dans votre compartiment Amazon S3 et spécifiezrun_extensions.shcommeOnInitCompletescript :s3://<bucket>/<prefix>/ |-- run_extensions.sh (OnInitComplete target) |-- detect-node/ (node type detection utility) |-- add-users/ (user management scripts + config) |-- observability/ (observability scripts + config)À l'intérieur
run_extensions.sh, activez ou désactivez chaque fonctionnalité en définissant le drapeau correspondant :ENABLE_ADD_USERS="true" ENABLE_OBSERVABILITY="true"Le fichier de configuration de chaque fonctionnalité activée doit être renseigné avant le téléchargement sur Amazon S3. Reportez-vous au fichier README dans le répertoire de chaque fonctionnalité pour plus de détails sur la configuration.
-
Téléchargement vers Amazon S3 (le chemin du bucket doit commencer par
s3://sagemaker-) :aws s3 cp extend-defaults.sh \ s3://sagemaker-amzn-s3-demo-bucket/scripts/ -
Enregistrez les informations suivantes sous
create_cluster.json:{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "OnInitComplete": "extend-defaults.sh", "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }Important
Quand
OnInitCompleteest spécifié,SourceS3Uriest obligatoire.OnCreateetOnInitCompletene peuvent pas être utilisés ensemble sur le même groupe d'instances.Astuce
Vous pouvez combiner les options au sein d'un cluster. Par exemple, utilisez AMI-based la configuration uniquement sur le contrôleur et
OnInitCompletesur les travailleurs.La topologie de Slurm est la même que dans l'option A. Chaque groupe d'instances a un rôle de nœud
SlurmConfigdéfini et une attribution de partition, etSlurmConfigStrategy: "Managed"est défini au niveau du cluster. La seule différence est l'ajout deLifeCycleConfigwithOnInitComplete, qui indique HyperPod d'exécuter votre script d'extension une fois AMI-based la configuration terminée sur chaque nœud. Pour ajouter FSx, incluezFsxLustreConfigouFsxOpenZfsConfigInstanceStorageConfigsparticipez aux groupes d'instances concernés et ajoutez-lesVpcConfigau niveau du cluster, comme décrit dansConfiguration FSx et VPC. -
Créez le cluster :
aws sagemaker create-cluster \ --cli-input-jsonfile://create_cluster.json -
Vérifiez le statut :
aws sagemaker describe-cluster --cluster-namemy-hyperpod-clusterAvec
OnInitComplete, la réponse apparaîtOnInitCompletedans leLifeCycleConfig. Voici un exemple tronqué illustrant le groupe d'instances du contrôleur :{ "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/scripts/", "OnInitComplete": "extend-defaults.sh" } } ] }Une fois que le statut est passé à
InService, passez àConnectez-vous à votre cluster.
Option C : contrôle personnalisé complet avec OnCreate (avancé)
Utilisez cette option lorsque vous avez besoin d'un contrôle total sur le provisionnement, notamment pour installer des logiciels, apporter des modifications à l'infrastructure et décider quand démarrer Slurm. AvecOnCreate, SageMaker HyperPod n'exécute pas AMI-based la configuration et ne démarre pas Slurm automatiquement.
Note
Si vous êtes novice SageMaker HyperPod et que vous n'avez pas d'exigences de personnalisation spécifiques, nous vous recommandons de commencer par l'option A ou l'option B. Vous pourrez toujours passer au mode personnalisé ultérieurement.
-
Préparez et chargez des scripts de cycle de vie sur Amazon S3. Si vous partez de zéro, utilisez les exemples de scripts du GitHub référentiel https://github.com/aws-samples/awsome-distributed-training/
Awsome Distributed Training : git clone https://github.com/aws-samples/awsome-distributed-training/ cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-configTéléchargement vers Amazon S3 (le chemin du bucket doit commencer par
s3://sagemaker-) :aws s3 sync . \ s3://sagemaker-amzn-s3-demo-bucket/lifecycle/srcPour en savoir plus sur les scripts de cycle de vie, consultez Personnalisation des SageMaker HyperPod clusters à l'aide de scripts de cycle de vie.
-
Enregistrez les informations suivantes sous
create_cluster.json:{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole", "InstanceStorageConfigs": [ { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["partition-1"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole" } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }La topologie Slurm suit le même
SlurmConfigschéma que les autres options. La principale différence résideLifeCycleConfigdansOnCreate. Cela indique HyperPod d'ignorer complètement AMI-based la configuration et d'exécuter votreon_create.shscript à la place. Vos scripts sont responsables de l'intégralité de la séquence de provisionnement, y compris l'installation du logiciel, la configuration de Slurm et le démarrage des démons Slurm. Pour ajouter FSx, incluezFsxLustreConfigouFsxOpenZfsConfigInstanceStorageConfigsparticipez aux groupes d'instances concernés et ajoutez-lesVpcConfigau niveau du cluster, comme décrit dansConfiguration FSx et VPC. -
Créez le cluster :
aws sagemaker create-cluster \ --cli-input-jsonfile://create_cluster.json -
Vérifiez le statut :
aws sagemaker describe-cluster --cluster-namemy-hyperpod-clusterAvec
OnCreate, la réponse apparaîtOnCreatedans leLifeCycleConfig. Voici un exemple tronqué illustrant le groupe d'instances du contrôleur :{ "ClusterName": "my-hyperpod-cluster", "ClusterStatus": "InService", "InstanceGroups": [ { "InstanceGroupName": "my-controller-group", "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src", "OnCreate": "on_create.sh" } } ] }Une fois que le statut est passé à
InService, passez àConnectez-vous à votre cluster.
Erreurs de validation courantes
| Erreur | Résolution |
|---|---|
| « Le cluster doit en avoir exactement un InstanceGroup avec le type de nœud Controller » | Assurez-vous qu'un seul groupe d'instances possède exactement les éléments SlurmConfig.NodeType suivants : "Controller" |
| « Les partitions ne peuvent être attribuées qu'aux types de nœuds de calcul » | Supprimer PartitionNames des groupes d'Logininstances Controller ou des groupes d'instances |
| « Les configurations FSx ne sont prises en charge que pour les VPC personnalisés » | Ajoutez VpcConfig à votre demande lorsque vous utilisez FSx |
| « LifeCycleConfig est obligatoire pour le groupe d'instances... » | clusters EKS. La configuration optionnelle du cycle de vie des nœuds n'est pas prise en charge. |
| « OnCreate et OnInitComplete dans s' LifeCycleConfig excluent mutuellement... » | Supprimez l'un OnCreate ou l'autreOnInitComplete. Vous ne pouvez pas spécifier les deux. |
| « par LifeCycleConfig exemple, le groupe est incomplet... » | Quand OnCreate ou OnInitComplete est spécifié, SourceS3Uri doit également être fourni. |
| « LifeCycleConfig est facultatif mais nécessite une AMI compatible... » | Exécutez UpdateClusterSoftware pour effectuer la mise à jour vers une AMI qui prend en charge la configuration facultative du cycle de vie des nœuds. |
| « par LifeCycleConfig exemple, le groupe est fourni mais ne contient aucune configuration... » | Spécifiez SourceS3Uri avec OnCreate ouOnInitComplete, ou omettez LifeCycleConfig complètement. |
Connectez-vous à votre cluster
Une fois que l'état du cluster est InService passé à (généralement 10 à 15 minutes), connectez-vous et vérifiez.
-
Répertoriez les nœuds du cluster pour obtenir les ID d'instance :
aws sagemaker list-cluster-nodes --cluster-namemy-hyperpod-cluster -
Connectez-vous à l'aide AWS Systems Manager du gestionnaire de session :
aws ssm start-session \ --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b\ --regionus-west-2 -
Vérifiez que Slurm est correctement configuré :
# Check Slurm nodes sinfo # Check Slurm partitions sinfo -p partition-1 # Submit a test job srun -p partition-1 --nodes=1 hostname
Pour plus d'informations sur l'exécution de charges de travail ML, consultezOffres d'emploi dans les SageMaker HyperPod clusters.
Suppression du cluster et nettoyage des ressources
Après le test, supprimez le cluster pour éviter des frais continus :
aws sagemaker delete-cluster --cluster-namemy-hyperpod-cluster
Si vous avez utilisé des scripts de cycle de vie des nœuds (option B ou option C), nettoyez le compartiment Amazon S3 :
aws s3 rm s3://sagemaker-amzn-s3-demo-bucket/lifecycle/src--recursive
Si vous avez utilisé uniquement AMI-based la configuration (option A), aucun nettoyage Amazon S3 n'est nécessaire pour les scripts de cycle de vie des nœuds.
Si vous avez exécuté des charges de travail de formation, recherchez également des données ou des artefacts dans Amazon S3, Amazon FSx for Lustre ou Amazon Elastic File System et supprimez-les pour éviter des frais.