La pile MLperf : Slurm, Pyxis, Enroot

Le benchmark MLperf est considéré comme l'un des jeux de tests de benchmark qui vous permettent de juger avec précision les performances des serveurs avec des GPU et des accélérateurs d'IA. Malheureusement, ce n'est pas le benchmark auquel tout le monde est habitué, dans lequel il suffit d'exécuter un fichier exécutable et d'obtenir le résultat final après un certain temps. MLperf est un ensemble de scripts qui permettent des tests sur divers ensembles de données. Les ensembles de données eux-mêmes ne sont pas inclus dans le kit de benchmark. Vous devez le télécharger séparément et vous préparer à travailler.
Dans les versions modernes de MLperf, cet ensemble de scripts ne peut pas être exécuté sur un système propre. Pour tester le benchmark en action, vous devrez préparer l'environnement en conséquence pour la plupart des tests. Les auteurs de MLperf ont choisi Slurm Workload Manager comme outil de gestion des tâches, qui est utilisé dans la plupart des superordinateurs dans le monde. Cette application open-source permet une gestion flexible des charges de travail en distribuant les tâches de calcul entre tous les membres du cluster.
Un cluster Slurm minimal se compose d'un nœud de calcul et d'un nœud de gestion. Idéalement, ce sont deux serveurs différents qui communiquent entre eux en utilisant des noms d'hôte, qui dans le cas de Linux, sont spécifiés dans le fichier /etc/hosts. En plus du cluster configuré, MLperf nécessite deux plugins : Pyxis et Enroot. Le premier est une extension qui permet à un utilisateur non privilégié d'exécuter des charges de travail conteneurisées. Le second supprime la plupart des mécanismes d'isolation des conteneurs réguliers, éliminant ainsi presque tous les coûts de performance tout en maintenant la séparation du système de fichiers.
Étape 1. Préparez le système
Commencez par mettre à jour le cache du dépôt de packages et les packages installés :
sudo apt update && sudo apt -y upgrade
N'oubliez pas d'installer les pilotes NVIDIA® en utilisant la commande autoinstall ou manuellement, en utilisant notre guide étape par étape :
sudo ubuntu-drivers autoinstall
Redémarrez le serveur :
sudo shutdown -r now
Étape 2. Installez Slurm
Pour ces instructions, Ubuntu 22.04 LTS a été choisi comme système d'exploitation, donc Slurm peut être installé directement à partir du dépôt standard. Le package slurm-wlm contient à la fois slurmd pour le nœud de calcul et slurmctld pour le nœud de contrôle. Installez le package :
sudo apt install slurm-wlm
Par défaut, après l'installation, aucun des démons ne fonctionnera car le fichier de configuration principal, slurm.conf, est manquant. Les développeurs ont fait un effort pour réduire la barrière à l'entrée en créant une page web avec un configurateur. Ici, vous pouvez assembler indépendamment le fichier de configuration en parties, en utilisant les indices fournis pour chaque élément.
Veuillez noter que pour une installation standard sur Ubuntu 22.04 LTS, il est logique de choisir LinuxProc au lieu de Cgroup. Après avoir cliqué sur le bouton Submit en bas de la page, vous recevrez le texte finalisé du fichier de configuration. Copiez-le dans votre presse-papiers et exécutez la commande suivante :
sudo nano /etc/slurm/slurm.conf
Collez le contenu du presse-papiers et sauvegardez le fichier. Maintenant, vous pouvez démarrer le démon du nœud de calcul :
sudo systemctl start slurmd.service
Vous pouvez vérifier l'état du démon en utilisant la commande suivante :
sudo systemctl status slurmd.service
Étape 3. Configurez le contrôleur Slurm
Avant de pouvoir démarrer le démon du contrôleur, vous devrez prendre quelques étapes supplémentaires. Tout d'abord, vous devez créer un répertoire où le démon peut stocker des informations de service sur les tâches en cours :
sudo mkdir -p /var/spool/slurmctld
Le répertoire a été créé avec succès, mais actuellement, l'utilisateur slurm, au nom duquel le contrôleur fonctionne, ne peut rien écrire là-bas. Faisons de lui le propriétaire du répertoire :
sudo chown slurm:slurm /var/spool/slurmctld
Maintenant, vous pouvez démarrer le démon du contrôleur :
sudo systemctl start slurmctld.service
Pour vérifier l'état de fonctionnement du contrôleur, vous pouvez utiliser la commande standard :
sudo systemctl status slurmctld.service
Vous pouvez également afficher immédiatement l'état actuel du système, en particulier combien de nœuds de calcul sont connectés au contrôleur et déterminer leur état actuel :
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST debug* up infinite 1 idle gpuserver
Étape 4. Installez Pyxis
Slurm étend ses capacités en utilisant le mécanisme SPANK (Slurm Plug-in Architecture for Node and Job [K]control). Il n'est pas nécessaire de l'installer ou de le configurer séparément de l'application principale. Cependant, il est conseillé de stopper temporairement les deux démons avant toute installation de plugin :
sudo systemctl stop slurmd.service && sudo systemctl stop slurmctld.service
Comme le processus d'installation de Pyxis implique une construction à partir du code source, vous devez d'abord installer un paquet contenant les bibliothèques de développement :
sudo apt -y install libslurm-dev
Le processus de construction de Pyxis suppose que l'application est installée à partir de la source et il cherchera certains fichiers dans le chemin absolu /use/include/slurm. Dans notre exemple, le paquet slurm-wlm les a placés dans le répertoire différent /usr/include/slurm-wlm. Pour résoudre ce problème, il suffit de créer un lien symbolique :
sudo ln -s /usr/include/slurm-wlm /usr/include/slurm
Clonez le code source du plugin du dépôt officiel NVIDIA® :
git clone https://github.com/NVIDIA/pyxis
Ouvrez le répertoire téléchargé :
cd pyxis
Démarrez le processus de compilation :
sudo make install
Une fois la compilation terminée, vous devrez créer un autre lien symbolique :
sudo ln -s /usr/local/share/pyxis/pyxis.conf /etc/slurm/plugstack.conf.d/pyxis.conf
Maintenant, tout est prêt pour lancer les deux démons :
sudo systemctl start slurmd.service && sudo systemctl start slurmctld.service
Si tout est fait correctement, lorsque vous exécutez la commande suivante, vous verrez de nouvelles options marquées [pyxis] :
srun --help
Étape 5. Installez Enroot
Comme avec le plugin précédent, il est logique d'arrêter d'abord les démons :
sudo systemctl stop slurmd.service && sudo systemctl stop slurmctld.service
Ensuite, utilisez la fonctionnalité de commande shell pour sauvegarder les données d'architecture de la CPU dans une variable séparée. C'est pratique pour exécuter les commandes suivantes, car elle substitue automatiquement la valeur sauvegardée, plutôt que de nécessiter une édition manuelle :
arch=$(dpkg --print-architecture)
Téléchargez le paquet DEB :
curl -fSsL -O https://github.com/NVIDIA/enroot/releases/download/v3.4.1/enroot_3.4.1-1_${arch}.deb
Vous pouvez l'installer en utilisant l'utilitaire dpkg :
sudo dpkg -i enroot_3.4.1-1_${arch}.deb
Si le système signale que certaines dépendances manquent, vous pouvez les installer manuellement :
sudo apt-get -f install
Enfin, démarrez les deux démons :
sudo systemctl start slurmd.service && sudo systemctl start slurmctld.service
C'est l'ensemble minimal d'étapes nécessaires pour déployer un simple cluster Slurm avec les plugins Pyxis et Enroot. Des informations supplémentaires peuvent être trouvées dans la documentation officielle sur le site web du projet.
Voir aussi :
Mis à jour: 28.03.2025
Publié: 09.07.2024