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 :
-
Configurez votre HyperPod cluster avec un Amazon VPC personnalisé
-
Vous avez installé la dernière AMI sur votre HyperPod cluster. Pour de plus amples informations, consultez SageMaker HyperPod Publications d'AMI pour Amazon EKS.
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
-
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" ] } ] }
-
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.
-
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 \ --regionRégion AWS
-
aws eks create-pod-identity-association \ --cluster-name
my-eks-cluster
\ --role-arnARN of your role
\ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --regionRégion AWS
-
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 ElasticAgentdehyperpodrun
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.
-
Suivez le guide d'installation dans la documentation officielle de Kueue
. Lorsque vous atteignez l'étape de configuration controller_manager_config.yaml
, ajoutez la configuration suivante :externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
-
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