Décrire l’intégration de Slurm à Azure CycleCloud

Effectué

Une fois cette unité terminée, vous devriez être en mesure d’indiquer comment Slurm s’intègre à Azure CycleCloud et de décrire les zones d’intégration clés entre Slurm et Azure CycleCloud.

Présentation de Azure CycleCloud

Azure CycleCloud est un outil qui sert à déployer des clusters HPC dans Azure et à gérer leurs charges de travail. Il offre de nombreuses fonctionnalités HPC, notamment :

  • Déploiement basé sur un modèle pour les clusters HPC. Azure CycleCloud fournit des modèles prédéfinis personnalisables pour le déploiement des planificateurs de cluster les plus courants, notamment Slurm, OpenPBS, LSF, Grid Engine et HTCondor. De nombreux autres modèles prédéfinis, que vous pouvez importer dans votre instance Azure CycleCloud, sont disponibles dans le dépôt GitHub de CycleCloud.
  • Mise à l’échelle manuelle et automatique des nœuds de cluster. Azure CycleCloud permet une mise à l’échelle horizontale manuelle et automatique des clusters managés en fonction de la longueur des files d’attente de travaux et des stratégies de gouvernance. Il offre également une API REST afin de développer des adaptateurs de mise à l’échelle automatique pour les planificateurs personnalisés.
  • Configuration des nœuds avec des scripts cloud-init. Azure CycleCloud gère la configuration avec des scripts personnalisés qui s’exécutent dans les nœuds de cluster managé avant les autres tâches de configuration CycleCloud.
  • Gestion du stockage de cluster interne et externe. Azure CycleCloud vous permet de configurer le stockage des clusters en provisionnant, montant et formatant des disques managés Azure, et des périphériques de stockage NAS, comme des serveurs NFS ou des clusters BeeGFS.
  • Supervision, journalisation et alertes. Azure CycleCloud offre par défaut une supervision de cluster qui s’intègre à Azure Monitor. Il permet aussi de stocker les données de journal des clusters CycleCloud dans Log Analytics et de créer des tableaux de bord de métriques personnalisés. Vous pouvez également créer des alertes personnalisées et des notifications par e-mail déclenchées par les données de télémétrie. Toutes les activités d’Azure CycleCloud sont journalisées.
  • Authentification et autorisation. Azure CycleCloud prend en charge l’authentification locale intégrée. Vous pouvez également l’intégrer à Active Directory Domain Services (AD DS) ou à d’autres fournisseurs d’identité basés sur LDAP (Lightweight Directory Access Protocol). Par défaut, les utilisateurs définis localement ont accès au système d’exploitation des nœuds du cluster managé, mais les utilisateurs du cluster peuvent être administrés séparément. Pour la gestion des ressources dans un abonnement Azure, vous pouvez utiliser un principal de service ou une identité managée Microsoft Entra.
  • Contrôles des coûts en quasi-temps réel et rapports sur ceux-ci. Azure CycleCloud suit l’utilisation du cluster et estime le coût correspondant. Cette fonctionnalité vous permet de configurer des alertes budgétaires qui se déclenchent quand le coût du cluster dépasse le montant que vous avez spécifié. Azure CycleCloud s’intègre également à Microsoft Cost Management.

Azure CycleCloud et Azure Batch

Azure CycleCloud et Azure Batch sont des services Azure conçus pour gérer et exécuter des charges de travail de calcul parallèles et haute performance à grande échelle dans le cloud. Ces services diffèrent par leurs audiences cibles, leurs ensembles de fonctionnalités et leurs cas d’usage.

Azure CycleCloud se concentre sur la création, la gestion et l’optimisation des clusters HPC et HTC dans Azure. CycleCloud cible les charges de travail HPC et HTC spécifiques à un domaine, telles que la dynamique des fluides numérique, la génomique et les simulations d’ingénierie. CycleCloud prend en charge différents planificateurs de cluster tels que Slurm, Grid Engine, LSF et HTCondor. Il s’intègre également à des services Azure tels que le Stockage Blob Azure, Azure Managed Disks et Azure NetApp Files pour les solutions de stockage.

Azure Batch est un service géré conçu pour exécuter des charges de travail de traitement par lots et parallèles à grande échelle dans Azure. Azure Batch convient à différents types de tâches de traitement par lots, telles que le traitement des données, le rendu et l’entraînement de modèle Machine Learning. Azure Batch se charge de la gestion des ressources, de la planification des tâches et de la mise à l’échelle des nœuds de calcul en fonction des exigences des charges de travail.

