1. Utilisation de Tensorboard sur les serveurs GPU#

Marc Buffat, dpt mécanique, Lyon 1

1.1. Initialisation#

utilisation de l’extension tensorboard et sélection du GPU

# Load the TensorBoard notebook extension
%load_ext tensorboard
The tensorboard extension is already loaded. To reload it, use:
  %reload_ext tensorboard
# Clear any logs from previous runs
!rm -rf ./logs/
# configuration pour l'utilisation du GPU
from validation.libIA_GPU import Init_tensorflowGPU
gpu = Init_tensorflowGPU(4*1024, 1)
print(gpu)
Num GPUs Available:  2
GPU select:  PhysicalDevice(name='/physical_device:GPU:1', device_type='GPU') Mem GPU:  4096 Mo
PhysicalDevice(name='/physical_device:GPU:1', device_type='GPU')

1.2. Définition du modèle#

import tensorflow as tf
import datetime
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])

1.3. Création du modèle et apprentissage#

on utilise tf.keras.callbacks.TensorBoard pour générer les fichiers logs utilisés par tensorboard dans le répertoire spécifié : ici logs/fit/

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])

/var/lib/jupyterhub/venvs/tf/lib/python3.9/site-packages/keras/src/layers/reshaping/flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(**kwargs)


Epoch 1/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 12s 5ms/step - accuracy: 0.8897 - loss: 0.3654 - val_accuracy: 0.9668 - val_loss: 0.1034
Epoch 2/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 9s 5ms/step - accuracy: 0.9693 - loss: 0.1018 - val_accuracy: 0.9705 - val_loss: 0.0988
Epoch 3/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 9s 5ms/step - accuracy: 0.9788 - loss: 0.0666 - val_accuracy: 0.9761 - val_loss: 0.0780
Epoch 4/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 9s 5ms/step - accuracy: 0.9831 - loss: 0.0513 - val_accuracy: 0.9794 - val_loss: 0.0675
Epoch 5/5
1875/1875 ━━━━━━━━━━━━━━━━━━━━ 8s 4ms/step - accuracy: 0.9867 - loss: 0.0407 - val_accuracy: 0.9759 - val_loss: 0.0802





<keras.src.callbacks.history.History at 0x7f1bc42f54f0>

1.4. Accès à la page d’analyse tensorboard#

pour accéder à l’analyse il faut lancer le programme tensorboard en spécifiant le répertoire de données (ici logs/fit) soit

  1. en exécutant la cellule suivante dans le notebook

    %tensorboard --loggdir logs/fit
    
  2. soit en ouvrant un terminal et en lançant dans le bon environnement Python la commande suivante

    source /var/lib/jupyterhub/venvs/tf/bin/activate
    tensorboard --logdir logs
    

Ensuite on ouvre un nouvel onglet dans le navigateur pour accéder à la page de streamboard

%tensorboard --logdir logs/fit

1.5. The END#

1.6. Visualisation de l’analyse tensorboard#

En ouvrant avec le navigateur la page suivante:

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

on obtiens la page tensorboard avec une analyse de l’apprentissage comme le montre la figure ci-dessous.

../_images/tensorboard.png