4 votes

Que signifient les graphiques dans les panneaux système de Wandb (PyTorch) ?

J'ai récemment commencé à utiliser le wandb avec mon script PyTorch, pour s'assurer que les GPU fonctionnent efficacement. Cependant, je ne suis pas sûr de ce que les graphiques indiquent exactement.

J'ai suivi le tutoriel de ce lien, https://lambdalabs.com/blog/weights-and-bias-gpu-cpu-utilization/ et j'ai été troublé par cette intrigue :

enter image description here

J'ai des doutes sur les graphiques du % de GPU et du % d'accès à la mémoire du GPU. Les descriptions dans le blog sont les suivantes :

  • GPU % : Ce graphique est probablement le plus important. Il indique le pourcentage du temps, sur la dernière période d'échantillonnage, pendant lequel un ou plusieurs noyaux ont été exécutés sur le GPU. En principe, vous voulez que ce pourcentage soit proche de 100%, ce qui signifie que le GPU est occupé en permanence à faire du data crunching. Le diagramme ci-dessus comporte deux courbes. C'est parce qu'il y a deux GPU et qu'un seul d'entre eux (bleu) est utilisé pour l'expérience. Le GPU bleu est occupé à environ 90%, ce qui signifie qu'il n'est pas trop mal mais qu'il peut encore être amélioré. La raison de cette utilisation sous-optimale est due à la petite taille du lot (4) que nous avons utilisé dans cette expérience. Le GPU récupère une petite quantité de données de sa mémoire très souvent, et ne peut pas saturer le bus mémoire ni les cœurs CUDA. Nous verrons plus tard qu'il est possible d'augmenter ce nombre en augmentant simplement la taille du lot.

  • % d'accès à la mémoire du GPU : C'est une mesure intéressante. Il mesure le pourcentage du temps sur la dernière période d'échantillonnage pendant lequel la mémoire du GPU a été lue ou écrite. Nous devons maintenir ce pourcentage à un niveau bas car nous voulons que le GPU passe la plupart de son temps à calculer au lieu d'aller chercher des données dans sa mémoire. Dans la figure ci-dessus, le GPU occupé a environ 85% de temps d'accès à la mémoire. Ce pourcentage est très élevé et a causé des problèmes de performance. Une façon de réduire le pourcentage ici est d'augmenter la taille du lot, afin que la récupération des données devienne plus efficace.

J'avais les questions suivantes :

  1. La somme des valeurs susmentionnées n'est pas égale à 100 %. Il semble que notre GPU peut soit consacrer du temps au calcul, soit consacrer du temps à la lecture/écriture de la mémoire. Comment la somme de ces deux valeurs peut-elle être supérieure à 100% ?
  2. Pourquoi l'augmentation de la taille des lots réduit-elle le temps d'accès à la mémoire du GPU ?

6voto

ayush thakur Points 86
  1. L'utilisation du GPU et l'accès à la mémoire du GPU devraient atteindre 100% si le matériel effectue les deux processus de manière séquentielle. Mais le matériel moderne ne fait pas ce genre d'opérations. Le GPU sera occupé à calculer les chiffres en même temps qu'il accédera à la mémoire.

    • GPU% est en fait le pourcentage d'utilisation du GPU. Nous voulons qu'il soit de 100%. Ainsi, il effectuera le calcul souhaité 100 % du temps.
    • Le % d'accès à la mémoire du GPU est le temps pendant lequel le GPU lit ou écrit dans sa mémoire. Nous voulons que ce chiffre soit faible. Si le % d'accès à la mémoire du GPU est élevé, il peut y avoir un certain délai avant que le GPU puisse utiliser les données pour calculer. Cela ne signifie pas qu'il s'agit d'un processus séquentiel.

    W&B vous permet de surveiller ces deux paramètres et de prendre des décisions en conséquence. Récemment, j'ai mis en place un pipeline de données utilisant tf.data.Dataset . L'utilisation du GPU était proche de 0 % et l'accès à la mémoire était également proche de 0 %. Je lisais trois fichiers image différents et les empilais. Ici, le CPU était le goulot d'étranglement. Pour contrer cela, j'ai créé un jeu de données en empilant les images. L'ETA est passée de 1h par époch à 3 minutes.

enter image description here

D'après le graphique, vous pouvez déduire que l'accès à la mémoire du GPU a augmenté alors que l'utilisation du GPU est proche de 100%. L'utilisation du CPU, qui était le goulot d'étranglement, a diminué.

  1. Voici un bel article par Lukas répondant à cette question.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X