Environnements de calcul dans AWS Batch : comment les configurer
Lorsque vous devez exécuter des modèles d’entraînement et des analyses complexes avec des tâches par lots à grande échelle, le traitement par lots AWS peut être une bonne solution. AWS fournit un service spécial permettant d’effectuer efficacement un grand nombre d’opérations informatiques sans frais de gestion supplémentaires. Cet article de blog traite de l’architecture AWS Batch et des principes de configuration pour le traitement par lots.
Qu’est-ce qu’AWS Batch ?
AWS Batch est un service cloud fourni par Amazon Web Services (AWS) conçu pour activer les développeurs, ingénieurs et scientifiques à exécuter facilement et efficacement des milliers de tâches informatiques par lots sur le cloud AWS. Le traitement par lots est une méthode permettant de traiter de grands volumes de données par la division du travail en unités plus petites pouvant être traitées simultanément. AWS Batch simplifie le processus de déploiement, de gestion et d’évolutivité des tâches de traitement par lots. Il provisionne automatiquement les ressources informatiques et optimise leur allocation afin d’offrir un débit élevé à faible coût. Avec AWS Batch, vous n’avez pas besoin d’installer ni de gérer de logiciels de calcul par lots ou de clusters de serveurs qui traitent traditionnellement ces tâches, ce qui facilite l’exécution de tâches informatiques complexes à grande échelle. AWS Batch offre les fonctionnalités clés suivantes :
- Allocation dynamique des ressources. AWS Batch provisionne dynamiquement les ressources, y compris la quantité et le type optimaux de ressources de calcul (instances optimisées pour le processeur ou la mémoire) en fonction du volume et des conditions à remplir spécifiques des tâches par lots soumises.
- Environnementsinformatiquesgérés . Vous pouvez spécifier les ressources informatiques pour vos tâches et AWS Batch assurera la gestion de l’infrastructure sous-jacente, en assurant l’évolutivité, qu’elle soit ascendante ou descendante, selon les besoins afin d’exécuter les tâches aussi efficacement que possible.
- Planifier les tâches. AWS Batch met en file d’attente les tâches et planifie leur exécution en fonction des ressources informatiques disponibles et de la priorité des tâches par lots. Il garantit que les tâches prioritaires sont exécutées en premier et gère les dépendances d’exécution entre les tâches, le cas échéant.
- Support pour conteneurs. AWS Batch est intégré à Amazon Elastic Container Service (ECS) et prend en charge Docker, ce qui vous permet de regrouper vos tâches dans des conteneurs. Cela garantit que vos environnements informatiques sont isolés et cohérents, ce qui les rend plus sécurisés et plus faciles à gérer.
- Intégration avec les services AWS. AWS Batch s’intègre facilement à d’autres services AWS tels qu’Amazon S3, Amazon DynamoDB, Amazon RDS, AWS Lambda, etc., ce qui active la création d’architectures de traitement par lots complexes et évolutives.
Composants d’AWS Batch
Pour mieux comprendre le service AWS Batch, il est important de connaître les principaux composants utilisés. Les principaux composants d’AWS Batch sont les suivants :
- Définitions des tâches. Il s’agit de modèles qui décrivent comment les tâches doivent être exécutées. Une définition de tâche spécifie divers paramètres liés à la tâche, tels que l’image Docker à utiliser, les conditions à remplir en matière de vCPU et de mémoire, la commande à exécuter, les variables d’environnement, une stratégie de réessai et les volumes de données, entre autres configurations. Vous pouvez créer plusieurs définitions de tâches pour différents types de tâches que vous prévoyez d’exécuter.
- Files d’attente des tâches. Les files d’attente de tâches sont l’endroit où les tâches sont stockées jusqu’à ce qu’elles soient planifiées pour être exécutées dans des environnements informatiques. Vous pouvez avoir plusieurs files d’attente de tâches pour différents niveaux de priorité (par exemple, élevé, moyen, faible) ou différents types de tâches. Les tâches dans la file d’attente sont planifiées en fonction de leur priorité et de l’ordre d’attribution de l’environnement informatique à la file d’attente des tâches.
- Environnementsinformatiques. Les environnements de calcul AWS Batch sont des ensembles de ressources informatiques utilisées pour exécuter des tâches par lots. Les environnements informatiques peuvent être gérés ou non gérés.
- tâches. Les tâches sont les unités de travail individuelles soumises à AWS Batch. Chaque tâche exécute une image de conteneur Docker, et vous pouvez spécifier les vCPU, la mémoire et d’autres conditions à remplir pour chaque tâche. Les tâches peuvent être dépendantes, ce qui signifie qu’une tâche peut dépendre de la réussite d’une ou plusieurs autres tâches avant de pouvoir être exécutée.
- Planifier. La planification AWS Batch est le processus qui détermine comment les tâches sont attribuées aux ressources informatiques. Le planificateur évalue la file d’attente des tâches, leur priorité et la disponibilité des ressources informatiques afin d’exécuter les tâches de manière efficace. Le planificateur AWS Batch permet d’optimiser à la fois l’utilisation des ressources informatiques et le temps d’exécution des tâches.
- Fonctions Lambda (facultatif). Bien qu’il ne s’agisse pas d’un composant essentiel, AWS Lambda peut être utilisé conjointement avec AWS Batch à diverses fins, telles que le déclenchement de tâches en réponse à des événements, le traitement des résultats des tâches ou la modification dynamique des files d’attente de tâches ou des environnements de calcul.
Comprendre les environnements informatiques
Les environnements informatiques au sein d’AWS Batch représentent l’infrastructure informatique qui exécute vos tâches par lots. Il s’agit essentiellement des environnements dans lesquels résident vos ressources informatiques. Vous pouvez considérer un environnement informatique comme un ensemble de ressources informatiques au sein d’AWS Batch, géré et évolutif par le service afin d’exécuter les tâches batch soumises. Ces environnements peuvent être configurés avec des types spécifiques de ressources informatiques, définis par des types d’instances, ou optimisés pour des tâches informatiques particulières. Il existe deux types d’environnements informatiques dans AWS Batch :
1. Environnementsinformatiques à gérer parl’
Dans ce type de configuration, AWS gère l’environnement informatique à votre place. AWS Batch gère automatiquement l’évolutivité et l’approvisionnement des ressources informatiques en fonction des conditions à remplir des tâches. Il vous suffit de spécifier les types d’instances souhaités (ou la plage), le nombre minimum, souhaité et maximum de vCPU, ainsi que d’autres détails tels que la stratégie d’allocation. AWS Batch gère le reste des tâches, y compris la décision d’augmenter ou de réduire l’évolutivité en fonction de la charge de travail, en ajustant automatiquement la quantité de ressources informatiques en fonction de la charge de travail sans intervention manuelle. Cet environnement prend en charge deux types d’instances : les instances à la demande et les instances spot, avec la possibilité de les combiner pour optimiser les coûts et augmenter la capacité. Les avantages des environnements informatiques gérés sont les suivants :
- Évolutivité automatique. AWS Batch peut automatiquement augmenter ou réduire l’évolutivité des ressources en fonction des conditions à remplir de la file d’attente des tâches, ce qui permet d’optimiser les coûts et l’utilisation des ressources.
- Configuration facile. Vous avez moins de configuration à effectuer from votre côté, car AWS gère l’infrastructure sous-jacente, y compris les instances et les politiques d’évolutivité.
- Rentabilité. Vous pouvez tirer parti des instances Spot dansles environnementsinformatiques gérés afin de réduire les coûts liés à vos tâches par lots.
2. Environnements informatiques non gérés
Dans un environnement informatique non géré, vous gérez vos propres ressources informatiques. Cela signifie que vous contrôlez la configuration et l’évolutivité du cluster d’instances EC2 ou d’instances Spot qui exécuteront vos tâches par lots. Cette option permet un contrôle plus précis de l’environnement informatique, mais nécessite davantage d’efforts de configuration et de gestion de votre part. Il convient aux situations impliquant des configurations spécifiques, des AMI (Amazon Machine Images) personnalisées ou des besoins en ressources spécialisées. Les principales caractéristiques des environnements informatiques sont les suivantes :
- Types de ressources informatiques. Vous pouvez spécifier le type d’instances que votre environnement utilisera. Cela peut être optimal (lorsque AWS Batch sélectionne automatiquement le Type de ressource), des types d’instances spécifiques, ou une combinaison qui correspond aux conditions à remplir de votre tâche.
- Politique d’évolutivité. Pour les environnements gérés, AWS Batch assure une évolutivité dynamique des ressources informatiques à la hausse ou à la baisse en fonction des modèles de soumission et d’achèvement des tâches, garantissant ainsi une rentabilité et des performances optimales.
- Prise en charge des modèles de lancement. Vous pouvez spécifier des modèles de lancement EC2 pour vos environnements informatiques, ce qui permet de personnaliser les instances EC2 dans les environnements informatiques gérés.
- Intégration ponctuelle. AWS Batch prend en charge l’utilisation des instances EC2 Spot dans les environnements informatiques gérés et non gérés, ce qui permet de réaliser des économies pour les charges de travail flexibles.
Les avantages de ce type d’environnement informatique sont les suivants :
- Contrôle total. Vous avez un contrôle total sur l’environnement informatique, y compris les types d’instances et les configurations détaillées.
- Personnalisation. Cette solution est idéale pour les conditions à remplir spécifiques qui ne peuvent être satisfaites par l’environnement informatique géré, car elle offre une plus grande flexibilité en termes de types d’instances, de configurations et d’évolutivité.
- Intégration avec l’infrastructure existante. Si vous disposez déjà d’environnements configurés ou avez des conditions à remplir particulières en matière de sécurité, de conformité ou d’utilisation d’instances réservées, un environnement non géré pourrait être le choix qui vous convient.
Cas d’utilisation d’AWS Batch
AWS Batch peut être utilisé dans un large éventail de scénarios. Les cas d’utilisation les plus courants dans lesquels AWS Batch offre efficacité et évolutivité, démontrant ainsi sa polyvalence dans différents secteurs et applications, sont répertoriés ci-dessous.
- Traitement et analyse de données à grande échelle. Les organisations qui offrent des services dans des domaines tels que la génomique, l’analyse financière ou la modélisation environnementale, peuvent utiliser AWS Batch pour traiter de grands jeux de données. Le service peut gérer efficacement les ressources informatiques nécessaires pour analyser en parallèle de grands volumes de données, réduisant ainsi considérablement le temps nécessaire au traitement et à l’analyse des données, qui passe de plusieurs heures ou jours à quelques minutes.
- Formation et inférence des modèles d’apprentissage automatique. Les scientifiques des données et les ingénieurs en apprentissage automatique peuvent utiliser AWS Batch pour entraîner des modèles d’apprentissage automatique sur de grands jeux de données. AWS Batch peut offrir une évolutivité dynamique des ressources informatiques afin de répondre aux exigences de diverses tâches de formation, from le réglage de modèles à petite échelle à la formation de modèles d’apprentissage profond à grande échelle sur de nombreux processeurs graphiques. De même, il peut gérer des tâches d’inférence par lots, traitant efficacement de grands volumes de demandes d’inférence.
- Traitement d’images ou de vidéos. Les entreprises médiatiques, les fournisseurs de contenu ou même les instituts de recherche scientifique ont souvent besoin de traiter de grandes collections d’images ou de vidéos, que ce soit pour le rendu, le transcodage ou l’analyse (par exemple, l’analyse d’images satellites pour la surveillance environnementale). AWS Batch offre une évolutivité permettant de traiter simultanément des milliers de fichiers, ce qui accélère considérablement le flux de travail.
- Charges de travail liées à la simulation et à la modélisation. Pour les secteurs qui utilisent la simulation (industrie pharmaceutique, automobile, aérospatiale, etc.), où des milliers de simulations peuvent être nécessaires pour modéliser des phénomènes physiques complexes ou pour tester divers scénarios, AWS Batch est activé pour exécuter efficacement ces tâches gourmandes en calcul. Il garantit que chaque simulation dispose des ressources informatiques nécessaires, ce qui peut réduire le temps nécessaire pour obtenir des résultats de plusieurs Wochen à quelques jours, voire quelques heures.
- Modélisation des risques financiers. Les institutions financières peuvent utiliser AWS Batch pour exécuter des modèles de risque complexes sur de grands jeux de données. Par une évolutivité dynamique des ressources informatiques, AWS Batch garantit que les évaluations des risques, qui nécessitent l’analyse d’énormes quantités de données financières historiques, peuvent être réalisées rapidement, ce qui facilite la prise de décision.
- Pipelines de compilation et de test de logiciels. Les équipes de développement logiciel peuvent utiliser AWS Batch pour automatiser leurs pipelines de compilation et de test. Pour les projets comportant des suites de tests volumineuses ou nécessitant des compilations sur plusieurs plateformes, AWS Batch peut réduire considérablement les délais d’exécution en exécutant les tests en parallèle et en offrant une évolutivité pour répondre aux pics de demande.
Guide d’installation étape par étape
Découvrons comment configurer une tâche AWS, un environnement de calcul et d’autres composants requis.
Étapes de préparation
Préparez les rôles AWS à utiliser pour les tâches batch AWS :
- Accédez à la console IAM. Ouvrez la console de gestion AWS, recherchez le service IAM et ouvrez-le.
- Créer AWSBatchServiceRole :
- Dans le tableau de bord IAM, sélectionnez Rôles, puis cliquez sur Créer un rôle.
- Sélectionnez un service AWS comme entité de confiance, sélectionnez Batch, puis cliquez sur Suivant : Autorisations.
- Attachez la politique AWSBatchServiceRole. Si vous ne le voyez pas, recherchez-le dans la barre de recherche.
- Cliquez sur Suivant, nommez le rôle (par exemple, AWSBatchServiceRole) et créez le rôle.
- Créer un rôle d’instance EC2 :
- Répétez le processus de création de rôle, mais pour cette fois, sélectionnez EC2 comme entité de confiance.
- Attachez la politique AmazonEC2ContainerServiceforEC2Role ou toute autre politique requise pour votre cas d’utilisation.
- Nommez le rôle (par exemple, ecsInstanceRole) et créez-le.
Accéder à AWS Batch
Tapez « batch » dans le champ de recherche des services AWS et cliquez sur AWS Batch lorsque cet élément s’affiche.
La page du tableau de bord AWS Batch devrait maintenant s’ouvrir.
Création d’un environnement informatique
Les environnements de calcul contiennent les instances de conteneurs Amazon ECS sur lesquelles vos tâches seront exécutées. Cliquez surEnvironnements de calcul dans la page du tableau de bord AWS Batch, puis sur Créer pour créer un nouvel environnement informatique.
L’assistant Créer un environnement de calcul s’ouvre.
- Configuration de l’environnementinformatique.
- Sélectionnez une plateforme informatique, par exemple Amazon Elastic Compute Cloud (Amazon EC2).
- Choisissez entre « Géré » et « Non géré ». Les environnements gérés sont gérés par AWS, tandis que les environnements non gérés sont gérés par vous.
- Remplissez le formulaire en fonction de vos besoins. Entrez un nom pour votre environnement informatique (env01test dans cet exemple). Spécifiez les rôles créés lors de l’étape de préparation, le cas échéant. Vous pouvez également créer un nouveau rôle sur cet écran si vous ne l’avez pas encore fait. Il existe des conseils utiles pour chaque champ afin de vous aider à définir la valeur optimale.

