

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.

# Gestión de cuotas
<a name="quota-management"></a>

AWS Batch programa los trabajos en función de los recursos que requiere el trabajo y la capacidad disponible en el entorno de servicios (SE) conectado, lo que permite un alto uso de los recursos informáticos. Con la administración de cuotas, los administradores también pueden controlar cuántos recursos puede consumir un equipo o proyecto mediante asignaciones de recursos más precisas.

La administración de cuotas permite a los administradores asignar de manera eficiente los recursos informáticos compartidos entre equipos y proyectos mediante la definición de las **cuotas asociadas, AWS Batch recursos que incluyen las** cuotas informáticas (**límites de capacidad**) y las estrategias de uso compartido de recursos para la computación inactiva. Cada cuota compartida funciona como una cola virtual anidada dentro de una cola de trabajos asociada. Al programar trabajos para una cola de trabajos, AWS Batch recorrerá todas las cuotas compartidas adjuntas.

Los administradores pueden habilitar el intercambio de recursos entre cuotas con total confianza, ya que **la preferencia** permitirá que cualquier cuota recupere los recursos que haya prestado a otros cuando los necesite. Dentro de una cuota compartida, puede elegir si las tareas en ejecución deben sustituirse por las de mayor prioridad o dejar que finalicen las tareas en ejecución. Las prioridades de trabajo se pueden establecer en el momento de la presentación y actualizarse más adelante; las prioridades actualizadas se tienen en cuenta a la hora de tomar decisiones preferentes. La utilización de la capacidad se puede monitorear en la cola, la cuota de cuotas y la granularidad a nivel de trabajo.

La administración de cuotas solo se admite para las colas de trabajos conectadas a un entorno de servicios. `SAGEMAKER_TRAINING`

**Topics**
+ [Cuotas compartidas](quota-shares.md)
+ [Preferencia](preemption.md)
+ [Crear recursos de administración de cuotas](create-quota-management-resources.md)
+ [Creación de cuotas compartidas](create-quota-shares.md)
+ [Someter los trabajos a una cuota de cuota](submit-job-quota-share.md)

# Cuotas compartidas
<a name="quota-shares"></a>

**Las cuotas** compartidas son colas virtuales anidadas debajo de una cola de trabajos. Se pueden adjuntar un máximo de 20 a cualquier cola de trabajos. Las cuotas compartidas permiten asignar una cuota de cómputo a un equipo o proyecto mediante el uso de **límites de capacidad**; una cuota compartida requiere que se proporcione al menos un límite de capacidad y admite un máximo de 5 límites de capacidad. Cada límite de capacidad debe expresarse como límites de instancias para los tipos de instancias de trabajo de SageMaker formación compatibles.

## Cuota: estrategia de reparto de recursos
<a name="quota-share-resource-sharing"></a>

Las cuotas compartidas también tienen una configuración explícita para compartir recursos.
+ Si el cómputo inactivo de una cuota compartida debe reservarse únicamente para sus trabajos, seleccione`RESERVE`.
+ Si el cómputo inactivo de una cuota se puede prestar a otras cuotas compartidas, seleccione`LEND`.
+ Si el cómputo inactivo de una cuota se puede prestar a otras cuotas y los trabajos de esa cuota deberían poder utilizar el cómputo inactivo, seleccione una opción `LEND_AND_BORROW` con un límite de préstamo configurado.

## Restauración de la capacidad mediante preferencia
<a name="capacity-limit-restoration"></a>

AWS Batch realizará una **acción preferente entre acciones** para devolver la capacidad prestada a una cuota de cuota cuando lleguen los puestos de trabajo. Al elegir qué trabajos preferir, AWS Batch tiene en cuenta el número y el tipo de instancias que un trabajo está tomando prestado, las prioridades relativas de los trabajos y la duración del trabajo, y aplica una heurística personalizada.

