Profiler votre modèle avec les outils Cloud TPU

Pour en savoir plus sur l'utilisation de TensorBoard avec l'un des frameworks compatibles, consultez les documents suivants:

Installer TensorBoard

TensorBoard est installé par défaut dans les VM Cloud TPU dans le cadre de TensorFlow. Vous pouvez également installer TensorFlow manuellement. Dans tous les cas, des dépendances supplémentaires peuvent être requises. Pour les installer, exécutez la commande suivante:

pip3 install -r /usr/share/tpu/models/official/requirements.txt

Installer le plug-in Cloud TPU TensorBoard

Connectez-vous en SSH à votre VM TPU:

   $ gcloud alpha compute tpus tpu-vm ssh your-vm --zone=your-zone
   

Exécutez les commandes suivantes:

  pip3 install --upgrade "cloud-tpu-profiler>=2.3.0"
  pip3 install --user --upgrade -U "tensorboard>=2.3"
  pip3 install --user --upgrade -U "tensorflow>=2.3"

Démarrer le serveur de profils TensorFlow

Ajoutez le code suivant à votre script avant de commencer la boucle d'entraînement.

tf.profiler.experimental.server.start(6000)

Cette action démarre le serveur de profileur TensorFlow sur votre VM TPU.

Démarrer le script d'entraînement

Exécutez votre script d'entraînement et attendez que le résultat indique que votre modèle s'entraîne activement. Cela dépend de votre code et de votre modèle. Recherchez une sortie telle que Epoch 1/100. Vous pouvez également accéder à la page Cloud TPU dans la console GCP, sélectionner votre TPU et afficher le graphique d'utilisation du processeur. Bien que cela n'affiche pas l'utilisation des TPU, cela indique que le modèle entraîne votre modèle.

Démarrer le serveur TensorBoard

Ouvrez une nouvelle fenêtre de terminal et connectez-vous en SSH à votre VM TPU avec le transfert de port. Cela permet à votre navigateur local de communiquer avec le serveur TensorBoard exécuté sur votre VM TPU.

 gcloud alpha compute tpus tpu-vm ssh your-vm --zone=us-central1-a --ssh-flag="-4 -L 9001:localhost:9001"
 

Exécutez TensorBoard dans la fenêtre de terminal que vous venez d'ouvrir et spécifiez le répertoire dans lequel TensorBoard peut écrire des données de profilage à l'aide de l'indicateur --logdir. Exemple :

TPU_LOAD_LIBRARY=0 tensorboard --logdir your-model-dir --port 9001

TensorBoard démarre un serveur Web et affiche son URL:

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.3.0 at http://localhost:6006/ (Press CTRL+C to quit)

Ouvrez un navigateur Web et accédez à l'URL affichée dans le résultat de TensorBoard. Sélectionnez Profil dans le menu déroulant en haut à droite de la page TensorBoard.

image

Capturer un profil sur des VM TPU

  1. Sélectionnez le bouton CAPTURE PROFILE.
  2. Sélectionnez la case d'option TPU Name (Nom de TPU).
  3. Saisissez le nom de votre TPU.
  4. Cliquez sur le bouton CAPTURE (Capturer).

Afficher les données de profil avec TensorBoard

Une fois le profil capturé, TensorBoard affiche overview_page. Dans le volet de gauche, sous "Outils", sélectionnez trace_viewer.

image

Les autres outils répertoriés dans le menu Outils ne sont actuellement pas compatibles avec les VM TPU. Pour en savoir plus sur ces outils, consultez la page Profiler des modèles sur des nœuds TPU.

Lecteur de traces

Le lecteur de traces est un outil d'analyse des performances Cloud TPU disponible sous Profil. Comme il utilise le lecteur de profilage d'événements de trace Chrome, il ne fonctionne que dans le navigateur Chrome.

Le lecteur de traces affiche une chronologie indiquant :

  • la durée des opérations exécutées par le modèle TensorFlow ;
  • la partie du système (TPU ou machine hôte) qui a exécuté une opération. En règle générale, la machine hôte exécute des opérations d'alimentation, qui prétraitent les données d'entraînement et les transfèrent au TPU, tandis que ce dernier se charge de l'entraînement du modèle proprement dit.

Le lecteur de traces vous permet d'identifier les problèmes de performances dans le modèle, puis de prendre des mesures pour les résoudre. Par exemple, de manière générale, vous pouvez déterminer si les opérations d'alimentation ou d'entraînement du modèle prennent la majorité du temps. En affichant le détail, vous pouvez identifier les opérations TensorFlow dont l'exécution est la plus longue.

Notez que le lecteur de traces est limité à un million d'événements par Cloud TPU. Si vous devez évaluer plus d'événements, utilisez plutôt le lecteur de traces en flux continu.

Interface du lecteur de traces

