Modell auf Cloud TPU-VMs profilieren

Mithilfe von Profiling können Sie die Trainingsleistung Ihres Modells auf Cloud TPUs optimieren. Sie verwenden TensorBoard und den Cloud TPU TensorBoard-Plug-in zum Erstellen von Profilen für Ihr Modell.

Weitere Informationen zur Verwendung von TensorBoard mit einem der unterstützten Frameworks finden Sie in den folgenden Dokumenten:

Voraussetzungen für die Profilerstellung für ein Trainingsskript

Bevor Sie die TPU-Tools zur Profilerstellung verwenden können, müssen Sie Folgendes tun:

  1. Modelltraining starten

    1. v4-8 TPU einrichten um ein Modell zu trainieren. Für das in diesem Dokument beschriebene Verfahren wird ein ResNet-Modell verwendet. Sie können aber auch ein anderes Modell verwenden, sofern es auf einer v4 TPU trainiert wird.
    2. Fügen Sie in Ihrer TPU-VM dem Trainingsskript eine Zeile hinzu, um den Profilerstellungs-Server zu starten.

      Für das ResNet-Training befindet sich das Trainingsskript unter /usr/share/tpu/tensorflow/resnet50_keras/resnet50.py.

      Fügen Sie die markierten Zeilen in resnet50.py ein. Fügen Sie oben in der Datei den folgenden Import hinzu:

      import tensorflow.compat.v2 as tf2
      

      Fügen Sie direkt vor Beginn der Trainingsschleife den Parameter hervorgehobene Zeile:

      if name == 'main':
       tf.logging.set_verbosity(tf.logging.INFO)
       tf2.profiler.experimental.server.start(6000)
       app.run(main)
      

      Der TensorFlow-Profiler-Server startet auf Ihrer TPU-VM, wenn Sie führen Sie das Skript aus.

    3. Starten Sie das Modelltraining.

      Führen Sie das Trainingsskript aus und warten Sie, bis die Ausgabe Ihr Modell aktiv trainiert. Die Ausgabe hängt von Ihrem Code und Modell ab. Suchen Sie nach Ausgaben wie Epoch 1/100. Alternativ können Sie die Cloud TPU-Seite aufrufen in der Google Cloud Console Ihren TPU und rufen Sie das CPU-Auslastungsdiagramm auf. Im Diagramm zur CPU-Auslastung wird zwar keine TPU-Auslastung angezeigt, es ist aber ein guter Hinweis darauf, dass die TPU Ihr Modell trainiert.

Modelltraining profilieren

Öffnen Sie während des Trainings ein separates Terminalfenster oder eine Cloud Shell. Führen Sie die folgenden Schritte aus, um mit dem Profiling der Modellschulung zu beginnen.

  1. Stellen Sie im neuen Fenster oder in der neuen Shell über die Portweiterleitung eine Verbindung zu Ihrer TPU-VM her.

    gcloud compute tpus tpu-vm ssh your-vm --zone=us-central2-b --ssh-flag="-4 -L 9001:localhost:9001"

    Über die Portweiterleitung kann Ihr lokaler Browser mit dem TensorBoard-Server kommunizieren, der auf Ihrer TPU-VM ausgeführt wird.

  2. Installieren Sie TensorFlow-Anforderungen.

    Auf Ihrer TPU-VM ist TensorBoard standardmäßig installiert. Ich können Sie TensorFlow auch manuell installieren. In beiden Fällen sind möglicherweise zusätzliche Abhängigkeiten erforderlich. Installieren Sie diese Abhängigkeiten auf Ihrer TPU-VM, indem Sie Folgendes ausführen:

    pip3 install -r /usr/share/tpu/models/official/requirements.txt
  3. Installieren Sie das Cloud TPU TensorBoard-Plug-in.

    Führen Sie auf der TPU-VM die folgenden Befehle aus:

     pip3 install --upgrade "cloud-tpu-profiler>=2.3.0"
     pip3 install tensorflow
     pip3 install tensorboard_plugin_profile
  4. TensorBoard-Server starten

    TensorBoard ausführen und ein Logverzeichnis erstellen (logdir) auf der TPU-VM, auf der TensorBoard Profildaten schreiben kann. Geben Sie das Protokollverzeichnis mit dem Flag --logdir an. Beispiel:

    mkdir log-directory
    TPU_LOAD_LIBRARY=0 tensorboard --logdir log-directory --port 9001

