

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Gestion des quotas
<a name="quota-management"></a>

AWS Batch planifie les tâches en fonction des ressources requises et de la capacité disponible dans l'environnement de service connecté (SE), ce qui permet une utilisation élevée des ressources de calcul. Grâce à la gestion des quotas, les administrateurs peuvent également contrôler le nombre de ressources qu'une équipe ou un projet peut consommer grâce à des allocations de ressources plus précises.

La gestion des quotas permet aux administrateurs d'allouer efficacement les ressources informatiques partagées entre les équipes et les projets en définissant des **parts de quotas** associées, c'est-à-dire AWS Batch des ressources qui incluent des quotas de calcul (**limites de capacité**) et des stratégies de partage des ressources pour les calculs inactifs. Chaque partage de quotas fonctionne comme une file d'attente virtuelle imbriquée dans une file de tâches associée. Lorsque vous planifiez des tâches pour une file d'attente de tâches, toutes les parts de quota associées AWS Batch seront itérées.

Les administrateurs peuvent activer le partage des ressources entre les quotas en toute confiance, car la **préemption** permettra à tout partage de quotas de récupérer les ressources qu'il a prêtées à d'autres en cas de besoin. Dans le cadre d'un partage de quotas, vous pouvez choisir si les tâches en cours doivent être préemptées pour les tâches plus prioritaires ou si vous souhaitez laisser les tâches en cours d'exécution se terminer. Les priorités des tâches peuvent être définies lors de la soumission et mises à jour ultérieurement ; les priorités mises à jour sont prises en compte lorsque les décisions de préemption sont prises. L'utilisation des capacités peut être surveillée au niveau de la file d'attente, du partage des quotas et de la granularité au niveau des tâches.

La gestion des quotas n'est prise en charge que pour les files d'attente de tâches connectées à un environnement `SAGEMAKER_TRAINING` de service.

**Topics**
+ [Partage des quotas](quota-shares.md)
+ [Préemption](preemption.md)
+ [Création de ressources de gestion des quotas](create-quota-management-resources.md)
+ [Création de parts de quotas](create-quota-shares.md)
+ [Soumission d'offres d'emploi à un quota](submit-job-quota-share.md)

# Partage des quotas
<a name="quota-shares"></a>

Les **partages de quotas** sont des files d'attente virtuelles imbriquées sous une file de tâches. Un maximum de 20 peuvent être attachés à une file d'attente de tâches. Les partages de quotas permettent d'attribuer un quota de calcul à une équipe ou à un projet, via l'utilisation de **limites de capacité** ; un partage de quotas nécessite qu'au moins une limite de capacité soit fournie et prend en charge un maximum de 5 limites de capacité. Chaque limite de capacité doit être exprimée sous forme de limites d'instance pour les types d'instances de tâches de SageMaker formation pris en charge.

## Stratégie de partage des ressources par quotas
<a name="quota-share-resource-sharing"></a>

Les partages de quotas ont également une configuration de partage de ressources explicite.
+ Si le calcul inactif d'un partage de quotas doit être réservé uniquement à ses tâches, sélectionnez`RESERVE`.
+ Si le calcul inactif d'un partage de quotas peut être prêté à d'autres parts de quotas, sélectionnez`LEND`.
+ Si le calcul inactif d'un partage de quotas peut être prêté à d'autres parts de quotas et que les tâches associées au partage de quotas doivent être autorisées à emprunter du calcul inactif, sélectionnez `LEND_AND_BORROW` avec une limite d'emprunt configurée.

## Restauration des capacités par préemption
<a name="capacity-limit-restoration"></a>

AWS Batch procédera à une **préemption d'actions croisées** afin de rétablir la capacité empruntée à un quota lorsque des emplois arriveront. Lorsque vous choisissez les tâches à préempter, prenez AWS Batch en compte le nombre et le type d'instances empruntées par une tâche, les priorités relatives des tâches et la durée de la tâche, et appliquez une heuristique personnalisée.

Les administrateurs qui abaissent les limites de capacité d'un partage de quotas peuvent également rendre `SCHEDULED` les `RUNNING` tâches correspondant à ce quota éligibles à la préemption`STARTING`, même si `LEND` ou ont `RESERVE` été sélectionnées comme stratégie de partage des ressources, si la capacité déjà consommée par ce partage de quota est supérieure à ses limites de capacité réduites.

