View a markdown version of this page

Bonnes pratiques - AWS ParallelCluster

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.

Bonnes pratiques

Les sections suivantes présentent les meilleures pratiques d'utilisation AWS ParallelCluster, notamment les alertes relatives aux performances du réseau et au budget. Si vous rencontrez des problèmes alors que vous suivez ces bonnes pratiques, découvrez AWS ParallelCluster résolution des problèmes les solutions possibles.

Meilleures pratiques : sélection du type d'instance de nœud principal

Même si le nœud principal n'exécute aucune tâche, ses fonctions et son dimensionnement sont essentiels aux performances globales du cluster. Lorsque vous choisissez le type d'instance à utiliser pour votre nœud principal, tenez compte des caractéristiques suivantes :

Taille du cluster : le nœud principal orchestre la logique de dimensionnement du cluster et est chargé d'associer les nouveaux nœuds au planificateur. Pour augmenter ou diminuer la taille d'un cluster comportant un grand nombre de nœuds, fournissez au nœud principal une capacité de calcul supplémentaire.

Systèmes de fichiers partagés : lorsque vous utilisez des systèmes de fichiers partagés, choisissez un type d'instance doté d'une bande passante réseau suffisante et d'une bande passante Amazon EBS suffisante pour gérer vos flux de travail. Assurez-vous que le nœud principal est capable à la fois d'exposer suffisamment de répertoires de serveurs NFS pour le cluster et de gérer les artefacts qui doivent être partagés entre les nœuds de calcul et le nœud principal.

Meilleures pratiques : performance du réseau

Les performances du réseau sont essentielles pour les applications de calcul haute performance (HPC). Sans performances réseau fiables, ces applications ne peuvent pas fonctionner comme prévu. Pour optimiser les performances du réseau, prenez en compte les bonnes pratiques suivantes.

  • Groupe de placement : si vous utilisezSlurm, pensez à configurer chaque Slurm file d'attente pour utiliser un groupe de placement de cluster. Le groupe de placement d'un cluster est un regroupement logique d'instances au sein d'une seule zone de disponibilité. Pour plus d'informations, consultez la section sur les groupes de placement dans le guide de l'utilisateur Amazon EC2. Vous pouvez spécifier un PlacementGroup dans la Networking section de la file d'attente, chaque ressource de calcul étant affectée au groupe de placement de la file d'attente. Lorsque vous spécifiez un PlacementGroup dans la Networking section de la ressource de calcul, cette ressource de calcul spécifique est affectée à ce groupe de placement. La spécification du groupe de placement des ressources de calcul remplace la spécification de file d'attente pour la ressource de calcul. Pour plus d'informations, voir SlurmQueues Networking/SlurmQueues/PlacementGroupet ComputeResources/Networking/PlacementGroup.

    Networking: PlacementGroup: Enabled: true Id: your-placement-group-name

    Vous pouvez également AWS ParallelCluster créer un groupe de placement pour vous.

    Networking: PlacementGroup: Enabled: true

    À partir de AWS ParallelCluster la version 3.3.0, la création et la gestion des groupes de placement sont modifiées. Lorsque vous spécifiez le groupe de placement à activer, sans name ou, dans la file d'attenteId, chaque ressource de calcul se voit attribuer son propre groupe de placement géré, au lieu d'un groupe géré pour l'ensemble de la file d'attente. Cela permet de réduire les erreurs de capacité insuffisante. Si vous avez besoin d'un groupe de placement pour l'ensemble de la file d'attente, vous pouvez utiliser un groupe de placement nommé.

    SlurmQueues/Networking/PlacementGroup/Namea été ajouté comme alternative préférée à SlurmQueues/Networking/PlacementGroup/Id.

    Pour de plus amples informations, veuillez consulter Networking.

  • Réseau amélioré : pensez à choisir un type d'instance qui prend en charge la mise en réseau améliorée. Cette recommandation s'applique à toutes les instances de la génération actuelle. Pour plus d'informations, consultez la section Mise en réseau améliorée sous Linux dans le guide de l'utilisateur Amazon EC2.

  • Adaptateur Elastic Fabric : pour prendre en charge des niveaux élevés de communication évolutive d'instance à instance, pensez à choisir des interfaces réseau EFA pour votre réseau. Le matériel de contournement du système d'exploitation (OS) personnalisé de l'EFA améliore les communications d'instance à instance grâce à l'élasticité et à la flexibilité à la demande du AWS Cloud. Vous pouvez configurer chaque Slurm file d'attente ComputeResource à utiliser Efa. Pour plus d'informations sur l'utilisation d'EFA avec AWS ParallelCluster, consultezElastic Fabric Adapter.

    ComputeResources: - Name: your-compute-resource-name Efa: Enabled: true

    Pour plus d'informations sur EFA, consultez Elastic Fabric Adapter dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

  • Bande passante de l'instance : la bande passante évolue en fonction de la taille de l'instance. Pour plus d'informations sur les différents types d'instances, consultez la section Instances optimisées pour Amazon EBS et types de volumes Amazon EBS dans le guide de l'utilisateur Amazon EC2.