- Configuration de l’instance. Définissez les paramètres requis pour le vCPU (processeur central virtuel). Sélectionnez le type d’instance. Vous pouvez sélectionner des instances ponctuelles ou des instances à la demande. Notez que si le paramètre Minimum vCPUs est défini sur 0, les ressources AWS ne seront pas gaspillées lorsqu’il n’y a pas de travail à effectuer (il s’agit de la valeur recommandée).

- Réseau. Vous pouvez conserver les paramètres par défaut. Si vous devez personnaliser les paramètres réseau, vous pouvez sélectionner des identifiants VPC et des sous-réseaux existants ou en créer de nouveaux.
- Critique. Vérifiez la configuration et enregistrez votre environnement informatique. Cliquez sur Créer un environnement informatique.
Création d’une file d’attente de tâches
Les files d’attente de tâches sont utilisées pour stocker les tâches. Chaque tâche réside dans une file d’attente unique. Les files d’attente de tâches sont associées à des environnements informatiques.
- Créer une file d’attente de tâches. Dans le tableau de bord AWS Batch, cliquez sur Files d’attente de tâches, puis sur Créer.

- Sélectionnez le type d’orchestration, tel qu’Amazon EC2 (Fargate et EKS sont d’autres options disponibles).

- Entrez un nom pour votre file d’attente de tâches et une priorité (les nombres élevés ont une priorité élevée, 1 est la valeur par défaut) dans la section de configuration de la file d’attente de tâches.
- Liez votre file d’attente de tâches à l’environnement de calcul créé à l’étape précédente (env01test).
- Cliquez sur Créer pour finaliser la file d’attente des tâches.