# Préemption
<a name="preemption"></a>

La gestion des quotas est le seul algorithme de AWS Batch planification qui intègre la **préemption**, où AWS Batch s'arrête une `SCHEDULED` `RUNNING` tâche ou une tâche afin de créer de la capacité pour une `RUNNABLE` tâche. `STARTING`

## Préemption d'actions croisées
<a name="cross-share-preemption"></a>

La gestion des quotas utilise la **préemption des partages croisés** pour rétablir la capacité empruntée à un quota lorsque des emplois arrivent.

Les administrateurs qui abaissent les limites de capacité d'un partage de quotas peuvent également rendre `SCHEDULED` éligibles à la préemption les `RUNNING` tâches relevant de ce quota si la capacité consommée par ce partage de quota est désormais supérieure aux limites de capacité configurées. `STARTING`

## Préemption intégrée aux actions
<a name="in-share-preemption"></a>

Les parts de quotas peuvent être configurées pour activer la **préemption intégrée**, ce qui permet aux `RUNNABLE` tâches les plus prioritaires de déclencher la préemption de tâches moins prioritaires dans le cadre du même partage de quota que celui saisi, ou. `SCHEDULED` `STARTING` `RUNNING`

## Algorithme de sélection par préemption
<a name="preemption-selection-algorithm"></a>

Lorsque vous choisissez les tâches à préempter, AWS Batch prenez en compte le nombre et le type d'instances empruntées par une tâche, les priorités relatives des tâches et leur durée, et appliquez une heuristique personnalisée. Vous pouvez utiliser l'appel [UpdateServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateServiceJob.html)d'API pour mettre à `schedulingPriority` jour une tâche après sa soumission. Cela peut être utile pour réduire la priorité d'une `RUNNING` tâche (augmentation du risque de préemption) ou pour augmenter la priorité d'une `RUNNABLE` tâche dans un quota avec la préemption intégrée activée, ce qui permet à la tâche de préempter une tâche déjà en cours d'exécution.

## Tentatives de préemption
<a name="preemption-retries"></a>

Par défaut, les tâches préemptées sont replacées en file d'attente sans limite. `RUNNABLE` Pour limiter le nombre de préemptions accordées à un poste, sélectionnez « Soumettre `preemptionRetriesBeforeTermination` une offre d'emploi ». Lorsque `preemptionRetriesBeforeTermination` cette valeur est définie `FAILED` sur 0, les jobs passent à leur première préemption.

Une fenêtre coulissante répertoriant les récentes tentatives de préemption est enregistrée sur la tâche et visible via. [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)

# Création de ressources de gestion des quotas
<a name="create-quota-management-resources"></a>

La gestion des quotas nécessite des paramètres spécifiques lors de la création d'une politique de planification, d'un environnement de service et d'une file d'attente de tâches associés.

## Conditions préalables
<a name="quota-management-resources-prerequisites"></a>

Avant de créer des ressources de gestion des quotas, assurez-vous de disposer des éléments suivants :
+ Autorisations **IAM : autorisations** permettant de créer et de gérer des files AWS Batch d'attente de travail, des politiques de planification et des environnements de service. Pour de plus amples informations, veuillez consulter [AWS Batch Politiques, rôles et autorisations IAM](IAM_policies.md).

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

La AWS Batch console fournit un flux de travail intégré permettant de créer toutes les ressources nécessaires à la gestion des quotas. Le flux de travail de création de files d'attente de tâches de gestion des quotas crée également des politiques de planification et des environnements de service compatibles avec la gestion des quotas.

1. Ouvrez la AWS Batch console à l'adresse [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Dans le volet de navigation, choisissez **Job queues**, puis **Create**.

1. Pour le **type d'orchestration**, choisissez **SageMakerEntraînement**.

1. Pour la **configuration de la file d'attente des Job** :

   1. Dans **Nom**, entrez le nom de la file d'attente de tâches.

   1. Pour **Priorité**, entrez une valeur comprise entre 0 et 1 000. Une file d'attente de tâches avec une priorité plus élevée est privilégiée pour les environnements de service.