TensorBoard startet einen Webserver und zeigt dessen URL an:

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

Öffnen Sie einen Webbrowser und rufen Sie die in der TensorBoard-Ausgabe angezeigte URL auf. Wählen Sie oben rechts auf der TensorBoard-Seite im Drop-down-Menü Profil aus. Die Liste der verfügbaren Profiling-Tools wird im Drop-down-Menü Tools in der linken Seitenleiste angezeigt.

Image

Profil auf TPU-VMs erstellen

  1. Wählen Sie die Schaltfläche CAPTURE PROFILE aus.
  2. Wählen Sie das Optionsfeld IP-Adresse aus.
  3. Geben Sie HOSTNAME:6000 in das Feld Profile Service URL ein.
  4. Wähle die Schaltfläche Capture (Aufnehmen) aus.

Image

Profildaten mit TensorBoard ansehen

Nachdem Sie ein Profil erfasst haben, zeigt TensorBoard die overview_page an. Die Liste der Profilerstellungstools, die Sie verwenden können, wird im linken Bereich angezeigt.

Image

Profil

Der Tab Profil wird angezeigt, nachdem Sie einige Modelldaten erfasst haben. Möglicherweise müssen Sie auf der TensorBoard-Seite auf die Schaltfläche „Aktualisieren“ klicken. Sobald die Daten verfügbar sind, klicken Sie auf den Tab Profil. stellt eine Auswahl von Tools zur Leistungsanalyse vor. Sie können eines der folgenden Tools verwenden, um Ihr Modell zu profilieren.

Profilübersicht

Die Übersichtsseite (overview_page), die auf der Seite Profil verfügbar ist, enthält eine Top-Level-Ansicht der Leistung Ihres Modells während einer Erfassungsausführung. Die Seite zeigt eine aggregierte Übersicht über alle Ihre TPUs sowie Eingabe-Pipeline-Analyse. Im Drop-down-Menü Host können Sie einzelne TPUs auswählen.

Auf der Seite werden Daten in den folgenden Bereichen angezeigt:

Bild

  • Performance Summary (Leistungsübersicht)

    • FLOPS-Auslastung – Die anteilige Auslastung der TPU-Matrixeinheiten
  • Top 10 der TensorFlow-Vorgänge auf der TPU: Hier sehen Sie die TensorFlow-Vorgänge, die am meisten Zeit in Anspruch genommen haben:

    Jede Zeile zeigt die Eigenzeit eines Vorgangs (als Prozentsatz der Zeit, die alle Vorgänge beansprucht haben), die kumulative Dauer, die Kategorie, den Namen und die erreichte FLOPS-Rate an.

  • Run environment (Umgebung ausführen)

    • Die Anzahl der verwendeten Hosts
    • Der verwendete TPU-Typ
    • Die Anzahl der TPU-Kerne

Input Pipeline Analyzer

Der Input Pipeline Analyzer bietet Einblicke in Ihre Leistungsergebnisse. Das Tool teilt Ihnen sofort mit, ob Ihr Programm eingabegebunden ist und eine geräte- und hostseitige Analyse durchführen, um Fehler in allen Phasen des führt die Pipeline zu Engpässen.

Weitere Informationen zur Optimierung der Pipeline-Leistung finden Sie in den Anleitungen zur Eingabepipeline-Leistung.

Eingabepipeline