Los administradores que reduzcan los límites de capacidad de una cuota compartida también pueden hacer que `SCHEDULED``STARTING`, o los `RUNNING` trabajos que se encuentren dentro de esa cuota, puedan optar a la preferencia, incluso si la estrategia de uso compartido de recursos `RESERVE` se seleccionó `LEND` o se seleccionó como estrategia de intercambio de recursos, si la capacidad ya consumida por esa cuota de cuota supera los límites de capacidad reducidos.

# Preferencia
<a name="preemption"></a>

La administración de cuotas es el único algoritmo de AWS Batch programación que incorpora **la preferencia**, es AWS Batch decir `SCHEDULED``STARTING`, detener un `RUNNING` trabajo o crear capacidad para un `RUNNABLE` trabajo.

## Intercambio preferente
<a name="cross-share-preemption"></a>

La administración de cuotas utiliza la **preferencia entre acciones para devolver la** capacidad prestada a una cuota de cuota cuando llegan los puestos de trabajo.

Los administradores que reduzcan los límites de capacidad de una cuota de cuota también pueden hacer que `SCHEDULED``STARTING`, o los `RUNNING` trabajos que se encuentren dentro de esa cuota, puedan optar a la exclusión si la capacidad consumida por esa cuota ahora supera los límites de capacidad configurados.

## Prioridad en el uso compartido
<a name="in-share-preemption"></a>

Las cuotas compartidas se pueden configurar para habilitar la **preferencia dentro de las acciones**, lo que permite que los trabajos de mayor prioridad activen la preferencia de los `RUNNABLE` trabajos de menor prioridad dentro de la misma cuota de cuota que se ingresó, o. `SCHEDULED` `STARTING` `RUNNING`

## Algoritmo de selección preferente
<a name="preemption-selection-algorithm"></a>

Al elegir qué trabajos preferir, AWS Batch tiene en cuenta el número y el tipo de instancias que toma prestadas, las prioridades relativas de los trabajos y la duración de los trabajos, y aplica una heurística personalizada. Puede utilizar la llamada a la [UpdateServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateServiceJob.html)API para actualizar un trabajo después `schedulingPriority` de enviarlo. Esto puede resultar útil para reducir la prioridad de un `RUNNING` trabajo (lo que aumenta la probabilidad de que se dé prioridad) o para aumentar la prioridad de un `RUNNABLE` trabajo dentro de una cuota con la preferencia dentro del recurso compartido habilitada, lo que permite que el trabajo prevalezca sobre un trabajo que ya esté en ejecución.

## Reintentos preferentes
<a name="preemption-retries"></a>

La opción predeterminada es que los trabajos prioritarios se vuelvan a poner en cola sin límite. `RUNNABLE` Para limitar el número de preferencias que puede tener un trabajo, defina el envío de trabajos. `preemptionRetriesBeforeTermination` Si `preemptionRetriesBeforeTermination` se establece en 0, los trabajos se asignan a `FAILED` su primera prioridad.

En el trabajo se guarda una ventana deslizante con los intentos de prevención recientes, que se puede ver a través de ella. [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)

# Crear recursos de administración de cuotas
<a name="create-quota-management-resources"></a>

La administración de cuotas requiere ajustes específicos al crear una política de programación, un entorno de servicio y una cola de trabajos asociados.

## Requisitos previos
<a name="quota-management-resources-prerequisites"></a>

Antes de crear los recursos de administración de cuotas, asegúrese de tener:
+ **Permisos de IAM**: permisos para crear y gestionar colas de AWS Batch trabajos, políticas de programación y entornos de servicio. Para obtener más información, consulte [AWS Batch Políticas, funciones y permisos de IAM](IAM_policies.md).

------
#### [ Configure quota management resources (AWS Batch console) ]

La AWS Batch consola proporciona un flujo de trabajo integrado para crear todos los recursos necesarios para la gestión de las cuotas. El flujo de trabajo de creación de colas de trabajos de administración de cuotas también crea políticas de programación y entornos de servicio compatibles con la administración de cuotas.

1. Abra la AWS Batch consola en. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)

1. En el panel de navegación, elija Colas de **trabajos y,** a continuación, **Crear**.