Création d’une définition de tâche
Les définitions de tâches définissent comment les tâches seront exécutées. Ils comprennent l’image Docker à utiliser, les vCPU, les conditions à remplir en matière de mémoire, etc. Les paramètres de définition des tâches peuvent être remplacés lors de l’exécution d’une tâche. Accédez à Définitions des tâches dans le tableau de bord AWS Batch et cliquez sur Créer.
- Configuration de la définition de la tâche. Spécifiez si la tâche sera exécutée sur Amazon EC2, Fargate ou Elastic Kubernetes Service. Définissez un nom pour la définition de tâche.

- Configurez les propriétés du conteneur, notamment l’image, les vCPU, la mémoire, la commande (le cas échéant) et les variables d’environnement.
- Sous le rôle d’exécution, spécifiez un rôle IAM disposant des autorisations nécessaires pour extraire l’image Docker et se connecter à CloudWatch, si nécessaire.
- Cliquez sur Suivant à chaque écran pour continuer.

- Configuration du conteneur. Sélectionnez la syntaxe de commande (bash ou JSON). Entrez la commande requise dans le champ de commande en utilisant la syntaxe spécifiée. Vous pouvez sélectionner la configuration de l’environnement, telle que le nombre de vCPU et la mémoire, et ajouter des variables d’environnement.
- Paramètres Linux et de journalisation. Vous pouvez configurer Linux et les paramètres de journalisation, notamment les informations utilisateur, la configuration du système de fichiers, la configuration de la journalisation, etc.
- Révision de la définition de la tâche. Vérifiez votre configuration. Vous pouvez vérifier la configuration de la définition de tâche et copier le texte de configuration (script). Cliquez sur Créer une définition de tâche.
Soumettre une tâche
Maintenant que tout est configuré, vous pouvez soumettre une tâche, qui est une unité de travail exécutée par AWS Batch.
- Allez dans la section Tâches et cliquez sur Soumettre une nouvelle tâche.

