Instalación del operador de entrenamiento - 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 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:

  • Creó un HyperPod clúster con la orquestación de Amazon EKS.

  • 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.

  • Instalar cert-manager.

  • 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-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region Regió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.aws-region.sagemaker.api) y los servicios de SageMaker autenticación Amazon EKS (com.amazonaws). aws-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.

SageMaker AI console (recommended)
  1. Abre la consola Amazon SageMaker AI en https://console.aws.amazon.com/sagemaker/.

  2. Vaya a la página de detalles de su clúster.

  3. En la pestaña Panel de control, localiza el complemento denominado Amazon SageMaker HyperPod Training Operator y selecciona instalar. Durante el proceso de instalación, la SageMaker IA crea una función de ejecución de IAM con permisos similares a los de la política AmazonSageMakerHyperPodTrainingOperatorAccessgestionada y crea una asociación de identidad de pod entre el clúster de Amazon EKS y la nueva función de ejecución.

Amazon EKS console
nota

Si instala el complemento a través del clúster de Amazon EKS, asegúrese primero de haber etiquetado el HyperPod clúster con el par clave-valor. SageMaker:true De lo contrario, la instalación fallará.

  1. Abra la consola Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. Vaya a su clúster de EKS, seleccione Complementos y, a continuación, Obtener más complementos.

  3. Elige Amazon SageMaker HyperPod Training Operator y, a continuación, selecciona Siguiente.

  4. En Versión, la consola utiliza de forma predeterminada la versión más reciente, que es la que le recomendamos.

  5. En Acceso al complemento, elija un rol de IAM con Pod Identity para usarlo con el complemento del operador de entrenamiento. Si no dispone de ningún rol, elija Crear rol recomendado para crear uno.

  6. Durante este proceso de creación del rol, la consola de IAM rellena previamente toda la información necesaria, como el caso de uso, la política AmazonSageMakerHyperPodTrainingOperatorAccessgestionada y otros permisos necesarios, el nombre del rol y la descripción. A medida que vaya completando los pasos, revise la información y seleccione Crear rol.

  7. En la consola de EKS, revise la configuración del complemento y, a continuación, seleccione Crear.

CLI
  1. Asegúrese de que la función de ejecución de IAM de su HyperPod clúster tenga una relación de confianza que permita a EKS Pod Identity asumir la función o crear una nueva función de IAM con la siguiente política de confianza. Como alternativa, podría utilizar la consola de Amazon EKS para instalar el complemento, que crea un rol recomendado.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession", "eks-auth:AssumeRoleForPodIdentity" ] } ] }
  2. Adjunta la política AmazonSageMakerHyperPodTrainingOperatorAccess gestionada a la función que has creado.

  3. A continuación, cree una asociación de Pod Identity entre su clúster de EKS, su rol de IAM y su nuevo rol de IAM.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your execution role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region Región de AWS
  4. Una vez finalizado el proceso, puede utilizar la ListPodIdentityAssociations operación para ver la asociación que ha creado. A continuación se muestra un ejemplo de respuesta.

    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" }] }
  5. Para instalar el operador de entrenamiento, utilice la operación create-addon. El parámetro --addon-version es opcional. Si no proporciona ninguno, la versión predeterminada será la última versión. Para obtener las versiones posibles, utilice la DescribeAddonVersionsoperación.

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

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.

Amazon EKS Console
  1. Abra la consola Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. Vaya a su clúster de EKS y elija Add-ons. A continuación, elige el complemento Amazon SageMaker HyperPod Training Operator y selecciona Editar.

  3. En el menú Versión, selecciona la versión del complemento que desees y, a continuación, selecciona Guardar cambios.

CLI
  1. Primero, obtén la lista de las versiones compatibles del complemento para tu clúster.

    aws eks describe-addon-versions \ --kubernetes-version $(aws eks describe-cluster --name my-eks-cluster --query 'cluster.version' --output text) \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --query 'addons[0].addonVersions[].addonVersion' \ --output table
  2. A continuación, actualiza el complemento a la versión que desees.

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

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 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 utiliza hyperpodrun 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-team-name-localqueue y priority-class-name-priority. Por ejemplo, si utiliza Kueue, las etiquetas pasarán a ser las siguientes:

  • 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-name labels: 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

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