Pour ouvrir le lecteur de traces, accédez à TensorBoard, cliquez sur l'onglet Profil en haut de l'écran, puis choisissez trace_viewer dans le menu déroulant Outils. Le lecteur affiche l'exécution la plus récente :

image

Les principaux éléments de cet écran sont les suivants (ils sont indiqués par des numéros) :

  1. Liste déroulante Runs (Exécutions). Contient toutes les exécutions pour lesquelles vous avez capturé des informations de trace. Par défaut, elle affiche l'exécution la plus récente, mais vous pouvez en sélectionner une autre dans le menu déroulant.
  2. Liste déroulante Tools (Outils). Permet de sélectionner différents outils de profilage.
  3. Liste déroulante Hosts (Hôtes). Permet de sélectionner un hôte contenant une ressource Cloud TPU définie.
  4. Volet de chronologie. Affiche les opérations que Cloud TPU et la machine hôte ont exécutées au fil du temps.
  5. Volet de détails. Affiche des informations supplémentaires sur les opérations sélectionnées dans le volet de chronologie.

Examinez de plus près le volet de chronologie :

image

Ce volet contient les éléments suivants :

  1. Barre supérieure. Contient divers contrôles auxiliaires.
  2. Axe de temps. Affiche le temps par rapport au début de la trace.
  3. Étiquettes de section et de piste. Chaque section contient plusieurs pistes. Sur sa gauche figure également un triangle sur lequel vous pouvez cliquer pour la développer et la réduire. Il y a une section pour chaque élément de traitement du système.
  4. Sélecteur d'outils. Contient divers outils permettant d'interagir avec le lecteur de traces.
  5. Événements. Indiquent le temps nécessaire à l'exécution d'une opération ou la durée de méta-événements, tels que les étapes d'entraînement.
  6. Barre d'onglets verticale. Cette fonctionnalité n'est pas utile pour Cloud TPU. Cette barre fait partie de l'outil de lecture des traces à usage général fourni par Google Chrome, qui est utilisé pour diverses tâches d'analyse des performances.

Sections et pistes

Le lecteur de traces comporte les sections suivantes :

  • Une section pour chaque nœud TPU, étiquetée avec le numéro de la puce TPU et du nœud TPU que celle-ci contient (par exemple, "Chip 2 : TPU Core 1" [Puce 2 : Cœur de TPU 1]). Chaque section de nœud TPU contient les pistes suivantes :
    • Step (Étape). Affiche la durée des étapes d'entraînement exécutées sur le TPU.
    • TensorFlow Ops (Opérations TensorFlow). Affiche les opérations TensorFlow exécutées sur le TPU.
    • XLA Ops (Opérations XLA). Affiche les opérations XLA exécutées sur le TPU. (Chaque opération est convertie en une ou plusieurs opérations XLA. Le compilateur XLA traduit les opérations XLA en code qui s'exécute sur le TPU.)
  • Une section pour les threads s'exécutant sur le processeur de la machine hôte, avec l'étiquette "Threads hôtes". La section contient une piste pour chaque thread du processeur. Remarque : Vous pouvez ignorer les informations affichées à côté des étiquettes de section.

Sélecteur d'outils de chronologie

Vous pouvez interagir avec la vue de chronologie à l'aide du sélecteur d'outils de chronologie inclus dans TensorBoard. Pour activer et sélectionner un outil de chronologie, cliquez dessus ou utilisez les raccourcis clavier indiqués ci-après. Pour déplacer le sélecteur d'outils de chronologie, cliquez dans la zone en pointillés en haut, puis faites-le glisser à l'emplacement souhaité.

Utilisez les outils de chronologie comme suit :

Outil de sélection
Cliquez sur un événement pour le sélectionner ou faites-le glisser pour sélectionner plusieurs événements. Des informations supplémentaires sur les événements sélectionnés (nom, heure de début et durée) s'affichent dans le volet de détails.

Outil de panorama
Faites glisser pour effectuer un panoramique de la chronologie horizontalement et verticalement.

Outil de zoom
Faites glisser vers le haut pour effectuer un zoom avant ou vers le bas pour effectuer un zoom arrière le long de l'axe horizontal (temps). La position horizontale du curseur de la souris détermine le centre autour duquel le zoom est effectué.

Remarque : L'outil de zoom présente un bug connu. Le zoom reste actif si vous relâchez le bouton de la souris alors que le curseur de la souris se trouve en dehors de l'affichage de la chronologie. Le cas échéant, cliquez simplement sur la vue de chronologie pour arrêter le zoom.

Outil de synchronisation
Faites glisser horizontalement pour marquer un intervalle de temps. Sa longueur apparaît sur l'axe de temps. Pour ajuster l'intervalle, faites glisser ses extrémités. Pour l'effacer, cliquez n'importe où dans la vue de chronologie.

Notez que l'intervalle reste marqué si vous sélectionnez l'un des autres outils.