Installation de l’opérateur d’entraînement - 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.

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 installé cert-manager.

  • 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-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region Ré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.aws-region.sagemaker.api) et les services SageMaker Amazon EKS Auth (com.amazonaws). aws-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.

SageMaker AI console (recommended)
  1. Ouvrez la console Amazon SageMaker AI à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Accédez à la page de détails de votre cluster.

  3. Dans l'onglet Tableau de bord, recherchez le module complémentaire nommé Amazon SageMaker HyperPod training operator, puis choisissez installer. Au cours du processus d'installation, SageMaker AI crée un rôle d'exécution IAM avec des autorisations similaires à la politique AmazonSageMakerHyperPodTrainingOperatorAccessgérée et crée une association d'identité de pod entre votre cluster Amazon EKS et votre nouveau rôle d'exécution.

Amazon EKS console
Note

Si vous installez le module complémentaire via le cluster Amazon EKS, assurez-vous d'abord d'avoir balisé votre HyperPod cluster avec la paire clé-valeur. SageMaker:true Sinon, l’installation échouera.

  1. Ouvrez la console Amazon EKS à l'adresse https://console.aws.amazon.com/eks/home#/clusters.

  2. Accédez à votre cluster EKS, choisissez Modules complémentaires, puis choisissez Ajouter des modules complémentaires.

  3. Choisissez Amazon SageMaker HyperPod training operator, puis Next.

  4. Sous Version, la console utilise par défaut la dernière version, que nous vous recommandons d’utiliser.

  5. Sous Accès complémentaire, choisissez un rôle IAM d’identité du pod à utiliser avec le module complémentaire d’opérateur d’entraînement. Si vous n’avez pas encore de rôle, choisissez Créer un rôle recommandé pour en créer un.

  6. Au cours de ce processus de création de rôle, la console IAM préremplit toutes les informations nécessaires, telles que le cas d'utilisation, la politique AmazonSageMakerHyperPodTrainingOperatorAccessgérée et les autres autorisations requises, le nom du rôle et la description. Au fur et à mesure que vous suivez les étapes, passez en revue les informations et choisissez Créer un rôle.

  7. Dans la console EKS, passez en revue les paramètres de votre module complémentaire, puis choisissez Créer.

CLI
  1. Assurez-vous que le rôle d'exécution IAM pour votre HyperPod cluster possède une relation de confiance qui permet à EKS Pod Identity d'assumer le rôle ou de créer un nouveau rôle IAM avec la politique de confiance suivante. Vous pouvez également utiliser la console Amazon EKS pour installer le module complémentaire, qui crée un rôle recommandé.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession", "eks-auth:AssumeRoleForPodIdentity" ] } ] }
  2. Associez la politique AmazonSageMakerHyperPodTrainingOperatorAccess gérée au rôle que vous avez créé.

  3. Créez ensuite une association d’identité de pod entre votre cluster EKS, votre rôle IAM et votre nouveau rôle IAM.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your execution role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region Région AWS
  4. Une fois le processus terminé, vous pouvez utiliser l' ListPodIdentityAssociations opération pour voir l'association que vous avez créée. Un exemple de réponse peut ressembler à ce qui suit :

    aws eks list-pod-identity-associations --cluster-name my-eks-cluster { "associations": [{ "clusterName": "my-eks-cluster", "namespace": "aws-hyperpod", "serviceAccount": "hp-training-operator-controller-manager", "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9", "associationId": "a-1a2b3c4d5e6f7g8h9" }] }
  5. Pour installer l’opérateur d’entraînement, utilisez l’opération create-addon. Le paramètre --addon-version est facultatif. Si vous n’en fournissez pas, la dernière version est la version par défaut. Pour obtenir les versions possibles, utilisez l' DescribeAddonVersionsopération.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE

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.

Amazon EKS Console
  1. Ouvrez la console Amazon EKS à l'adresse https://console.aws.amazon.com/eks/home#/clusters.

  2. Accédez à votre cluster EKS, puis choisissez Add-ons. Choisissez ensuite le module complémentaire Amazon SageMaker HyperPod Training Operator et choisissez Modifier.

  3. Dans le menu Version, choisissez la version du module complémentaire que vous souhaitez, puis sélectionnez Enregistrer les modifications.

CLI
  1. Obtenez d'abord la liste des versions prises en charge du module complémentaire pour votre cluster.

    aws eks describe-addon-versions \ --kubernetes-version $(aws eks describe-cluster --name my-eks-cluster --query 'cluster.version' --output text) \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --query 'addons[0].addonVersions[].addonVersion' \ --output table
  2. Mettez ensuite à jour le module complémentaire vers la version que vous souhaitez.

    aws eks update-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --addon-version target-version --resolve-conflicts OVERWRITE

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 ElasticAgentde Il orchestre les cycles de vie des formateurs sur chaque conteneur et communique avec l' HyperPod opérateur de formation. Pour utiliser l'opérateur de HyperPod formation, vous devez d'abord installer l'agent HyperPod élastique dans votre image d'entraînement avant de pouvoir soumettre et exécuter des tâches à l'aide de l'opérateur. Ce qui suit est un fichier docker qui installe l’agent Elastic et utilise hyperpodrun 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-team-name-localqueue et priority-class-name-priority. Par exemple, si vous utilisez Kueue, vos étiquettes deviennent :

  • 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-name labels: 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.

  1. 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"
  2. 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