1. **Para el **tipo de orquestación**, elija SageMaker Entrenamiento.**

1. En **Configuración de la cola de trabajos**:

   1. En **Nombre**, introduzca el nombre de la cola de trabajos.

   1. En **Prioridad**, introduzca un valor entre 0 y 1000. En los entornos de servicio, se da preferencia a las colas de trabajos con mayor prioridad.

1. Para la **programación**:

   1. Para el **algoritmo de programación**, elija **Administración de cuotas**.

   1. Para el **ARN de la política de programación**:
      + Si ya existe una política de programación que especifique la administración de cuotas, selecciónela en el menú desplegable.
      + De lo contrario, elija **Crear política de programación**.

        1. Se abre una barra lateral para configurar la política de programación de la administración de cuotas.

        1. Proporcione un **nombre** para la política de programación.

        1. Seleccione **Crear**. El campo **ARN de la política de programación** ahora está rellenado.

1. Para la configuración **del entorno de servicio**, en **Entorno de servicio conectado**:
**nota**  
Los entornos de servicio habilitados para la administración de cuotas solo se pueden conectar a una única cola de trabajos habilitada para la administración de cuotas.

   1. Si ya se ha creado un entorno de servicios compatible con la administración de cuotas y aún no está conectado a una cola de trabajos habilitada para la administración de cuotas, selecciónelo en el menú desplegable.

   1. **De lo contrario, selecciona Crear un entorno de servicios.** Se abre una barra lateral para configurar el entorno de servicio.

      1. Proporcione un **nombre** para el entorno de servicio.

      1. Proporcione al menos un límite de capacidad (y como máximo 5). Para cada límite de capacidad, elija un **tipo de instancia** en el menú desplegable y un **número máximo de instancias**.

1. (Opcional) En **Límites del estado de trabajo**:

   1. En **Configuración incorrecta**, elija una de estas opciones `SERVICE_ENVIRONMENT_MAX_RESOURCE` e introduzca el **tiempo máximo de ejecución (segundos).**

   1. En **Capacidad**, elija `INSUFFICIENT_INSTANCE_CAPACITY` e ingrese el **Tiempo máximo de ejecución (segundos)**.

1. Seleccione **Crear** cola de trabajos.

------
#### [ Configure quota management resources (AWS CLI) ]

Para configurar la administración de cuotas mediante la AWS CLI, cree una política de programación, un entorno de servicio y una cola de trabajos. Tanto la política de programación como el entorno de servicios deben ser compatibles con la administración de cuotas y deben crearse antes de crear la cola de trabajos.

**Cree una política de programación**

Utilice el `create-scheduling-policy` comando para crear una política de programación compatible con la administración de cuotas. Proporcione una política de cuotas compartidas durante la creación:

```
aws batch create-scheduling-policy \
  --name my-qm-sagemaker-scheduling-policy \
  --quota-share-policy idleResourceAssignmentStrategy="FIFO"
```

Compruebe que la política de programación se haya creado correctamente:

```
aws batch describe-scheduling-policies \
  --arns arn-for-my-qm-sagemaker-scheduling-policy
```

**Cree un entorno de servicio**

Utilice el `create-service-environment` comando para crear un entorno de servicio habilitado para la administración de cuotas. Asegúrese de que los límites de capacidad utilicen tipos de instancias que acepten los trabajos de SageMaker formación, como `ml.g6.xlarge` o`ml.p4d.24xlarge`.

```
aws batch create-service-environment \
  --service-environment-name my-qm-sagemaker-service-env \
  --service-environment-type SAGEMAKER_TRAINING \
  --capacity-limits capacityUnit=instance_type,maxCapacity=instance_count
```

Compruebe que el entorno de servicio se haya creado correctamente:

```
aws batch describe-service-environments \
  --service-environments my-qm-sagemaker-service-env
```

**Cree una cola de trabajos**

