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
[1m1875/1875[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m12s[0m 5ms/step - accuracy: 0.8897 - loss: 0.3654 - val_accuracy: 0.9668 - val_loss: 0.1034
Epoch 2/5
[1m1875/1875[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m9s[0m 5ms/step - accuracy: 0.9693 - loss: 0.1018 - val_accuracy: 0.9705 - val_loss: 0.0988
Epoch 3/5
[1m1875/1875[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m9s[0m 5ms/step - accuracy: 0.9788 - loss: 0.0666 - val_accuracy: 0.9761 - val_loss: 0.0780
Epoch 4/5
[1m1875/1875[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m9s[0m 5ms/step - accuracy: 0.9831 - loss: 0.0513 - val_accuracy: 0.9794 - val_loss: 0.0675
Epoch 5/5
[1m1875/1875[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m8s[0m 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
en exécutant la cellule suivante dans le notebook
%tensorboard --loggdir logs/fit
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.
