FAQ sur AWS Batch

Informations générales

AWS Batch constitue un ensemble de capacités de gestion par lot qui permet aux développeurs, scientifiques et ingénieurs d'exécuter facilement et efficacement plusieurs centaines de milliers de tâches de calcul par lot sur AWS. AWS Batch alloue dynamiquement une quantité optimale et un type de ressources de calcul (par exemple, des ressources de calcul optimisées pour la mémoire ou un processeur) en fonction du volume et des besoins en ressources spécifiques des tâches par lots soumises. Avec AWS Batch, vous n'avez pas besoin d'installer ou de gérer des logiciels de calcul ou des clusters de serveurs par lot, ce qui vous permet de vous concentrer plutôt sur l'analyse des résultats et la résolution des problèmes. AWS Batch planifie, programme et exécute vos charges de travail de traitement par lots à l'aide d'Amazon ECS, Amazon EKS et AWS Fargate, avec la possibilité d'utiliser des instances Spot.

Le traitement par lot représente l'exécution d'une série de programmes (connus sous le nom de « tâches ») sur un ou plusieurs ordinateurs sans aucune intervention manuelle de l'utilisateur. Les paramètres d'entrée sont prédéfinis par le biais de scripts, d'arguments de ligne de commande, de fichiers de contrôle ou de la langue de contrôle des tâches. Une tâche par lot donnée peut dépendre de la réalisation des tâches précédentes ou de la disponibilité de certaines entrées, ce qui rend le séquençage et la planification de plusieurs tâches considérables et incompatibles avec le traitement interactif.

  • Le traitement par lot peut déplacer la date de traitement d'une tâche à une date où une capacité supérieure ou moins onéreuse est disponible.
  • Il permet d'éviter que des ressources de calcul nécessitant des interventions manuelles et contrôles fréquents soient inactives.
  • Il accroît le rendement en pilotant une utilisation accrue des ressources de calcul.
  • Il permet d'établir des priorités dans les tâches en alignant l'allocation des ressources sur les objectifs commerciaux.

Vous devriez exécuter vos tâches sur Fargate lorsque vous voulez qu'AWS Batch gère l'allocation des calculs sans infrastructure ECS. Vous devriez exécuter vos tâches sur ECS si vous avez besoin d'accéder à des configurations d'instance particulières (processeurs particuliers, GPU ou architecture) ou si vous avez des charges de travail à très grande échelle. Si vous avez choisi Kubernetes comme technologie d'orchestration de conteneurs, vous pouvez normaliser vos charges de travail par lots en utilisant l'intégration de Batch avec EKS.

En fonction de votre utilisation, les tâches Fargate actuelles démarrent plus rapidement dans le cas d'une augmentation initiale de la puissance du travail. Ainsi, il n'es pas nécessaire d'attendre le lancement de l'instance EC2 ou de pods. Toutefois, pour des charges de travail plus grandes, les instances EKS ou ECS peuvent être plus rapides, car Batch réutilise des instances et des images de conteneur pour exécuter les tâches en question.

Vous devriez exécuter vos tâches sur Fargate lorsque vous voulez qu’AWS Batch gère l’allocation des calculs sans infrastructure EC2. Vous devriez exécuter vos tâches sur EC2 si vous avez besoin d’accéder à des configurations d’instance particulières (processeurs particuliers, GPU ou architecture) ou si vous avez des charges de travail à très grande échelle.

En fonction de votre cas d’utilisation, vos tâches peuvent démarrer plus rapidement sur EC2 ou Fargate. Les tâches Fargate démarrent plus rapidement dans le cas d’une augmentation initiale de la puissance du travail. Ainsi, il n’es pas nécessaire d’attendre le lancement de l’instance EC2. Toutefois, pour des charges de travail plus grandes, les instances EC2 peuvent être plus rapides, car Batch réutilise des instances et des images de conteneur pour exécuter les tâches en question.

Oui. Vous pouvez configurer le CE Fargate pour qu’il ait un processeur virtuel maximal, soit qu’il comprenne tous les processeurs virtuels de toutes les tâches en cours d’exécution dans ce CE. Lorsque le nombre de processeurs virtuels atteint son maximum dans un CE, Batch commence alors à programmer des tâches dans le prochain CE Fargate dans l’ordre de la file d’attente, s’il en existe une. Cela est utile si, par exemple, vous voulez configurer un CE Fargate à vos besoins minimum, puis exécuter le reste de votre charge de travail sur Fargate Spot.