Wenn ein TensorFlow-Programm Daten aus einer Datei liest, ist der Lesevorgang in mehrere in Reihe geschaltete Datenverarbeitungsphasen unterteilt. Die Ausgabe einer Phase ist die Eingabe für die nächste. Dieses Lesesystem wird als Eingabepipeline bezeichnet.

Eine typische Pipeline zum Lesen von Datensätzen aus Dateien gliedert sich in folgende Phasen:

  1. Datei lesen
  2. Datei vorverarbeiten (optional)
  3. Dateiübertragung vom Hostcomputer zum Gerät

Eine ineffiziente Eingabe-Pipeline kann Ihre Anwendung stark verlangsamen. Eine Anwendung, die einen erheblichen Teil der Zeit in der Eingabe-Pipeline verbringt, wird als eingabegebunden bezeichnet. Verwenden Sie den Input Pipeline Analyzer, um herauszufinden, wo die Eingabepipeline ineffizient ist.

Eingabepipeline-Dashboard

Sie wählen Profile (Profil) aus und wählen dann im Drop-down-Menü Tools input_pipeline_analyzer aus, um den Input Pipeline Analyzer zu öffnen.

Das Dashboard enthält Details zur geräteseitigen und hostseitigen Analyse.

Geräteseitige Analyse: Zeigt Details zu den Schrittzeiten des Geräts an.

  • Statistiken zur Geräteschrittzeit
  • % der Geräteschrittzeit mit Warten auf Eingabedaten

Hostseitige Analyse

In diesem Abschnitt werden die Details der hostseitigen Analyse in mehrere Kategorien unterteilt:

  • An Gerät zu übertragende Daten in Warteschlange stellen. Zeit, die aufgewendet wird, um die Daten in eine Einspeisewarteschlange zu stellen, bevor sie an das Gerät übertragen werden.
  • Datenvorverarbeitung: Zeit, die für Vorverarbeitungsvorgänge wie Bilder aufgewendet wird Dekomprimierung.
  • Daten vorab aus Dateien lesen: Zeit, die für das Lesen von Dateien aufgewendet wird, einschließlich Caching, Prefetching und Verschränkung.
  • Daten bei Bedarf aus Dateien lesen Zeitaufwand für das Lesen ohne Caching, Prefetching und Verschränkung aus Dateien.
  • Andere Daten lesen oder verarbeiten Zeitaufwand für andere eingabebezogene Vorgänge ohne tf.data.

Image

Wenn Sie die Statistik von einzelnen Eingabevorgängen und ihrer Kategorien nach Ausführungszeit aufgeschlüsselt sehen möchten, maximieren Sie den Bereich Show Input Op statistics.

Es wird eine Quelldatentabelle wie die folgende angezeigt:

Bild

Jeder Tabelleneintrag enthält folgende Informationen:

  1. Input Op (Eingabevorgang): Zeigt den TensorFlow-Vorgangsnamen des Eingabevorgangs an.
  2. Anzahl: Zeigt die Gesamtzahl der ausgeführten Vorgänge des Vorgangs an. während der Profilerstellung.
  3. Gesamtzeit (in ms): Zeigt die kumulative Summe der für jede die Vorgangsinstanzen.
  4. Gesamtzeit in %: Zeigt die für einen Vorgang aufgewendete Gesamtzeit als Anteil von die Gesamtzeit, die für die Eingabeverarbeitung aufgewendet wurde.
  5. Gesamte Eigenzeit (in ms): Die Gesamtzeit aller Instanzen der Funktion. Die Eigenzeit misst hier die Zeit, die im Funktionsblock aufgewendet wurde, abzüglich der Zeit, die für eine aufgerufene Funktion benötigt wurde. Beispiel: Die Funktion Iterator::PaddedBatch::Filter::ForeverRepeat::Map wird von Iterator::PaddedBatch::Filter aufgerufen, daher wird ihre gesamte Eigenzeit von der gesamten Eigenzeit der letzteren Funktion abgezogen.
  6. Gesamte Eigenzeit %: Gibt die gesamte Eigenzeit als Anteil der Gesamtzeit an, die für die Eingabeverarbeitung aufgewendet wurde.
  7. Kategorie: Die Verarbeitungskategorie des Eingabevorgangs.

