Utilisation de Notebook Python avec GPU#
Warning
L’utilisation d’un notebook pour faire un calcul long d’apprentissage,
supérieur à une trentaine de minutes, est déconseillé! Le notebook sert à la
mise au point et à l’analyse d’un calcul d’IA. Si la phase d’apprentissage est
longue, il vaut mieux dans ce cas utiliser un script Python et le lancer avec
une commande de batch (submit
) comme expliqué dans la section suivante.
Pour l’utilisation de notebooks IPython, il est important de définir les ressources qui seront utilisées. La façon de définir les ressources GPU et CPU dépendent des bibliothèques utilisées: TensorFlow ou PyTorch. Dans l’environnement jupyterlab, on choisit l’interpréteur Python avec la bonne bibliothèque d’IA: python-tensorflow ou python-torch.
Il reste cependant à configurer les ressources utilisées par ces bibliothèques.
Une bibliothèque de configuration de ces librairies est fournit: libIA_GPU
avec 2 fonctions
Init_tensorflowGPU(memGPU, numGPU)
pour TensorFlow
où on spécifie la memoire maximale (en Mo) utilisée sur le GPU memGPU ainsi que le numéro du GPU à utiliser numGPU (0=premier, 1=second)Init_torchGPU(numthread,numGPU)
pour PyTorch
où on spécifie le nombre maximum de threads (coeurs) utilisés sur le CPU numthread ainsi que le numéro du GPU à utiliser numGPU (0=premier, 1=second)
Deux exemples d’utilisation de notebooks Python avec GPU pour des calculs de machine learning computationnelle issus d’un cours d’introduction au machine learning en Mécanique [Buffat, 2024], sont détaillés ci_dessous:
un notebook utilisant la bibliothèque TensorFlow avec GPU: TensorFlowLSTM
un notebook utilisant la bibliothèque PyTorch avec GPU: PyTorchLSTM
Warning
Attention : A la fin de l’exécution d’un notebook, les ressources allouées sur le GPU ne sont pas libérées automatiquement, même si on ferme le notebook. Il faut explicitement arrêter le notebook (pour arrêter l’interpréteur Python associé).
La commande nvidia-htop.py
permet de vérifier si on utilise des ressources GPU, en regardant dans la liste des
programmes, qui s’exécutent sur les GPU, ceux qui appartiennent à l’utilisateur.
nvidia-htop.py
Thu Feb 13 14:04:01 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.05 Driver Version: 560.35.05 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A100 80GB PCIe On | 00000000:09:00.0 Off | 0 |
| N/A 37C P0 64W / 300W | 1907MiB / 81920MiB | 13% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA A100 80GB PCIe On | 00000000:0A:00.0 Off | 0 |
| N/A 36C P0 65W / 300W | 2541MiB / 81920MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
+------------------------------------------------------------------------------+
| GPU PID USER GPU MEM %CPU %MEM TIME COMMAND |
| 0 406952 marc.bu+ 1898MiB 86.0 0.3 01:59 /var/lib/jupyterhub/ |
| 1 407074 marc.bu+ 2532MiB 106 0.3 01:26 /var/lib/jupyterhub/ |
+------------------------------------------------------------------------------+
Note
Arret d’un notebook IPython
Pour libérer les ressources GPU d’un notebook IPython, Il faut explicitement arrêter le notebook soit :
avec le menu
Fichier
->Close and Shut Down Notebook
ouctrl+shift+Q
avec le bouton à gauche (carré) qui gère tous les noyaux de l’utilisateur en cours d’exécution