Skip to main content

Python et intelligence artificielle

Python est largement utilisé sur eXplor-v2 pour l’analyse de données, le calcul scientifique, la visualisation et l’apprentissage automatique. Cette page présente les méthodes recommandées pour créer un environnement Python reproductible, utiliser les bibliothèques scientifiques et exploiter les GPU avec les principaux frameworks d’IA.

Python sur eXplor-v2​

Python peut être utilisé de plusieurs façons :

  • Modules système : versions de Python installées globalement ;
  • Environnements Conda : environnements isolés, adaptés aux projets Python et recommandés pour la reproductibilité ;
  • Conteneurs Apptainer : environnements complets pour les dépendances complexes ou les piles logicielles spécialisées.

Pour un projet, privilégiez un environnement Conda dédié ou un conteneur Apptainer. Consultez Python et Conda pour les instructions de création, d’activation et d’export d’environnements.

Créer un environnement scientifique​

Les bibliothèques scientifiques usuelles comprennent :

  • NumPy : calcul numérique et tableaux multidimensionnels ;
  • SciPy : optimisation, intégration, interpolation et algorithmes scientifiques ;
  • pandas : manipulation et analyse de données tabulaires ;
  • scikit-learn : apprentissage automatique classique ;
  • Matplotlib et Seaborn : visualisation de données ;
  • Jupyter : notebooks interactifs.

Exemple d’environnement Conda :

conda create -n science \
python=3.11 \
numpy \
scipy \
pandas \
scikit-learn \
matplotlib \
seaborn \
jupyter

conda activate science

Exportez l’environnement pour le versionner et le recréer ultérieurement :

conda env export --from-history > environment.yml

Frameworks d’intelligence artificielle​

PyTorch​

PyTorch est utilisé pour l’apprentissage profond, la vision par ordinateur, le traitement du langage et de nombreux projets de recherche en IA.

Exemple d’installation avec prise en charge CUDA, à adapter à la version CUDA compatible avec votre environnement :

conda create -n pytorch \
python=3.11 \
pytorch \
torchvision \
torchaudio \
pytorch-cuda=12.4 \
-c pytorch \
-c nvidia

conda activate pytorch

Vérifiez le GPU dans une allocation Slurm GPU :

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'GPU indisponible')"

TensorFlow​

TensorFlow est un framework d’apprentissage profond utilisé pour la conception, l’entraînement et l’inférence de modèles.

conda create -n tensorflow python=3.11 tensorflow -c conda-forge
conda activate tensorflow

Vérifiez les périphériques GPU visibles :

python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

JAX​

JAX est une bibliothèque de calcul numérique et d’apprentissage automatique, particulièrement adaptée à l’accélération GPU et au calcul vectorisé.

conda create -n jax python=3.11 jax jaxlib -c conda-forge
conda activate jax

Vérifiez les périphériques détectés :

python -c "import jax; print(jax.devices())"

Transformers​

La bibliothèque Transformers de Hugging Face permet d’utiliser et d’entraîner des modèles pré-entraînés pour le langage, la vision et l’audio.

conda create -n transformers \
python=3.11 \
transformers \
datasets \
accelerate \
pytorch \
-c conda-forge \
-c pytorch

conda activate transformers

Utiliser un GPU​

Pour exécuter Python sur GPU, votre job Slurm doit réserver un GPU avec --gres=gpu:1. Le framework utilisé doit être compatible avec le pilote NVIDIA et CUDA présents sur le nœud attribué.

Vérifiez toujours le GPU attribué avant d’exécuter un entraînement ou un calcul coûteux :

nvidia-smi
echo "GPU visibles : ${CUDA_VISIBLE_DEVICES:-non défini}"
Un GPU visible est normal

Slurm peut rendre visibles uniquement les GPU réservés à votre job. Même si le nœud possède plusieurs cartes, voir un seul GPU via nvidia-smi ou CUDA_VISIBLE_DEVICES est normal lorsqu’un seul GPU a été demandé.

Exemple de job CPU​

Créez un script, par exemple python-cpu.slurm :

#!/bin/bash
#SBATCH --job-name=python-cpu
#SBATCH --partition=compute
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=8G
#SBATCH --time=01:00:00
#SBATCH --output=logs/%x-%j.out
#SBATCH --error=logs/%x-%j.err

set -euo pipefail

mkdir -p logs
cd "$SLURM_SUBMIT_DIR"

module purge
module load python/VERSION

# Activez l'environnement correspondant à votre projet.
# Adaptez ce chemin à votre installation Conda.
source "$HOME/.conda/envs/science/bin/activate"

python mon_script.py

Soumettez le job :

sbatch python-cpu.slurm

Exemple de job GPU​

Créez un script, par exemple python-gpu.slurm :

#!/bin/bash
#SBATCH --job-name=python-gpu
#SBATCH --partition=gpu
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --mem=32G
#SBATCH --gres=gpu:1
#SBATCH --time=02:00:00
#SBATCH --output=logs/%x-%j.out
#SBATCH --error=logs/%x-%j.err

set -euo pipefail

mkdir -p logs
cd "$SLURM_SUBMIT_DIR"

module purge
module load python/VERSION

# Activez l'environnement contenant PyTorch, TensorFlow ou JAX.
source "$HOME/.conda/envs/pytorch/bin/activate"

nvidia-smi

python entrainement.py

Soumettez le job :

sbatch python-gpu.slurm

Bonnes pratiques​

  • Créez un environnement Conda par projet pour éviter les conflits entre dépendances.
  • Versionnez environment.yml, requirements.txt, les scripts Python et les scripts Slurm avec votre projet.
  • Chargez une version explicite de Python dans les scripts lorsque le centre fournit des modules versionnés.
  • Installez les dépendances dans votre environnement personnel ou projet, jamais avec pip install --user dans le Python système.
  • Testez votre script avec un jeu de données réduit avant une soumission longue.
  • Vérifiez torch.cuda.is_available(), jax.devices() ou les périphériques TensorFlow dans une allocation GPU.
  • Demandez seulement le nombre de CPU, GPU et la quantité de mémoire réellement nécessaires.
  • Utilisez $SCRATCH pour les données temporaires volumineuses, les caches et les sorties intermédiaires ; conservez les résultats importants dans l’espace projet.

Pages associées​