Op Profile

Op Profile ist ein Cloud TPU-Tool zur Anzeige der Leistungsstatistiken von XLA-Vorgängen, die während der Dauer der Profilerstellung ausgeführt wurden. Das Vorgangsprofil zeigt Folgendes an:

  • Wie gut Ihre Anwendung die Cloud TPU verwendet als Prozentsatz der Zeit, die für Vorgänge nach Kategorie und TPU-FLOPS-Auslastung aufgewendet wird
  • Vorgänge, die am zeitaufwendigsten waren. Diese Vorgänge sind potenzielle Ziele für die Optimierung.
  • Details zu einzelnen Vorgängen, einschließlich Form, Auffüllung und Ausdrücken, die den Vorgang verwenden.

Sie können Op Profile verwenden, um Ziele für die Optimierung zu finden. So können Sie zum Beispiel Verwenden Sie das Vorgangsprofil, um zu ermitteln, welche XLA-Vorgänge am längsten dauern, ausgeführt wird und wie viele TPU-FLOPS sie verbrauchen.

Op Profile verwenden

Das Op Profile-Tool enthält Leistungsstatistiken von XLA-Vorgängen. Sie können Op Profile-Daten in TensorBoard über den Tab Profil oben auf dem Bildschirm und wählen Sie dann im Menü Tools die Option op_profile aus. aus. Sie sehen eine Anzeige wie diese:

Image

  1. Übersichtsbereich: Zeigt die Cloud TPU-Auslastung an und stellt Optimierungsvorschläge bereit.
  2. Steuerfeld Enthält Steuerelemente, mit denen Sie die Anzahl der Vorgänge, die in der Tabelle angezeigt werden, welche Vorgänge angezeigt werden und wie sortiert werden.
  3. Vorgangstabelle: Listet die wichtigsten TensorFlow-Vorgangskategorien auf, die mit den XLA-Vorgängen verknüpft sind. Diese Vorgänge werden nach Prozentsatz der Cloud TPU-Nutzung sortiert.
  4. Karten mit Vorgangsdetails Zeigt Details zu den Vorgängen an die angezeigt werden, wenn Sie auf einen Vorgang in der Tabelle zeigen. Dazu gehören die FLOPS-Auslastung, der Ausdruck, in dem der Vorgang verwendet wird, und das Vorgangslayout (Passform).

XLA-Vorgangstabelle

In der Vorgangstabelle werden XLA-Vorgangskategorien in der Reihenfolge vom höchsten zum niedrigsten Prozentsatz der Cloud TPU-Nutzung aufgelistet. Die Tabelle zeigt die der benötigten Zeit, den Namen der Vorgangskategorie, zugehöriger TensorFlow-Vorgang und den Prozentsatz der FLOPS-Auslastung für die Kategorie. Wenn Sie in der Tabelle auf das Dreieck neben dem Kategorienamen klicken, können Sie die zehn zeitaufwendigsten XLA-Vorgänge für eine Kategorie aufrufen oder ausblenden.

