

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.

# SageMaker HyperPod gobierno de tareas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance"></a>

SageMaker HyperPod la gobernanza de tareas es 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. Esto brinda a los administradores la capacidad de establecer:
+ Niveles de prioridad para diversas tareas
+ Asignación de computación para cada equipo
+ El modo en que cada equipo presta y utiliza computación inactiva
+ Si un equipo interrumpe o reasigna sus propias tareas

HyperPod La gobernanza de tareas también proporciona la observabilidad del clúster de Amazon EKS, que ofrece visibilidad en tiempo real de la capacidad del clúster. Esto incluye la disponibilidad y el uso de la computación, la asignación y utilización de los equipos y la información sobre el tiempo de ejecución y espera de las tareas, lo que le permite tomar decisiones fundamentadas y administrar los recursos de forma proactiva. 

En las siguientes secciones se explica cómo configurar, comprender los conceptos clave y utilizar la gobernanza de HyperPod tareas para sus clústeres de Amazon EKS.

**Topics**
+ [Configuración para la gobernanza de SageMaker HyperPod tareas](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md)
+ [Panel de control](sagemaker-hyperpod-eks-operate-console-ui-governance-metrics.md)
+ [Tareas](sagemaker-hyperpod-eks-operate-console-ui-governance-tasks.md)
+ [Políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md)
+ [Ejemplos de comandos de gobierno AWS CLI de HyperPod tareas](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md)
+ [Solución de problemas](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md)
+ [Documento de atribución para la gobernanza de SageMaker HyperPod tareas de Amazon](sagemaker-hyperpod-eks-operate-console-ui-governance-attributions.md)

# Configuración para la gobernanza de SageMaker HyperPod tareas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-setup"></a>

En la siguiente sección, se proporciona información sobre cómo configurar Amazon CloudWatch Observability EKS y los complementos de gobierno de SageMaker HyperPod tareas.

Asegúrese de tener la política de permisos mínimos para los administradores de HyperPod clústeres con Amazon EKS, in[Usuarios de IAM para la administración de clústeres](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin). Esto incluye permisos para ejecutar los clústeres SageMaker HyperPod principales APIs y administrarlos dentro de sus SageMaker HyperPod Cuenta de AWS clústeres y realizar las tareas en ellos[Administración de SageMaker HyperPod clústeres orquestados por Amazon EKS](sagemaker-hyperpod-eks-operate.md). 

**Topics**
+ [Configuración del panel](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard.md)
+ [Configuración de la gobernanza de tareas](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-task-governance.md)

# Configuración del panel
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard"></a>

Utilice la siguiente información para configurar el complemento SageMaker HyperPod Amazon CloudWatch Observability EKS. Este complemento le proporciona un panel visual detallado de las métricas del hardware del clúster de EKS, la asignación de equipos y las tareas.

Si tiene problemas con la configuración, consulte [Solución de problemas](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md) para ver las soluciones de problemas conocidos.

