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 :

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.