Utilice el `create-job-queue` comando para crear una cola de trabajos habilitada para la administración de cuotas. Deben cumplirse los siguientes criterios:
+ Debe proporcionarse un entorno de `SAGEMAKER_TRAINING` servicio único que no esté conectado actualmente a otra cola de trabajos.
+ El entorno de servicio debe expresar los límites de capacidad en términos de tipos de instancias, por ejemplo`ml.m6i.xlarge`, en lugar de`NUM_INSTANCES`.
+ Debe estar conectada una política de programación que contenga un`quotaSharePolicy`.
+ El `jobQueueType` debe ser `SAGEMAKER_TRAINING`.

```
aws batch create-job-queue \
  --job-queue-name my-qm-sagemaker-jq \
  --job-queue-type SAGEMAKER_TRAINING \
  --priority 1 \
  --service-environment-order order=1,serviceEnvironment=my-qm-sagemaker-service-env \
  --scheduling-policy-arn arn-for-my-qm-sagemaker-scheduling-policy
```

Compruebe que la cola de trabajos se haya creado correctamente:

```
aws batch describe-job-queues \
  --job-queues my-qm-sagemaker-jq
```

Asegúrese de que:
+ El `state` es `ENABLED`
+ El `status` es `VALID`
+ El `statusReason` es `JobQueue Healthy`

------

# Creación de cuotas compartidas
<a name="create-quota-shares"></a>

Las cuotas compartidas funcionan como colas virtuales dentro de la cola de trabajos asociada entre las que el AWS Batch planificador itera al programar. Permiten a los administradores asignar una cuota de cómputo a un equipo o proyecto mediante una configuración explícita para la ` capacity limits ` estrategia de uso compartido de recursos. 

## Requisitos previos
<a name="create-quota-shares-prerequisites"></a>

Antes de crear cuotas compartidas, asegúrese de tener:
+ **Política de programación de la administración de cuotas, entorno de servicio y cola de trabajos**: política de programación de administración de cuotas, entorno de servicio y cola de trabajos con la administración de cuotas habilitada. Para obtener más información, consulte [Crear recursos de administración de cuotas](create-quota-management-resources.md).
+ Permisos de **IAM: permisos** para crear y gestionar AWS Batch cuotas compartidas. Para obtener más información, consulte [AWS Batch Políticas, funciones y permisos de IAM](IAM_policies.md).

------
#### [ Configure quota shares (AWS Batch console) ]

1. Abra la AWS Batch consola en. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)

1. En el panel de navegación, elija Colas de **trabajos y seleccione una cola** de trabajos habilitada para la administración de cuotas de la lista. Elija el enlace con el nombre de la cola de trabajos.

1. En la sección **Cuotas compartidas**, selecciona **Crear cuota compartida**.

1. Proporcione un **nombre** para la cuota compartida.

1. En **Límites de capacidad**, selecciona **Añadir límites de capacidad**. Debe especificarse al menos un límite de capacidad.

   1. Seleccione un **tipo de instancia** en el menú desplegable y establezca el número **máximo de instancias** que esta cuota le ha asignado.

   1. (Opcional) Seleccione **Añadir límites de capacidad** y repita el procedimiento para adjuntar un máximo de cinco límites de capacidad.

1. Para **compartir la capacidad**, elija cómo esta cuota compartida comparte su capacidad con otras cuotas de la misma cola de trabajos:
   + Seleccione **Reservar** si la cuota no debe prestar o tomar prestado el cómputo inactivo.
   + Seleccione **Prestar** si la cuota puede transferir el cómputo inactivo a otras cuotas compartidas.
   + Seleccione **Prestar y tomar prestado** si la cuota de cuota puede prestar y tomar prestado el cómputo inactivo, y el cómputo prestado se recuperará mediante la preferencia entre comparticiones cuando llegue el trabajo.

1. (Opcional) Para la preferencia entre **acciones, elige si deseas habilitar o deshabilitar la preferencia** entre acciones. Al habilitar la preferencia entre acciones, los trabajos de mayor prioridad se anteponen a los trabajos de menor prioridad que ya están en el mercado o en el estado. `SCHEDULED` `STARTING` `RUNNING` Si se desactiva la preferencia en el reparto, los trabajos de mayor prioridad esperarán a que haya capacidad disponible.