Image

  1. Zeit: Gibt die Gesamtzeit in Prozent an, die von allen Operationen in dieser Kategorie. Sie können auf einen Eintrag klicken, um ihn zu maximieren und die Aufschlüsselung der beanspruchten Zeit nach den einzelnen Vorgängen anzuzeigen.
  2. Top 10 Vorgänge: Mit dem Schalter neben dem Namen einer Kategorie können Sie die zehn wichtigsten zeitaufwendigen Vorgänge in der Kategorie ein- oder ausblenden. Wenn ein Fusionsvorgangseintrag in der Vorgangsliste angezeigt wird, können Sie ihn erweitern, um die darin enthaltenen nicht fusionierten, elementweisen Vorgänge anzuzeigen.
  3. TensorFlow-Vorgang: Enthält den Namen des TensorFlow-Vorgangs, der zum XLA-Vorgang gehört.
  4. FLOPS: Zeigt die FLOPS-Auslastung an. Sie ist die gemessene Anzahl von FLOPS, ausgedrückt als Prozentsatz der FLOPS-Spitzenwerte von Cloud TPU. Je höher der Prozentsatz der FLOPS-Auslastung ist, desto schneller werden die Vorgänge ausgeführt. Die Tabellenzelle ist farbcodiert: grün steht für hohe FLOPS-Auslastung (gut) und rot für niedrige FLOPS-Auslastung (schlecht).

Karten mit Vorgangsdetails

Wenn Sie einen Tabelleneintrag auswählen, wird eine Karte mit Details zum XLA-Vorgang oder zur Vorgangskategorie. Eine typische Karte sieht so aus:

Image

  • Name und Kategorie: Zeigt den hervorgehobenen XLA-Vorgangsnamen und die entsprechende Kategorie an.
  • FLOPS-Auslastung: Zeigt die FLOPS-Auslastung als Prozentsatz der Gesamtmenge an. FLOPS möglich.
  • Ausdruck: Zeigt die XLA-Datei an Ausdruck der den Vorgang enthält.
  • Memory Utilization (Speicherauslastung): Zeigt den Anteil der maximalen Speicherauslastung durch Ihr Programm an.
  • Layout (nur Faltungsvorgänge) Zeigt die Form und das Layout eines Tensors, einschließlich Eine Beschreibung des vom XLA-Compiler ausgeführten Paddings.

Ergebnisse interpretieren

Bei Faltungsvorgängen kann eine niedrige TPU-FLOPS-Auslastung durch aus zwei Gründen:

  • Auffüllung (Matrixeinheiten werden teilweise verwendet)
  • Faltungsvorgang ist speichergebunden

In diesem Abschnitt werden einige Leistungsmesswerte aus einem Modell mit niedriger FLOP-Auslastung erläutert. In diesem Beispiel dominierten die Ausgabefusion und die Faltung die Ausführungszeit. Es gab viele Vektor- oder Skalarvorgänge mit niedriger FLOPS-Auslastung.

Eine Optimierungsstrategie für diesen Profiltyp besteht darin, die Vektor- oder Skalarvorgänge in Faltungsvorgänge umzuwandeln.

Im folgenden Beispiel zeigt %convolution.399 eine niedrigere FLOPS- und Speicherauslastung als %convolution.340 im vorherigen Beispiel.

Image

In diesem Beispiel wird die Batchgröße auf 128 aufgefüllt und Feature-Größe wird auf 8 aufgefüllt. In diesem Fall sind nur 5% der Matrix Einheiten effektiv eingesetzt werden. Die Auslastung wird so berechnet: ((batch_time * num_of_features) / Padding_size ) / Anzahl_der_Kerne. Vergleichen Sie die FLOPS in diesem Beispiel mit der %convolution.340 im vorherigen Beispiel. Beispiel ohne Abstand.

Trace Viewer

Trace Viewer ist ein Cloud TPU-Tool zur Leistungsanalyse, das auf der Seite Profil verfügbar ist. Das Tool verwendet den Chrome Trace Event Profiling Viewer, weshalb es nur im Chrome-Browser funktioniert.

Trace Viewer enthält eine Zeitachse mit folgenden Informationen:

  • Dauer für die Vorgänge, die von Ihrem TensorFlow-Modell ausgeführt wurden modellieren.
  • Teil des Systems (TPU oder Hostcomputer), in dem ein Vorgang ausgeführt wurde. In der Regel führt der Hostcomputer Einspeisvorgänge aus, bei denen die Vorverarbeitung die Trainingsdaten an die TPU übertragen, während die TPU die für das tatsächliche Modelltraining.