1. Pour **la planification** :

   1. Pour **Algorithme de planification**, choisissez **Gestion des quotas**.

   1. Pour l'**ARN de la politique de planification** :
      + S'il existe déjà une politique de planification qui spécifie la gestion des quotas, sélectionnez-la dans le menu déroulant.
      + Sinon, choisissez **Créer une politique de planification**.

        1. Une barre latérale s'ouvre pour configurer la politique de planification de la gestion des quotas.

        1. Entrez un **nom** pour la politique de planification.

        1. Choisissez **Créer**. Le champ **ARN de la politique de planification** est désormais renseigné.

1. Pour la configuration **de l'environnement** de service, sous **Environnement de service connecté** :
**Note**  
Les environnements de service compatibles avec la gestion des quotas ne peuvent être connectés qu'à une seule file d'attente de tâches compatible avec la gestion des quotas.

   1. Si un environnement de service compatible avec la gestion des quotas a déjà été créé et qu'il n'est pas encore connecté à une file d'attente de tâches compatible avec la gestion des quotas, sélectionnez-le dans le menu déroulant.

   1. Sinon, choisissez **Créer un environnement de service**. Une barre latérale s'ouvre pour configurer l'environnement de service.

      1. Entrez un **nom** pour l'environnement de service.

      1. Indiquez au moins une limite de capacité (et au plus 5). Pour chaque limite de capacité, choisissez un **type d'instance** dans la liste déroulante et un **nombre maximum d'instances**.

1. (Facultatif) Pour les **limites d'état des Job** :

   1. Pour **Mauvaise configuration**, choisissez l'une `SERVICE_ENVIRONMENT_MAX_RESOURCE` des options et entrez la **durée maximale d'exécution (secondes)**.

   1. Pour **Capacité**, choisissez `INSUFFICIENT_INSTANCE_CAPACITY` et entrez la **durée maximale d'exécution (secondes).**

1. Choisissez **Créer une file d'attente de tâches**.

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

Pour configurer la gestion des quotas via la AWS CLI, créez une politique de planification, un environnement de service et une file d'attente de tâches. La politique de planification et l'environnement de service doivent être compatibles avec la gestion des quotas et créés avant de créer la file d'attente des tâches.

**Création d'une politique de planification**

Utilisez la `create-scheduling-policy` commande pour créer une politique de planification compatible avec la gestion des quotas. Fournissez une politique de partage des quotas lors de la création :

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

Vérifiez que la politique de planification a été créée avec succès :

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

**Création d'un environnement de service**

