HLO Op Stats Tool

Mit HLO Op Stats können Sie die Leistungsstatistiken von HLO-Vorgängen (High Level Optimizer) aufrufen, die während einer Profilerstellung ausgeführt wurden. Mit diesem Tool können Sie potenzielle Ziele für die Leistungsoptimierung ermitteln, da die zeitaufwendigsten Vorgänge in Ihrem HLO-Graphen während des profilierten Zeitraums hervorgehoben werden.

Unterstützte Plattformen

TPU: Unterstützt

GPU: Unterstützt

Bei GPUs haben HLO-Vorgänge eine N:M-Beziehung zu den Kernen, die tatsächlich ausgeführt werden. Statistiken auf Kernelebene finden Sie im Tool „GPU-Kernel-Statistiken“.

Komponenten des HLO Op Stats-Tools

Das HLO Op Stats-Tool besteht aus den folgenden Hauptkomponenten:

  • Tabelle mit HLO-Vorgangsstatistiken: Dies ist die Hauptkomponente, die eine detaillierte Aufschlüsselung aller HLO-Vorgänge enthält, die während der Profiling-Sitzung ausgeführt wurden. Für jeden einzelnen HLO-Vorgang gibt es eine Zeile und Spalten mit verschiedenen Details zu diesem Vorgang.
    • Über ein Drop-down-Menü können Sie festlegen, welche Spalten für jede HLO-Operation visualisiert werden sollen.
    • Über ein zweites Drop-down-Menü können Sie Zeilen auch nach HLO-Op-Kategorie filtern.
    • Über die Suchfelder können Sie nach bestimmten Programm-IDs, HLO-Vorgängen, dem Text des HLO-Vorgangs oder dem Namen des Framework-Vorgangs filtern. Die Filter werden für den angegebenen String ausgewählt, der sich überall in der jeweiligen Spalte befindet.
  • Abschnitt „Zusammenfassende Diagramme“: Dieser Abschnitt enthält Diagramme, in denen die detaillierte Tabelle pro Vorgang auf folgende Weise zusammengefasst wird:
    • Ein Kreisdiagramm, das den Zeitanteil verschiedener Kategorien von HLO-Vorgängen zeigt.
    • Ein Kreisdiagramm, das den Zeitanteil verschiedener einzelner HLO-Vorgänge zeigt (auf die N wichtigsten Vorgänge gekürzt, die übrigen werden zur besseren Lesbarkeit als „Sonstiges“ klassifiziert).
    • Ein Kreisdiagramm, das den Anteil der Gesamtzeit an Operationen zeigt, die Teil der Rematerialisierung sind. XProf erhält diese Informationen aus den Compilermetadaten, die mit dem Profil verknüpft sind.
    • Ein Kreisdiagramm mit HLO-Betriebskategorien, auf die die Rematerialisierungszeit (falls vorhanden) entfällt.
    • Zeit für externe Kompilierung: Die externe Kompilierung ist eine TensorFlow-Funktion, mit der bestimmte Vorgänge innerhalb einer XLA-Berechnung transparent auf der Host-CPU und nicht auf dem Beschleuniger ausgeführt werden können (z.B. tf.summary oder tf.print, die einen I/O-Zugriff erfordern, den das Gerät nicht hat).
    • Ein Diagramm mit den GFLOPS/s für alle HLO-Vorgänge, sortiert nach der Gesamtzeit.
    • Nur für TPUs: Zeit pro HLO nach Replikationsgruppe: In einem Drop-down-Menü können Sie die verschiedenen kollektiven Vorgänge auswählen, die während der Profilierungssitzung ausgeführt wurden. Es kann sein, dass verschiedene Instanzen dieser kollektiven Operation in verschiedenen Replikagruppen ausgeführt wurden (z.B. AllGather); ein Kreisdiagramm zeigt die Zeitverteilung zwischen diesen verschiedenen Instanzen.

Details zur Tabelle „HLO-Vorgangsstatistiken“

Sie können auf eine beliebige Spaltenüberschrift klicken, um die Tabelle mit den HLO-Vorgangsstatistiken zu sortieren. Die Standardreihenfolge basiert auf der Gesamtzeit der Operation (in der Tabelle als „Rang“ bezeichnet).