Azure CycleCloud est spécifiquement conçu pour les charges de travail HPC et HTC avec prise en charge de plusieurs planificateurs de cluster, tandis qu’Azure Batch est à usage plus général, prenant en charge différents types de tâches de traitement par lots et parallèles.

Présentation des partitions HPC et HTC

Une partition Azure CycleCloud est un regroupement logique de nœuds de calcul avec une configuration, un objectif ou un type de charge de travail spécifiques. Les termes « partition HPC » et « partition HTC » font référence aux partitions configurées pour gérer les charges de travail de calcul haute performance et de calcul haut débit.

Les partitions HPC utilisent un grand nombre de machines virtuelles basées sur un processeur ou sur un processeur graphique (GPU) pour effectuer des tâches complexes. HTC est une architecture qui utilise de nombreuses ressources de calcul sur de longues périodes pour accomplir un grand nombre de tâches faiblement couplées. Vous utilisez des partitions HPC lorsque vous devez effectuer de grands calculs et des calculs complexes, comme ceux impliqués dans les simulations scientifiques et d’ingénierie.

Les partitions HTC utilisent un grand nombre de nœuds de machine virtuelle basés sur un processeur ou sur un processeur graphique (GPU) pour résoudre des tâches mathématiques complexes qui nécessitent un couplage étroit et une communication rapide. Les travaux HTC sont généralement indépendants, séquentiels et peuvent être planifiés sur différentes ressources de calcul sur plusieurs sites. Les travaux HPC sont généralement parallèles, interdépendants et doivent s’exécuter sur un seul site avec des interconnexions à faible latence. HTC est approprié pour traiter de grands volumes de tâches plus petites et convient pour les tâches fortes consommatrices de données de traitement par lots qui peuvent être décomposées en petits éléments. Le traitement par lots dans HTC permet de traiter de grandes quantités de données ou de tâches de calcul en les décomposant en groupes plus petits et gérables appelés « lots ». Les clusters traitent ces lots en parallèle en allouant chaque lot à un nœud différent dans le cluster de calcul.

Dans les environnements cloud tels qu’Azure CycleCloud, HTC et HPC peuvent s’exécuter sur la même architecture de cluster.

Implémentation d’Azure CycleCloud

CycleCloud est implémenté comme une application web basée sur Linux. Vous pouvez l’installer partout où vous avez accès à votre environnement Azure. Le moyen le plus simple de le configurer est de déployer une machine virtuelle Azure à l’aide de l’image correspondante de la Place de marché Azure, avec la possibilité d’automatiser le déploiement en utilisant un modèle Azure Resource Manager (ARM). Vous pouvez aussi utiliser des packages yum ou apt, ou une image conteneur de Microsoft Container Registry.

Pendant la configuration initiale, vous avez la possibilité de fournir une clé SSH pour sécuriser l’accès au système d’exploitation hébergeant l’application CycleCloud et aux nœuds de cluster déployés par la suite. Pour permettre à l’application CycleCloud d’interagir avec ARM, vous devez choisir une identité Microsoft Entra qui fournit le contexte de sécurité de cette interaction et lui attribuer les autorisations nécessaires dans l’abonnement Azure cible à l’aide du contrôle d’accès en fonction du rôle (RBAC) Azure. Cette identité peut prendre la forme d’un principal de service ou, si vous hébergez l’application Azure CycleCloud sur une machine virtuelle Azure, d’une identité managée.

Une instance Azure CycleCloud nécessite également un compte de stockage Azure et le conteneur de blobs associé. Ce conteneur, appelé « locker », est la zone de mise en lots pour le déploiement de projets sur des nœuds de cluster.

Une fois installée, l’application Azure CycleCloud fournit une interface utilisateur graphique pour gérer et superviser les systèmes HPC, ainsi qu’une interface de ligne de commande (CLI) pour faciliter l’automatisation et l’intégration de CycleCloud dans les workflows existants. Vous pouvez également utiliser l’interface CLI pour importer des modèles, automatiser le provisionnement des clusters et effectuer des tâches de gestion plus avancées.

Présentation de la mise à l’échelle automatique des clusters CycleCloud

Azure CycleCloud facilite le déploiement des planificateurs dans Azure, lesquels, à leur tour, distribuent et gèrent les travaux en cours d’exécution sur les clusters composés de ressources Azure. Azure CycleCloud ne fonctionne pas comme un planificateur. Il sert plutôt d’intermédiaire entre les planificateurs et la plateforme sous-jacente. Azure CycleCloud simplifie également le développement de la fonctionnalité de mise à l’échelle automatique pour les planificateurs correspondants en fournissant une interface de programmation basée sur l’API REST et une bibliothèque de client basée sur Python.