Utilisez la `create-service-environment` commande pour créer un environnement de service compatible avec la gestion des quotas. Assurez-vous que les limites de capacité utilisent des types d'instances acceptés par les tâches de SageMaker formation, tels que `ml.g6.xlarge` ou`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
```

Vérifiez que l'environnement de service a été créé avec succès :

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

**Création d'une file d'attente de tâches**

Utilisez la `create-job-queue` commande pour créer une file d'attente de tâches compatible avec la gestion des quotas. Les critères suivants doivent être satisfaits :
+ Un environnement `SAGEMAKER_TRAINING` de service unique doit être fourni qui n'est actuellement pas connecté à une autre file d'attente de tâches.
+ L'environnement de service doit exprimer les limites de capacité en termes de types d'instances, tels que`ml.m6i.xlarge`, plutôt que`NUM_INSTANCES`.
+ Une politique de planification doit être connectée qui contient un`quotaSharePolicy`.
+ Le `jobQueueType` doit être `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
```

Vérifiez que la file d'attente des tâches a été créée avec succès :

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

Assurez-vous que :
+ Le `state` est `ENABLED`
+ Le `status` est `VALID`
+ Le `statusReason` est `JobQueue Healthy`

------

# Création de parts de quotas
<a name="create-quota-shares"></a>

Les partages de quotas fonctionnent comme des files d'attente virtuelles au sein de la file de tâches associée entre lesquelles le AWS Batch planificateur itère lors de la planification. Ils permettent aux administrateurs d'allouer un quota de calcul à une équipe ou à un projet via` capacity limits `, avec une configuration explicite pour la stratégie de partage des ressources. 

## Conditions préalables
<a name="create-quota-shares-prerequisites"></a>

Avant de créer des parts de quotas, assurez-vous de disposer des éléments suivants :
+ **Politique de planification de gestion des quotas, environnement de service et file d'attente des tâches** : politique de planification de gestion des quotas, environnement de service et file d'attente des tâches avec la gestion des quotas activée. Pour de plus amples informations, veuillez consulter [Création de ressources de gestion des quotas](create-quota-management-resources.md).
+ Autorisations **IAM : autorisations** permettant de créer et de gérer des partages de AWS Batch quotas. Pour de plus amples informations, veuillez consulter [AWS Batch Politiques, rôles et autorisations IAM](IAM_policies.md).

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

1. Ouvrez la AWS Batch console à l'adresse [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Dans le volet de navigation, choisissez **Queues de tâches** et sélectionnez une file d'attente de tâches compatible avec la gestion des quotas dans la liste. Choisissez le lien du nom de la file d'attente de tâches.

1. Dans la section **Partage de quotas**, choisissez **Créer un partage de quotas**.

1. Entrez un **nom** pour le partage de quotas.

1. Pour les **limites de capacité**, choisissez **Ajouter des limites de capacité**. Au moins une limite de capacité doit être spécifiée.

   1. Sélectionnez un **type d'instance** dans la liste déroulante et définissez le **nombre maximum d'instances** que ce partage de quota lui a allouées.

   1. (Facultatif) Choisissez **Ajouter des limites de capacité** et répétez l'opération pour fixer au maximum cinq limites de capacité.

1. Pour le **partage de capacité**, choisissez comment ce partage de quota partage sa capacité avec les autres partages de quotas de la même file d'attente de tâches :
   + Sélectionnez **Réserver** si la part de quota ne doit pas prêter ou emprunter du calcul inactif.
   + Sélectionnez **Prêter** si le partage de quotas peut prêter du calcul inactif à d'autres parts de quotas.
   + Sélectionnez **Prêter et emprunter** si la part du quota permet à la fois de prêter et d'emprunter du calcul inactif, le calcul prêté étant récupéré via la préemption des partages croisés lorsque le travail arrive.

1. (Facultatif) Pour la **préemption en partage**, choisissez d'activer ou de désactiver la préemption en partage. L'activation de la préemption partagée permet aux tâches les plus prioritaires de préempter les tâches moins prioritaires qui sont déjà en cours ou qui sont déjà inscrites. `SCHEDULED` `STARTING` `RUNNING` La désactivation de la préemption en partage signifie que les emplois les plus prioritaires attendront que la capacité soit disponible.

1. Choisissez **Créer un partage de quotas**.

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

Utilisez la `create-quota-share` commande pour créer un partage de quotas. Vous devez choisir une stratégie de partage des ressources et activer ou non la préemption intégrée au partage.

**Exemple de prêt et d'emprunt**

L'exemple suivant crée un partage de quotas qui permet de prêter et d'emprunter de la capacité inutilisée, avec une limite d'emprunt de 100 % des limites de capacité configurées. Il permet également la préemption intégrée, de sorte que les tâches les plus prioritaires n'attendent pas la fin des tâches moins prioritaires planifiées dans SageMaker AI.

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

**Prêter uniquement un exemple**

Les parts de quotas peuvent être configurées pour prêter uniquement de la capacité inutilisée, mais pas pour l'emprunter elles-mêmes. L'exemple suivant correspond à la désactivation `LEND` de la préemption intégrée au partage.

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

**Exemple de réserve**

Les parts de quotas peuvent également être configurées pour réserver de la capacité inutilisée. Les tâches récemment soumises pour lesquelles un partage de quotas a une capacité inutilisée peuvent démarrer plus tôt, mais l'utilisation globale de la file d'attente sera inférieure si un partage de quotas ne contient aucune tâche.

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

------

# Soumission d'offres d'emploi à un quota
<a name="submit-job-quota-share"></a>

Les files d'attente pour les tâches de gestion des quotas nécessitent que toutes les tâches spécifient une part de quota lors de la soumission des tâches. Pour soumettre des tâches à un partage de quotas, spécifiez le `quotaShareName` dans [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html). Un `preemptionConfiguration` peut éventuellement être fourni pour limiter le nombre de tentatives de préemption avant le début d'une tentative de travail. `FAILED` Pour limiter le nombre de préemptions auxquelles un poste peut être soumis, définissez-le `preemptionRetriesBeforeTermination` au moment de [ServiceJobPreemptionConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_ServiceJobPreemptionConfiguration.html)la soumission du poste.

## Soumettez une offre d'emploi à l'aide du AWS CLI
<a name="submit-job-quota-share-cli"></a>

L'exemple suivant utilise la **submit-service-job** commande pour soumettre une tâche à un partage de quotas.

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