Trace Viewer ermöglicht es Ihnen, Leistungsprobleme in Ihrem Modell zu identifizieren und Maßnahmen zu deren Lösung zu ergreifen. Beispielsweise können Sie der Übersicht entnehmen, ob die Einspeisung oder das Modelltraining die meiste Zeit beansprucht. Eine Aufschlüsselung lässt dann erkennen, welche TensorFlow-Vorgänge die längste Ausführungszeit haben.

Trace Viewer ist auf 1 Million Ereignisse pro Cloud TPU beschränkt. Wenn Wenn Sie weitere Ereignisse bewerten möchten, verwenden Sie den Streaming Trace Viewer. .

Trace Viewer-Oberfläche

Gehen Sie zum Öffnen von Trace Viewer zu TensorBoard, klicken Sie oben auf dem Bildschirm auf den Tab Profil und wählen Sie trace_viewer aus dem Drop-down-Menü Tools aus. Der Viewer zeigt Ihren letzten Durchlauf an:

Image

Dieser Bildschirm enthält hauptsächlich folgende Elemente (im vorherigen Screenshot mit Zahlen gekennzeichnet):

  1. Drop-down-Menü „Ausführungen“: Enthält alle Ausführungen, die Sie die Trace-Informationen erfasst. Die Standardansicht ist Ihr letzter Durchlauf. Sie können die Drop-down-Liste jedoch öffnen, um einen anderen Durchlauf auszuwählen.
  2. Drop-down-Menü "Tools": Wählt verschiedene Tools zur Profilerstellung aus.
  3. Drop-down-Liste „Host“: Wählt einen Host aus, der einen Cloud TPU-Satz enthält.
  4. Zeitachse: Zeigt Vorgänge an, die Cloud TPU und der Hostcomputer im Laufe der Zeit ausgeführt haben.
  5. Detailbereich mit zusätzlichen Informationen zu Vorgängen im Bereich „Zeitachse“ ausgewählt ist.

Eine genauere Ansicht des Zeitachsenbereichs:

Bild

Der Zeitachsenbereich setzt sich aus folgenden Elementen zusammen:

  1. Obere Leiste: Enthält verschiedene zusätzliche Steuerelemente.
  2. Zeitachse: Zeigt die Zeit in Relation zum Trace-Anfang.
  3. Abschnitts- und Titellabels: Jeder Abschnitt enthält mehrere Tracks und ein Dreieck auf der linken Seite, auf das Sie klicken können, um den Abschnitt zu maximieren bzw. zu minimieren. Jedes Verarbeitungselement im System ist durch einen Abschnitt vertreten.
  4. Toolauswahl Enthält verschiedene Tools für die Interaktion mit der Trace Viewer.
  5. Ereignisse: Hier sehen Sie die Ausführungszeiten von Vorgängen oder die Dauer von Metaereignissen wie Trainingsschritten.
  6. Vertikale Tableiste: Diese Leiste hat für Cloud TPU keinen zweckdienlichen Zweck. Die Leiste ist Teil des Chrome-Trace-Viewers das für verschiedene Aufgaben zur Leistungsanalyse verwendet wird.

Abschnitte und Tracks

