5. Outils supplémentaires#

5.1. Outils sous Xpra#

Le système inclus un émulateur X11, xpra[2] , qui permet d’éxécuter dans un navigateur des applications graphiques X11 sur le serveur. On lance xpra à partir de l’interface jupyterlab, et dans un nouvel onglet on a un environnement X11 qui tourne sur le serveur. Un exemple d’interface X11 est donné ci-dessous.

_images/Jupyterxpra.png

Warning

Attention Lorsque que vous avez terminé l’utilisation de Xpra, il faut l’arréter et pas se contenter de fermer la fenêtre. Pour arrêter Xpra, allez dans le menu le plus à gauche et sélectionner Disconnect.

5.2. IDE Python Spyder#

Dans le terminal, on peut alors lancer des applications graphiques, comme par exemple spyder[3], qui est un IDE Python. Pour cela, on éxecute dans le terminal Xpra les commandes suivantes:

cd GPU     
source /var/lib/jupyterhub/venvs/tf/bin/activate
spyder

qui ouvre spyder dans le répertoire GPU où on peut charger le programme Python TensorFlowLSTM.py que l’on éditer et debugger avec spyder [3]. Attention, avec spyder, on doit bien sur spécifier l’environnement virtuel Python que l’on veut utiliser (ici Tensor Flow).

_images/spyder.png

5.3. Tensorboard#

Tensorboard[4] est outil d’analyse en IA qui fournit les mesures et les visualisations nécessaires au cours du workflow d’apprentissage automatique. Il permet de suivre les métriques de l’apprentissage telles que la perte et la précision, de visualiser les graphiques du modèle, et bien plus encore.

Pour utiliser tensorboard dans un notebook, on l’initialise au début du notebook dans une cellule

# Load the TensorBoard notebook extension
%load_ext tensorboard

et on efface les logs précédents.

Avec tensorflow, lors de l’apprentissage du modèle avec Model.fit() (avec Keras) , on ajoute un appel à tf.keras.callbacks.TensorBoard qui permet de créer les journaux (logs) (dans le répertoire spécifié) et des histogrammes de calcul pour chaque époque avec histogram_freq=1 (qui est désactivée par défaut).

A la fin de l’apprentissage, on lance le programme tensorboard avec la commande:

 tensorboard --logdir logs/fit

puis on ouvre un nouvel onglet dans le navigateur pour accéder à la page d’analyse tensorboard en entrant l’URL suivante:

 https://iagpu2-streamlit.univ-lyon1.fr/tensorboard1/

qui fournit une analyse de l’apprentissage comme le montre la figure ci-dessous.

_images/tensorboard.png

Le notebook python utilisé avec tensorboard est donné dans la section suivante.

Warning

Attention l’interface tensorboard est partagé entre tous les utilisateurs, car tensorboard utilise un serveur web avec des ports réservés. Pensez à arreter tensorboard avec ctrl+C et le notebook avec ctrl+shift+Q.

Par défaut, 2 ports sont réservés à tensorboard:

  1. le port 6006 qui est le port par défaut

  2. le port 6007 que l’on peut utiliser si le premier est déja utilisé en spécifiant:

tensorboard --port=6007 --logdir logs/fit

Dans ce cas, l’URL à utilisé pour visualiser le résultat est la suivante:

 https://iagpu2-streamlit.univ-lyon1.fr/tensorboard2/

5.4. Programmation C++ (cling)#

Un noyau Jupyter C++ est aussi disponible, utilisant l’interpréteur cling.

_images/Jupyter-cling.png

Vous trouverez dans les sections suivantes un exemple d’utilisation de ce noyau

Pour l’ustilisation de cuda, les fichiers d’entêtes cuda sont dans /usr/local/cuda/include et les bibliothèques sont dans /usr/local/cuda/lib64. Les outils cuda (nvcc, ..) sont dans /usr/local/cuda/bin

5.5. Jupyter AI#

Jupyter AI[6] est une extension de Jupyter qui permet d’utiliser des modèles AI génératives (LLM) dans des notebooks Ipython.

_images/JupyterAI.png

Attention pour utiliser cette extension, il faut avoir accès à un LLM (ChatGPT, Mistral, ..) et à son API. On peut aussi utiliser Ollama[7], qui est installé sur le serveur, et qui permet d’exécuter localement des modèles LLM comme ChatGPT, Mistral, LLama. La liste actuelle des modèles est donnée par la commande ollama list:

ollama list

NAME                ID              SIZE      MODIFIED    
mistral-small:latest                  8039dd90c113    14 GB     17 hours ago    
deepseek-r1:70b                       0c1615a8ca32    42 GB     46 hours ago    
deepseek-r1:70b-llama-distill-fp16    5c3319143a79    141 GB    47 hours ago    
llama3.2:latest                       a80c4f17acd5    2.0 GB    2 weeks ago     
codellama:latest                      8fdf8f752f6e    3.8 GB    2 weeks ago

La configuration sous JupyterAI avec Ollama est un peu délicate, et il est préférable d’écrire directement le fichier de configuration config.json, qui se trouve dans le répertoire de l’utilisateur: ~/.local/share/jupyter/jupyter_ai. Le type fichier config.json pour ollama est de la forme

{
    "model_provider_id": "ollama:codellama",
    "embeddings_provider_id": "ollama:nomic-embed-text",
    "send_with_shift_enter": true,
    "fields": {},
    "api_keys": {},
    "completions_model_provider_id": null,
    "completions_fields": {}
}

Une fois le modèle d’AI configuré, on peut interagir avec le modèle avec le chat JupyterAI à gauche de la fenêtre Jupyterlab.

Les principales commandes sont les suivantes:

  1. /ask pour poser une question

  2. /fix pour expliquer l’erreur dans la cellule sélectionnée

  3. /help pour l’aide

  4. /learn pour faire un apprentissage à partir de fichiers locaux dans un répertoire

On peut faire référence au contenu d’une cellule numéro num avec {In[num]} ou avec la sortie correspondante avec Out[num]} ou l’erreur {Err[num]}.

On peut aussi interagir directement dans le Notebook en utilisant les commandes magiques %%ai et %ai Au début du Notebook, on charge l’extension JupyterAI et on configure le modèle à utiliser

%load_ext jupyter_ai_magics
# p.e pour Mistral
%config AiMagics.default_language_model = "mistralai:mistral-large-latest"
%env MISTRAL_API_KEY=xxxxxxx

On peut ensuite interagir avec le mofèle LLM avec des commandes

%%ai

Vous trouverez dans la section suivante un exemple d’utilisation de JupyterAi dans un notebook IPython avec le LLM mistral.

et dans cette section la même application JupyterAI mais avec ollama. Le résultat pour la génération de code est un peu moins bon qu’avec mistral.

5.6. Programmation R avec des R-Notebook#

Un noyau R est installé sous Juputerlab pour permettre la programmation avec un noyau IRKernel[8].

_images/Jupyter-R.png

Vous trouverez ci-dessous la liste des bibliotèques disponibles.

Un exemple de Notebbok R est donné ci-dessous:

5.6.1. Liens#