Installation de l'opérateur de formation - 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 de formation

Consultez les sections suivantes pour savoir comment installer l'opérateur de formation.

Prérequis

Avant d'utiliser l'opérateur de HyperPod formation, vous devez avoir rempli les conditions préalables suivantes :

Pour installer l'opérateur de HyperPod formation, vous devez d'abord installer d'autres composants. Consultez les sections suivantes pour savoir comment procéder.

Étape 1 : configurer l'agent d'identité Amazon EKS Pod

  1. Assurez-vous que le rôle d'exécution IAM de votre HyperPod cluster possède l'AssumeRoleForPodIdentityautorisation eks-auth : ou créez un nouveau rôle IAM avec les autorisations suivantes à utiliser avec l'opérateur de formation.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
  2. Associez la politique IAM suivante au rôle que vous venez de créer. Assurez-vous de spécifier l'ARN de votre HyperPod cluster.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeClusterNode" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_name" } ] }
  3. Configurez l'agent EKS Pod Identity à l'aide de la console. Si vous souhaitez utiliser le AWS CLI, utilisez la commande suivante.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region Région AWS
  4. 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 role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region Région AWS
  5. Une fois le processus terminé, vous pouvez utiliser l' ListPodIdentityAssociations opération pour voir l'association que vous avez créée. Voici un exemple de réponse illustrant ce à quoi cela pourrait ressembler.

    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" }] }

Étape 2 : Installation de l'opérateur HyperPod de formation

Vous pouvez désormais installer l'opérateur de HyperPod formation via la console Amazon EKS ou via l'CreateAddOnAPI. Si vous utilisez la console, recherchez le module complémentaire nommé Amazon SageMaker HyperPod training operator.

Vous trouverez ci-dessous un exemple de la manière dont vous pouvez installer l'opérateur avec l'API et la CLI. Le paramètre --addon-version est facultatif. Si vous n'en fournissez pas, la version par défaut est la dernière version. Pour obtenir les versions possibles, utilisez l' DescribeAddonVersionsopération.

Note

SageMaker HyperPod La gouvernance des tâches Amazon n'est pas prise en charge par l'opérateur de formation.

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

L'opérateur de formation propose un certain nombre d'options avec des valeurs par défaut adaptées à 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 ainsi que des exemples de cas dans lesquels vous souhaiterez peut-être configurer chaque paramètre.

Paramètre Description Par défaut
hpTrainingControllerManager.Manager.Resources.Requests.CPU Combien de processeurs allouer au contrôleur 1
hpTrainingControllerManager.Manager.Resources.Requests.Memory La quantité de mémoire à allouer au contrôleur 2 Go
hpTrainingControllerManager.Manager.Resources.Limits.CPU Limite du processeur 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 modules de commande Le comportement par défaut consiste à sélectionner les nœuds avec l'étiquette sagemaker.amazonaws.com/compute-type: "HyperPod"

Étape 3 : Installation de l'agent HyperPod é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 l'utilise hyperpodrun pour créer le lanceur de tâches.

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional ... # 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 offres d'emploi aveckubectl.

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
--signal d'arrêt Signal à envoyer aux travailleurs pour arrêt (SIGTERM ou SIGKILL) « SIGKILL »
--délai d'arrêt Délai d'attente en secondes entre les signaux SIGTERM et SIGKILL 30
--serveur-hôte Adresse du serveur de l'agent « 0.0.0.0"
--port-serveur Port du serveur de l'agent 8080
--server-log-level Niveau de journal du serveur agent « informations »
--server-shutdown-timeout Délai d'arrêt du serveur en secondes 300
--pre-train-script Parcours vers le script de pré-entraînement Aucun
--pre-train-args Arguments en faveur d'un script de pré-entraînement Aucun
--post-train-script Parcours vers le script post-entraînement Aucun
--post-train-args Arguments en faveur d'un script post-entraînement Aucun

Kueue (facultatif)

Bien que vous puissiez exécuter des tâches directement, votre organisation peut également intégrer l'opérateur de formation à 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 configurationcontroller_manager_config.yaml, ajoutez la configuration suivante :

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. Suivez les autres é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 kubectl apply -f sample-queues.yaml commande. 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