Trace Viewer enthält folgende Abschnitte:

  • Ein Abschnitt für jeden TPU-Knoten, der mit der Nummer des TPU-Chips und des TPU-Kerns innerhalb des Chips beschriftet ist (z. B. „Chip 2: TPU-Kern 1“). Jeder TPU-Knotenabschnitt enthält folgende Tracks:
    • Schritt: Zeigt die Dauer der Trainingsschritte an, die auf der TPU ausgeführt wurden.
    • TensorFlow Ops Zeigt TensorFlow-Vorgänge an, die auf der TPU ausgeführt werden.
    • XLA-Vorgänge: Zeigt XLA-Vorgänge an, die auf der TPU ausgeführt wurden. (Jeder Vorgang wird übersetzt in einen oder mehrere XLA-Vorgänge integriert. Der XLA-Compiler übersetzt die XLA-Vorgänge in Code, der auf der TPU ausgeführt wird.
  • Ein Abschnitt für Threads, die auf der Host-CPU ausgeführt werden, mit der Bezeichnung „Host Threads“. Dieser Abschnitt enthält einen Track für jeden CPU-Thread. Hinweis: Sie können die neben den Abschnittslabels angezeigten Informationen ignorieren.

Toolauswahl für die Zeitachse

Sie können über die Toolauswahl für die Zeitachse in TensorBoard mit der Zeitachsenansicht interagieren. Klicken Sie auf ein Zeitachsentool, um es zu aktivieren und hervorzuheben. Sie können die Toolauswahl für die Zeitachse verschieben, wenn Sie oben in den gepunkteten Bereich klicken und die Auswahl an die gewünschte Stelle ziehen.

So verwenden Sie die Zeitachsentools:

Auswahl-Tool
Sie können auf ein Ereignis klicken, um es auszuwählen, oder durch Ziehen mehrere Ereignisse auswählen. Im Detailbereich werden daraufhin zusätzliche Informationen (Name, Startzeit und Dauer) zu den ausgewählten Ereignissen angezeigt.

Verschieben-Tool
Klicken und ziehen Sie, um die Zeitachsenansicht horizontal und vertikal zu verschieben.

Zoom-Tool
Klicken und ziehen Sie nach oben, um die horizontale Zeitachse heranzuzoomen, oder klicken und ziehen Sie nach unten, um herauszuzoomen. Die horizontale Position des Mauszeigers bestimmt den Mittelpunkt, um den herum gezoomt wird.

Hinweis:Wenn das Zoom-Tool aktiv bleibt, nachdem Sie die klicken Sie auf die Zeitachse, um das Zoom-Tool zu deaktivieren.

Zeitintervall-Tool
Klicken und ziehen Sie horizontal, um ein Zeitintervall zu markieren. Die Länge des Intervalls wird auf der Zeitachse angezeigt. Wenn Sie das Intervall anpassen möchten, ziehen Sie seine Enden. Zum Löschen des Intervalls klicken Sie auf eine beliebige Stelle in der Zeitachsenansicht.

Wenn Sie ein anderes Tool auswählen, bleibt das Intervall markiert.

Memory Viewer

Mit dem Memory Viewer können Sie die Trends der Spitzen- und Arbeitsspeichernutzung visualisieren für Ihr Programm.

Die Benutzeroberfläche des Memory Viewer sieht so aus:

Image

  1. Drop-down-Menü Host: Hier können Sie einen TPU-Host und XLA-HLO-Module (High Level Optimizer) auswählen, die visualisiert werden sollen.
  2. Arbeitsspeicherübersicht: Zeigt die maximale Arbeitsspeicherzuweisung und -größe ohne Auffüllung an.
  3. Arbeitsspeicherdiagramm: Zeigt die maximale Speicherauslastung und ein Diagramm der Speichernutzungstrends für Ihr Programm an. Auf einen Zwischenspeicher in einem Zwischenspeicher verweisen um zusätzliche Informationen auf der Pufferzuordnungskarte anzuzeigen.
  4. Zwischenspeicherdiagramme: Zwei Diagramme, die die Zwischenspeicherzuordnung bei maximaler Speicherauslastung anzeigen. Bewegen Sie den Mauszeiger auf einen Zwischenspeicher in einem der Zwischenspeicherdiagramme, um auf der Karte mit Zwischenspeicherdetails weitere Informationen zu sehen.
  5. Detailkarte zur Zwischenspeicherzuordnung: Zeigt Zuordnungsdetails für einen Zwischenspeicher an.

Speicherübersichtsbereich

Im Speicherübersichtsbereich werden der Modulname und die maximale Speicherzuordnung angezeigt, wenn die Gesamtgröße der Zwischenspeicherzuweisung das Maximum erreicht. Die nicht aufgefüllte Spitzenzuweisungsgröße wird ebenfalls zum Vergleich angezeigt.

Bild

Arbeitsspeicherdiagramm

In diesem Diagramm werden die maximale Speicherauslastung und ein Diagramm der Trends zur Speichernutzung für Ihr Programm angezeigt. Die vertikale Linie zeigt die maximale Arbeitsspeicherauslastung für das Programm an. Dieses Diagramm zeigt, ob Ihr Programm in den verfügbaren globalen Speicherbereich passt.

Image

Jeder Punkt im Diagramm repräsentiert einen „Programmpunkt“ im XLA-HLO-Programm. Die Linie zeigt, wie sich die Arbeitsspeichernutzung Ihres Programms im Laufe der Zeit ändert.

Interaktion mit Zwischenspeicherdiagrammelementen

Wenn Sie in Abuffer-Diagrammen auf einen Zwischenspeicher zeigen, im Diagramm „Arbeitsspeicher“ mit der Lebensdauer des Zwischenspeichers.

Image

Die Dicke der horizontalen Linie gibt die relative Größe des Zwischenspeichers zur maximalen Speicherzuordnung an. Die Länge der Linie gibt die Lebensdauer des Zwischenspeichers an.

Zwischenspeicherdiagramme

Zwei Diagramme zeigen die Aufschlüsselung der Arbeitsspeichernutzung bei Spitzenauslastung.

Image

  • By Program Order (Nach Programmreihenfolge) Zeigt die Puffer von links nach rechts in der angegebenen Reihenfolge an. die sie während der Programmausführung aktiv waren.

  • Nach Größe: Zeigt die Zwischenspeicher an, die während der Programmausführung aktiv waren. und zwar in absteigender Größe.

Detailkarte zur Zwischenspeicherzuordnung

Wenn Sie den Mauszeiger auf einen Zwischenspeicher bewegen, wird die Karte mit den Zuweisungsdetails angezeigt. Eine typische Karte sieht so aus:

Image

  1. Name: Name des XLA-Vorgangs.
  2. Kategorie: Die Vorgangskategorie.
  3. Größe: die Größe der Zwischenspeicherzuordnung (einschließlich Auffüllung).
  4. Größe ohne Auffüllung: Die Größe der Zwischenspeicherzuordnung ohne Auffüllung.
  5. Ausweitung: Die relative Größe des Puffers mit Auffüllung im Vergleich zur Größe ohne Auffüllung.
  6. Zusätzlicher Arbeitsspeicher: Gibt an, wie viel zusätzlicher Arbeitsspeicher für die Auffüllung verwendet wird.
  7. Form: Beschreibt Rang, Größe und Datentyp der n-dimensionalen Darstellung. Array.
  8. TensorFlow-Vorgangsname: Der Name des TensorFlow-Vorgangs, der mit der Zwischenspeicherzuordnung verknüpft ist.
  9. Allocation type (Zuordnungstyp): Gibt die Zwischenspeicherzuordnungskategorie an: Parameter, Ausgabe, Thread lokal und temporär (z. B. Zwischenspeicher) Zuordnung innerhalb einer Fusion).

Unzureichender Speicherplatz

Wenn Sie ein Modell ausführen und der Fehler „out of memory“ (Nicht genug Arbeitsspeicher) angezeigt wird, verwenden Sie die Richtlinien in diesem Dokument, um ein Profil zu erfassen. Warten Sie, bis Ihr Script das Modell trainiert, bevor Sie den Profiler starten. Anhand der Profilerstellung können Sie nachvollziehen, hat den Fehler verursacht.