Jean Zay : Outil de visualisation TensorBoard pour TensorFlow et PyTorch

Les algorithmes d'apprentissage automatique sont généralement coûteux en calcul. Il est donc essentiel de quantifier les performances de votre application de Machine Learning. L'outil graphique TensorBoard a été créé pour ce genre d'étude.

L'outil de visualisation TensorBoard est disponible sur Jean Zay via Jupyter Notebook. La manière d'y accéder est décrite dans la page Accès à Jupyter Notebook, JupyterLab et TensorBoard.

Les fonctionnalités TensorBoard

TensorBoard propose différents onglets de visualisation. Les principaux outils sont :

  • Scalars affiche l'évolution du loss et des métriques à chaque époque par défaut (Il est possible de l'adapter pour suivre la vitesse d'entraînement, le taux d'apprentissage et d'autres valeurs scalaires.)
  • Graphs aide à visualiser la structure de votre modèle
  • Distributions et Histograms montrent la distribution des poids et des biais à chaque époque

Vous avez également accès aux onglets et aux fonctionnalités Image Data, Hyperparameter Tuning, Embedding projector pour les applications de Natural Language Processing, What If Tool et Debugger V2.

Former un modèle avec les rappels TensorBoard

Pour bénéficier des fonctionnalités offertes par TensorBoard, il faut instrumenter votre code.

Instrumenter votre code TensorFlow

Pour générer des logs TensorBoard au format adéquat en sortie de votre application TensorFlow, il faut :

  • créer un rappel TensorBoard pour capturer les profils de performance
# Create a TensorBoard callback
logs = "logs/" + datetime.now().strftime("%Y%m%d-%H%M%S")
 
tboard_callback = tf.keras.callbacks.TensorBoard(log_dir = logs,
                                                 histogram_freq = 1,
                                                 profile_batch = '500,520')
  • l'appeler pendant l'entraînement du modèle
# Train model
model.fit(ds_train,
         epochs=2,
         validation_data=ds_test,
         callbacks = [tboard_callback])

Instrumenter votre code PyTorch

Pour générer des logs TensorBoard en sortie de votre application PyTorch, il faut

  • définir un writer
from torch.utils.tensorboard import SummaryWriter
 
# default `log_dir` is "runs" - we'll be more specific here
writer = SummaryWriter('runs/fashion_mnist_experiment_1')
  • insérer des ordres de rappels TensorBoard adaptés aux résultats que vous souhaitez visualiser. Par exemple :
# TensorBoard callback for Scalars visualisation
# here we report running loss value at each iteration i
writer.add_scalar('training loss',
                  running_loss / 1000,
                  epoch * len(trainloader) + i)
# TensorBoard callback for ImageData visualisation 
writer.add_image('four_fashion_mnist_images', img_grid)
# TensorBoard callback for Graphs visualisation
writer.add_graph(net, images)
# TensorBoard callback for Embedding Projector visualisation
writer.add_embedding(features,
                    metadata=class_labels,
                    label_img=images.unsqueeze(1))

Documentation officielle