- Définissez la configuration de la tâche. Entrez un nom de la tâche. Choisissez une définition de tâche et une file d’attente de tâches que vous avez créées précédemment. Définissez d’autres paramètres supplémentaires si nécessaire.
- Configurer les remplacements de tâches (facultatif).
- Vérifiez les paramètres de la tâche et cliquez sur Créer un travail à la fin.

La tâche devrait être lancée dans quelques secondes et être en cours d’exécution.
Gestion des environnements informatiques
Vous pouvez suivre la progression des tâches AWS Batch dans le tableau de bord AWS Batch, dans la section Tâches (Tâches > Sélectionner une tâche > Détails). AWS Batch vous permet de consulter les journaux en temps réel, le statut de la tâche et toutes les sorties générées par celle-ci.
Vous pouvez utiliser les outils AWS suivants pour la surveillance et la gestion des environnements informatiques :
- Amazon CloudWatch. Utilisez cet outil pour surveiller les métriques et les journaux de vos tâches batch et de vos environnements informatiques. Il est essentiel pour comprendre les performances d’exécution des tâches et déboguer les problèmes.
- AWS CloudTrail. Enregistrez et surveillez les appels API vers AWS Batch et d’autres services AWS. Cela facilite l’audit et le suivi des modifications apportées aux environnements informatiques.
- AWS Cost Explorer. Utilisez-le pour la surveillance et la gestion des coûts associés à vos environnements informatiques, ce qui vous aidera à identifier les possibilités d’optimisation.
Utilisez les pratiques recommandées pour la surveillance :
- Consultez régulièrement les métriques et les journaux AWS Batch dans CloudWatch afin d’identifier les goulots d’étranglement en matière de performances ou les ressources sous-utilisées.
- Optimisez en permanence les définitions des tâches et les environnements informatiques en fonction des données de performances.
- Envisagez d’utiliser AWS Lambda en combinaison avec AWS Batch pour le traitement par lots piloté par les événements.
- Restez informé des dernières fonctionnalités AWS et des bonnes pratiques pour AWS Batch et les services associés.
La gestion et l’optimisation des environnements informatiques dans AWS Batch sont des processus continus qui impliquent la surveillance des performances, le contrôle des coûts et l’ajustement des stratégies en fonction de l’évolution des conditions à remplir et des nouvelles fonctionnalités d’AWS.
Conclusion
AWS Batch convient à une grande variété d’applications, from le traitement et le rendu des données à l’entraînement de modèles d’apprentissage automatique et à la modélisation financière. Il s’agit d’un service AWS entièrement géré. La capacité à traiter des tâches batch complexes et gourmandes en ressources informatiques sans avoir à gérer l’infrastructure sous-jacente fait d’AWS Batch un outil puissant pour les organisations qui souhaitent utiliser le cloud pour répondre à leurs besoins en matière de calcul à haut débit. N’oubliez pas de configurer une sauvegarde de vos instances Amazon EC2 afin de protéger vos données. NAKIVO Backup & Replication peut vous aider à protéger efficacement vos données EC2.