Meilleures pratiques : alertes budgétaires

Pour gérer les coûts des ressources dans AWS ParallelCluster, nous vous recommandons d'utiliser AWS Budgets des actions pour créer un budget. Vous pouvez également créer des alertes de seuil budgétaire définies pour certaines AWS ressources. Pour plus d'informations, consultez la section Configuration d'une action budgétaire dans le Guide de AWS Budgets l'utilisateur. De même, vous pouvez également utiliser Amazon CloudWatch pour créer une alarme de facturation. Pour plus d'informations, consultez Création d'une alarme de facturation pour surveiller vos frais AWS estimés.

Meilleures pratiques : déplacement d'un cluster vers un nouveau AWS ParallelCluster version mineure ou correctif

Actuellement, chaque version AWS ParallelCluster mineure est autonome avec sa pcluster CLI. Pour déplacer un cluster vers une nouvelle version mineure ou un correctif, vous devez recréer le cluster à l'aide de l'interface de ligne de commande de la nouvelle version.

Pour optimiser le processus de migration d'un cluster vers une nouvelle version mineure ou un correctif, nous vous recommandons de procéder comme suit :

  • Enregistrez les données personnelles dans des volumes externes créés en dehors du cluster, tels qu'Amazon EFS et FSx for Lustre. De cette manière, vous pouvez facilement déplacer les données d'un cluster à un autre à l'avenir.

  • Créez des systèmes de stockage partagés à l'aide des types suivants. Vous pouvez créer ces systèmes à l'aide du AWS CLI bouton ou Console de gestion AWS.

    Définissez un système de fichiers ou un volume dans une configuration de cluster en tant que système de fichiers ou volume existant. De cette façon, ils sont préservés lorsque vous supprimez le cluster et peuvent être attachés à un nouveau cluster.

    Nous vous recommandons d'utiliser Amazon EFS ou FSx pour les systèmes de fichiers Lustre. Ces deux systèmes peuvent être rattachés à plusieurs clusters en même temps. En outre, vous pouvez associer l'un ou l'autre de ces systèmes à un nouveau cluster avant de supprimer votre cluster existant.

  • Utilisez des actions de bootstrap personnalisées pour personnaliser vos instances plutôt que d'utiliser une AMI personnalisée. Si vous utilisez plutôt une AMI personnalisée, vous devez supprimer et recréer cette AMI pour chaque nouvelle version.

  • Nous vous recommandons d'appliquer les recommandations précédentes dans l'ordre suivant :

    1. Mettez à jour la configuration de cluster existante pour utiliser les définitions de système de fichiers existantes.

    2. Vérifiez la pcluster version et mettez-la à jour si nécessaire.

    3. Créez et testez le nouveau cluster. Lorsque vous testez le nouveau cluster, vérifiez les points suivants :

      • Assurez-vous que vos données sont disponibles dans le nouveau cluster.

      • Assurez-vous que votre application fonctionne dans le nouveau cluster.

    4. Une fois que votre nouveau cluster est entièrement testé et opérationnel et que vous n'avez plus besoin du cluster existant, supprimez-le.

Meilleures pratiques : bilans de santé du GPU

