

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
<a name="sagemaker-eks-operator-install"></a>

Consulte las secciones siguientes para obtener más información acerca de cómo instalar el operador de entrenamiento.

## Requisitos previos
<a name="sagemaker-eks-operator-prerequisites"></a>

 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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-create-cluster.html). 
+ 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](sagemaker-hyperpod-release-ami-eks.md).
+ [Instalar cert-manager](https://cert-manager.io/docs/installation/).
+  [Configurar el agente de Pod Identity de EKS mediante la consola](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html). 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}}
  ```
+ (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](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws).

## Instalación del operador de entrenamiento
<a name="sagemaker-eks-operator-install-operator"></a>

 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 CLI Ofrece 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/](https://console.aws.amazon.com/sagemaker/).

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

1. 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 [ AmazonSageMakerHyperPodTrainingOperatorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html)gestionada 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](https://console.aws.amazon.com/eks/home#/clusters).

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

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

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

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

1. 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 [ AmazonSageMakerHyperPodTrainingOperatorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html)gestionada 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**.

1. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) 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 ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
         "Effect": "Allow",
         "Principal": {
           "Service": "pods.eks.amazonaws.com"
         },
         "Action": [
           "sts:AssumeRole",
           "sts:TagSession",
           "eks-auth:AssumeRoleForPodIdentity"
         ]
       }
     ]
   }
   ```

------

1.  Adjunta la [política AmazonSageMakerHyperPodTrainingOperatorAccess gestionada a la](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html) función que has creado. 

1.  [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](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html).

   ```
   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}}
   ```

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

1. 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 [ DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html)operació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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-elastic-training.html) o sin puntos de control](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless.html), 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](https://console.aws.amazon.com/eks/home#/clusters).

1. **Vaya a su clúster de EKS y seleccione Complementos.** A continuación, elige el complemento Amazon SageMaker HyperPod Training Operator y selecciona **Editar**.

1. 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
   ```

1. 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
<a name="sagemaker-eks-operator-elastic-agent"></a>

El agente HyperPod elástico es una extensión [PyTorchde ElasticAgent](https://docs.pytorch.org/docs/stable/elastic/agent.html) 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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless.html) como el [entrenamiento elástico](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-elastic-training.html) 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
<a name="sagemaker-eks-operator-elastic-agent-args"></a>

 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](https://docs.pytorch.org/docs/stable/elastic/agent.html). 


| 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)
<a name="sagemaker-eks-operator-task-governance"></a>

El operador de formación está integrado con la [gobernanza de HyperPod tareas](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-governance), 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, consulte[Configuración para la gobernanza de SageMaker HyperPod tareas](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md). 

**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-name}}kueue.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)
<a name="sagemaker-eks-operator-kueue"></a>

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](https://kueue.sigs.k8s.io/docs/installation/#install-a-custom-configured-released-version). Cuando llegue al paso de configuración `controller_manager_config.yaml`, añada la siguiente configuración:

   ```
   externalFrameworks:
   - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
   ```

1. 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
   ```