Lors de la configuration d’un CE Fargate Spot d’abord, suivi par un CE Fargate, Batch passe uniquement à Fargate lorsque le nombre de processeurs virtuels utilisés par vos tâches est plus élevé que le nombre maximum de processeurs virtuels pour ce CE. Si Fargate Spot vous est retiré, le nombre de processeurs virtuels maximal ne sera pas atteint et Batch ne demandera pas aux ressources Fargate du CE en question d’exécuter vos tâches.

Connecter une file d’attente de tâches AWS Batch à un CE Fargate ou Fargate Spot et à un CE EC2 ou Spot n’est pas permis.

Pourquoi AWS Batch

AWS Batch s'occupe de l'exécution des tâches et de la gestion des ressources de calcul, ce qui vous permet de vous concentrer sur le développement d'applications et l'analyse des résultats plutôt que sur la configuration et la gestion de l'infrastructure. Si vous songez à exécuter ou déplacer des charges de travail par lot sur AWS, envisagez d'utiliser AWS Batch.

AWS Batch est optimisé pour le traitement par lot et les applications qui sont dimensionnés par le biais de l'exécution de plusieurs tâches en parallèle. L'apprentissage approfondi, l'analyse génomique, les modèles de gestion des risques financiers, les simulations Monte-Carlo, le rendu d'animations, le transcodage de fichiers multimédia, le traitement d'images et les simulations techniques constituent d'excellents exemples d'applications de traitement par lot.

Tâches à plusieurs conteneurs

Vous devez utiliser la fonctionnalité des tâches à plusieurs conteneurs si vous souhaitez modéliser votre charge de travail AWS Batch sous la forme d'un ensemble d'éléments logiquement distincts, par exemple l'environnement de simulation et le système en cours de test (SUT), l'application principale ou le side-car de télémétrie. L'utilisation de cette fonctionnalité simplifiera vos opérations, facilitera le respect des bonnes pratiques architecturales et vous permettra d'aligner les simulations sur l'architecture à plusieurs conteneurs de votre système de production. Que vous souhaitiez exécuter des conteneurs séparés pour vos SUT et votre environnement de simulation ou que vous deviez ajouter un side-car auxiliaire, il n'est plus nécessaire pour vous de combiner tous les éléments de la charge de travail dans un conteneur monolithique et de le reconstruire après chaque modification de code. Vous pouvez ainsi simplifier DevOps, réduire la taille des conteneurs et accélérer leur téléchargement, et faciliter la parallélisation du travail.

AWS Batch prend en charge l'exécution de plusieurs conteneurs dans tous les types de tâches, y compris les tâches standard à nœud unique, les tâches en tableau et les tâches parallèles à plusieurs nœuds (MNP).

Vous pouvez exécuter des tâches à plusieurs conteneurs dans tous les environnements de calcul AWS Batch, notamment Amazon ECS, Amazon EC2, AWS Fargate et Amazon EKS.

Fonctionnalités

AWS Batch gère les environnements de calcul et les files d'attente de tâches, vous permettant ainsi d'exécuter facilement des milliers de tâches, quelle que soit leur échelle, à l'aide d'Amazon ECS, Amazon EKS et AWS Fargate, avec le choix entre des ressources Spot ou à la demande. Il vous suffit de définir et d'envoyer vos tâches par lot à une file d'attente. En réponse, AWS Batch décide de l'emplacement d'exécution des tâches, lançant des capacités AWS supplémentaires si nécessaire. AWS Batch surveille attentivement la progression de vos tâches. Lorsqu'une capacité n'est plus nécessaire, AWS Batch la supprime. AWS Batch vous offre également la possibilité d'envoyer des tâches faisant partie d'un pipeline ou d'un flux de travail, ce qui vous permet d'indiquer toutes les interdépendances existant entre celles-ci à mesure que vous les envoyez.

AWS Batch prend en charge toute tâche pouvant être exécutée comme conteneur Docker. Les tâches spécifient leurs exigences en matière de mémoire et le nombre de vCPU.  

Une instance EC2 ou une ressource de calcul AWS Fargate représentent une ressource de calcul AWS Batch.

Un ensemble de ressources de calcul sur lequel les tâches sont exécutées constitue un environnement de calcul AWS Batch. AWS Batch prend en charge deux types d'environnements de calcul : les environnements de calcul opérés qui sont mis en service et régis par AWS et les environnements de calcul non opérés qui sont administrés par les clients. Les environnements de calcul non gérés fournissent un mécanisme servant à tirer parti des ressources spécialisées telles que les hôtes dédiés, les configurations de stockage supérieures et Amazon EFS.

Une définition de tâches décrit la tâche devant être exécutée, les paramètres, les variables environnementales, les exigences en matière de calcul et d'autres informations utilisées pour optimiser l'exécution d'une tâche. Les définitions de tâches sont déterminées préalablement à l'envoi d'une tâche et peuvent être partagées avec d'autres personnes.