Le bilan de santé du GPU intégré

Le contrôle de santé du GPU intégré (HealthChecks/Gpu/Enabled) est désactivé à moins que vous ne l'activiez. Lorsqu'il est activé, il exécute un diagnostic NVIDIA DCGM de niveau 2 sur les GPU du nœud dans le cadre du prologue. Slurm Étant donné que le diagnostic s'exécute dans le prologue et qu'une tâche ne peut pas démarrer tant que le prologue n'est pas terminé, cette conception convient aux types d'instances où le diagnostic se termine rapidement.

La vérification intégrée n'est fiable qu'avec une allocation exclusive aux tâches (une tâche par nœud). Sur les nœuds partagés par plusieurs tâches, cela peut interférer avec l'exécution des tâches et épuiser les nœuds sains. Ne l'activez donc que sur les files d'attente avec JobExclusiveAllocation: true.

En outre, sur les familles d'instances GPU P6 et P6e (par exemple, p6-b200 etp6-b300) et sur les générations d'instances P-family GPU ultérieures, le diagnostic prend suffisamment de temps pour ne pas être exécuté dans le prologue : il dépasse généralement les limites de temps du Slurm prologue et entraîne la vidange des nœuds sains et la mise en file d'attente des tâches. Sur ces types d'instances, maintenez le contrôle de santé du GPU désactivé (HealthChecks/Gpu/Enabled: false).

Options pour exécuter vos propres tests de santé du GPU

Pour effectuer des vérifications de l'état du GPU sur ces instances, choisissez l'une des approches suivantes, en faisant correspondre chaque vérification au moment où elle s'exécute : au démarrage du nœud, avant ou après une tâche. Cela suit le modèle de NVIDIA pour l'état et les diagnostics des GPU (voir Santé et diagnostics du NVIDIA DCGM) ; le dcgmi diag diagnostic augmente en profondeur et en durée par niveau (voir Diagnostics https://docs.nvidia.com/datacenter/dcgm/latest/user-guide/dcgm-diagnostics.html#run-levels-and-tests DCGM).

Important

Sur un nœud partagé par plusieurs tâches, exécutez un dcgmi diag diagnostic (du niveau 1 au niveau 4) uniquement lorsqu'aucune autre tâche n'utilise le nœud. Sinon, il peut échouer et vider le nœud.

  • Vérifiez au démarrage du nœud. Utilisez-le pour valider un nœud une seule fois, lorsqu'il rejoint le cluster, avant qu'il n'accepte le travail. Comme aucune tâche n'est encore en cours d'exécution, elle peut être exécutée en profondeur dcgmi diag ; notez qu'elle ne détecte que les défauts présents au démarrage, et non les dégradations qui apparaissent plus tard. Installez et invoquez votre check à l'aide d'une action OnNodeConfigured personnalisée. Consultez Actions de bootstrap personnalisées.

  • Consultez le prologue. Utilisez-le pour une porte de préparation rapide avant chaque tâche. Étant donné que le prologue s'exécute sur chaque tâche et empêche le démarrage de la tâche jusqu'à sa fin, limitez la vérification à quelques secondes. Par exemple nvidia-smi (éventuellement avec une analyse du journal du noyau pour détecter les erreurs NVIDIA Xid), ou un niveau 1. dcgmi diag Consultez Slurm et prolog epilog.

  • Consultez l'épilogue. Utilisez-le pour valider un nœud une fois qu'une tâche est terminée. Par exemple, pour effectuer une vérification plus approfondie en cas d'échec d'une tâche ou pour détecter un GPU qui s'est dégradé pendant une exécution avant la planification de la tâche suivante. Cela peut aller plus loindcgmi diag. Pour éviter de vérifier après chaque tâche, vous souhaiterez peut-être exécuter un diagnostic de niveau 2 uniquement en cas d'échec de la tâche. Consultez Slurm et prolog epilog.

Note

AWS ParallelCluster remplace les nœuds statiques vidés ou défaillants (et met fin aux nœuds dynamiques). Ainsi, la vidange d'un nœud dont la défaillance est confirmée entraîne son remplacement.