Azure CycleCloud vous permet de mettre en corrélation le comportement de mise à l’échelle automatique des clusters managés et la longueur des files d’attente de travaux du cluster. Vous pouvez personnaliser ce comportement en définissant des paramètres de modèle qui contrôlent, par exemple, le délai avant l’arrêt des nœuds inactifs ou la fréquence des vérifications d’arrêt automatique.

Tous les modèles prédéfinis exposent les paramètres de mise à l’échelle automatique directement dans l’interface graphique d’Azure CycleCloud. Dans chaque cas, les paramètres permettent, entre autres, de spécifier les limites inférieure et supérieure de la plage de mise à l’échelle automatique, exprimées en nombre de cœurs de processeur. La limite supérieure vous permet de réduire le risque de frais imprévus. Vous pouvez atténuer ce risque en définissant des alertes budgétaires.

Si le seuil inférieur est défini sur 0, la création d’un cluster provisionne uniquement le nœud principal du planificateur. Toutefois, quand le planificateur détecte des travaux en file d’attente, il lance le provisionnement des nœuds de calcul nécessaires pour exécuter la charge de travail correspondante, jusqu’à la limite que vous avez définie. Pour prendre en charge les travaux parallèles et faiblement couplés, où les tâches individuelles s’exécutent indépendamment les unes des autres, les travaux commencent à s’exécuter dès que le premier nœud est disponible. Pour les travaux fortement couplés, comme ceux qui utilisent la fonctionnalité d’interface de passage de messages (MPI), le temps d’attente est plus long selon l’étendue des dépendances internœuds. Si la file d’attente des travaux reste vide pendant une durée supérieure à la durée d’inactivité autorisée, les nœuds de calcul commencent à s’arrêter automatiquement et votre cluster est à nouveau constitué uniquement du nœud principal du planificateur.

Intégration de Slurm à CycleCloud

Vous pouvez intégrer Slurm à Azure CycleCloud en configurant un cluster basé sur Slurm dans CycleCloud, où CycleCloud gère l’infrastructure sous-jacente et Slurm se charge de la planification des travaux et de la gestion des ressources.

Slurm s’intègre à Azure CycleCloud de la manière suivante :

  • Configuration de cluster. Lorsque vous créez un cluster dans Azure CycleCloud, vous pouvez choisir Slurm comme planificateur de cluster. Cela signifie que CycleCloud configure les ressources de cluster (par exemple, les machines virtuelles, le stockage, le réseau) et déploie le planificateur Slurm sur le nœud maître (ou nœud de contrôleur) du cluster.
  • Déploiement de clusters. Azure CycleCloud déploie le cluster Slurm dans Azure, en créant les machines virtuelles nécessaires pour le nœud maître et les nœuds de calcul. Le nœud maître exécute le démon du contrôleur Slurm (slurmctld) et les nœuds de calcul exécutent le démon Slurm (slurmd) chargé de l’exécution des travaux. CycleCloud configure le réseau et les ressources de stockage, et configure le cluster Slurm en fonction des paramètres spécifiés.
  • Mise à l’échelle automatique. Azure CycleCloud peut effectuer une mise à l’échelle dynamique des clusters Slurm en ajoutant ou en supprimant des nœuds de calcul en fonction des exigences des charges de travail et des stratégies de mise à l’échelle automatique définies. Cela permet d’optimiser l’utilisation des ressources et de contrôler les coûts. Lorsque de nouveaux travaux sont envoyés et que les ressources sont insuffisantes, CycleCloud peut provisionner automatiquement des nœuds de calcul supplémentaires et les ajouter au cluster Slurm. De même, lorsque la charge de travail diminue, CycleCloud peut supprimer automatiquement des nœuds de calcul inactifs afin de réduire les coûts.
  • Supervision et gestion. Azure CycleCloud fournit des fonctionnalités de supervision et de gestion pour le cluster Slurm, telles que le suivi des performances du cluster, l’utilisation des ressources et l’état du travail. Vous pouvez également gérer le cycle de vie du cluster, démarrer/arrêter le cluster et appliquer des mises à jour en fonction des besoins.
  • Envoi de travaux. Vous pouvez envoyer des travaux au cluster Slurm à l’aide de commandes Slurm standard comme sbatch, srun et salloc. Ces travaux sont ensuite planifiés et exécutés sur les machines virtuelles Azure qui composent les nœuds de calcul du cluster Slurm.