Profiler les environnements Multislice
Les environnements Cloud TPU Multislice sont composés de plusieurs tranches TPU qui communiquent sur le réseau de centre de données. Vous pouvez utiliser l'outil de statistiques Megascale dans XProf pour afficher des informations sur l'efficacité avec laquelle votre environnement multislices utilise le réseau DCN. Plus précisément, l'outil Statistiques Megascale vous permet de :
- Afficher et comprendre les performances réseau entre les tranches en fonction des données collectées
- Identifier les goulots d'étranglement
- Optimiser les performances de votre modèle
Toutes les métriques de l'outil de statistiques Megascale sont générées par TPU. Pour activer cet outil, suivez les mêmes étapes que pour capturer un profil dans votre framework et utilisez la bibliothèque XProfiler pour configurer une instance TensorBoard XProf afin d'afficher vos profils. Tant que votre charge de travail a été exécutée en tant que charge de travail multislices, TensorBoard affichera l'outil "Statistiques mégascale" pour toute charge de travail multislices.
Pour en savoir plus sur l'outil de statistiques Megascale dans XProf, consultez le guide Outil de statistiques Megascale.
Terminologie
L'outil de statistiques collectives DCN affiche des métriques qui décrivent la communication entre les tranches TPU dans un environnement multislices. Lorsque le runtime TPU lance la communication entre les tranches, une série d'opérations est utilisée :
send
: interrompt l'hôte pour démarrer l'accès direct à la mémoire (DMA, Direct Memory Access) et fournit un tampon rempli à l'hôte pour démarrer le transfert de données.send-done
: signale à l'hôte que le transfert de données est terminé.recv
: fournit un tampon vide que l'hôte peut remplir avec les données transférées.recv-done
: signale à l'hôte que les données ont été reçues.
Un collectif est lancé lorsqu'une opération send
se produit et se termine lorsqu'une opération recv-done
correspondante se produit.
Temps de sommeil
Mesure du temps pendant lequel le collectif est en mesure d'envoyer et de recevoir des données.
Cela n'inclut pas les opérations send
, send-done
, recv
ni recv-done
.
Par exemple, prenons la chronologie suivante :
Dans cet exemple, le temps de marge est calculé comme suit :
Temps de marge = t1 + t2 + t3
Augmenter le temps de latence réduit les risques de blocage du TPU pour un collectif. Vous pouvez augmenter le temps de latence en choisissant une autre méthode de partitionnement.
Durée de l'arrêt
Durée moyenne passée par le collectif dans les opérations d'envoi, d'envoi terminé, de réception et de réception terminée. Notez que cela n'inclut pas le temps passé à transmettre les données. Par exemple, prenons la chronologie suivante :
Dans cet exemple, la durée de l'arrêt est calculée comme suit :
Durée du blocage = tsend + tsend-done + trecv + trecv-done
Durée observée
Durée entre les opérations send
et recv-done
, y compris le temps d'envoi et de réception des données. Par exemple, prenons la chronologie suivante :
La durée observée est calculée comme suit :
Durée observée = tsend + t1 + tsend-done + t2 + trecv + t3 + trecv-done
Occurrences
Nombre de fois qu'un collectif est lancé et terminé pendant la durée d'un profil. Un collectif est lancé lorsqu'une opération send
se produit et se termine lorsqu'une opération recv-end
correspondante se produit. L'opération send
et l'opération recv-done
correspondante doivent avoir lieu pendant la durée d'un profil pour être incluses dans cette métrique.
Temps d'arrêt total agrégé
Durée totale pendant laquelle un collectif bloque un TPU pendant la durée d'un profil. Le temps d'arrêt total de l'agrégation est calculé comme suit :
Temps d'arrêt total agrégé = durée de l'arrêt * nombre d'occurrences
Taille des données transmises
Quantité de données transmises sur le réseau pour le collectif pendant la durée du profil.
Bande passante requise
Bande passante requise pour transmettre les données dans la marge de tolérance fournie. Vous pouvez utiliser cette métrique pour afficher le nombre de collectifs en concurrence pour la bande passante du réseau pendant la durée du profil. La bande passante requise est calculée comme suit :
Bande passante requise = taille des données transmises / temps de latence
État de l'outil
Le tableau suivant indique la version de TensorFlow ou du runtime TPU requise pour chaque métrique affichée dans l'outil "Statistiques collectives DCN".
Statistiques globales du DCN | Version TensorFlow compatible de la version d'exécution TPU |
---|---|
Temps de marge | TensorFlow 2.15.0, TensorBoard 2.15.1 et tensorboard-plugin-profile 2.15.0 |
Durée de l'arrêt | TensorFlow 2.15.0, TensorBoard 2.15.1 et tensorboard-plugin-profile 2.15.0 |
Durée observée | TensorFlow 2.15.0, TensorBoard 2.15.1 et tensorboard-plugin-profile 2.15.0 |
Occurrences | TensorFlow 2.15.0, TensorBoard 2.15.1 et tensorboard-plugin-profile 2.15.0 |
Temps d'arrêt total agrégé | tf-nightly, tb-nightly, tbp-nightly |
Taille des données transmises | tf-nightly, tb-nightly, tbp-nightly |
Bande passante requise | tf-nightly, tb-nightly, tbp-nightly |
Analyser l'outil de statistiques collectives DCN
Exécutez le serveur TensorBoard et accédez à l'onglet Profil.
Dans l'outil de statistiques collectives DCN, triez le tableau par Total agrégé des temps d'arrêt dans l'ordre décroissant.
Identifiez le nom collectif DCN qui présente le nombre total de calages agrégés le plus élevé. Si la durée d'arrêt agrégée de ce collectif est nettement plus élevée que celle des autres, cela peut indiquer un goulot d'étranglement dans le collectif DCN.
Multipliez la bande passante requise du collectif DCN par le nombre de cœurs. Un hôte TPU v4 comporte huit cœurs. La bande passante requise pour un collectif est donc huit fois supérieure à la valeur affichée. Si la bande passante requise est supérieure à la bande passante réseau maximale du TPU, cela peut signifier que le réseau est encombré. Pour réduire la bande passante requise, essayez de modifier le mécanisme de partitionnement que vous utilisez. Pour en savoir plus sur les mécanismes de partitionnement, consultez la Présentation de Cloud TPU Multislice.
Générez un dump HLO pour déterminer si des problèmes de compilation existent. Il est préférable de distribuer les opérations
send
etrecv-done
pour un collectif afin de permettre la planification de davantage d'opérations HLO qui se chevauchent. Le chevauchement d'un plus grand nombre d'opérations HLO réduit le temps d'arrêt du TPU.Vérifiez la durée des opérations
recv-done
dans le Trace Viewer pour le collectif DCN qui présente le temps d'arrêt total agrégé maximal. Si la durée du transfert est élevée, il peut y avoir un goulot d'étranglement de la bande passante, car les opérationsrecv-done
sont généralement bloquées sur le réseau pour obtenir les données.Si la durée des opérations
recv-done
n'est pas trop élevée par rapport au temps de latence, cela peut indiquer un problème matériel.