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.
Installation de l’opérateur d’entraînement
Consultez les sections suivantes pour en savoir plus sur l’installation de l’opérateur d’entraînement.
Conditions préalables
Avant d'utiliser l'opérateur de HyperPod formation, vous devez avoir rempli les conditions préalables suivantes :
-
Création d'un HyperPod cluster avec l'orchestration Amazon EKS.
-
Vous avez installé la dernière AMI sur votre HyperPod cluster. Pour de plus amples informations, veuillez consulter SageMaker HyperPod Publications d'AMI pour Amazon EKS.
-
Avoir configuré l’agent d’identité du pod EKS à l’aide de la console. Si vous souhaitez utiliser leAWS CLI, utilisez la commande suivante :
aws eks create-addon \ --cluster-namemy-eks-cluster\ --addon-name eks-pod-identity-agent \ --regionRégion AWS -
(Facultatif) Si vous exécutez vos nœuds de HyperPod cluster dans un VPC privé, vous devez configurer des points de terminaison PrivateLinks VPC pour l'API Amazon AI (
com.amazonaws.) et les services SageMaker Amazon EKS Auth (com.amazonaws).aws-region.sagemaker.apiaws-region.eks-auth). Vous devez également vous assurer que les nœuds de votre cluster fonctionnent avec des sous-réseaux appartenant à un groupe de sécurité qui permet au trafic de passer par les points de terminaison VPC pour communiquer avec SageMaker AI et Amazon EKS. S'ils ne sont pas correctement configurés, l'installation du module complémentaire peut échouer. Pour en savoir plus sur la configuration des points de terminaison VPC, consultez la section Créer un point de terminaison VPC.
Installation de l’opérateur d’entraînement
Vous pouvez désormais installer l'opérateur de HyperPod formation via la console SageMaker AI, la console Amazon EKS ou à l'aide des méthodes AWS CLI The console qui offrent des expériences simplifiées qui vous aident à installer l'opérateur. AWS CLIIl propose une approche programmatique qui vous permet de personnaliser davantage votre installation.
Entre les deux expériences de console, l' SageMaker IA fournit une installation en un clic, crée le rôle d'exécution IAM, crée l'association d'identité du pod et installe l'opérateur. L’installation de la console Amazon EKS est similaire, mais cette méthode ne crée pas automatiquement le rôle d’exécution IAM. Au cours de ce processus, vous pouvez choisir de créer un nouveau rôle d’exécution IAM avec des informations préremplies par la console. Par défaut, ces rôles créés ont uniquement accès au cluster actuel dans lequel vous installez l’opérateur. À moins que vous ne modifiiez les autorisations du rôle pour inclure d’autres clusters, si vous supprimez et réinstallez l’opérateur, vous devez créer un nouveau rôle.
Si l'opérateur de formation est déjà installé sur votre HyperPod cluster, vous pouvez mettre à jour le module complémentaire EKS vers la version que vous souhaitez. Si vous souhaitez utiliser un entraînement sans point de contrôle ou un entraînement élastique, tenez compte des points suivants :
-
L'entraînement sans point de contrôle et l'entraînement élastique nécessitent que le module complémentaire EKS soit installé sur la version 1.2.0 ou supérieure.
-
L'opérateur de SageMaker HyperPod formation Amazon assure la rétrocompatibilité avec toutes les versions complémentaires d'EKS. Vous pouvez donc passer de n'importe quelle version complémentaire à la version 1.2.0 ou supérieure.
-
Si vous passez de la version 1.2.0 ou supérieure à une version inférieure, vous devez d'abord supprimer les tâches existantes avant la rétrogradation et les renvoyer une fois la rétrogradation terminée.
L’opérateur d’entraînement propose un certain nombre d’options avec des valeurs par défaut susceptibles de correspondre à votre cas d’utilisation. Nous vous recommandons d’essayer l’opérateur d’entraînement avec les valeurs par défaut avant de les modifier. Le tableau ci-dessous décrit tous les paramètres et donne des exemples de situations dans lesquelles vous pourriez vouloir configurer chaque paramètre.
| Paramètre | Description | Par défaut |
|---|---|---|
| hpTrainingControllerManager.Manager.Resources.Requests.CPU | Nombre de processeurs à allouer pour le contrôleur | 1 |
| hpTrainingControllerManager.Manager.Resources.Requests.Memory | Quantité de mémoire à allouer au contrôleur | 2Gi |
| hpTrainingControllerManager.Manager.Resources.Limits.CPU | Limite de CPU pour le contrôleur | 2 |
| hpTrainingControllerManager.Manager.Resources.Limits.Memory | Limite de mémoire pour le contrôleur | 4Gi |
| hpTrainingControllerManager.NodeSelector | Sélecteur de nœuds pour les pods de contrôleur | Le comportement par défaut consiste à sélectionner les nœuds avec l’étiquette sagemaker.amazonaws.com/compute-type: "HyperPod" |
HyperPod agent élastique
L'agent HyperPod élastique est une extension PyTorch ElasticAgentdehyperpodrun pour créer le lanceur de tâches.
Note
L'entraînement sans point de contrôle et l'entraînement élastique nécessitent l'utilisation de la version 1.1.0 ou supérieure d' HyperPod Elastic Agent.
RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count--nproc-per-node=proc_count\ --rdzv-backend hyperpod \ # Optional --inprocess-restart \ # Optional (in-process fault recovery with checkpointless training) ... # Other torchrun args # pre-traing arg_group --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \ # post-train arg_group --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \training.py--script-args
Vous pouvez désormais soumettre des tâches avec kubectl.
HyperPod arguments relatifs aux agents élastiques
L'agent HyperPod élastique prend en charge tous les arguments d'origine et ajoute des arguments supplémentaires. Vous trouverez ci-dessous tous les arguments disponibles dans l'agent HyperPod élastique. Pour plus d'informations sur PyTorch Elastic Agent, consultez leur documentation officielle
| Argument | Description | Valeur par défaut |
|---|---|---|
| --shutdown-signal | Signal à envoyer aux processus pour arrêt (SIGTERM ou SIGKILL) | « SIGKILL » |
| --shutdown-timeout | Délai en secondes entre le signal d'arrêt et les signaux SIGKILL | 15 |
| --server-host | Adresse du serveur de l’agent | « 0.0.0.0 » |
| --server-port | Port du serveur de l’agent | 8080 |
| --server-log-level | Niveau de journalisation du serveur d’agent | « info » |
| --server-shutdown-timeout | Délai d’arrêt du serveur en secondes | 300 |
| --pre-train-script | Chemin du script de pré-entraînement | Aucune |
| --pre-train-args | Arguments en faveur d’un script de pré-entraînement | Aucune |
| --post-train-script | Chemin du script de post-entraînement | Aucune |
| --post-train-args | Arguments en faveur d’un script de post-entraînement | Aucune |
| --inprocess-restart | Indicateur spécifiant s'il faut utiliser la fonctionnalité inprocess_restart | FALSE |
| --inprocess-timeout | Durée en secondes pendant laquelle l'agent attend que les collaborateurs atteignent un obstacle de synchronisation avant de déclencher un redémarrage au niveau du processus. | Aucune |
Gouvernance des tâches (facultatif)
L'opérateur de formation est intégré à la gouvernance des HyperPod tâches, un système de gestion robuste conçu pour rationaliser l'allocation des ressources et garantir une utilisation efficace des ressources informatiques au sein des équipes et des projets pour vos clusters Amazon EKS. Pour configurer la gouvernance des HyperPod tâches, voirConfiguration pour la gouvernance des SageMaker HyperPod tâches.
Note
Lors de l'installation du module complémentaire de gouvernance des HyperPod tâches, vous devez utiliser la version v1.3.0-eksbuild.1 ou supérieure.
Lorsque vous soumettez une tâche, assurez-vous d’inclure le nom de votre file d’attente et les étiquettes de classe de priorité hyperpod-ns- et team-name-localqueue. Par exemple, si vous utilisez Kueue, vos étiquettes deviennent :priority-class-name-priority
-
kueue.x-k8s.io/nom de file d'attente : hyperpod-ns- -localqueue
team-name -
kueue.x-k8s.io/priority-class : -name-priority
priority-class
Voici un exemple de ce à quoi pourrait ressembler votre fichier de configuration :
apiVersion: sagemaker.amazonaws.com/v1 kind: HyperPodPytorchJob metadata: name: hp-task-governance-sample namespace: hyperpod-ns-team-namelabels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue kueue.x-k8s.io/priority-class:priority-class-priority spec: nprocPerNode: "1" runPolicy: cleanPodPolicy: "None" replicaSpecs: - name: pods replicas: 4 spares: 2 template: spec: containers: - name: ptjob image: XXXX imagePullPolicy: Always ports: - containerPort: 8080 resources: requests: cpu: "2"
Utilisez ensuite la commande kubectl suivante pour appliquer le fichier YAML.
kubectl apply -f task-governance-job.yaml
Kueue (facultatif)
Bien que vous puissiez exécuter des tâches directement, votre organisation peut également intégrer l’opérateur d’entraînement avec Kueue pour allouer des ressources et planifier des tâches. Suivez les étapes ci-dessous pour installer Kueue dans votre HyperPod cluster.
-
Suivez le guide d’installation dans la documentation officielle de Kueue
. Lorsque vous atteignez l’étape de configuration de controller_manager_config.yaml, ajoutez la configuration suivante :externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com" -
Suivez le reste des étapes du guide d’installation officiel. Une fois l’installation de Kueue terminée, vous pouvez créer des exemples de files d’attente à l’aide de la commande
kubectl apply -f sample-queues.yaml. Utilisez le fichier YAML suivant.apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: cluster-queue spec: namespaceSelector: {} preemption: withinClusterQueue: LowerPriority resourceGroups: - coveredResources: - cpu - nvidia.com/gpu - pods flavors: - name: default-flavor resources: - name: cpu nominalQuota: 16 - name: nvidia.com/gpu nominalQuota: 16 - name: pods nominalQuota: 16 --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: name: user-queue namespace: default spec: clusterQueue: cluster-queue --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor --- apiVersion: kueue.x-k8s.io/v1beta1 description: High priority kind: WorkloadPriorityClass metadata: name: high-priority-class value: 1000 --- apiVersion: kueue.x-k8s.io/v1beta1 description: Low Priority kind: WorkloadPriorityClass metadata: name: low-priority-class value: 500