1. **Selecciona Crear cuota compartida.**

------
#### [ Configure quota shares (AWS CLI) ]

Utilice el `create-quota-share` comando para crear una cuota compartida. Debe elegir una estrategia para compartir recursos y si desea habilitar la preferencia entre recursos compartidos.

**Ejemplo de préstamo y préstamo**

El siguiente ejemplo crea una cuota de cuota que permite prestar y tomar en préstamo capacidad ociosa, con un límite de préstamo del 100% de sus límites de capacidad configurados. También permite la priorización de recursos compartidos, de modo que los trabajos de mayor prioridad no tienen que esperar a que se completen los de menor prioridad que se hayan programado en SageMaker IA.

```
aws batch create-quota-share \
  --quota-share-name lend_and_borrow_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=5,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=LEND_AND_BORROW,borrowLimit=100 \
  --preemption-configuration inSharePreemption=ENABLED
```

**Pongamos solo un ejemplo**

Las cuotas compartidas se pueden configurar para que solo presten capacidad ociosa, pero no la tomen prestada por sí mismas. El siguiente ejemplo se combina `LEND` con la desactivación de la preferencia dentro de los recursos compartidos.

```
aws batch create-quota-share \
  --quota-share-name lend_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=8,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=LEND \
  --preemption-configuration inSharePreemption=DISABLED
```

**Ejemplo de reserva**

Las cuotas compartidas también se pueden configurar para reservar la capacidad inactiva. Los trabajos recién enviados cuando una cuota compartida tiene capacidad inactiva pueden empezar antes, pero la utilización general de las colas será menor si una cuota compartida no tiene trabajos.

```
aws batch create-quota-share \
  --quota-share-name reserved_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=2,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=RESERVE \
  --preemption-configuration inSharePreemption=DISABLED
```

------

# Someter los trabajos a una cuota de cuota
<a name="submit-job-quota-share"></a>

Las colas de trabajos de administración de cuotas requieren que todos los trabajos especifiquen una cuota de cuota al enviar el trabajo. Para enviar los trabajos a una cuota compartida, especifique la entrada`quotaShareName`. [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html) Opcionalmente, se `preemptionConfiguration` puede proporcionar una para limitar el número de intentos de prioridad antes de que se produzca un intento de trabajo. `FAILED` Para limitar el número de preferencias que puede tener un trabajo, establézcalo en el momento de la presentación `preemptionRetriesBeforeTermination` del [ServiceJobPreemptionConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_ServiceJobPreemptionConfiguration.html)trabajo.

## Envíe un trabajo mediante el AWS CLI
<a name="submit-job-quota-share-cli"></a>

En el siguiente ejemplo, se utiliza el **submit-service-job** comando para enviar un trabajo a una cuota compartida.

```
aws batch submit-service-job \
    --job-name "my-sagemaker-training-job" \
    --job-queue "my-sagemaker-job-queue" \
    --service-job-type "SAGEMAKER_TRAINING" \
    --quota-share-name "my_quota_share" \
    --timeout-config '{"attemptDurationSeconds":3600}' \
    --scheduling-priority 5 \
    --service-request-payload '{\"TrainingJobName\": \"sagemaker-training-job-example\", \"AlgorithmSpecification\": {\"TrainingImage\": \"123456789012.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:1.8.0-cpu-py3\", \"TrainingInputMode\": \"File\", \"ContainerEntrypoint\":  [\"sleep\", \"1\"]}, \"RoleArn\":\"arn:aws:iam::123456789012:role/SageMakerExecutionRole\", \"OutputDataConfig\": {\"S3OutputPath\": \"s3://example-bucket/model-output/\"}, \"ResourceConfig\": {\"InstanceType\": \"ml.m5.large\", \"InstanceCount\": 1, \"VolumeSizeInGB\": 1}}'"
```