AWS Batch a recours à Amazon ECS pour exécuter les tâches conteneurisées et nécessite donc l'installation de l'agent ECS sur les ressources de calcul dans vos environnements de calcul AWS Batch. L'agent ECS est préinstallé dans les environnements de calcul opérés.

Les environnements de calcul AWS Batch peuvent être composés d'instances Spot EC2. Lors de la création d'un environnement de calcul géré, il vous suffit de spécifier que vous souhaitez utiliser des instances Spot EC2, puis d'indiquer un pourcentage du coût à la demande que vous êtes prêt à payer et AWS Batch s'occupe du reste. Les environnements de calcul non gérés peuvent également comprendre les instances Spot que vous lancez, notamment celles lancées par le parc d'instances Spot EC2.

Tarification

AWS Batch est disponible sans frais supplémentaires. Vous ne payez que pour les ressources AWS (par ex. : des instances EC2 ou AWS Fargate) que vous créez pour stocker et exécuter vos tâches par lot.

Planification GPU

Oui, vous pouvez utiliser Batch pour préciser le nombre et le type d’accélérateurs dont vos tâches ont besoin en tant que variables d’entrée de définition des tâches, avec les options actuelles du vCPU et de la mémoire. AWS Batch mettra à l’échelle les instances appropriées pour vos tâches sur la base des accélérateurs demandés et isolera les accélérateurs selon les besoins de chaque tâche, seuls les conteneurs peuvent donc y accéder.

L’utilisation d’accélérateurs avec Batch vous permet de programmer et de fournir vos tâches de manière dynamique selon les besoins de leurs accélérateurs. Batch s’assure alors que le nombre approprié d’accélérateurs est réservé par rapport à vos tâches. Batch augmente vos instances EC2 accélérées lorsque vous en avez besoin et les réduit une fois que vous avez terminé, vous permettant de vous concentrer sur vos applications. Batch possède une intégration native dans EC2 Spot, ce qui signifie que vos tâches accélérées peuvent générer jusqu’à 90 % d’économie lorsque vous utilisez des instances accélérées.

Actuellement, vous pouvez utiliser des GPU sur des instances accélérées P et G.

Vous pouvez préciser le nombre et le type d’accélérateurs dans la Définition des tâches. Spécifiez l’accélérateur en décrivant le type d’accélérateur (par exemple, GPU, actuellement le seul accélérateur pris en charge) et le nombre d’accélérateurs de ce type qu’exige votre tâche. Votre type d'accélérateur spécifié doit être présent sur l'un des types d'instance précisé dans vos environnements de calcul. Par exemple, si votre tâche a besoin de 2 GPU, veuillez également vous assurer que vous avez spécifié une instance de famille P dans votre environnement de calcul.

À partir de l’API :
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

Conformément aux exigences de vCPU et de mémoire, vous pouvez remplacer le nombre et le type d’accélérateurs lors de la soumission de la tâche.

En raison du comportement de ce jour, Batch évitera de planifier des tâches qui n’ont pas besoin d’accélération sur les instances accélérées, dans la mesure du possible. Ceci afin d’éviter les cas où les tâches de longue durée occupent l’instance accélérée sans mettre à profit l’accélérateur, augmentant ainsi le coût. Dans de rares cas, lorsque la tarification Spot et les instances accélérées sont des types autorisés, il est possible que Batch détermine qu’une instance accélérée soit le moyen le moins onéreux pour exécuter vos tâches, indépendamment des besoins en accélérateurs.

Si vous soumettez une tâche à un EC qui permet uniquement à Batch de lancer des instances accélérées, Batch exécutera les tâches sur ces instances, indépendamment de leurs besoins en accélérateurs.

Désormais, les instances de type P seront lancées par défaut avec l’AMI optimisée par des GPU ECS. Cette AMI contient les bibliothèques et les environnements d’exécution nécessaires pour exécuter des applications basées sur GPU. Vous pouvez toujours pointer vers une AMI personnalisée, si nécessaire, lors de la création de l’EC.

Mise en route

Consultez le guide de démarrage de notre documentation pour démarrer.

Vous n'avez pas besoin de lancer manuellement vos ressources de calcul pour démarrer. La console Web AWS Batch vous guide tout au long du processus de création de votre premier environnement de calcul et de votre première file d'attente de tâches afin que vous puissiez envoyer votre toute première tâche. Les ressources de votre environnement de calcul augmentent à mesure que des tâches supplémentaires sont prêtes à être exécutées et diminuent à mesure que le nombre de tâches pouvant être exécutées baisse.