**Topics**
+ [HyperPod Requisitos previos del complemento Amazon CloudWatch Observability EKS](#hp-eks-dashboard-prerequisites)
+ [HyperPod Configuración del complemento Amazon CloudWatch Observability EKS](#hp-eks-dashboard-setup)

## HyperPod Requisitos previos del complemento Amazon CloudWatch Observability EKS
<a name="hp-eks-dashboard-prerequisites"></a>

En la siguiente sección se incluyen los requisitos previos necesarios antes de instalar el complemento de observabilidad de Amazon EKS.
+ Asegúrese de tener la política de permisos mínimos para los administradores de HyperPod clústeres, en. [Usuarios de IAM para la administración de clústeres](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin)
+ Asocie la política de IAM `CloudWatchAgentServerPolicy` a sus nodos de trabajo. Para ello, introduzca el siguiente comando. Sustituya `my-worker-node-role` por el rol de IAM que utilizan sus nodos de trabajo de Kubernetes.

  ```
  aws iam attach-role-policy \
  --role-name my-worker-node-role \
  --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
  ```

## HyperPod Configuración del complemento Amazon CloudWatch Observability EKS
<a name="hp-eks-dashboard-setup"></a>

Utilice las siguientes opciones para configurar el complemento Amazon SageMaker HyperPod Amazon CloudWatch Observability EKS.

------
#### [ Setup using the SageMaker AI console ]

Se requieren los siguientes permisos para configurar y visualizar el panel de control de HyperPod tareas. En esta sección se amplían los permisos que se enumeran en [Usuarios de IAM para la administración de clústeres](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin). 

Para administrar la gobernanza de tareas, utilice la política de ejemplo:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListClusters",
                "sagemaker:DescribeCluster",
                "sagemaker:ListComputeQuotas",
                "sagemaker:CreateComputeQuota",
                "sagemaker:UpdateComputeQuota",
                "sagemaker:DescribeComputeQuota",
                "sagemaker:DeleteComputeQuota",
                "sagemaker:ListClusterSchedulerConfigs",
                "sagemaker:DescribeClusterSchedulerConfig",
                "sagemaker:CreateClusterSchedulerConfig",
                "sagemaker:UpdateClusterSchedulerConfig",
                "sagemaker:DeleteClusterSchedulerConfig",
                "eks:ListAddons",
                "eks:CreateAddon",
                "eks:DescribeAddon",
                "eks:DescribeCluster",
                "eks:DescribeAccessEntry",
                "eks:ListAssociatedAccessPolicies",
                "eks:AssociateAccessPolicy",
                "eks:DisassociateAccessPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Para conceder permisos para gestionar Amazon CloudWatch Observability Amazon EKS y ver el panel del HyperPod clúster a través de la consola de SageMaker IA, utilice el ejemplo de política que se muestra a continuación:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:ListAddons",
                "eks:CreateAddon",
                "eks:UpdateAddon",
                "eks:DescribeAddon",
                "eks:DescribeAddonVersions",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode",
                "sagemaker:ListClusterNodes",
                "sagemaker:ListClusters",
                "sagemaker:ListComputeQuotas",
                "sagemaker:DescribeComputeQuota",
                "sagemaker:ListClusterSchedulerConfigs",
                "sagemaker:DescribeClusterSchedulerConfig",
                "eks:DescribeCluster",
                "cloudwatch:GetMetricData",
                "eks:AccessKubernetesApi"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Diríjase a la pestaña **Dashboard** de la SageMaker HyperPod consola para instalar Amazon CloudWatch Observability EKS. Para asegurarse de que las métricas relacionadas con la gobernanza de tareas estén incluidas en el **Panel**, active la casilla de verificación de las métricas de Kueue. Al activar las métricas de Kueue, se activan los costes de CloudWatch **Metrics**, una vez alcanzado el límite del nivel gratuito. Para obtener más información, consulta **Métricas** en [Amazon CloudWatch Pricing](https://aws.amazon.com/cloudwatch/pricing/).

------
#### [ Setup using the EKS AWS CLI ]

Usa el siguiente AWS CLI comando EKS para instalar el complemento:

```
aws eks create-addon --cluster-name cluster-name 
--addon-name amazon-cloudwatch-observability 
--configuration-values "configuration json"
```

A continuación se muestra un ejemplo del JSON de los valores de configuración:

```
{
    "agent": {
        "config": {
            "logs": {
                "metrics_collected": {
                    "kubernetes": {
                        "kueue_container_insights": true,
                        "enhanced_container_insights": true
                    },
                    "application_signals": { }
                }
            },
            "traces": {
                "traces_collected": {
                    "application_signals": { }
                }
            }
        },
    },
}
```

------
#### [ Setup using the EKS Console UI ]

1. Vaya a la [consola de EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Elija su clúster.

1. Elegir **Complementos**.

1. Busque el complemento **Amazon CloudWatch Observability** e instálelo. Instale la versión >= 2.4.0 del complemento. 

1. Incluya los siguientes valores de configuración de JSON:

   ```
   {
       "agent": {
           "config": {
               "logs": {
                   "metrics_collected": {
                       "kubernetes": {
                           "kueue_container_insights": true,
                           "enhanced_container_insights": true
                       },
                       "application_signals": { }
                   },
               },
               "traces": {
                   "traces_collected": {
                       "application_signals": { }
                   }
               }
           },
       },
   }
   ```

------

Una vez que el complemento EKS Observability se haya instalado correctamente, podrá ver las métricas de su clúster de EKS en la pestaña del **panel** de control de la HyperPod consola.

# Configuración de la gobernanza de tareas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-setup-task-governance"></a>

En esta sección se incluye información sobre cómo configurar el complemento Amazon SageMaker HyperPod Task Governance EKS. Esto incluye la concesión de permisos que le permiten establecer las prioridades de las tareas, la asignación de computación a los equipos, la forma en que se comparte la computación inactiva y la preferencia de tareas para los equipos.

Si tiene problemas con la configuración, consulte [Solución de problemas](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md) para ver las soluciones de problemas conocidos.

**Topics**
+ [Configuración de Kueue](#hp-eks-task-governance-kueue-settings)
+ [HyperPod Requisitos previos de gobierno de tareas](#hp-eks-task-governance-prerequisites)
+ [HyperPod configuración de gobierno de tareas](#hp-eks-task-governance-setup)

## Configuración de Kueue
<a name="hp-eks-task-governance-kueue-settings"></a>

HyperPod El complemento EKS para la gobernanza de tareas instala [Kueue](https://github.com/kubernetes-sigs/kueue/tree/main/apis/kueue) para tus HyperPod clústeres de EKS. Kueue es un sistema nativo de Kubernetes que administra las cuotas y la forma en que las consumen los trabajos. 


| Versión complementaria de gobierno de HyperPod tareas de EKS | Versión de Kueue que se instala como parte del complemento | 
| --- | --- | 
|  v1.1.3  |  v0.12.0  | 

**nota**  
La versión v.012.0 y las versiones posteriores de Kueue no se incluyen kueue-rbac-proxy como parte de la instalación. Es posible que se hayan instalado versiones anteriores. kueue-rbac-proxy Por ejemplo, si utilizas Kueue v0.8.1, es posible que tengas la v0.18.1. kueue-rbac-proxy

HyperPod La gobernanza de tareas utiliza Kueue para gestionar las colas de tareas, la programación y las cuotas, de forma nativa de Kubernetes, y se instala con el complemento EKS de gobernanza de tareas. HyperPod Cuando se instala, HyperPod crea y modifica los recursos de Kubernetes gestionados por la SageMaker IA, como,,, y. `KueueManagerConfig` `ClusterQueues` `LocalQueues` `WorkloadPriorityClasses` `ResourceFlavors` `ValidatingAdmissionPolicies` Si bien los administradores de Kubernetes tienen la flexibilidad de modificar el estado de estos recursos, es posible que el servicio actualice y sobrescriba cualquier cambio realizado en un recurso administrado por la SageMaker IA.

La siguiente información describe los ajustes de configuración que utiliza el complemento de gobierno de HyperPod tareas para configurar Kueue.

```
  apiVersion: config.kueue.x-k8s.io/v1beta1
    kind: Configuration
    health:
      healthProbeBindAddress: :8081
    metrics:
      bindAddress: :8443
      enableClusterQueueResources: true
    webhook:
      port: 9443
    manageJobsWithoutQueueName: false
    leaderElection:
      leaderElect: true
      resourceName: c1f6bfd2.kueue.x-k8s.io
    controller:
      groupKindConcurrency:
        Job.batch: 5
        Pod: 5
        Workload.kueue.x-k8s.io: 5
        LocalQueue.kueue.x-k8s.io: 1
        ClusterQueue.kueue.x-k8s.io: 1
        ResourceFlavor.kueue.x-k8s.io: 1
    clientConnection:
      qps: 50
      burst: 100
    integrations:
      frameworks:
      - "batch/job"
      - "kubeflow.org/mpijob"
      - "ray.io/rayjob"
      - "ray.io/raycluster"
      - "jobset.x-k8s.io/jobset"
      - "kubeflow.org/mxjob"
      - "kubeflow.org/paddlejob"
      - "kubeflow.org/pytorchjob"
      - "kubeflow.org/tfjob"
      - "kubeflow.org/xgboostjob"
      - "pod"
      - "deployment"
      - "statefulset"
      - "leaderworkerset.x-k8s.io/leaderworkerset"
      podOptions:
        namespaceSelector:
          matchExpressions:
            - key: kubernetes.io/metadata.name
              operator: NotIn
              values: [ kube-system, kueue-system ]
    fairSharing:
      enable: true
      preemptionStrategies: [LessThanOrEqualToFinalShare, LessThanInitialShare]
    resources:
      excludeResourcePrefixes: []
```

Para obtener más información sobre cada configuración, consulte [Configuración](https://kueue.sigs.k8s.io/docs/reference/kueue-config.v1beta1/#Configuration) en la documentación de Kueue.

## HyperPod Requisitos previos de gobierno de tareas
<a name="hp-eks-task-governance-prerequisites"></a>
+ Asegúrese de tener la política de permisos mínimos para los administradores de HyperPod clústeres, en[Usuarios de IAM para la administración de clústeres](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin). Esto incluye los permisos para ejecutar el SageMaker HyperPod núcleo APIs, administrar SageMaker HyperPod los clústeres dentro del Cuenta de AWS suyo y realizar las tareas en él[Administración de SageMaker HyperPod clústeres orquestados por Amazon EKS](sagemaker-hyperpod-eks-operate.md). 
+ Necesitará una versión de Kubernetes >= 1.30. Para obtener instrucciones, consulte [Actualización del clúster existente a la nueva versión de Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html).
+ Si ya tiene Kueue instalado en sus clústeres, desinstale Kueue antes de instalar el complemento EKS.
+ Debe existir ya un HyperPod nodo en el clúster de EKS antes de instalar el complemento de gobierno de HyperPod tareas. 

## HyperPod configuración de gobierno de tareas
<a name="hp-eks-task-governance-setup"></a>

A continuación, se proporciona información sobre cómo configurar la gobernanza de HyperPod tareas.

------
#### [ Setup using the SageMaker AI console ]

A continuación, se proporciona información sobre cómo configurar la gobernanza de HyperPod tareas mediante la SageMaker HyperPod consola.

Si ya ha concedido permisos para gestionar Amazon CloudWatch Observability EKS y ver el panel del HyperPod clúster a través de la consola de SageMaker IA del[HyperPod Configuración del complemento Amazon CloudWatch Observability EKS](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard.md#hp-eks-dashboard-setup). Si no lo ha configurado, utilice el ejemplo de política que se muestra a continuación para conceder permisos que le permitan gestionar el complemento de gobierno de HyperPod tareas y ver el panel del HyperPod clúster a través de la consola de SageMaker IA.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:ListAddons",
                "eks:CreateAddon",
                "eks:UpdateAddon",
                "eks:DescribeAddon",
                "eks:DescribeAddonVersions",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode",
                "sagemaker:ListClusterNodes",
                "sagemaker:ListClusters",
                "eks:DescribeCluster",
                "eks:AccessKubernetesApi"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Ve a la pestaña **Panel** de control de la SageMaker HyperPod consola para instalar el complemento Amazon SageMaker HyperPod Task Governance. 

------
#### [ Setup using the Amazon EKS AWS CLI ]

Utilice el AWS CLI comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/create-addon.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/create-addon.html)EKS de ejemplo para configurar la API Amazon EKS de gobierno de HyperPod tareas y la interfaz de usuario de la consola mediante AWS CLI:

```
aws eks create-addon --region region --cluster-name cluster-name --addon-name amazon-sagemaker-hyperpod-taskgovernance
```

------

Si la instalación se ha realizado correctamente, puede ver la pestaña **Políticas** de la consola de HyperPod SageMaker IA. También puede utilizar el siguiente AWS CLI comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-addon.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-addon.html)EKS de ejemplo para comprobar el estado. 

```
aws eks describe-addon --region region --cluster-name cluster-name --addon-name amazon-sagemaker-hyperpod-taskgovernance
```

# Panel de control
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-metrics"></a>

La gobernanza de SageMaker HyperPod tareas de Amazon proporciona una vista integral en un panel de control de las métricas de uso del clúster de Amazon EKS, incluidas las métricas de hardware, equipo y tareas. A continuación, se proporciona información sobre el panel de control del clúster de HyperPod EKS.

El panel proporciona una vista integral de las métricas de uso del clúster, incluidas las métricas de hardware, equipo y tareas. Deberá instalar el complemento EKS para ver el panel. Para obtener más información, consulte [Configuración del panel](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard.md).

En la [consola de Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/), en **HyperPod Clústeres**, puede navegar hasta la HyperPod consola y ver la lista de HyperPod clústeres de su región. Elija su clúster y vaya a la pestaña **Panel**. El panel contiene las siguientes métricas. Puede descargar los datos de una sección seleccionando la opción **Exportar** correspondiente.

**Uso**

Proporciona el estado del clúster de EKS point-in-time y métricas basadas en tendencias para los recursos informáticos críticos. De forma predeterminada, se muestra **Todos los grupos de instancias**. Utilice el menú desplegable para filtrar los grupos de instancias. Las métricas incluidas en esta sección son:
+ Número de instancias de recuperación totales, en ejecución y pendientes. El número de instancias de recuperación pendientes hace referencia al número de instancias que hay que tener en cuenta para la recuperación.
+ GPUs, memoria GPU, memoria v CPUs y vCPUs .
+ Uso de la GPU, uso de la memoria de la GPU, uso de la vCPU y uso de la memoria de la vCPU.
+ Un gráfico interactivo del uso de la GPU y la vCPU. 

**Equipos**

Proporciona información sobre la administración de recursos específica del equipo. Esto incluye:
+ Asignación de instancias y GPU
+ Tasas de utilización de la GPU
+ Estadísticas de GPU prestadas
+ Estado de la tarea (en ejecución o pendiente)
+ Un gráfico de barras que muestra el uso de la GPU en comparación con la asignación de computación entre los equipos.
+ El equipo ha aportado información relacionada con la GPU y la vCPU. De forma predeterminada, la información que se muestra incluye **Todos los equipos**. Puede filtrar por equipo e instancias seleccionando los menús desplegables. En el gráfico interactivo puede filtrar por tiempo.

**Tareas**

**nota**  
Para ver las tareas del clúster de HyperPod EKS en el panel de control:  
Configure el control de acceso basado en roles (RBAC) de Kubernetes para los usuarios de científicos de datos en el espacio de HyperPod nombres designado para autorizar la ejecución de tareas en clústeres orquestados por Amazon EKS. Los espacios de nombres siguen el formato `hyperpod-ns-team-name`. Para establecer los permisos RBAC, consulte las [instrucciones de creación de roles de equipo](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).
Asegúrese de que el trabajo se envíe con el espacio de nombres y las etiquetas de clase prioritaria adecuados. Para obtener un ejemplo completo, consulte [Envíe un trabajo a una cola y un espacio de nombres SageMaker gestionados por la IA](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md#hp-eks-cli-start-job).

Proporciona información sobre las métricas relacionadas con las tareas. Incluye el número de tareas en ejecución, pendientes y antepuestas, así como las estadísticas de ejecución y tiempo de espera. De forma predeterminada, la información que se muestra incluye **Todos los equipos**. Puede filtrar por equipo seleccionando el menú desplegable. En el gráfico interactivo puede filtrar por tiempo.

# Tareas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-tasks"></a>

A continuación, se proporciona información sobre las tareas del clúster de Amazon SageMaker HyperPod EKS. Las tareas son operaciones o trabajos que se envían al clúster. Pueden ser operaciones de machine learning, como el entrenamiento, la ejecución de experimentos o la inferencia. La lista de detalles de las tareas visibles incluye el estado, el tiempo de ejecución y la cantidad de computación que se utiliza por tarea. 

En la [consola de Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/), en **HyperPod Clústeres**, puede navegar hasta la HyperPod consola y ver la lista de HyperPod clústeres de su región. Elija su clúster y vaya a la pestaña **Tareas**.

Para que cualquier persona que no sea administradora pueda ver la pestaña **Tareas**, el administrador debe [añadir una entrada de acceso al clúster de EKS para el rol de IAM](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html). 

**nota**  
Para ver las tareas del clúster de HyperPod EKS en el panel de control:  
Configure el control de acceso basado en roles (RBAC) de Kubernetes para los usuarios de científicos de datos en el espacio de HyperPod nombres designado para autorizar la ejecución de tareas en clústeres orquestados por Amazon EKS. Los espacios de nombres siguen el formato `hyperpod-ns-team-name`. Para establecer los permisos RBAC, consulte las [instrucciones de creación de roles de equipo](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).
Asegúrese de que el trabajo se envíe con el espacio de nombres y las etiquetas de clase prioritaria adecuados. Para obtener un ejemplo completo, consulte [Envíe un trabajo a una cola y un espacio de nombres SageMaker gestionados por la IA](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md#hp-eks-cli-start-job).

En el caso de los clústeres de EKS, se muestran las tareas de kubeflow (, MPI,). PyTorch TensorFlow De forma predeterminada, se muestran PyTorch las tareas. Puedes filtrar por PyTorch TensorFlow tareas (MPI) seleccionando el menú desplegable o utilizando el campo de búsqueda. De cada tarea se muestra el nombre, el estado, el espacio de nombres, la clase de prioridad y la hora de creación. 

# Uso de la programación basada en la topología en la gobernanza de tareas de Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-tasks-scheduling"></a>

La programación basada en la topología en la gobernanza de SageMaker HyperPod tareas de Amazon optimiza la eficiencia del entrenamiento de las cargas de trabajo de aprendizaje automático distribuidas al colocar los pods en función de la topología de red física de las instancias de Amazon EC2. Al tener en cuenta la estructura jerárquica de la AWS infraestructura, incluidas las zonas de disponibilidad, los bloques de red y los racks físicos, la programación basada en la topología garantiza que los módulos que requieren una comunicación frecuente se programen muy cerca para minimizar la latencia de la red. Esta ubicación inteligente resulta especialmente beneficiosa para los trabajos de formación en aprendizaje automático a gran escala que requieren una pod-to-pod comunicación intensiva, lo que se traduce en una reducción de los tiempos de formación y en una utilización más eficiente de los recursos en todo el clúster.

**nota**  
Para utilizar una programación basada en la topología, asegúrate de que tu versión de la gobernanza de HyperPod tareas sea la v1.2.2-eksbuild.1 o superior.

La programación con reconocimiento de topología admite los siguientes tipos de instancia:
+ ml.p3dn.24xlarge
+ ml.p4d.24xlarge
+ ml.p4de.24xlarge
+ ml.p5.48xlarge
+ ml.p5e.48xlarge
+ ml.p5en.48xlarge
+ ml.p6e-gb200.36xlarge
+ ml.trn1.2xlarge
+ ml.trn1.32xlarge
+ ml.trn1n.32xlarge
+ ml.trn2.48xlarge
+ ml.trn2u.48xlarge

La programación compatible con la topología se integra con sus HyperPod flujos de trabajo existentes y, al mismo tiempo, proporciona preferencias de topología flexibles a través de los archivos YAML de kubectl y la CLI. HyperPod HyperPod La gobernanza de tareas configura automáticamente los nodos del clúster con etiquetas topológicas y funciona con las políticas de gestión de HyperPod tareas y los mecanismos de préstamo de recursos, lo que garantiza que la programación basada en la topología no interrumpa los procesos operativos actuales. Gracias a la compatibilidad integrada con las especificaciones topológicas preferidas y obligatorias, puede refinar la ubicación de las cargas de trabajo para adaptarla a sus requisitos de rendimiento específicos y, al mismo tiempo, mantener la flexibilidad necesaria para recurrir a la programación estándar cuando no se puedan cumplir las limitaciones topológicas.

Al utilizar etiquetas que tienen en cuenta la topología HyperPod, puede mejorar sus cargas de trabajo de aprendizaje automático mediante una colocación inteligente de los módulos que tenga en cuenta la infraestructura física de la red. HyperPod La gestión de tareas optimiza automáticamente la programación de los módulos en función de la topología jerárquica del centro de datos, lo que se traduce directamente en una reducción de la latencia de la red y en un mejor rendimiento de entrenamiento para las tareas de aprendizaje automático distribuidas. Este conocimiento de la topología es especialmente valioso para las cargas de trabajo de machine learning de gran tamaño, ya que minimiza la sobrecarga de comunicación al colocar estratégicamente los pods relacionados más cerca unos de otros en la jerarquía de la red. El resultado es una latencia optimizada de la red de comunicación entre los módulos, una utilización más eficiente de los recursos y un mejor rendimiento general para AI/ML las aplicaciones con un uso intensivo de recursos informáticos, todo ello sin necesidad de gestionar manualmente complejas configuraciones de topología de red.

Las siguientes son etiquetas para las capas de red topológicas disponibles en las que el gobierno de HyperPod tareas puede programar los pods:
+ topology.k8s.aws/ -1 network-node-layer
+ network-node-layertopology.k8s.aws/ -2
+ network-node-layertopology.k8s.aws/ -3
+ topology.k8s.aws/ultraserver-id

Para usar la programación con reconocimiento de topología, debe incluir las siguientes etiquetas en su archivo YAML:
+ kueue.x-k8s.io/podset-required-topology : indica que este trabajo debe tener los pods necesarios y que todos los pods de los nodos deben programarse dentro de la misma capa de topología.
+ kueue.x-k8s.io/podset-preferred-topology : indica que este trabajo debe tener los pods, pero que se prefiere programar los pods dentro de la misma capa de topología, aunque no es obligatorio. HyperPod el gobierno de tareas intentará programar los módulos dentro de una capa antes de probar con la siguiente capa de topología.

Si los recursos no comparten la misma etiqueta de topología, el trabajo se suspenderá. El trabajo estará en la lista de espera. Cuando Kueue vea que hay suficientes recursos, admitirá el trabajo y lo ejecutará.

En el siguiente ejemplo, se muestra cómo utilizar las etiquetas en los archivos YAML:

```
apiVersion: batch/v1
kind: Job
metadata:
  name: test-tas-job
  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:
  parallelism: 10
  completions: 10
  suspend: true
  template:
    metadata:
      labels:
        kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
      annotations:
        kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3"
        or
        kueue.x-k8s.io/podset-preferred-topology: "topology.k8s.aws/network-node-layer-3"
    spec:
      nodeSelector:
        topology.k8s.aws/network-node-layer-3: TOPOLOGY_LABEL_VALUE
      containers:
        - name: dummy-job
          image: gcr.io/k8s-staging-perf-tests/sleep:v0.1.0
          args: ["3600s"]
          resources:
            requests:
              cpu: "100"
      restartPolicy: Never
```

En la siguiente tabla se explican los nuevos parámetros que puede usar en el archivo YAML de kubectl.


| Parámetro | Description (Descripción) | 
| --- | --- | 
| kueue.x-k8s.io/queue-name | Es el nombre de la cola que se utilizará para ejecutar el trabajo. El formato del nombre de esta cola debe ser hyperpod-ns-team-name-localqueue. | 
| kueue.x-k8s.io/priority-class | Permite especificar una prioridad para la programación de los pods. Esta especificación es opcional. | 
| annotations | Contiene la anotación de topología que asocia al trabajo. Las topologías disponibles son kueue.x-k8s.io/ y podset-required-topology kueue.x-k8s.io/. podset-preferred-topology Puede utilizar annotation o nodeSelector, pero no ambos a la vez. | 
| nodeSelector | Especifica la capa de red que representa la capa de ubicación de las instancias de Amazon EC2. Puede utilizar este campo o una anotación, pero no ambos a la vez. En el archivo YAML, también puede usar el parámetro nodeSelector para elegir la capa exacta para sus pods. Para obtener el valor de la etiqueta, usa la operación API. [ DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html) | 

También puede usar la HyperPod CLI para ejecutar su trabajo y usar la programación compatible con la topología. Para obtener más información acerca de la HyperPod CLI, consulte[SageMaker HyperPod Comandos CLI](sagemaker-hyperpod-eks-hyperpod-cli-reference.md).

```
hyp create hyp-pytorch-job \                                            
  --version 1.1 \
  --job-name sample-pytorch-job \
  --image 123456789012.dkr.ecr.us-west-2.amazonaws.com/ptjob:latest \
  --pull-policy "Always" \
  --tasks-per-node 1 \
  --max-retry 1 \
  --priority high-priority \
  --namespace hyperpod-ns-team-name \
  --queue-name hyperpod-ns-team-name-localqueue \
  --preferred-topology-label topology.k8s.aws/network-node-layer-1
```

El siguiente es un ejemplo de archivo de configuración que puede utilizar para ejecutar un archivo PytorchJob con etiquetas topológicas. El archivo es muy similar si desea ejecutar trabajos MPI y Tensorflow. Si desea ejecutar esos trabajos en su lugar, recuerde cambiar el archivo de configuración en consecuencia, por ejemplo, utilizando la imagen correcta en lugar de PyTorchJob. Si está ejecutando un PyTorchJob, puede asignar topologías diferentes a los nodos maestro y trabajador. PyTorchJob siempre tiene un nodo maestro, por lo que le recomendamos que utilice la topología para admitir los módulos de trabajo en su lugar.

```
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
  annotations: {}
  labels:
    kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
  name: tas-test-pytorch-job
  namespace: hyperpod-ns-team-name
spec:
  pytorchReplicaSpecs:
    Master:
      replicas: 1
      restartPolicy: OnFailure
      template:
        metadata:
          labels:
            kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
        spec:
          containers:
          - command:
            - python3
            - /opt/pytorch-mnist/mnist.py
            - --epochs=1
            image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727
            imagePullPolicy: Always
            name: pytorch
    Worker:
      replicas: 10
      restartPolicy: OnFailure
      template:
        metadata:
          # annotations:
            # kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3"
          labels:
            kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
        spec:
          containers:
          - command:
            - python3
            - /opt/pytorch-mnist/mnist.py
            - --epochs=1
            image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727
            imagePullPolicy: Always
            name: pytorch
            resources:
              limits:
                cpu: 1
              requests:
                memory: 200Mi
                cpu: 1
          #nodeSelector:
          #  topology.k8s.aws/network-node-layer-3: xxxxxxxxxxx
```

Para ver las topologías de tu clúster, usa la operación [ DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html)API. De forma predeterminada, las topologías están ocultas en Amazon Studio Consola de administración de AWS y Amazon SageMaker Studio. Siga estos pasos para verlas en la interfaz que está utilizando.

**SageMaker Estudio**

1. En SageMaker Studio, navega hasta tu clúster.

1. En la vista Tareas, seleccione el menú de opciones de la columna Nombre y, a continuación, elija **Administrar columnas**.

1. Seleccione **Topología solicitada** y **Restricción de topología** para añadir las columnas y ver la información de topología en la lista de pods de Kubernetes.

**Consola de administración de AWS**

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

1. En **HyperPod clústeres**, selecciona **Gestión de clústeres**.

1. Elija la pestaña **Tareas** y, a continuación, el icono con forma de engranaje.

1. En los atributos de la instancia, seleccione **Topología solicitada** y **Restricción de topología**.

1. Seleccione **Confirmar** para ver la información de topología en la tabla.

# Políticas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies"></a>

 SageMaker HyperPod La gobernanza de tareas de Amazon simplifica la forma en que se asignan los recursos del clúster de Amazon EKS y la forma en que se priorizan las tareas. A continuación, se proporciona información sobre las políticas de clústeres de HyperPod EKS. Para obtener más información acerca de cómo configurar la gobernanza de tareas, consulte [Configuración de la gobernanza de tareas](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-task-governance.md).

Las políticas se dividen en **Priorización de recursos de computación** y **Asignación de recursos de computación**. Los siguientes conceptos de política se organizarán en el contexto de estas políticas.

La **Priorización de recursos de computación**, o la política de clústeres, determina cómo se toma prestada la computación inactiva y cómo priorizan las tareas los equipos.
+ La **Asignación de recursos de computación** define cómo se asignan los recursos de computación inactivos entre los equipos. Es decir, cómo se pueden tomar prestados los recursos de computación inactivos de los equipos. Al elegir una **Asignación de recursos de computación inactivos**, puede escoger entre:
  + **Se ejecutará por orden de llegada**: cuando se aplica, los equipos no tienen prioridad entre sí y cada tarea entrante tiene la misma probabilidad de obtener recursos que superen la cuota. Las tareas se priorizan en función del orden de envío. Esto significa que un usuario puede utilizar el 100 % de los recursos de computación inactivos si lo solicita primero.
  + **Reparto equitativo**: cuando se aplica, los equipos toman prestada la computación inactiva en función de la **Distribución equitativa del peso**. Estas ponderaciones se definen en **Asignación de recursos de computación**. Para obtener más información sobre cómo se puede usar, consulte [Ejemplos de uso compartido de recursos de computación inactivos](#hp-eks-task-governance-policies-examples).
+ **Priorización de tareas** define cómo se ponen en cola las tareas a medida que el cálculo está disponible. Al elegir **Priorización de tareas**, puede escoger entre:
  + **Se ejecutará por orden de llegada**: cuando se aplican, las tareas se ponen en cola en el orden en que se solicitan.
  + **Clasificación de tareas**: cuando se aplica, las tareas se ponen en cola en el orden definido según su prioridad. Si elige esta opción, debe agregar las clases de prioridad junto con las ponderaciones con las que se deberían priorizar. Las tareas de la misma clase de prioridad se ejecutarán por orden de llegada. Cuando la opción Asignación de recursos de computación está activada, las tareas del equipo de mayor prioridad se anteponen a las tareas de menor prioridad.

    Cuando los científicos de datos envían trabajos al clúster, utilizan el nombre de la clase de prioridad del archivo YAML. La clase de prioridad tiene el formato `priority-class-name-priority`. Para ver un ejemplo, consulta [Envíe un trabajo a una cola y un espacio de nombres SageMaker gestionados por la IA](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md#hp-eks-cli-start-job).
  + **Clases de prioridad**: estas clases establecen una prioridad relativa para las tareas cuando toman prestada la capacidad. Cuando una tarea se ejecuta con una cuota prestada, puede anteponerse a otra tarea de mayor prioridad si no hay más capacidad disponible para la tarea entrante. Si **Preferencia** está activado en **Asignación de recursos de computación**, una tarea de mayor prioridad también puede tener prioridad sobre las tareas de su propio equipo.
+ El **uso compartido de recursos no asignados** permite a los equipos tomar prestados recursos informáticos que no están asignados a ningún equipo a través de la cuota de cálculo. Cuando se habilita, la capacidad del clúster no asignada queda disponible para que los equipos la tomen prestada automáticamente. Para obtener más información, consulte [Cómo funciona el uso compartido de recursos no asignados](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-how-it-works).

**Asignación de recursos de computación**, o cuota de computación, define la asignación de recursos de computación de un equipo y el peso (o nivel de prioridad) que se le asigna a un equipo para repartir equitativamente los recursos de computación inactivos. 
+ **Nombre del equipo**: es el nombre del equipo. Se creará un **espacio de nombres** correspondiente, del tipo `hyperpod-ns-team-name`. 
+ **Miembros**: miembros del espacio de nombres del equipo. Deberá configurar un control de acceso basado en roles (RBAC) de Kubernetes para los usuarios de científicos de datos que desee que formen parte de este equipo, a fin de ejecutar tareas en clústeres organizados con Amazon EKS. HyperPod Para configurar un RBAC de Kubernetes, siga las instrucciones de cómo [crear un rol de equipo](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).
+ **Distribución equitativa del peso**: es el nivel de prioridad asignado al equipo cuando **Reparto equitativo** se aplica a **Asignación de recursos de computación inactivos**. La prioridad más alta tiene una ponderación de 100 y la prioridad más baja de 0. Una mayor ponderación permite al equipo acceder antes a los recursos no utilizados dentro de la capacidad compartida. Una ponderación cero es la prioridad más baja, lo que implica que este equipo siempre estará en desventaja en comparación con otros equipos. 

  Una distribución equitativa del peso proporciona a este equipo ventaja comparativa a la hora de competir por los recursos disponibles contra los demás. La admisión da prioridad a la programación de las tareas de los equipos con mayor ponderación y menor préstamo. Por ejemplo, si el equipo A tiene una ponderación de 10 y el equipo B tiene una ponderación de 5, el equipo A tendría prioridad al acceder a los recursos no utilizados, ya que tendría trabajos programados antes que el equipo B.
+ **Preferencia de tareas**: sustituye a los recursos de computación de una tarea en función de la prioridad. De forma predeterminada, el equipo que presta los recursos de computación inactivos se antepone a las tareas de otros equipos. 
+ **Prestar y pedir prestado**: cómo presta el equipo los recursos de computación inactivos y si el equipo puede pedir prestado a otros equipos.
  + Límite de **préstamo basado en porcentajes: el límite** de cómputo inactivo que un equipo puede tomar prestado, expresado como un porcentaje de su cuota garantizada. Un equipo puede tomar prestado hasta un 10 000% del cómputo asignado. El valor que proporcione aquí se interpreta como porcentaje. Por ejemplo, un valor de 500 se interpreta como 500 %. Este porcentaje se aplica de manera uniforme a todos los tipos de recursos (CPU, GPU, memoria) y tipos de instancias de la cuota del equipo.
  + **Límite de préstamo absoluto**: el límite de procesamiento inactivo que un equipo puede tomar prestado, definido como valores de recursos absolutos por tipo de instancia. Esto proporciona un control pormenorizado sobre el comportamiento de los préstamos para tipos de instancias específicos. Debes especificar los límites absolutos mediante el mismo esquema que la **cuota de cómputo**, que incluye el recuento de instancias, los aceleradores, la vCPU, la memoria o las particiones aceleradoras. Puedes especificar límites absolutos para uno o más tipos de instancias de la cuota de tu equipo.

Para obtener más información sobre cómo se utilizan estos conceptos, como las clases de prioridad y los espacios de nombres, consulte [Ejemplos de comandos de gobierno AWS CLI de HyperPod tareas](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md).

## Ejemplos de uso compartido de recursos de computación inactivos
<a name="hp-eks-task-governance-policies-examples"></a>

La cuota total reservada no debe superar la capacidad disponible del clúster para ese recurso, a fin de garantizar una gestión adecuada de la cuota. Por ejemplo, si un clúster está compuesto por 20 instancias de `ml.c5.2xlarge`, la cuota acumulada asignada a los equipos debe permanecer por debajo de 20. 

Si las políticas **Asignación de recursos de computación** para los equipos permiten **Prestar y pedir prestado** o **Prestar**, la capacidad inactiva se comparte entre esos equipos. Por ejemplo, los equipos A y B tienen habilitada la opción **Prestar y pedir prestado**. El equipo A tiene una cuota de 6, pero solo usa 2 para sus trabajos, mientras que el equipo B tiene una cuota de 5 y usa 4 para sus trabajos. Si se envía un trabajo al equipo B que requiere 4 recursos, tendrá que tomar prestados 3 del equipo A. 

Si la política **Asignación de recursos de computación** se fija en **No prestar**, el equipo no podrá pedir prestada ninguna capacidad adicional aparte de sus propias asignaciones.

## Cómo funciona el uso compartido de recursos no asignados
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-how-it-works"></a>

El uso compartido de recursos no asignados administra automáticamente el conjunto de recursos que no están asignados a ninguna cuota de procesamiento del clúster. Esto significa que supervisa de HyperPod forma continua el estado del clúster y se actualiza automáticamente a la configuración correcta a lo largo del tiempo.

**Configuración inicial**
+ Cuando lo `IdleResourceSharing` configuras `Enabled` en tu ClusterSchedulerConfig (de forma predeterminada es`Disabled`), el gobierno de HyperPod tareas comienza a monitorear tu clúster y calcula los recursos inactivos disponibles restando las cuotas de equipo de la capacidad total de los nodos.
+ Los recursos compartidos no asignados se ClusterQueues crean para representar el fondo de recursos que se pueden pedir prestado.
+ La primera vez que habilita el uso compartido de recursos no asignados, la configuración de la infraestructura tarda varios minutos. Puede supervisar el progreso a través de la política `Status` y dentro de ella`DetailedStatus`. ClusterSchedulerConfig

**Reconciliación continua**
+ HyperPod El gobierno de tareas supervisa continuamente los cambios, como la incorporación o eliminación de nodos y las actualizaciones de las cuotas de colas de clústeres.
+  Cuando se producen cambios, el uso compartido de recursos no asignados recalcula la cuota y las actualiza. ClusterQueues La reconciliación suele completarse en cuestión de segundos. 

**Supervisión**

 Puede comprobar que el uso compartido de recursos no asignados está completamente configurado comprobando si el uso compartido de recursos no asignados es el uso compartido de recursos no asignados: ClusterQueues 

```
kubectl get clusterqueue | grep hyperpod-ns-idle-resource-sharing
```

Cuando aparezca ClusterQueues con nombres como que el uso compartido `hyperpod-ns-idle-resource-sharing-cq-1` de recursos no asignados está activo. Ten en cuenta que es ClusterQueues posible que se compartan varios recursos no asignados en función del número de tipos de recursos del clúster. 

## Aptitud de los nodos para compartir recursos no asignados
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-node-eligibility"></a>

El uso compartido de recursos no localizados solo incluye los nodos que cumplen los siguientes requisitos:

1. **Estado de nodo listo**
   + Los nodos deben estar en `Ready` estado para contribuir al fondo de recursos no asignado.
   + Los nodos `NotReady` u otros estados no preparados se excluyen de los cálculos de capacidad.
   + Cuando un nodo se convierte en nodo`Ready`, se incluye automáticamente en el siguiente ciclo de reconciliación.

1. **Estado programable del nodo**
   + Los nodos con `spec.unschedulable: true` están excluidos del intercambio de recursos no asignados.
   + Cuando un nodo vuelve a ser programable, se incluye automáticamente en el siguiente ciclo de reconciliación.

1. **Configuración MIG (solo nodos de GPU)**
   + En el caso de los nodos de GPU con particiones MIG (GPU de instancias múltiples), la `nvidia.com/mig.config.state` etiqueta debe indicar `success` que el nodo puede contribuir con perfiles MIG al uso compartido de recursos no asignados.
   + Estos nodos se volverán a intentar automáticamente una vez que la configuración de MIG se complete correctamente.

1. **Tipos de instancias compatibles**
   + La instancia debe ser un tipo de SageMaker HyperPod instancia compatible.
   + Consulta la lista de tipos de instancias compatibles en el SageMaker HyperPod clúster.

**Topics**
+ [Ejemplos de uso compartido de recursos de computación inactivos](#hp-eks-task-governance-policies-examples)
+ [Cómo funciona el uso compartido de recursos no asignados](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-how-it-works)
+ [Aptitud de los nodos para compartir recursos no asignados](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-node-eligibility)
+ [Creación de políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-create.md)
+ [Edición de políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit.md)
+ [Eliminación de políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete.md)
+ [Asignación de cuotas de cómputo en la gobernanza de SageMaker HyperPod tareas de Amazon](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation.md)

# Creación de políticas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-create"></a>

Puede crear sus configuraciones de **Política de clústeres** y **Asignación de recursos de computación** en la pestaña **Políticas**. A continuación, se proporcionan instrucciones sobre cómo crear las configuraciones siguientes.
+ Cree su **Política de clústeres** para actualizar la forma en que se priorizan las tareas y se asignan los recursos de computación inactivos.
+ Cree una **Asignación de recursos de computación** para crear una nueva política de asignación de recursos de computación para un equipo.
**nota**  
Al crear una **asignación de cómputo**, necesitará configurar un control de acceso basado en roles (RBAC) de Kubernetes para que los usuarios de científicos de datos en el espacio de nombres correspondiente ejecuten tareas en clústeres organizados con Amazon EKS. HyperPod Los espacios de nombres tienen el formato `hyperpod-ns-team-name`. Para configurar un RBAC de Kubernetes, siga las instrucciones de cómo [crear un rol de equipo](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).

Para obtener información sobre los conceptos de la política de clústeres de EKS sobre la gobernanza de tareas, consulte. HyperPod [Políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md)

**Cree políticas de gobierno de HyperPod tareas**

En este procedimiento se presupone que ya ha creado un clúster de Amazon EKS configurado con HyperPod. Si aún no lo ha hecho, consulte [Creación de un SageMaker HyperPod clúster con la orquestación de Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md).

1. Navega hasta la [consola Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. En el panel de navegación izquierdo, en **HyperPodClústeres**, selecciona **Administración de clústeres**.

1. Elija su clúster de Amazon EKS que aparece en **SageMaker HyperPodclústeres**.

1. Elija la pestaña **Policies**.

1. Para crear su **Política de clústeres**, debe hacer lo siguiente:

   1. Elija la opción **Editar** correspondiente para actualizar la forma en que se priorizan las tareas y se asignan los recursos de computación inactivos.

   1. Después de hacer los cambios, elija **Enviar**.

1. Para crear una **Asignación de recursos de computación**:

1. 

   1. Elija la opción **Crear** correspondiente. Esto le llevará a la página de creación de asignaciones de recursos de computación.

   1. Después de hacer los cambios, elija **Enviar**.

# Edición de políticas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit"></a>

Puede editar sus configuraciones de **Política de clústeres** y **Asignación de recursos de computación** en la pestaña **Políticas**. A continuación, se proporcionan instrucciones sobre cómo editar las configuraciones siguientes.
+ Edite su **Política de clústeres** para actualizar la forma en que se priorizan las tareas y se asignan los recursos de computación inactivos.
+ Edite una **Asignación de recursos de computación** para crear una nueva política de asignación de recursos de computación para un equipo.
**nota**  
Al crear una **asignación de cómputo**, necesitará configurar un control de acceso basado en roles (RBAC) de Kubernetes para que los usuarios de científicos de datos en el espacio de nombres correspondiente ejecuten tareas en clústeres organizados con Amazon EKS. HyperPod Los espacios de nombres tienen el formato `hyperpod-ns-team-name`. Para configurar un RBAC de Kubernetes, siga las instrucciones de cómo [crear un rol de equipo](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).

Para obtener más información sobre los conceptos de la política de clústeres de EKS sobre la gobernanza de tareas, consulte. HyperPod [Políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md)

**Edite las políticas de gobierno de HyperPod tareas**

En este procedimiento se presupone que ya ha creado un clúster de Amazon EKS configurado con HyperPod. Si aún no lo ha hecho, consulte [Creación de un SageMaker HyperPod clúster con la orquestación de Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md).

1. Navega hasta la [consola Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. En el panel de navegación izquierdo, en **HyperPodClústeres**, selecciona **Administración de clústeres**.

1. Elija su clúster de Amazon EKS que aparece en **SageMaker HyperPodclústeres**.

1. Elija la pestaña **Policies**.

1. Para editar su **Política de clústeres**:

   1. Elija la opción **Editar** correspondiente para actualizar la forma en que se priorizan las tareas y se asignan los recursos de computación inactivos.

   1. Después de hacer los cambios, elija **Enviar**.

1. Para editar la **Asignación de recursos de computación**:

1. 

   1. Elija la configuración que desee editar en **Asignación de recursos de computación**. Esto te lleva a la página de detalles de la configuración.

   1. Si desea editar estas configuraciones, elija **Editar**.

   1. Después de hacer los cambios, elija **Enviar**.

# Eliminación de políticas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete"></a>

Puede eliminar sus configuraciones de **política de clúster** y **asignación de cómputo** mediante la consola de SageMaker IA o AWS CLI. En la página siguiente, se proporcionan instrucciones sobre cómo eliminar las políticas y configuraciones de gobierno de las SageMaker HyperPod tareas.

Para obtener más información sobre los conceptos de la política de clústeres EKS de gobierno de HyperPod tareas, consulte[Políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md).

**nota**  
Si tiene problemas para enumerar o eliminar las políticas de gobernanza de tareas, es posible que deba actualizar el conjunto mínimo de permisos del administrador del clúster. Consulte la pestaña **Amazon EKS** en la sección [Usuarios de IAM para la administración de clústeres](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin). Para obtener información adicional, consulta [Eliminación de clústeres](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md#hp-eks-troubleshoot-delete-policies).

## Eliminar las políticas de gobierno de HyperPod tareas (consola)
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete-console"></a>

A continuación, se utiliza la consola de SageMaker IA para eliminar las políticas de gobierno de las HyperPod tareas.

**nota**  
No puedes eliminar tu **política de clúster** (`ClusterSchedulerConfig`) mediante la consola de SageMaker IA. Para obtener información sobre cómo hacerlo con AWS CLI, consulte[Elimine las políticas de gobierno de HyperPod tareas (AWS CLI)](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete-cli).

**Cómo eliminar políticas de gobernanza de tareas (consola)**

1. Navega hasta la [consola Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. En el panel de navegación izquierdo, en **HyperPodClústeres**, selecciona **Administración de clústeres**.

1. Elija su clúster de Amazon EKS que aparece en **SageMaker HyperPodclústeres**.

1. Elija la pestaña **Policies**.

1. Para eliminar su **Asignación de recursos de computación** (`ComputeQuota`):

   1. En la sección **Asignación de recursos de computación**, seleccione la configuración que desea eliminar.

   1. En el menú desplegable **Acciones**, elija **Eliminar**.

   1. Siga las instrucciones de la interfaz de usuario para completar la tarea.

## Elimine las políticas de gobierno de HyperPod tareas (AWS CLI)
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete-cli"></a>

A continuación, se utilizan AWS CLI para eliminar las políticas de gobierno de HyperPod tareas.

**nota**  
Si tiene problemas para utilizar los siguientes comandos, es posible que deba actualizar su AWS CLI. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Cómo eliminar políticas de gobernanza de tareas (AWS CLI)**

Primero configura tus variables para los AWS CLI comandos siguientes.

```
REGION=aws-region
```

1. Obtenga las políticas *cluster-arn* asociadas a las que desee eliminar. Puede usar el siguiente AWS CLI comando para enumerar los clústeres de su Región de AWS.

   ```
   aws sagemaker list-clusters \
       --region ${REGION}
   ```

1. Para eliminar sus asignaciones de recursos de computación (`ComputeQuota`):

   1. Enumere todas las cuotas de procesamiento asociadas al HyperPod clúster.

      ```
      aws sagemaker list-compute-quotas \
          --cluster-arn cluster-arn \
          --region ${REGION}
      ```

   1. Para eliminar cada `compute-quota-id` que desee eliminar, ejecute el siguiente comando para eliminar la cuota de computación.

      ```
      aws sagemaker delete-compute-quota \
          --compute-quota-id compute-quota-id \
          --region ${REGION}
      ```

1. Para eliminar las políticas de clústeres (`ClusterSchedulerConfig`):

   1. Enumera todas las políticas de clúster asociadas al HyperPod clúster.

      ```
      aws sagemaker list-cluster-scheduler-configs \
          --cluster-arn cluster-arn \
          --region ${REGION}
      ```

   1. Para eliminar cada `cluster-scheduler-config-id` que desee eliminar, ejecute el siguiente comando para eliminar la cuota de computación.

      ```
      aws sagemaker delete-cluster-scheduler-config 
          --cluster-scheduler-config-id scheduler-config-id \
          --region ${REGION}
      ```

# Asignación de cuotas de cómputo en la gobernanza de SageMaker HyperPod tareas de Amazon
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation"></a>

Los administradores de clústeres pueden decidir cómo utiliza la organización los recursos de computación adquiridos. De este modo, se reducen los residuos y los recursos inactivos. Puede asignar una cuota de computación de forma que los equipos puedan tomar prestados los recursos no utilizados entre ellos. La asignación de cuotas de cómputo en la gobernanza de HyperPod tareas permite a los administradores asignar los recursos a nivel de instancia y a un nivel de recursos más detallado. Esta capacidad resulta en una administración de recursos flexible y eficiente para los equipos, ya que permite un control detallado de los recursos de computación individuales en lugar de requerir la asignación de instancias completas. La asignación más detallada elimina las ineficiencias de la asignación tradicional en la instancia. Con este enfoque, puede optimizar la utilización de los recursos y reducir la computación inactiva.

La asignación de cuotas de computación admite tres tipos de asignación de recursos: aceleradores, vCPU y memoria. Los aceleradores son componentes de las instancias de computación aceleradas que realizan funciones, como cálculos numéricos de coma flotante, procesamiento de gráficos o coincidencia de patrones de datos. Los aceleradores incluyen GPUs los aceleradores Trainium y los núcleos neuronales. Para compartir GPU entre varios equipos, distintos equipos pueden recibir asignaciones de GPU específicas del mismo tipo de instancia, lo que maximiza el uso del hardware del acelerador. Para cargas de trabajo con uso intensivo de memoria que requieren RAM adicional para el preprocesamiento de datos o escenarios de almacenamiento en caché de modelos, puede asignar una cuota de memoria superior a la proporción predeterminada. GPU-to-memory Para las tareas de preprocesamiento que requieren un uso intensivo de la CPU y que requieren una cantidad considerable de recursos de la CPU junto con el entrenamiento de la GPU, puede asignar recursos de CPU independientes.

Una vez que proporciones un valor, el gobierno de HyperPod tareas calcula la proporción mediante la fórmula: **recurso asignado dividido por la cantidad total de recursos disponibles** en la instancia. HyperPod A continuación, el gobierno de tareas utiliza esta proporción para aplicar las asignaciones predeterminadas a otros recursos, pero puedes anular estos valores predeterminados y personalizarlos en función de tu caso de uso. Los siguientes son ejemplos de escenarios de cómo la gobernanza de HyperPod tareas asigna los recursos en función de sus valores:
+ **Solo se especificó el acelerador**: el gobierno de HyperPod tareas aplica la relación predeterminada a la vCPU y la memoria en función de los valores del acelerador.
+ **Solo se especificó la vCPU: el** gobierno de HyperPod tareas calcula la proporción y la aplica a la memoria. Los aceleradores se establecen en 0.
+ **Solo se especifica la memoria**: el gobierno de HyperPod tareas calcula la proporción y la aplica a la vCPU, ya que se requiere computación para ejecutar cargas de trabajo especificadas en memoria. Los aceleradores se establecen en 0.

Para controlar mediante programación la asignación de cuotas, puedes usar el [ ComputeQuotaResourceConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ComputeQuotaResourceConfig.html)objeto y especificar tus asignaciones en números enteros.

```
{
    "ComputeQuotaConfig": {
        "ComputeQuotaResources": [{
            "InstanceType": "ml.g5.24xlarge",
            "Accelerators": "16",
            "vCpu": "200.0",
            "MemoryInGiB": "2.0"
        }]
    }
}
```

Para ver todas las asignaciones asignadas, incluidas las predeterminadas, utilice la operación. [ DescribeComputeQuota](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeComputeQuota.html) Para actualizar las asignaciones, utilice la operación. [ UpdateComputeQuota](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateComputeQuota.html)

También puede usar la HyperPod CLI para asignar cuotas de cómputo. Para obtener más información acerca de la HyperPod CLI, consulte[Ejecución de tareas en SageMaker HyperPod clústeres orquestados por Amazon EKS](sagemaker-hyperpod-eks-run-jobs.md). En el siguiente ejemplo, se muestra cómo establecer las cuotas de cómputo mediante la HyperPod CLI.

```
hyp create hyp-pytorch-job --version 1.1 --job-name sample-job \
--image 123456789012.dkr.ecr.us-west-2.amazonaws.com/ptjob:latest \
--pull-policy "Always" \
--tasks-per-node 1 \
--max-retry 1 \
--priority high-priority \
--namespace hyperpod-ns-team-name \
--queue-name hyperpod-ns-team-name-localqueue \
--instance-type sample-instance-type \
--accelerators 1 \
--vcpu 3 \
--memory 1 \
--accelerators-limit 1 \
--vcpu-limit 4 \
--memory-limit 2
```

Para asignar las cuotas mediante la AWS consola, sigue estos pasos.

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

1. En HyperPod clústeres, selecciona **Gestión de clústeres**.

1. En **Asignaciones de recursos de computación**, elija **Crear**.

1. Si aún no tiene instancias, elija **Agregar asignación** para agregar una instancia.

1. En **Asignaciones**, elija asignar por instancias o por recursos individuales. Si asignas por recursos individuales, la SageMaker IA asigna automáticamente las asignaciones a otros recursos según la proporción que elijas. Para anular esta asignación basada en proporciones, utilice el conmutador correspondiente para anular la computación.

1. Repita los pasos 4 y 5 para configurar instancias adicionales.

Después de asignar la cuota de cómputo, puede enviar los trabajos a través de la HyperPod CLI o`kubectl`. HyperPodprograma las cargas de trabajo de manera eficiente en función de la cuota disponible. 

# Asignación de la cuota de particiones de la GPU
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation-gpu-partitions"></a>

Puede ampliar la asignación de cuotas de cómputo para admitir la partición de la GPU, lo que permite compartir recursos de forma pormenorizada a nivel de partición de la GPU. Cuando la partición de la GPU está habilitada o es compatible con GPUs el clúster, cada GPU física se puede dividir en varias GPU aisladas GPUs con asignaciones definidas de procesamiento, memoria y multiprocesador de streaming. Para obtener más información sobre la partición de la GPU, consulte. [Uso de particiones de GPU en Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md) Puede asignar particiones de GPU específicas a los equipos, lo que permite que varios equipos compartan una sola GPU y, al mismo tiempo, mantenga el aislamiento a nivel de hardware y un rendimiento predecible.

Por ejemplo, una instancia ml.p5.48xlarge con 8 H100 se puede particionar en particiones de GPU, y GPUs puedes asignar particiones individuales a diferentes equipos en función de sus requisitos de tareas. Al especificar las asignaciones de particiones de GPU, el gobierno de HyperPod tareas calcula las cuotas proporcionales de vCPU y memoria en función de la partición de GPU, de forma similar a la asignación a nivel de GPU. Este enfoque maximiza el uso de la GPU, ya que elimina la capacidad inactiva y permite compartir recursos de forma rentable entre varias tareas simultáneas en la misma GPU física.

## Creación de cuotas de cómputo
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation-gpu-partitions-creating"></a>

```
aws sagemaker create-compute-quota \
  --name "fractional-gpu-quota" \
  --compute-quota-config '{
    "ComputeQuotaResources": [
      {
        "InstanceType": "ml.p4d.24xlarge",
        "AcceleratorPartition": {
            "Count": 4,
            "Type": "mig-1g.5gb"
        }
      }
    ],
    "ResourceSharingConfig": { 
      "Strategy": "LendAndBorrow", 
      "BorrowLimit": 100 
    }
  }'
```

## Verificación de los recursos de cuotas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation-gpu-partitions-verifying"></a>

```
# Check ClusterQueue
kubectl get clusterqueues
kubectl describe clusterqueue QUEUE_NAME

# Check ResourceFlavors
kubectl get resourceflavor
kubectl describe resourceflavor FLAVOR_NAME
```

# Ejemplos de comandos de gobierno AWS CLI de HyperPod tareas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-cli"></a>

Puede usarlo HyperPod con EKS a través de Kubectl o mediante una CLI personalizada HyperPod. Puede utilizar estos comandos a través de Studio o. AWS CLI A continuación, se proporcionan ejemplos de gobierno de SageMaker HyperPod tareas sobre cómo ver los detalles del clúster mediante los HyperPod AWS CLI comandos. Para obtener más información, incluida la forma de instalación, consulte el [repositorio HyperPod CLI de Github](https://github.com/aws/sagemaker-hyperpod-cli).

**Topics**
+ [Obtención de información sobre la cuota de dispositivos aceleradores de clústeres](#hp-eks-cli-get-clusters)
+ [Envíe un trabajo a una cola y un espacio de nombres SageMaker gestionados por la IA](#hp-eks-cli-start-job)
+ [Enumeración de trabajos](#hp-eks-cli-list-jobs)
+ [Obtención de información detallada sobre un trabajo](#hp-eks-cli-get-job)
+ [Suspensión y anulación de la suspensión de trabajos](#hp-eks-cli-patch-job)
+ [Trabajos de depuración](#hp-eks-cli-other)

## Obtención de información sobre la cuota de dispositivos aceleradores de clústeres
<a name="hp-eks-cli-get-clusters"></a>

El siguiente comando de ejemplo obtiene la información sobre la cuota de dispositivos aceleradores de clústeres.

```
hyperpod get-clusters -n hyperpod-ns-test-team
```

El espacio de nombres de este ejemplo, `hyperpod-ns-test-team`, se crea en Kubernetes en función del nombre del equipo proporcionado al crear la asignación de recursos de computación `test-team`. Para obtener más información, consulte [Edición de políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit.md).

Ejemplo de respuesta:

```
[
    {
        "Cluster": "hyperpod-eks-test-cluster-id",
        "InstanceType": "ml.g5.xlarge",
        "TotalNodes": 2,
        "AcceleratorDevicesAvailable": 1,
        "NodeHealthStatus=Schedulable": 2,
        "DeepHealthCheckStatus=Passed": "N/A",
        "Namespaces": {
            "hyperpod-ns-test-team": {
                "TotalAcceleratorDevices": 1,
                "AvailableAcceleratorDevices": 1
            }
        }
    }
]
```

## Envíe un trabajo a una cola y un espacio de nombres SageMaker gestionados por la IA
<a name="hp-eks-cli-start-job"></a>

El siguiente comando de ejemplo envía un trabajo a tu clúster. HyperPod Si solo tienes acceso a un equipo, en ese caso te HyperPod AWS CLI asignarán automáticamente la cola. De lo contrario, si se descubren varias colas, le mostraremos todas las opciones posibles para que las seleccione.

```
hyperpod start-job --job-name hyperpod-cli-test --job-kind kubeflow/PyTorchJob --image docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd --entry-script /opt/pytorch-mnist/mnist.py --pull-policy IfNotPresent --instance-type ml.g5.xlarge --node-count 1 --tasks-per-node 1 --results-dir ./result --priority training-priority
```

Las clases de prioridad se definen en la **Política de clústeres**, que indica cómo se priorizan las tareas y cómo se asignan los recursos computacionales inactivos. Cuando un científico de datos envía un trabajo, utiliza uno de los nombres de las clases de prioridad con el formato `priority-class-name-priority`. En este ejemplo, `training-priority` hace referencia a la clase de prioridad denominada “training”. Para obtener más información sobre los conceptos de las políticas, consulte [Políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md).

Si no se especifica ninguna clase de prioridad, el trabajo se trata como un trabajo de prioridad baja con un valor de clasificación de tareas de 0. 

Si se especifica una clase de prioridad, pero no se corresponde con ninguna de las clases de prioridad definidas en la **Política de clústeres**, el envío no se realizará correctamente y aparecerá un mensaje de error con el conjunto definido de clases de prioridad.

También puede enviar el trabajo con un archivo de configuración YAML con el siguiente comando: 

```
hyperpod start-job --config-file ./yaml-configuration-file-name.yaml
```

El siguiente es un ejemplo de un archivo de configuración YAML que equivale a enviar un trabajo, tal y como se ha descrito anteriormente.

```
defaults:
  - override hydra/job_logging: stdout
hydra:
  run:
    dir: .
  output_subdir: null
training_cfg:
  entry_script: /opt/pytorch-mnist/mnist.py
  script_args: []
  run:
    name: hyperpod-cli-test
    nodes: 1
    ntasks_per_node: 1
cluster:
  cluster_type: k8s
  instance_type: ml.g5.xlarge
  custom_labels:
    kueue.x-k8s.io/priority-class: training-priority
  cluster_config:
    label_selector:
      required:
        sagemaker.amazonaws.com/node-health-status:
          - Schedulable
      preferred:
        sagemaker.amazonaws.com/deep-health-check-status:
          - Passed
      weights:
        - 100
    pullPolicy: IfNotPresent
base_results_dir: ./result
container: docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd
env_vars:
  NCCL_DEBUG: INFO
```

Como alternativa, puede enviar un trabajo utilizando `kubectl` para asegurarse de que la tarea aparezca en la pestaña **Panel**. A continuación se muestra un comando kubectl de ejemplo.

```
kubectl apply -f ./yaml-configuration-file-name.yaml
```

Al enviar el trabajo, incluya el nombre de la cola y las etiquetas de clase de prioridad. Por ejemplo, con el nombre de la cola `hyperpod-ns-team-name-localqueue` y la clase de prioridad `priority-class-name-priority`, debe incluir las siguientes etiquetas:
+ `kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue` 
+ `kueue.x-k8s.io/priority-class: priority-class-name-priority`

En el siguiente fragmento de configuración de YAML, se muestra cómo añadir etiquetas al archivo de configuración original para garantizar que la tarea aparezca en la pestaña **Panel**:

```
metadata:
    name: job-name
    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-name-priority
```

## Enumeración de trabajos
<a name="hp-eks-cli-list-jobs"></a>

El siguiente comando enumera los trabajos y sus detalles.

```
hyperpod list-jobs
```

Ejemplo de respuesta:

```
{
    "jobs": [
        {
            "Name": "hyperpod-cli-test",
            "Namespace": "hyperpod-ns-test-team",
            "CreationTime": "2024-11-18T21:21:15Z",
            "Priority": "training",
            "State": "Succeeded"
        }
    ]
}
```

## Obtención de información detallada sobre un trabajo
<a name="hp-eks-cli-get-job"></a>

El siguiente comando proporciona los detalles de un trabajo. Si no se especifica ningún espacio de nombres, HyperPod AWS CLI buscará un espacio de nombres gestionado por la SageMaker IA al que tengas acceso.

```
hyperpod get-job --job-name hyperpod-cli-test
```

Ejemplo de respuesta:

```
{
    "Name": "hyperpod-cli-test",
    "Namespace": "hyperpod-ns-test-team",
    "Label": {
        "app": "hyperpod-cli-test",
        "app.kubernetes.io/managed-by": "Helm",
        "kueue.x-k8s.io/priority-class": "training"
    },
    "CreationTimestamp": "2024-11-18T21:21:15Z",
    "Status": {
        "completionTime": "2024-11-18T21:25:24Z",
        "conditions": [
            {
                "lastTransitionTime": "2024-11-18T21:21:15Z",
                "lastUpdateTime": "2024-11-18T21:21:15Z",
                "message": "PyTorchJob hyperpod-cli-test is created.",
                "reason": "PyTorchJobCreated",
                "status": "True",
                "type": "Created"
            },
            {
                "lastTransitionTime": "2024-11-18T21:21:17Z",
                "lastUpdateTime": "2024-11-18T21:21:17Z",
                "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test is running.",
                "reason": "PyTorchJobRunning",
                "status": "False",
                "type": "Running"
            },
            {
                "lastTransitionTime": "2024-11-18T21:25:24Z",
                "lastUpdateTime": "2024-11-18T21:25:24Z",
                "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test successfully completed.",
                "reason": "PyTorchJobSucceeded",
                "status": "True",
                "type": "Succeeded"
            }
        ],
            "replicaStatuses": {
                "Worker": {
                    "selector": "training.kubeflow.org/job-name=hyperpod-cli-test,training.kubeflow.org/operator-name=pytorchjob-controller,training.kubeflow.org/replica-type=worker",
                    "succeeded": 1
                }
            },
        "startTime": "2024-11-18T21:21:15Z"
    },
    "ConsoleURL": "https://us-west-2.console.aws.amazon.com/sagemaker/home?region=us-west-2#/cluster-management/hyperpod-eks-test-cluster-id“
}
```

## Suspensión y anulación de la suspensión de trabajos
<a name="hp-eks-cli-patch-job"></a>

Si quieres eliminar algún trabajo enviado del planificador, HyperPod AWS CLI proporciona un `suspend` comando para eliminar temporalmente el trabajo de la organización. El trabajo suspendido ya no se programará a menos que el comando anule la suspensión del trabajo manualmente con el comando de la `unsuspend`.

Para suspender temporalmente un trabajo:

```
hyperpod patch-job suspend --job-name hyperpod-cli-test
```

Para volver a añadir un trabajo a la cola:

```
hyperpod patch-job unsuspend --job-name hyperpod-cli-test
```

## Trabajos de depuración
<a name="hp-eks-cli-other"></a>

 HyperPod AWS CLI También proporciona otros comandos para depurar los problemas de envío de trabajos. Por ejemplo, `list-pods` y `get-logs` en el repositorio de HyperPod AWS CLI Github.

# Solución de problemas
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot"></a>

La siguiente página contiene soluciones conocidas para solucionar problemas de sus clústeres de HyperPod EKS.

**Topics**
+ [Pestaña Panel](#hp-eks-troubleshoot-dashboard)
+ [Pestaña Tareas](#hp-eks-troubleshoot-tasks)
+ [Políticas](#hp-eks-troubleshoot-policies)
+ [Eliminación de clústeres](#hp-eks-troubleshoot-delete-policies)
+ [Uso compartido de recursos no asignados](#hp-eks-troubleshoot-unallocated-resource-sharing)

## Pestaña Panel
<a name="hp-eks-troubleshoot-dashboard"></a>

**El complemento de EKS no se instala**

Para que la instalación del complemento de EKS se realice correctamente, necesita una versión de Kubernets >= 1.30. Para actualizar, consulte [Actualización del clúster existente a la nueva versión de Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html).

Para que la instalación del complemento de EKS se realice correctamente, todos los nodos deben tener el estado **Listo** y todos los pods deben tener el estado **En ejecución**. 

Para comprobar el estado de los nodos, utilice el [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html) AWS CLI comando o navegue hasta el clúster de EKS en la [consola de EKS](https://console.aws.amazon.com/eks/home#/clusters) y consulte el estado de los nodos. Resuelva el problema de cada nodo o póngase en contacto con su administrador. Si el estado del nodo es **Desconocido**, elimínelo. Cuando todos los estados de los nodos estén **listos**, vuelva a intentar instalar el complemento EKS HyperPod desde la consola [Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

Para comprobar el estado de los pods, utilice el comando `kubectl get pods -n cloudwatch-agent` [de la CLI de Kubernetes](https://kubernetes.io/docs/reference/kubectl/) o navegue hasta el clúster de EKS en la [consola de EKS](https://console.aws.amazon.com/eks/home#/clusters) y consulte el estado de los pods con el espacio de nombres `cloudwatch-agent`. Resuelve el problema de los pods o contacte con su administrador para resolverlo. Cuando todos los estados de los pods estén en **ejecución**, vuelve a intentar instalar el complemento EKS HyperPod desde la consola [Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

Para obtener más información sobre la solución de problemas, consulte [Solución de problemas del complemento Amazon CloudWatch Observability EKS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html#Container-Insights-setup-EKS-addon-troubleshoot).

## Pestaña Tareas
<a name="hp-eks-troubleshoot-tasks"></a>

Si aparece un mensaje de error que indica que la **definición de recurso personalizada (CRD) no está configurada en el clúster**, asígnele las políticas `EKSAdminViewPolicy` y `ClusterAccessRole` a su rol de ejecución de dominio. 
+ Para obtener información sobre cómo obtener el rol de ejecución, consulte [Obtención del rol de ejecución](sagemaker-roles.md#sagemaker-roles-get-execution-role).
+ Para obtener más información acerca de cómo asociar políticas a un grupo o usuario de IAM, consulte [Adición y eliminación de permisos de identidad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

## Políticas
<a name="hp-eks-troubleshoot-policies"></a>

A continuación se enumeran las soluciones a los errores relacionados con las políticas que utilizan la consola HyperPod APIs o.
+ Si la política tiene los estados `CreateFailed` o `CreateRollbackFailed`, deberá eliminar la política fallida y crear una nueva.
+ Si la política tiene el estado `UpdateFailed`, vuelva a intentar la actualización con el mismo ARN de política.
+ Si la política tiene el estado `UpdateRollbackFailed`, deberá eliminar la política fallida y crear una nueva.
+ Si la política tiene los estados `DeleteFailed` y `DeleteRollbackFailed`, vuelva a intentar la eliminación con el mismo ARN de política.
  + Si se ha producido un error al intentar eliminar la política de clústeres o de **priorización de procesamiento** mediante la HyperPod consola, intente eliminarla `cluster-scheduler-config` mediante la API. Para comprobar el estado del recurso, vaya a la página de detalles de una asignación de recursos de computación.

Para ver más detalles sobre el error, usa la API de descripción.

## Eliminación de clústeres
<a name="hp-eks-troubleshoot-delete-policies"></a>

A continuación se enumeran las soluciones conocidas a los errores relacionados con la eliminación de clústeres.
+ Si se produce un error al eliminar un clúster debido a las políticas de control de SageMaker HyperPod tareas adjuntas, tendrás que hacerlo[Eliminación de políticas](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete.md).
+ Si se produce un error al eliminar el clúster debido a la falta de los siguientes permisos, tendrá que actualizar el conjunto mínimo de permisos del administrador del clúster. Consulte la pestaña **Amazon EKS** en la sección [Usuarios de IAM para la administración de clústeres](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin).
  + `sagemaker:ListComputeQuotas`
  + `sagemaker:ListClusterSchedulerConfig`
  + `sagemaker:DeleteComputeQuota`
  + `sagemaker:DeleteClusterSchedulerConfig`

## Uso compartido de recursos no asignados
<a name="hp-eks-troubleshoot-unallocated-resource-sharing"></a>

Si la capacidad de su fondo de recursos no asignado es inferior a la esperada:

1. **Compruebe el estado del nodo listo**

   ```
   kubectl get nodes
   ```

   Compruebe que todos los nodos muestren `Ready` su estado en la columna STATUS.

1. **Compruebe el estado programable del nodo**

   ```
   kubectl get nodes -o custom-columns=NAME:.metadata.name,UNSCHEDULABLE:.spec.unschedulable
   ```

   Compruebe si los nodos se muestran `<none>` o `false` no`true`.

1. **Listar el uso compartido ClusterQueues de recursos no asignados:**

   ```
   kubectl get clusterqueue | grep hyperpod-ns-idle-resource-sharing
   ```

   Muestra todos los recursos compartidos no asignados. ClusterQueues Si no ClusterQueues aparecen, compruebe la `FailureReason` siguiente ClusterSchedulerConfig política para ver si hay algún mensaje de error para continuar con la depuración.

1. **Compruebe la cuota de uso compartido de recursos no asignada:**

   ```
   kubectl describe clusterqueue hyperpod-ns-idle-resource-sharing-<index>
   ```

   Consulte la `spec.resourceGroups[].flavors[].resources` sección para ver la cuota asignada a cada tipo de recurso.

    ClusterQueues Es posible que se compartan varios recursos no asignados en función del número de tipos de recursos del clúster. 

1. **Compruebe el estado de la configuración de MIG (nodos de GPU):**

   ```
   kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.nvidia\.com/mig\.config\.state}{"\n"}{end}'
   ```

   Compruebe que los nodos habilitados para MIG muestren su estado. `success`

# Documento de atribución para la gobernanza de SageMaker HyperPod tareas de Amazon
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-attributions"></a>

A continuación, puedes obtener información sobre las atribuciones y las licencias de terceros para el material utilizado en la gobernanza de SageMaker HyperPod tareas de Amazon.

**Topics**
+ [[base-files](https://packages.debian.org/bookworm/base-files)](#hp-eks-task-governance-attributions-base-files)
+ [[netbase](https://packages.debian.org/source/stable/netbase)](#hp-eks-task-governance-attributions-netbase)
+ [[golang-lru](https://github.com/hashicorp/golang-lru)](#hp-eks-task-governance-attributions-golang-lru)

## [base-files](https://packages.debian.org/bookworm/base-files)
<a name="hp-eks-task-governance-attributions-base-files"></a>

```
This is the Debian prepackaged version of the Debian Base System
Miscellaneous files. These files were written by Ian Murdock
<imurdock@debian.org> and Bruce Perens <bruce@pixar.com>.

This package was first put together by Bruce Perens <Bruce@Pixar.com>,
from his own sources.

The GNU Public Licenses in /usr/share/common-licenses were taken from
ftp.gnu.org and are copyrighted by the Free Software Foundation, Inc.

The Artistic License in /usr/share/common-licenses is the one coming
from Perl and its SPDX name is "Artistic License 1.0 (Perl)".


Copyright © 1995-2011 Software in the Public Interest.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.
```

## [netbase](https://packages.debian.org/source/stable/netbase)
<a name="hp-eks-task-governance-attributions-netbase"></a>

```
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Comment:
 This package was created by Peter Tobias tobias@et-inf.fho-emden.de on
 Wed, 24 Aug 1994 21:33:28 +0200 and maintained by Anthony Towns
 <ajt@debian.org> until 2001.
 It is currently maintained by Marco d'Itri <md@linux.it>.

Files: *
Copyright:
 Copyright © 1994-1998 Peter Tobias
 Copyright © 1998-2001 Anthony Towns
 Copyright © 2002-2022 Marco d'Itri
License: GPL-2
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License, version 2, as
 published by the Free Software Foundation.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License along
 with this program; if not, write to the Free Software Foundation,
 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 .
 On Debian systems, the complete text of the GNU General Public License
 version 2 can be found in '/usr/share/common-licenses/GPL-2'.
```

## [golang-lru](https://github.com/hashicorp/golang-lru)
<a name="hp-eks-task-governance-attributions-golang-lru"></a>

```
Copyright © 2014 HashiCorp, Inc.

Mozilla Public License, version 2.0

1. Definitions

1.1. "Contributor"

     means each individual or legal entity that creates, contributes to the
     creation of, or owns Covered Software.

1.2. "Contributor Version"

     means the combination of the Contributions of others (if any) used by a
     Contributor and that particular Contributor's Contribution.

1.3. "Contribution"

     means Covered Software of a particular Contributor.

1.4. "Covered Software"

     means Source Code Form to which the initial Contributor has attached the
     notice in Exhibit A, the Executable Form of such Source Code Form, and
     Modifications of such Source Code Form, in each case including portions
     thereof.

1.5. "Incompatible With Secondary Licenses"
     means

     a. that the initial Contributor has attached the notice described in
        Exhibit B to the Covered Software; or

     b. that the Covered Software was made available under the terms of
        version 1.1 or earlier of the License, but not also under the terms of
        a Secondary License.

1.6. "Executable Form"

     means any form of the work other than Source Code Form.

1.7. "Larger Work"

     means a work that combines Covered Software with other material, in a
     separate file or files, that is not Covered Software.

1.8. "License"

     means this document.

1.9. "Licensable"

     means having the right to grant, to the maximum extent possible, whether
     at the time of the initial grant or subsequently, any and all of the
     rights conveyed by this License.

1.10. "Modifications"

     means any of the following:

     a. any file in Source Code Form that results from an addition to,
        deletion from, or modification of the contents of Covered Software; or

     b. any new file in Source Code Form that contains any Covered Software.

1.11. "Patent Claims" of a Contributor

      means any patent claim(s), including without limitation, method,
      process, and apparatus claims, in any patent Licensable by such
      Contributor that would be infringed, but for the grant of the License,
      by the making, using, selling, offering for sale, having made, import,
      or transfer of either its Contributions or its Contributor Version.

1.12. "Secondary License"

      means either the GNU General Public License, Version 2.0, the GNU Lesser
      General Public License, Version 2.1, the GNU Affero General Public
      License, Version 3.0, or any later versions of those licenses.

1.13. "Source Code Form"

      means the form of the work preferred for making modifications.

1.14. "You" (or "Your")

      means an individual or a legal entity exercising rights under this
      License. For legal entities, "You" includes any entity that controls, is
      controlled by, or is under common control with You. For purposes of this
      definition, "control" means (a) the power, direct or indirect, to cause
      the direction or management of such entity, whether by contract or
      otherwise, or (b) ownership of more than fifty percent (50%) of the
      outstanding shares or beneficial ownership of such entity.


2. License Grants and Conditions

2.1. Grants

     Each Contributor hereby grants You a world-wide, royalty-free,
     non-exclusive license:

     a. under intellectual property rights (other than patent or trademark)
        Licensable by such Contributor to use, reproduce, make available,
        modify, display, perform, distribute, and otherwise exploit its
        Contributions, either on an unmodified basis, with Modifications, or
        as part of a Larger Work; and

     b. under Patent Claims of such Contributor to make, use, sell, offer for
        sale, have made, import, and otherwise transfer either its
        Contributions or its Contributor Version.

2.2. Effective Date

     The licenses granted in Section 2.1 with respect to any Contribution
     become effective for each Contribution on the date the Contributor first
     distributes such Contribution.

2.3. Limitations on Grant Scope

     The licenses granted in this Section 2 are the only rights granted under
     this License. No additional rights or licenses will be implied from the
     distribution or licensing of Covered Software under this License.
     Notwithstanding Section 2.1(b) above, no patent license is granted by a
     Contributor:

     a. for any code that a Contributor has removed from Covered Software; or

     b. for infringements caused by: (i) Your and any other third party's
        modifications of Covered Software, or (ii) the combination of its
        Contributions with other software (except as part of its Contributor
        Version); or

     c. under Patent Claims infringed by Covered Software in the absence of
        its Contributions.

     This License does not grant any rights in the trademarks, service marks,
     or logos of any Contributor (except as may be necessary to comply with
     the notice requirements in Section 3.4).

2.4. Subsequent Licenses

     No Contributor makes additional grants as a result of Your choice to
     distribute the Covered Software under a subsequent version of this
     License (see Section 10.2) or under the terms of a Secondary License (if
     permitted under the terms of Section 3.3).

2.5. Representation

     Each Contributor represents that the Contributor believes its
     Contributions are its original creation(s) or it has sufficient rights to
     grant the rights to its Contributions conveyed by this License.

2.6. Fair Use

     This License is not intended to limit any rights You have under
     applicable copyright doctrines of fair use, fair dealing, or other
     equivalents.

2.7. Conditions

     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
     Section 2.1.


3. Responsibilities

3.1. Distribution of Source Form

     All distribution of Covered Software in Source Code Form, including any
     Modifications that You create or to which You contribute, must be under
     the terms of this License. You must inform recipients that the Source
     Code Form of the Covered Software is governed by the terms of this
     License, and how they can obtain a copy of this License. You may not
     attempt to alter or restrict the recipients' rights in the Source Code
     Form.

3.2. Distribution of Executable Form

     If You distribute Covered Software in Executable Form then:

     a. such Covered Software must also be made available in Source Code Form,
        as described in Section 3.1, and You must inform recipients of the
        Executable Form how they can obtain a copy of such Source Code Form by
        reasonable means in a timely manner, at a charge no more than the cost
        of distribution to the recipient; and

     b. You may distribute such Executable Form under the terms of this
        License, or sublicense it under different terms, provided that the
        license for the Executable Form does not attempt to limit or alter the
        recipients' rights in the Source Code Form under this License.

3.3. Distribution of a Larger Work

     You may create and distribute a Larger Work under terms of Your choice,
     provided that You also comply with the requirements of this License for
     the Covered Software. If the Larger Work is a combination of Covered
     Software with a work governed by one or more Secondary Licenses, and the
     Covered Software is not Incompatible With Secondary Licenses, this
     License permits You to additionally distribute such Covered Software
     under the terms of such Secondary License(s), so that the recipient of
     the Larger Work may, at their option, further distribute the Covered
     Software under the terms of either this License or such Secondary
     License(s).

3.4. Notices

     You may not remove or alter the substance of any license notices
     (including copyright notices, patent notices, disclaimers of warranty, or
     limitations of liability) contained within the Source Code Form of the
     Covered Software, except that You may alter any license notices to the
     extent required to remedy known factual inaccuracies.

3.5. Application of Additional Terms

     You may choose to offer, and to charge a fee for, warranty, support,
     indemnity or liability obligations to one or more recipients of Covered
     Software. However, You may do so only on Your own behalf, and not on
     behalf of any Contributor. You must make it absolutely clear that any
     such warranty, support, indemnity, or liability obligation is offered by
     You alone, and You hereby agree to indemnify every Contributor for any
     liability incurred by such Contributor as a result of warranty, support,
     indemnity or liability terms You offer. You may include additional
     disclaimers of warranty and limitations of liability specific to any
     jurisdiction.

4. Inability to Comply Due to Statute or Regulation

   If it is impossible for You to comply with any of the terms of this License
   with respect to some or all of the Covered Software due to statute,
   judicial order, or regulation then You must: (a) comply with the terms of
   this License to the maximum extent possible; and (b) describe the
   limitations and the code they affect. Such description must be placed in a
   text file included with all distributions of the Covered Software under
   this License. Except to the extent prohibited by statute or regulation,
   such description must be sufficiently detailed for a recipient of ordinary
   skill to be able to understand it.

5. Termination

5.1. The rights granted under this License will terminate automatically if You
     fail to comply with any of its terms. However, if You become compliant,
     then the rights granted under this License from a particular Contributor
     are reinstated (a) provisionally, unless and until such Contributor
     explicitly and finally terminates Your grants, and (b) on an ongoing
     basis, if such Contributor fails to notify You of the non-compliance by
     some reasonable means prior to 60 days after You have come back into
     compliance. Moreover, Your grants from a particular Contributor are
     reinstated on an ongoing basis if such Contributor notifies You of the
     non-compliance by some reasonable means, this is the first time You have
     received notice of non-compliance with this License from such
     Contributor, and You become compliant prior to 30 days after Your receipt
     of the notice.

5.2. If You initiate litigation against any entity by asserting a patent
     infringement claim (excluding declaratory judgment actions,
     counter-claims, and cross-claims) alleging that a Contributor Version
     directly or indirectly infringes any patent, then the rights granted to
     You by any and all Contributors for the Covered Software under Section
     2.1 of this License shall terminate.

5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
     license agreements (excluding distributors and resellers) which have been
     validly granted by You or Your distributors under this License prior to
     termination shall survive termination.

6. Disclaimer of Warranty

   Covered Software is provided under this License on an "as is" basis,
   without warranty of any kind, either expressed, implied, or statutory,
   including, without limitation, warranties that the Covered Software is free
   of defects, merchantable, fit for a particular purpose or non-infringing.
   The entire risk as to the quality and performance of the Covered Software
   is with You. Should any Covered Software prove defective in any respect,
   You (not any Contributor) assume the cost of any necessary servicing,
   repair, or correction. This disclaimer of warranty constitutes an essential
   part of this License. No use of  any Covered Software is authorized under
   this License except under this disclaimer.

7. Limitation of Liability

   Under no circumstances and under no legal theory, whether tort (including
   negligence), contract, or otherwise, shall any Contributor, or anyone who
   distributes Covered Software as permitted above, be liable to You for any
   direct, indirect, special, incidental, or consequential damages of any
   character including, without limitation, damages for lost profits, loss of
   goodwill, work stoppage, computer failure or malfunction, or any and all
   other commercial damages or losses, even if such party shall have been
   informed of the possibility of such damages. This limitation of liability
   shall not apply to liability for death or personal injury resulting from
   such party's negligence to the extent applicable law prohibits such
   limitation. Some jurisdictions do not allow the exclusion or limitation of
   incidental or consequential damages, so this exclusion and limitation may
   not apply to You.

8. Litigation

   Any litigation relating to this License may be brought only in the courts
   of a jurisdiction where the defendant maintains its principal place of
   business and such litigation shall be governed by laws of that
   jurisdiction, without reference to its conflict-of-law provisions. Nothing
   in this Section shall prevent a party's ability to bring cross-claims or
   counter-claims.

9. Miscellaneous

   This License represents the complete agreement concerning the subject
   matter hereof. If any provision of this License is held to be
   unenforceable, such provision shall be reformed only to the extent
   necessary to make it enforceable. Any law or regulation which provides that
   the language of a contract shall be construed against the drafter shall not
   be used to construe this License against a Contributor.


10. Versions of the License

10.1. New Versions

      Mozilla Foundation is the license steward. Except as provided in Section
      10.3, no one other than the license steward has the right to modify or
      publish new versions of this License. Each version will be given a
      distinguishing version number.

10.2. Effect of New Versions

      You may distribute the Covered Software under the terms of the version
      of the License under which You originally received the Covered Software,
      or under the terms of any subsequent version published by the license
      steward.

10.3. Modified Versions

      If you create software not governed by this License, and you want to
      create a new license for such software, you may create and use a
      modified version of this License if you rename the license and remove
      any references to the name of the license steward (except to note that
      such modified license differs from this License).

10.4. Distributing Source Code Form that is Incompatible With Secondary
      Licenses If You choose to distribute Source Code Form that is
      Incompatible With Secondary Licenses under the terms of this version of
      the License, the notice described in Exhibit B of this License must be
      attached.

Exhibit A - Source Code Form License Notice

      This Source Code Form is subject to the
      terms of the Mozilla Public License, v.
      2.0. If a copy of the MPL was not
      distributed with this file, You can
      obtain one at
      http://mozilla.org/MPL/2.0/.

If it is not possible or desirable to put the notice in a particular file,
then You may include the notice in a location (such as a LICENSE file in a
relevant directory) where a recipient would be likely to look for such a
notice.

You may add additional accurate notices of copyright ownership.

Exhibit B - "Incompatible With Secondary Licenses" Notice

      This Source Code Form is "Incompatible
      With Secondary Licenses", as defined by
      the Mozilla Public License, v. 2.0.
```