Die Tabelle enthält für jeden HLO-Vorgang die folgenden Informationen:

  • Vorgangsname: Der eindeutige Name, der dem HLO-Vorgang vom XLA-Compiler zugewiesen wird.
  • Programm-ID: Eine Kennung für das HLO-Modul, dem diese Operation zugewiesen ist.
  • HLO-Betriebskategorie: Diese werden weitgehend vom XLA-Compiler definiert. XProf verwendet zusätzlich Heuristiken, um bestimmte Vorgänge zu identifizieren und zu kategorisieren (z. B. Konvolutionsfusionen).
  • HLO-Op-Text: Wird vom XLA-Compiler bereitgestellt und enthält Details wie die Typen und Formen von Eingaben/Parametern.
  • Name des Framework-Vorgangs: Der Vorgang auf Framework-Ebene (z.B. JAX), die zur Generierung dieser HLO-Operation geführt haben.
  • Vorkommen: Die Gesamtzahl der Ausführungen dieses bestimmten HLO-Vorgangs während des Profilerstellungszeitraums.
  • Gesamtzeit (μs): Die kumulierte Zeit, die für die Ausführung dieses Vorgangs bei allen Vorkommen aufgewendet wurde. Wenn dieser Vorgang untergeordnete Vorgänge hat (z.B. innerhalb einer Fusion), umfasst diese Zeit auch die Zeit, die in diesen untergeordneten Vorgängen verbracht wurde.
  • Durchschnittliche Zeit (μs): Die durchschnittliche Zeit pro Ausführung dieses HLO-Vorgangs, einschließlich der Zeit, die für untergeordnete Vorgänge aufgewendet wurde.
  • Eigenzeit insgesamt (μs): Die kumulative Zeit, die ausschließlich im Body dieses HLO-Vorgangs verbracht wurde, ausgenommen die Zeit, die in den untergeordneten Vorgängen verbracht wurde.
  • Durchschnittliche Eigenzeit (μs): Die durchschnittliche Zeit pro Ausführung dieses HLO-Vorgangs, ausgenommen die Zeit, die für die untergeordneten Vorgänge aufgewendet wurde.
  • Gesamte Eigenzeit (%): Die Eigenzeit des Vorgangs als Prozentsatz der Gesamtzeit auf dem Gerät für alle Vorgänge.
  • Kumulative Gesamteigenzeit (%): Eine fortlaufende Summe der Gesamteigenzeit (%) für alle Operatoren, die in der Rangfolge früher erscheinen.
  • DMA-Stall (%): Der Prozentsatz der Gesamtzeit, während der der Vorgang aufgrund von DMA-Vorgängen (Direct Memory Access) angehalten wurde.
  • Bandbreitenverbrauch (Nutzung/Sekunde) für FLOPs, HBM und interne TPU-Speicher, sofern verfügbar (z.B. CMEM ist nur auf TPU v4 verfügbar. Diese werden alle mithilfe der statischen Kostenanalyse des Compilers (Numerator) und der profilierten Ausführungszeit (Nenner) berechnet.
  • Modell-GFLOPS/s: Die GFLOPs-Kosten werden vom XLA-Compiler berechnet und die Zeit wird vom Profil gemessen.
  • Normalisierte GFLOPS/s: Die vom Compiler berechneten FLOPs werden auf Grundlage ihrer numerischen Genauigkeit und der vom Gerät unterstützten Spitzen-FLOPS für unterschiedliche Genauigkeiten normalisiert. TPU v6e unterstützt beispielsweise doppelt so viele Spitzen-FLOPS bei int8 wie bei bf16. XProf normalisiert standardmäßig auf bf16.
  • Arbeitsspeicher-BW: Die Anzahl der Byte/s, die vom Vorgang aus einem beliebigen Arbeitsspeicher verbraucht werden (z.B. On-Chip-TPU-VMEM und HBM). Der XLA-Compiler liefert die Anzahl der „Byte“ und die Dauer wird im Profil gemessen.
  • HBM BW: Die Anzahl der Byte/s, die speziell aus HBM verbraucht werden.
  • Betriebsintensität: Wird als Verhältnis von FLOPS pro Byte berechnet, wie für die Roofline-Analyse definiert.
  • Rechen-/Speicherbeschränkt: Diese Spalte gibt anhand des Roofline-Modells an, ob die Leistung des Vorgangs hauptsächlich durch die Rechenleistung oder die Arbeitsspeicherbandbreite begrenzt wird.
  • Rematerialisierung: Gibt an, ob die Operation Teil einer Rematerialisierung war.
  • Externe Kompilierung: Gibt an, ob die Operation mithilfe der externen Kompilierungsfunktion von TensorFlow auf der Host-CPU ausgeführt wurde.
  • Automatisch optimiert: Gibt an, ob der Vorgang automatisch von XLA optimiert wurde. Weitere Informationen finden Sie unter Autotuning und Autotuning mit dauerhafter Speicherung.