Choisir les Ressources : CPUs / MEM / GPU
Si vous avez suivi les guides précédents, vous avez déjà appris à soumettre un job SLURM. Maintenant, il est temps de choisir les ressources appropriées pour votre job. Le point est brièvement abordé dans le FAD.
MARBEC-GPU est une ressource partagée avec une grande liberté d’utilisation (pas de quota d’heure de calcul ou nombre de jobs simultanés) et un ordonnancement simple : premier arrivé.e, premier servi.e. Il est donc primordial de correctement choisir les ressources allouées.
IMPORTANT : Le temps d’exécution d’un job dépend de plusieurs facteurs, notamment la taille de vos données, des ressources utilisées mais principalement de la manière dont vous avez écrit votre code ou/et des packages utilisés. La plupart des codes ne permettent pas de paralléliser les calculs (utiliser plusieurs curs CPU en même) et encore moins de les exécuter sur GPU. Ainsi, quand bien même vous demandez 10 coeurs CPU et un GPU, il est tout à fait possible que votre job n’utilise qu’un seul coeur CPU et sans toucher au GPU. Ensuite, prendre deux fois plus de CPU ne diminue pas par deux le temps d’exécution, à vous de tester et de trouver un bon compromis entre ressources allouées et temps d’exécution.
Bonnes pratiques
- Se renseigner sur le code exécuté
Avant d’exécuter votre job sur MARBEC-GPU, vérifiez si votre code parallélise les calculs et/ou utilise le GPU. Si vous apercevez les paramètres comme : “workers”, “n_jobs”, “n_cpus”, “device” ou “gpu” dans la documentation, c’est un bon signe que le code peut paralléliser les calculs et/ou utiliser le GPU. Vous pouvez aussi vous rendre sur la documentation des packages utilisés (pour des packages couramment utilisés, les LLM sauront vous répondre, pour des packages ou langages niche n’hésitez pas à demander à l’auteur/autrice). Si vous ne trouvez pas ces paramètres, il est probable que le code n’utilise pas ces ressources.
Choisir les ressources allouées
- CPU : Si votre code parallélise les calculs, vous pouvez allouer plusieurs coeurs CPU. Pour des utilisations classiques en Python ou R pour du machine-learning, de l’extraction de données, etc., choisir entre 2 et 16 coeurs CPU est souvent suffisant. Pour des utilisations plus spécifiques
- MEM : Les quantité de RAM demandée dépend principalement de la taille de vos données et/ou la taille des modèles utilisés. Pour des utilisations classiques, entre 8 et 64 Go de RAM est souvent suffisant. Pour des traitements de données plus lourds, vous pouvez aller jusqu’à 256 Go de RAM.
- GPU : Si votre code utilise le GPU, vous pouvez allouer 1 GPU.
Vérifier l’utilisation des ressources
Une allocation parfaite est une allocation où 100% des ressources sont utilisées. Lorsque votre job est terminé, il est possible de vérifier le pourcentage d’utilisation effective des ressources allouées avec la commande reportseff --user <username>
(pour plus d’informations sur la commande faites reportseff --help
)
Attention les jobs de session (nomées pawner-jupyterhub
) apparaissent aussi dans le reportseff, vous pouvez les ignorer.
Ensuite, ajustez en fonction de l’utilisation effective et du temps de calcul les prochaines allocations.
Si malgré tout vous avez des doutes, n’hésitez pas à demander de l’aide sur le RocketChatIRD.