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 entrenamiento
Consulte las secciones siguientes para obtener más información acerca de 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:
-
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.
-
Configurar el agente de Pod Identity de EKS mediante la consola. Si desea utilizar elAWS CLI, utilice el siguiente comando:
aws eks create-addon \ --cluster-namemy-eks-cluster\ --addon-name eks-pod-identity-agent \ --regionRegión de AWS -
(Opcional) Si ejecuta los nodos del HyperPod clúster en una VPC privada, debe configurar los puntos de enlace de la PrivateLinks VPC para la API de Amazon AI (
com.amazonaws.) y los servicios de SageMaker autenticación Amazon EKS (com.amazonaws).aws-region.sagemaker.apiaws-region.eks-auth). También debe asegurarse de que los nodos del clúster se ejecuten con subredes que estén en un grupo de seguridad que permita que el tráfico se enrute a través de los puntos de enlace de la VPC para comunicarse con SageMaker AI y Amazon EKS. Si no están configurados correctamente, la instalación del complemento puede fallar. Para obtener más información sobre la configuración de puntos de enlace de VPC, consulte Crear un punto de enlace de VPC.
Instalación del operador de entrenamiento
Ahora puede instalar el operador de HyperPod entrenamiento a través de la consola SageMaker AI, la consola Amazon EKS o con los métodos de AWS CLI la consola que ofrecen experiencias simplificadas que le ayudan a instalar al operador. AWS CLIOfrece un enfoque programático que le permite personalizar más la instalación.
Entre las dos experiencias de consola, la SageMaker IA ofrece una instalación con un solo clic, crea la función de ejecución de la IAM, crea la asociación de identidad del módulo e instala al operador. La instalación con la consola de Amazon EKS es similar, pero no crea el rol de ejecución de IAM automáticamente. Durante este proceso, puede elegir si crear un nuevo rol de ejecución de IAM con la información que la consola rellena previamente. De forma predeterminada, estos roles creados solo tienen acceso al clúster actual en el que está instalando el operador. A menos que edite los permisos del rol para incluir otros clústeres, si elimina el operador y lo vuelve a instalar, debe crear un nuevo rol.
Si ya tiene el operador de entrenamiento instalado en su HyperPod clúster, puede actualizar el complemento EKS a la versión que desee. Si quieres utilizar un entrenamiento elástico o sin puntos de control, ten en cuenta lo siguiente:
-
Tanto el entrenamiento sin puntos de control como el entrenamiento elástico requieren que el complemento EKS esté en la versión 1.2.0 o superior.
-
El operador de SageMaker HyperPod formación de Amazon mantiene la compatibilidad con versiones anteriores de cualquier versión complementaria de EKS, por lo que puedes actualizar desde cualquier versión complementaria a la 1.2.0 o superior.
-
Si pasa de la versión 1.2.0 o superior a una versión inferior, primero debe eliminar los trabajos existentes antes de la degradación y volver a enviar los trabajos una vez finalizada la degradación.
El operador de entrenamiento incluye una serie de opciones con valores predeterminados que pueden adaptarse a su caso de uso. Le recomendamos que pruebe el operador de entrenamiento con los valores predeterminados antes de cambiarlos. En la siguiente tabla se describen todos los parámetros y ejemplos de cuándo es posible que desee configurar cada parámetro.
| Parámetro | Description (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 | Límite de CPU para el controlador | 2 |
| hpTrainingControllerManager.Manager.Resources.Limits.Memory | Límite de memoria para el controlador | 4Gi |
| hpTrainingControllerManager.Node Selector | Selector de nodos para los pods del controlador | El comportamiento predeterminado es seleccionar los nodos con la etiqueta sagemaker.amazonaws.com/compute-type: "HyperPod" |
HyperPod agente elástico
El agente HyperPod elástico es una extensión PyTorchde ElasticAgenthyperpodrun para crear el iniciador de trabajos.
nota
Tanto el entrenamiento sin puntos de control como el entrenamiento elástico requieren que utilices el agente HyperPod elástico versión 1.1.0 o superior.
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
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 | Description (Descripción) | Valor predeterminado |
|---|---|---|
| --shutdown-signal | Señal que se envía a los nodos de trabajo en caso de cierre (SIGTERM o SIGKILL) | “SIGKILL” |
| --shutdown-timeout | Tiempo de espera en segundos entre la señal de apagado y las señales SIGKILL | 15 |
| --server-host | Dirección del servidor del agente | “0.0.0.0” |
| --server-port | Puerto del servidor del agente | 8080 |
| --server-log-level | Nivel de registro del servidor agente | “info” |
| --server-shutdown-timeout | Tiempo de espera de apagado del servidor en segundos | 300 |
| --pre-train-script | Ruta al script entrenado previamente | Ninguno |
| --pre-train-args | Argumentos para el script entrenado previamente | Ninguno |
| --post-train-script | Ruta al script entrenado previamente | Ninguno |
| --post-train-args | Argumentos para el script entrenado posteriormente | Ninguno |
| --en proceso: reinicio | Indicador que especifica si se debe utilizar la función inprocess_restart | FALSO |
| --inprocess-timeout | Tiempo en segundos que el agente espera a que los trabajadores alcancen una barrera de sincronización antes de iniciar un reinicio a nivel de proceso. | Ninguno |
Gobernanza de tareas (opcional)
El operador de formación está integrado con la gobernanza de HyperPod tareas, un sistema de administración sólido diseñado para agilizar la asignación de recursos y garantizar la utilización eficiente de los recursos informáticos en todos los equipos y proyectos de sus clústeres de Amazon EKS. Para configurar la gobernanza de las HyperPod tareas, consulteConfiguración para la gobernanza de SageMaker HyperPod tareas.
nota
Al instalar el complemento de gobierno de HyperPod tareas, debe usar la versión v1.3.0-eksbuild.1 o superior.
Al enviar el trabajo, incluya el nombre de la cola y las etiquetas de clase de prioridad de hyperpod-ns- y team-name-localqueue. Por ejemplo, si utiliza Kueue, las etiquetas pasarán a ser las siguientes:priority-class-name-priority
-
team-namekueue.x-k8s.io/queue-name: hyperpod-ns- -localqueue -
kueue.x-k8s.io/priority-class: -name-priority
priority-class
A continuación se muestra un ejemplo de cómo podría ser su archivo de configuración:
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"
Luego use el siguiente comando kubectl para aplicar el archivo YAML.
kubectl apply -f task-governance-job.yaml
Kueue (opcional)
Si bien puede ejecutar los trabajos directamente, su organización también puede integrar el operador de entrenamiento con Kueue para asignar recursos y programar trabajos. Sigue los pasos que se indican a continuación para instalar Kueue en tu clúster. HyperPod
-
Siga la guía de instalación que se indica en la documentación oficial de Kueue
. Cuando llegue al paso de configuración controller_manager_config.yaml, añada 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 termine de instalar Kueue, puede crear algunas colas de muestra con el comando
kubectl apply -f sample-queues.yaml. Utilice 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