Rackslab annonce la sortie de slurm-quota, une solution open source pour gérer des quotas de temps CPU et GPU pour les utilisateurs et comptes Slurm.
Contexte
De nombreux centres de calcul HPC et IA ont besoin d’un moyen simple de
budgéter et suivre la consommation de calcul en temps CPU et en
temps GPU aux niveaux utilisateur et compte, et d’empêcher la
soumission de jobs lorsque le quota restant est insuffisant. Malheureusement,
Slurm « vanilla » ne propose pas nativement ce type de comptabilisation et
d’application de quotas de temps CPU/GPU. slurm-quota a été développé pour
répondre à ce besoin opérationnel, avec une implémentation légère et bien
intégrée à Slurm.
Exemple de sortie de slurm-quota stats :
Fonctionnalités
Pour les administrateurs, slurm-quota fournit les mécanismes nécessaires pour
opérer une politique de quotas en production. Les quotas de minutes CPU et GPU
peuvent être configurés au niveau utilisateur et compte en ligne de commande, et
sur des clusters GPU hétérogènes, les minutes GPU facturées peuvent être
pondérées par type de GPU via des facteurs de facturation.
Pour les utilisateurs, slurm-quota offre une visibilité transparente sur la
consommation et la marge restante. Les commandes affichent les minutes CPU/GPU
consommées et préallouées ainsi que les limites configurées, avec des
barres de progression. Les statistiques peuvent être servies via un service HTTP
JSON comme source de vérité pour interroger les mêmes informations depuis
tous les nœuds des clusters.
Architecture
L’un des objectifs clés du projet est de rester léger à déployer, en s’appuyant sur des points d’extension Slurm et des dépendances minimales.
La solution est composée de :
- Base de données SQLite pour stocker les usages, préallocations et quotas.
- Script Python unique (
slurm-quota) pour charger les usages effectifs des jobs terminés, administrer les quotas, exposer les statistiques via une API REST HTTP JSON avec activation par socket systemd, et interroger les statistiques. - Plugin de soumission Slurm (
job_submit.lua) pour préallouer des minutes CPU/GPU lors de la soumission.
L’intégration avec Slurm se fait à deux moments clés :
- À la soumission, le plugin de soumission évalue la demande et enregistre une préallocation de minutes CPU/GPU pour l’utilisateur et le compte sélectionné.
- À la fin du job, Slurm exécute le script de complétion
(
jobcomp/script) qui appelle le wrapper de charge. Le wrapper calcule l’usage effectif (y compris les allocations GPU via les TRES d’accounting) et met à jour la base SQLite.
Envie d’essayer ?
slurm-quota est publié sous licence MIT et
disponible sur GitHub !
Pour le déployer et l’intégrer avec votre contrôleur Slurm et vos nœuds de calcul, suivez les instructions dans le guide d’installation en ligne.
Remerciements
Le développement de cette solution a été financé par ISDM-Meso, une entitée rattachée de l’Université de Montpellier. Nous les remercions chaleureusement pour leur soutien et pour avoir rendu ce projet possible.