Instalación del operador de formación - Amazon SageMaker AI

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:

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

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

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeClusterNode" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_name" } ] }
  3. 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 \ --region Región de AWS
  4. A continuación, cree una asociación de identidad de módulo entre su clúster de EKS, su función de IAM y su nueva función de 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 Región de AWS
  5. 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 ElasticAgent s. Organiza los ciclos de vida de la formación de los trabajadores en cada contenedor y se comunica con el HyperPod operador de formación. Para utilizar el operador de HyperPod formación, primero debe instalar el agente HyperPod elástico en la imagen de formación antes de poder enviar y ejecutar los trabajos con el operador. El siguiente es un archivo docker que instala el agente elástico y lo utiliza hyperpodrun 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

  1. Sigue la guía de instalación que se encuentra en la documentación oficial de Kueue. Cuando llegues al paso de configuracióncontroller_manager_config.yaml, añade la siguiente configuración:

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. 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