Utilisation de Notebook Python avec GPU

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

  1. 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)

  2. 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:

  1. un notebook utilisant la bibliothèque TensorFlow avec GPU: TensorFlowLSTM

  2. 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 :

  1. avec le menu Fichier -> Close and Shut Down Notebook ou ctrl+shift+Q

  2. avec le bouton à gauche (carré) qui gère tous les noyaux de l’utilisateur en cours d’exécution