Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Instalación del operador de formación
Consulte las siguientes secciones para obtener información sobre cómo instalar el operador de entrenamiento.
Requisitos previos
Antes de utilizar el operador de HyperPod formación, debe haber cumplido los siguientes requisitos previos:
-
Configura tu HyperPod clúster con una Amazon VPC personalizada
-
Se instaló la AMI más reciente en el HyperPod clúster. Para obtener más información, consulte SageMaker HyperPod Lanzamientos de AMI para Amazon EKS
La instalación del operador de HyperPod formación requiere que primero instale otros componentes. Consulte las siguientes secciones para saber cómo hacerlo.
Paso 1: Configurar el agente de identidad Amazon EKS Pod
-
Asegúrese de que la función de ejecución de IAM de su HyperPod clúster tenga el AssumeRoleForPodIdentity permiso eks-auth: o cree una nueva función de IAM con los siguientes permisos para usarla con el operador de entrenamiento.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
-
Adjunta la siguiente política de IAM a la función que acabas de crear. Asegúrese de especificar el ARN HyperPod del clúster.
-
Configure el agente de identidad de EKS Pod mediante la consola. Si desea utilizar el AWS CLI, utilice el siguiente comando.
aws eks create-addon \ --cluster-name
my-eks-cluster
\ --addon-name eks-pod-identity-agent \ --regionRegión de 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 \ --regionRegión de AWS
-
Cuando termines el proceso, puedes usar la ListPodIdentityAssociations operación para ver la asociación que has creado. El siguiente es un ejemplo de respuesta del aspecto que podría tener.
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
" }] }
Paso 2: Instalar el operador HyperPod de entrenamiento
Ahora puede instalar el operador de HyperPod entrenamiento a través de la consola Amazon EKS o con la operación de CreateAddOnAPI. Si utilizas la consola, busca el complemento llamado Amazon SageMaker HyperPod Training Operator.
A continuación, se muestra un ejemplo de cómo puede instalar el operador con la API y la CLI. El parámetro --addon-version
es opcional. Si no proporciona ninguna, la versión predeterminada es la última. Para obtener las versiones posibles, utilice la DescribeAddonVersionsoperación.
nota
El operador de formación no admite la gobernanza de SageMaker HyperPod tareas de Amazon.
aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE
El operador de formación incluye una serie de opciones con valores predeterminados que pueden adaptarse a su caso de uso. Te recomendamos que pruebes el operador de entrenamiento con los valores predeterminados antes de cambiarlos. La siguiente tabla describe todos los parámetros y ejemplos de cuándo es posible que desee configurar cada parámetro.
Parámetro | Descripción | Predeterminado |
---|---|---|
hpTrainingControllermanager.manager.resources.requests.cpu | ¿Cuántos procesadores asignar al controlador | 1 |
hpTrainingControllerManager.Manager.Resources.Requests.Memory | Cuánta memoria asignar al controlador | 2Gi |
hpTrainingControllerManager.Manager.Resources.Limits.CPU | El límite de CPU de la controladora | 2 |
hpTrainingControllermanager.manager.resources.limits.Memory | El límite de memoria de la controladora | 4 Gi |
hpTrainingControllerAdministrador. Selector de nodos | Selector de nodos para los módulos del controlador | El comportamiento predeterminado es seleccionar los nodos con la etiqueta sagemaker.amazonaws.com/compute-type: "HyperPod" |
Paso 3: Instalar el agente HyperPod elástico
El agente HyperPod elástico es una extensión PyTorchde ElasticAgenthyperpodrun
para crear el iniciador de tareas.
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
Ahora puede enviar trabajos con. kubectl
HyperPod argumentos de Elastic Agent
El agente HyperPod elástico admite todos los argumentos originales y añade algunos argumentos adicionales. A continuación se muestran todos los argumentos disponibles en el agente HyperPod elástico. Para obtener más información sobre PyTorch el Elastic Agent, consulta su documentación oficial
Argumento | Descripción | Valor predeterminado |
---|---|---|
--señal de apagado | Señal para enviar a los trabajadores en caso de cierre (SIGTERM o SIGKILL) | «SIGKILL» |
--tiempo de espera de apagado | Tiempo de espera en segundos entre las señales SIGTERM y SIGKILL | 30 |
--servidor-host | Dirección del servidor del agente | «0.0.0.0" |
--puerto de servidor | Puerto del servidor del agente | 8080 |
--server-log-level | Nivel de registro del servidor agente | «información» |
--server-shutdown-timeout | Tiempo de espera de apagado del servidor en segundos | 300 |
--pre-train-script | Ruta al guion previo al entrenamiento | Ninguno |
--pre-train-args | Argumentos a favor del guion previo al entrenamiento | Ninguno |
--post-train-script | El camino hacia el guion posterior al entrenamiento | Ninguno |
--post-train-args | Argumentos a favor del guion posterior al entrenamiento | Ninguno |
Kueue (opcional)
Si bien puede ejecutar los trabajos directamente, su organización también puede integrar el operador de formación con Kueue para asignar recursos y programar los trabajos. Sigue los pasos que se indican a continuación para instalar Kueue en tu clúster. HyperPod
-
Sigue la guía de instalación que se encuentra en la documentación oficial de Kueue
. Cuando llegues al paso de configuración controller_manager_config.yaml
, añade la siguiente configuración:externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
-
Siga el resto de los pasos de la guía de instalación oficial. Cuando termines de instalar Kueue, puedes crear algunas colas de muestra con el comando.
kubectl apply -f sample-queues.yaml
Usa el siguiente archivo YAML.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