Outil de statistiques sur les opérations HLO

Vous pouvez utiliser les statistiques d'opération HLO pour afficher les statistiques de performances des opérations HLO (High Level Optimizer) exécutées lors d'une session de profilage. Cet outil est utile pour identifier les cibles potentielles d'optimisation des performances en mettant en évidence les opérations les plus chronophages de votre graphique HLO au cours de la période de profilage.

Plates-formes compatibles

TPU: compatible

GPU: compatible

Pour les GPU, les opérations HLO ont une relation N:M avec les noyaux qui sont réellement exécutés. Pour obtenir des statistiques au niveau du kernel, consultez l'outil GPU Kernel Stats.

Composants de l'outil de statistiques sur les opérations HLO

L'outil HLO Op Stats comprend les composants clés suivants:

  • Tableau des statistiques sur les opérations HLO: il s'agit du composant principal, qui présente une répartition détaillée de chaque opération HLO exécutée pendant la session de profilage sous forme de tableau. Il y a une ligne pour chaque opération HLO distincte, et des colonnes qui capturent divers détails concernant cette opération.
    • Un sélecteur déroulant vous permet de choisir les colonnes que vous souhaitez visualiser pour chaque opération HLO.
    • Vous pouvez également filtrer les lignes par catégorie d'opérations HLO via un deuxième sélecteur déroulant.
    • Les zones de recherche vous permettent de filtrer par ID de programme, par opération HLO, par texte de l'opération HLO ou par nom de l'opération du framework. Les filtres sélectionnent la chaîne fournie dans n'importe quelle colonne correspondante.
  • Section "Graphiques récapitulatifs" : cette section contient des graphiques qui résument le tableau détaillé par opération, comme suit :
    • Graphique à secteurs illustrant la fraction de temps consommée par différentes catégories d'opérations HLO.
    • Graphique à secteurs illustrant la fraction de temps consommée par différentes opérations HLO individuelles (tronquées aux N premières opérations, les autres étant classées comme "Autre" pour améliorer la lisibilité).
    • Un graphique circulaire qui indique la fraction du temps total consacré aux opérations qui font partie de la rematérialisation. XProf reçoit ces informations à partir des métadonnées du compilateur associées au profil.
    • Graphique à secteurs illustrant les catégories d'opérations HLO vers lesquelles le temps de rematérialisation (le cas échéant) est dirigé.
    • Temps passé sur la compilation externe: la compilation externe est une fonctionnalité TensorFlow qui permet à certaines opérations d'un calcul XLA de s'exécuter de manière transparente sur le processeur hôte plutôt que sur l'appareil d'accélération (par exemple, tf.summary ou tf.print qui nécessitent un accès en entrée/sortie que l'appareil ne possède pas).
    • Graphique représentant les GFLOPS/s pour toutes les opérations HLO, triées par temps propre total.
    • Pour les TPU uniquement, temps par HLO par groupe de réplicas: un menu déroulant vous permet de choisir parmi les différentes opérations collectives exécutées pendant la session de profilage. Différentes instances de cette opération collective peuvent avoir été exécutées entre différents groupes de réplicas (par exemple, AllGather) ; un graphique en secteurs illustre la répartition du temps entre ces différentes instances.

Détails du tableau des statistiques sur les opérations HLO

Vous pouvez cliquer sur l'un des en-têtes de colonne pour trier le tableau des statistiques sur les opérations HLO. L'ordre par défaut est basé sur le temps d'exécution total de l'opération (étiqueté "rang" dans le tableau).

Le tableau comprend les informations suivantes pour chaque opération HLO:

  • Nom de l'opération: nom unique attribué à l'opération HLO par le compilateur XLA.
  • ID de programme: identifiant du module HLO auquel cette opération est associée
  • Catégorie d'opérations HLO: ces opérations sont largement définies par le compilateur XLA. XProf utilise également des heuristiques pour identifier et catégoriser certaines opérations (par exemple, les fusions de convolutions).
  • Texte d'opération HLO: fourni par le compilateur XLA et incluant des informations telles que les types et les formes des entrées/paramètres.
  • Nom de l'opération du framework: opération au niveau du framework (par exemple, JAX) qui a entraîné la génération de cette opération HLO.
  • Occurrences: nombre total de fois où cette opération HLO spécifique a été exécutée au cours de la période de profilage.
  • Durée totale (μs): temps cumulé passé à exécuter cette opération pour toutes ses occurrences. Si cette opération comporte des opérations enfants (par exemple, dans une fusion), ce temps inclut le temps passé dans ces enfants.
  • Durée moyenne (μs): durée moyenne par exécution de cette opération HLO, y compris le temps passé dans les opérations enfants, le cas échéant.
  • Temps propre total (μs): temps cumulé passé uniquement dans le corps de cette opération HLO, à l'exclusion du temps passé dans ses opérations enfants.
  • Temps propre moyen (μs): temps moyen par exécution de cette opération HLO, à l'exclusion du temps passé dans ses opérations enfants.
  • Temps propre total (%): temps propre de l'opération sous la forme d'un pourcentage du temps total sur l'appareil pour toutes les opérations.
  • Temps propre total cumulé (%): somme cumulée du temps propre total (%) pour toutes les opérations qui apparaissent plus tôt dans l'ordre "rang".
  • Arrêt DMA (%): pourcentage du temps total pendant lequel l'opération a été bloquée en raison d'opérations d'accès direct à la mémoire (DMA).
  • Consommation de bande passante (utilisation/s) pour les FLOP, HBM et mémoires TPU internes, le cas échéant (par exemple, Le CMEM n'est présent que sur les TPU v4.) Ils sont tous calculés à l'aide de l'analyse des coûts statiques du compilateur (numérateur) et du temps d'exécution profilé (dénominateur).
  • GFLOPS/s du modèle: le coût en GFLOP/s est calculé par le compilateur XLA, et le temps est mesuré par le profil.
  • GFLOPS/s normalisés: normalise les FLOP calculés par le compilateur sur une base par opération en fonction de sa précision numérique, ainsi que les FLOP de pointe compatibles avec l'appareil pour différentes précisions. Par exemple, TPU v6e double le nombre de FLOP de pointe en int8 par rapport à bf16. XProf normalise en bf16 par défaut.
  • Bande passante de la mémoire: nombre d'octets/s consommés par l'opération, à partir de n'importe quelle mémoire (par exemple, VMEM et HBM TPU sur puce). Le compilateur XLA fournit le nombre "octets" et la durée est mesurée dans le profil.
  • Bande passante HBM: nombre d'octets/s consommés spécifiquement par la mémoire HBM.
  • Intensité opérationnelle: calculée en tant que rapport FLOPS par octet, comme défini pour l'analyse de la ligne de toit.
  • Limite de calcul/mémoire: basée sur le modèle Roofline, cette colonne indique si les performances de l'opération sont principalement limitées par les capacités de calcul ou la bande passante de la mémoire.
  • Rematérialisation: indique si l'opération faisait partie d'une rematérialisation.
  • Compilation externe: indique si l'opération s'est exécutée sur le processeur hôte à l'aide de la fonctionnalité de compilation externe de TensorFlow.
  • Auto-tuning (réglage automatique) : indique si l'opération a été réglée automatiquement par XLA. Pour en savoir plus, consultez les pages Autoréglage et Autoréglage persistant.