
Table des matières
Environnement Python personnel
L'IDRIS propose de nombreux modules dédiés à l'IA. Les modules sont conçus pour exploiter au mieux l'infrastructure de Jean Zay et les bibliothèques installées (telles que cuDNN, Intel MKL, NCCL).
Si un module correspond à vos besoins mais qu'il manque quelques bibliothèques indispensables à vos codes, vous avez deux solutions :
- faire une demande à [email protected] en précisant la bibliothèque et le module concerné. Cela bénéficiera potentiellement à d'autres utilisateurs de Jean Zay.
- ajouter les bibliothèques manquantes localement via la commande
pip
, en surchargeant un des modules proposés. Lire plus loin pour les avantages et inconvénients de cette méthode.
Si votre besoin est vraiment très différent de ce que propose l'IDRIS, vous pouvez créer votre propre environnement conda avec exactement ce qui vous est nécessaire. Cela vous donne un contrôle total mais s'accompagne de quelques inconvénients :
- un environnement prend de la place (en particulier en terme d'inodes) et risque de saturer l'espace qui vous est alloué. Voir la section suivante pour des tactiques limitant cet aspect.
- les codes installés ne sont pas optimisés pour Jean Zay et ne vont pas forcément trouver les librairies de bas niveau comme cuDNN (même en chargeant le module
cudnn/7.6.5.32-cuda-10.2
). - l'assistance utilisateur aura plus de difficultés à vous dépanner en cas de comportement anormal de votre code.
Quelques commandes utiles :
- pour savoir quels sont les modules disponibles :
module avail
, par exemplemodule avail python
module load <nom_complet_module>
pour charger un modulemodule list
(une fois un module chargé) pour avoir la liste complète des modules associésmodule purge
pour “décharger” tous les modules (en cas d'anomalie, il peut être préférable de partir d'une nouvelle session)
Conseils généraux avant d'installer localement des bibliothèques
Le répertoire de stockage des paquets PyPI est situé dans $HOME/.local
par défaut. Vous risquez donc de rapidement saturer le quota disque de votre $HOME
si ce comportement est conservé. Pour éviter ceci, nous vous recommandons de créer un répertoire cible dans votre répertoire $WORK
et de faire un lien symbolique dans le $HOME
pointant sur le répertoire cible :
- si le dossier
$HOME/.local
existe déjà, il faut d'abord le déplacer dans le$WORK
:
$ mv $HOME/.local $WORK $ ln -s $WORK/.local $HOME
- si le dossier
$HOME/.local
n'existe pas encore, il faut d'abord créer un répertoire dans le$WORK
:
$ mkdir $WORK/.local $ ln -s $WORK/.local $HOME
De même, via conda
, les bibliothèques sont installées dans $HOME/.conda
, il est donc vivement encouragé de procéder de la même façon.
- si le dossier
$HOME/.conda
existe déjà, il faut d'abord le déplacer dans le$WORK
:
$ mv $HOME/.conda $WORK $ ln -s $WORK/.conda $HOME
- si le dossier
$HOME/.conda
n'existe pas encore, il faut d'abord créer un répertoire dans le$WORK
:
$ mkdir $WORK/.conda $ ln -s $WORK/.conda $HOME
Pour connaître l'occupation de $WORK
:
idr_quota_user --space work
donne le pourcentage d'occupation en Go et inodes mais l'information n'est pas actualisée en temps réel (mise à jour toutes les matins)- pour plus de détail, faire
du --inodes --max-depth=1 $WORK
oudu -h --max-depth=1 $WORK
Ajouts locaux de bibliothèques via pip
Avantages et inconvénients de cette méthode :
- cette méthode est adaptée pour rajouter des bibliothèques à un module existant et éviter de devoir tout installer
- en contrepartie, ces bibliothèques installées via
pip
seront visibles de tout module, si celui-ci utilise la même version de python (l'installation se fait dans.local/lib/pythonx.y
). - il faudra donc être vigilant sur de possibles incompatibilités si vous êtes amené à lancer des calculs avec divers environnements (par exemple
pytorch-gpu/py3/1.5.0
etpytorch-gpu/py3/1.7.1
sont basés sur la même version de python (3.7) mais pas la même version denumpy
). - l'installation locale d'une bibliothèque a la précédence sur la version provenant d'un module, mais il faut rester vigilant sur les dépendances.
Pour installer localement des paquets issus du dépôt PyPI, utilisez les options --user
et --no-cache-dir
:
$ pip install --user --no-cache-dir <paquet>
Pour désinstaller un paquet installé de cette manière :
$ pip uninstall <paquet>
Autres commandes utiles (voir documentation officielle pour les options) :
pip cache purge
(utile si l'on a oublié l'option--no-cache-dir
)pip list
pour avoir tous les paquets accessibles (provenant du module ou d'une installation locale)
Création d'un environnement conda
Pas besoin d'installer Miniconda pour créer son propre environnement ! Il suffit de charger un module Miniforge, par exemple en lançant :
module load miniforge/24.9.0
Pour voir les différentes versions de Miniforge proposées :
module avail miniforge
Les commandes utiles sont :
conda deactivate
pour sortir de l'environnement chargé lors dumodule load
conda create -n <nom> python=x.y
pour créer votre environnement appelé “nom” contenant la version x.y de Python (la version de Python du module est conservée par défaut sinon)conda activate <nom>
pour activer l'environnementconda env remove --name <nom>
pour effacer proprement l'environnementconda clean -a
pour supprimer les paquets non inutilisés et le cache, vous éviterez ainsi de saturer vos espaces disques
Remarque par rapport à la licence payante Anaconda : depuis l'été 2024, l'utilisation des dépôts Anaconda est soumis à tarification. Le comportement de tout environnement conda existant sur Jean Zay a été modifié et toutes les installations effectuées par conda visent en priorité le dépôt ouvert conda-forge
. Nous vous invitons fortement à travailler avec Miniforge plutôt qu'avec Anaconda pour éviter toute requête vers un dépôt Anaconda payant.
Derniers conseils
- Les variables
$PATH
,$PYTHONPATH
et$CONDA_PREFIX
sont correctement configurées, il n'est a priori pas nécessaire de les modifier (cela risque de changer l'ordre de précédence des répertoires ou d'aboutir à des chemins vers des paquets incompatibles). Par contre si une installation pip crée un exécutable (c'est le cas de Horovod et Deepspeed), celui-ci sera placé dans le répertoire local~/.local/bin
. Pour accéder à cet exécutable, il sera nécessaire de compléter le PATH de la manière suivante :export PATH=~/.local/bin:$PATH
- Si vous utilisez alternativement plusieurs modules de Jean Zay (par exemple tensorflow et pytorch) et que vous souhaitez les compléter chacun par des installations “pip” personnelles différentes, il est possible de redéfinir la localisation des paquets installés localement en définissant la variable
PYTHONUSERBASE
. Par exemple, pour placer vos installations personnelles relatives à l'environnementtensorflow-gpu-2.4.0
dans un répertoire$WORK/.local_tf240
, vous pouvez lancer la commande suivante :export PYTHONUSERBASE=$WORK/.local_tf240
Cette commande doit être lancée avant l'installation des paquets et avant le lancement des calculs.
Si jamais vous devez compiler des codes IA utilisant les librairies CUDA, cuDNN, intel MKL, etc., n'hésitez pas à contacter l'assistance ([email protected]).