Pourquoi AWS Batch ?
Avec AWS Batch, vous pouvez compresser le code pour vos tâches de traitement par lots, spécifier leurs dépendances et soumettre ces tâches à l'aide de la Console de gestion AWS, des interfaces de ligne de commande ou des kits SDK. Une fois que vous spécifiez les paramètres d'exécution et les dépendances entre les tâches, AWS Batch facilite l'intégration dans de nombreux moteurs de flux de travail et de langages de calcul par lots populaires (p. ex., Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow et AWS Step Functions). AWS Batch fournit et met à l'échelle de façon dynamique et efficace les ressources de calcul Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS) et AWS Fargate avec une option qui permet d'utiliser les instances à la demande ou Spot basée sur les exigences des tâches. AWS Batch propose des files d'attente de tâches par défaut et des définitions d'environnements de calcul afin que vous puissiez vous lancer rapidement.
Définitions de tâches
Tâches à plusieurs conteneurs
Les tâches à plusieurs conteneurs représentent une fonctionnalité qui vous permet d'exécuter plus facilement et plus rapidement des simulations à l'échelle lorsque vous testez des systèmes complexes tels que ceux utilisés dans les véhicules autonomes et la robotique. Grâce à la possibilité d'exécuter plusieurs conteneurs en une seule tâche, vous pouvez bénéficier des fonctionnalités avancées de mise à l'échelle, de planification et d'optimisation des coûts d'AWS Batch sans avoir à reconstruire votre système pour en faire un conteneur monolithique complexe. En lieu et place, vous pouvez continuer à employer plusieurs conteneurs modulaires plus petits qui représentent chacun des composants système différents, comme un environnement virtuel 3D, des capteurs de perception robotisés ou un side-car d'enregistrement de données. Les tâches à plusieurs conteneurs accélèrent les délais de développement tout en réduisant les étapes de préparation des tâches et en éliminant le besoin de créer des outils internes supplémentaires. L'exécution de tâches de simulation avec plusieurs conteneurs simplifie également le développement logiciel (Dev) et les opérations informatiques (Ops) en définissant la responsabilité des composants. Ainsi, les différentes équipes peuvent détecter et corriger les erreurs dans le composant de leur équipe sans se laisser distraire par les composants des autres équipes.
Prise en charge des charges de travail HPC étroitement liées
AWS Batch prend en charge les tâches parallèles à plusieurs nœuds afin que vous puissiez exécuter des tâches uniques couvrant plusieurs instances EC2. Grâce à cette fonctionnalité, vous pouvez utiliser AWS Batch pour exécuter efficacement des charges de travail telles que des applications de calcul haute performance (HPC) à grande échelle et étroitement liées ou une formation de modèle GPU distribuée. AWS Batch prend également en charge Elastic Fabric Adapter, une interface réseau au sein de laquelle vous pouvez exécuter des applications qui nécessitent de hauts niveaux de communication entre les nœuds à l'échelle sur AWS.
Définitions précises des tâches et modélisation simplifiée des dépendances entre les tâches
Avec AWS Batch, vous pouvez spécifier des besoins en ressources, tels que les vCPU et la mémoire, les rôles AWS Identity and Access Management (IAM), les points de montage de volume, les propriétés de conteneur et les variables d'environnement afin de définir le mode d'exécution des tâches. AWS Batch exécute vos tâches sous la forme d'applications conteneurisées sur Amazon ECS. Vous pouvez également définir des dépendances entre différentes tâches. Par exemple, votre tâche de traitement par lots peut être composée de trois étapes de traitement auxquelles sont associés divers besoins en ressources. Grâce aux dépendances, vous pouvez créer trois tâches comportant des besoins en ressources différents, chaque tâche successive dépendant de la tâche précédente.
Intégrations
Prise en charge de moteurs de flux de travail populaires
AWS Batch peut être intégré à des moteurs de flux de travail commerciaux et open source tels que Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow et AWS Step Functions afin que vous puissiez utiliser des langages de flux de travail que vous connaissez pour modéliser vos pipelines de calcul par lots.
Intégration avec les modèles de lancement EC2
AWS Batch prend désormais en charge les modèles de lancement EC2 afin que vous puissiez concevoir des modèles personnalisés pour vos ressources de calcul tout en permettant à Batch de mettre à l'échelle des instances en fonction de vos exigences. Vous pouvez, entre autres, définir vos modèles de lancement EC2 pour ajouter des volumes de stockage, sélectionner des interfaces réseau ou configurer des autorisations. Les modèles de lancement EC2 réduisent le nombre d'étapes requises pour la configuration d'un environnement Batch en capturant les paramètres de lancement au sein d'une ressource.
Surveillance et journalisation intégrées
AWS Batch affiche des métriques opérationnelles clés pour vos tâches de traitement par lots dans AWS Management Console. Vous pouvez consulter les métriques liées aux capacités de calcul, ainsi que les métriques pour les tâches en cours d'exécution, en attente et terminées. Les journaux de vos tâches (p. ex., STDERR et STDOUT) sont disponibles dans la Console de gestion AWS et sont également écrits dans Amazon CloudWatch Logs.
Contrôle précis des accès
AWS Batch utilise IAM pour contrôler et surveiller les ressources AWS auxquelles peuvent accéder vos tâches, telles que les tables Amazon DynamoDB. Grâce à IAM, vous pouvez également définir des stratégies pour différents utilisateurs dans votre organisation. Par exemple, les administrateurs peuvent se voir accorder des autorisations d'accès complet à une opération d'API AWS Batch, les développeurs peuvent disposer d'autorisations limitées pour la configuration d'environnements de calcul et l'enregistrement de tâches, et les utilisateurs finaux peuvent être limités aux autorisations nécessaires pour soumettre et supprimer des tâches.
Environnements de calcul
AWS Batch sur Amazon EKS
AWS Batch peut exécuter vos tâches de traitement par lots sur vos clusters Amazon EKS existants. Vous spécifiez les exigences en matière de vCPU, de mémoire et de GPU dont vos conteneurs ont besoin, puis vous les soumettez à une file d'attente attachée à un environnement de calcul compatible avec un cluster EKS. AWS Batch gère la mise à l'échelle des nœuds Kubernetes et le placement des pods sur vos nœuds. En outre, AWS Batch gère la mise en file d'attente, le suivi des dépendances, les nouvelles tentatives de tâche, la hiérarchisation et la soumission des pods, tout en assurant une prise en charge pour les instances Amazon Elastic Compute Cloud (EC2) à la demande et Spot. AWS Batch s'intègre également à votre cluster EKS avec un nom de domaine distinct, afin que vous n'ayez pas à vous soucier des interférences entre les tâches de traitement par lots et vos processus existants. Enfin, AWS Batch gère la capacité à votre place, notamment en gérant un groupe actif de nœuds, en plafonnant la capacité à un certain nombre de vCPU, en mettant à l'échelle les nœuds et en exécutant des tâches dans un seul cluster ou sur plusieurs clusters.
AWS Batch avec Fargate
AWS Batch avec les ressources Fargate vous offre une architecture entièrement sans serveur pour vos tâches par lots. Avec Fargate, chaque tâche reçoit la quantité de CPU et de mémoire dont elle a besoin (au sein des références Fargate autorisées). Ainsi, les ressources ne perdent pas de temps et il n'est pas nécessaire d'attendre le démarrage de l'instance EC2.
Si vous utilisez actuellement AWS Batch, Fargate vous offre une couche de séparation supplémentaire des instances EC2. Il n'est pas nécessaire de gérer ou de corriger les Amazon Machine Images (AMI). Lorsque vous soumettez vos tâches compatibles avec Fargate à Batch, vous n'avez plus à vous soucier de la maintenance de ces deux services si vous avez des charges de travail qui s'exécutent sur Amazon EC2 et d'autres charges de travail qui s'exécutent sur Fargate.
AWS fournit un planificateur cloud complet avec une file d'attente gérée et la capacité de spécifier les priorités, les nouvelles tentatives de tâche, les dépendances, les délais d'expiration, etc. AWS Batch gère les envois vers Fargate et le cycle de vie de vos tâches pour que vous n'ayez pas à le faire.
De plus, Fargate offre des avantages en matière de sécurité sans effort supplémentaire (p. ex., conformité SOX et PCI), ainsi que l'isolement entre les ressources de calcul de chaque tâche.
Planification
Planification des tâches en fonction des priorités
Avec AWS Batch, vous pouvez configurer plusieurs files d'attente avec différents niveaux de priorité. Les tâches de traitement par lots sont stockées dans les files d'attente jusqu'à ce que les ressources de calcul nécessaires à leur exécution soient disponibles. Le planificateur AWS Batch détermine quand, où et comment exécuter les tâches qui ont été soumises à une file d'attente en fonction des besoins en ressources de chaque tâche. Le planificateur évalue la priorité de chaque file d'attente et exécute les tâches dans l'ordre de priorité sur des ressources de calcul optimales (p. ex., des instances optimisées pour la mémoire ou le CPU), à condition que les tâches ne possèdent aucune dépendance en suspens.
Prise en charge de la planification GPU
La planification GPU vous permet de 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 sur AWS Batch. AWS Batch mettra ensuite à l'échelle les instances appropriées pour vos tâches en fonction du nombre de GPU requis et isolera les accélérateurs selon les besoins de chaque tâche. Seuls les conteneurs peuvent donc y accéder.
Dimensionnement
Mise en service et dimensionnement dynamiques des ressources de calcul
Lorsque vous utilisez Fargate ou AWS Fargate Spot avec AWS Batch, vous ne devez configurer que quelques concepts dans Batch (un environnement de calcul, une file d'attente et une définition de tâche) et vous obtenez une file d'attente, un planificateur et une architecture de calcul complets sans avoir à gérer d'infrastructure de calcul.
Si vous désirez des instances EC2, AWS Batch propose des environnements de calcul gérés qui mettent en service et à l'échelle de façon dynamique les ressources de calcul en fonction du volume et des besoins en ressources des tâches que vous avez soumises. Vous pouvez configurer vos environnements de calcul gérés selon des exigences, telles que le type d'instances EC2, les configurations de sous-réseau VPC, le nombre minimum/maximum/souhaité de processeurs virtuel sur toutes les instances et le montant que vous êtes prêt à payer pour les instances Spot. Ce montant est exprimé en pourcentage du prix de l'instance à la demande.
Vous pouvez également mettre en service et gérer vos propres ressources de calcul dans des environnements de calcul non gérés AWS Batch si vous devez utiliser, pour vos instances EC2, des configurations différentes de celles proposées par les environnements de calcul gérés (p. ex., de plus grands volumes EBS ou un autre système d'exploitation). Il vous suffit de mettre en service des instances EC2 qui incluent l'agent Amazon ECS et d'exécuter des versions prises en charge de Linux et Docker. AWS Batch exécute alors les tâches de traitement par lots sur les instances EC2 que vous mettez en service.
Stratégies d'allocation flexibles
Avec AWS Batch, vous pouvez choisir trois méthodes d'allocation des ressources de calcul. Ces stratégies vous offrent la possibilité de prendre en compte le débit et la tarification lorsque vous décidez de la façon dont AWS Batch doit mettre à l'échelle les instances en votre nom.
Solution optimale : AWS Batch sélectionne un type d'instance qui correspond le mieux aux besoins des tâches, avec une préférence pour le type d'instance le moins coûteux. Si des instances supplémentaires du type d'instance sélectionné ne sont pas disponibles, AWS Batch attendra que les instances supplémentaires soient disponibles. S'il n'y a pas assez d'instances disponibles, ou si vous atteignez les limites du service Amazon EC2, les tâches supplémentaires ne s'exécuteront pas tant que les tâches en cours ne seront pas terminées. Cette stratégie d'allocation permet de maintenir les coûts à un niveau plus raisonnable, mais peut limiter la mise à l'échelle.
Solution optimale évolutive : AWS Batch sélectionnera des types d'instance supplémentaires dont la taille est suffisamment importante pour répondre aux exigences des tâches dans la file d'attente, avec une préférence pour les types d'instance au coût par vCPU plus faible. Si des instances supplémentaires des types d'instance sélectionnés précédemment ne sont pas disponibles, AWS Batch sélectionnera de nouveaux types d'instance.
Fonctionnalité Spot optimisée : AWS Batch sélectionnera un ou plusieurs types d'instance dont la taille est suffisamment importante pour répondre aux exigences des tâches en attente, avec une préférence pour les types d'instance qui sont moins susceptibles d'être interrompus. Cette stratégie d'allocation est uniquement disponible pour les ressources de calcul d'instances Spot.