Profil für Ihr Modell auf Cloud TPU-VMs erstellen

Durch die Profilerstellung können Sie die Trainingsleistung Ihres Modells auf Cloud TPUs optimieren. Sie verwenden TensorBoard und das Cloud TPU TensorBoard-Plug-in, um ein Profil für Ihr Modell zu erstellen.

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, müssen Sie Folgendes tun:

  1. Modelltraining starten

    1. Richten Sie eine v4-8 TPU ein, um ein Modell zu trainieren. Bei der in diesem Dokument beschriebenen Profilerstellung 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 der TPU-VM eine Zeile hinzu, um den Profiler-Server im Trainingsskript 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 dem Start der Trainingsschleife die hervorgehobene Zeile hinzu:

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

      Der TensorFlow-Profiler-Server wird auf Ihrer TPU-VM gestartet, wenn Sie das Skript ausführen.

    3. Starten Sie das Modelltraining.

      Führen Sie das Trainingsskript aus und warten Sie, bis die Ausgabe anzeigt, dass Ihr Modell aktiv trainiert wird. 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 in der Google Cloud Console aufrufen, Ihre TPU auswählen und das CPU-Auslastungsdiagramm aufrufen. Auch wenn das CPU-Auslastungsdiagramm keine TPU-Auslastung anzeigt, ist dies ein guter Indikator dafür, dass die TPU Ihr Modell trainiert.

Profilerstellung für Modelltraining starten

Öffnen Sie während des Trainings des Modells ein separates Terminalfenster oder Cloud Shell. Führen Sie die folgenden Schritte aus, um ein Profil für das Modelltraining zu erstellen.

  1. Stellen Sie im neuen Fenster oder in der Shell eine Verbindung zur TPU-VM mit Portweiterleitung her.

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

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

  2. TensorFlow-Anforderungen installieren {: id="install-tensorboard"}.

    Auf Ihrer TPU-VM ist TensorBoard standardmäßig installiert. Sie können TensorFlow auch manuell installieren. In beiden Fällen können zusätzliche Abhängigkeiten erforderlich sein. Installieren Sie diese Abhängigkeiten auf Ihrer TPU-VM. Führen Sie dazu den folgenden Befehl aus:

    pip3 install -r /usr/share/tpu/models/official/requirements.txt
    
  3. Installieren Sie das Cloud TPU TensorBoard-Plug-in {: id="install-plugin"}.

    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

    Führen Sie TensorBoard aus und erstellen Sie ein Logverzeichnis (logdir) auf der TPU-VM, in das TensorBoard Profildaten schreiben kann. Geben Sie das Logverzeichnis 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ü die Option Profile (Profil) aus. Die Liste der verfügbaren Profilerstellungstools wird in der linken Seitenleiste im Drop-down-Menü tools angezeigt.

Image

Profil auf TPU-VMs erstellen

  1. Wähle die Schaltfläche PROFIL ERFASSEN 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 abrufen

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 zum Aktualisieren klicken. Sobald Daten verfügbar sind, wird durch Klicken auf den Tab Profile (Profil) eine Auswahl von Tools angezeigt, die Sie bei der Leistungsanalyse unterstützen. Sie können eines der folgenden Tools verwenden, um ein Profil für Ihr Modell zu erstellen.

Profilübersicht

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

Auf der Seite werden Daten in den folgenden Bereichen angezeigt:

Image

  • Performance Summary (Leistungsübersicht)

    • FLOPS-Auslastung – Die anteilige Auslastung der TPU-Matrixeinheiten
  • Top Ten TensorFlow Operations on TPU: Zeigt die TensorFlow-Vorgänge an, 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 Zeit, 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 führt Sie durch die geräte- und hostseitige Analyse, um jegliche Phase der Pipeline zu beheben, die Engpässe verursacht.

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 Datenverarbeitungsphasen unterteilt, die hintereinander verbunden sind. Die Ausgabe einer Phase ist die Eingabe für die nächste Phase. 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

Wählen Sie zum Öffnen des Input Pipeline Analyzers Profile (Profil) und dann im Drop-down-Menü Tools die Option input_pipeline_analyzer aus.

Im Dashboard werden geräte- und hostseitige Analysedetails angezeigt.

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 Bilddekomprimierung aufgewendet wird.
  • Daten im Voraus aus Dateien lesen Zeitaufwand für das Lesen von Dateien, einschließlich Caching, Prefetching und Verschränkung.
  • Daten bei Bedarf aus Dateien lesen Zeit, die für das Lesen von Daten aus Dateien ohne Caching, Prefetching und Verschränkung aufgewendet wird.
  • Andere Daten lesen oder verarbeiten: Zeit, die für andere eingabebezogene Vorgänge aufgewendet wird, die tf.data nicht verwenden.

Image

Wenn Sie die Statistiken für einzelne Eingabevorgänge und deren Kategorien nach Ausführungszeit aufgeschlüsselt sehen möchten, maximieren Sie den Abschnitt Show Input Op statistics.

Es wird eine Quelldatentabelle wie die folgende angezeigt:

Image

Jeder Tabelleneintrag enthält folgende Informationen:

  1. Eingabevorgang: Zeigt den TensorFlow-Vorgangsnamen des Eingabevorgangs an.
  2. Anzahl: Zeigt die Gesamtzahl der Vorgangsinstanzen an, die während des Profilerstellungszeitraums ausgeführt wurden.
  3. Gesamtzeit (in ms): Zeigt die kumulative Summe der Zeit an, die für jede der Vorgangsinstanzen aufgewendet wurde.
  4. Gesamtzeit %: Zeigt die für einen Vorgang aufgewendete Gesamtzeit als Anteil der Gesamtzeit an, die für die Eingabeverarbeitung aufgewendet wurde.
  5. Gesamte Eigenzeit (in ms): Zeigt die kumulierte Zeit für alle Instanzen der Funktion an. Die Eigenzeit misst die Zeit, die im Funktionstext aufgewendet wurde, abzüglich der Zeit, die für aufgerufene Funktionen benötigt wird. Beispielsweise wird die Iterator::PaddedBatch::Filter::ForeverRepeat::Map von Iterator::PaddedBatch::Filter aufgerufen, daher wird ihre gesamte Eigenzeit von der gesamten Eigenzeit der letzteren ausgeschlossen.
  6. Total Self-time % (Gesamte Eigenzeit %) zeigt die gesamte Eigenzeit als Anteil der Gesamtzeit an, die für die Eingabeverarbeitung aufgewendet wurde.
  7. Kategorie: Zeigt die Verarbeitungskategorie des Eingabevorgangs an.

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 enthält Folgendes:

  • 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. Mit dem Vorgangsprofil können Sie beispielsweise ermitteln, welche XLA-Vorgänge am längsten dauern 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 aufrufen, indem Sie oben auf dem Bildschirm auf den Tab Profil klicken und dann im Drop-down-Menü Tools die Option op_profile auswählen. Sie sehen eine Anzeige wie diese:

Image

  1. Übersichtsabschnitt zeigt die Cloud TPU-Auslastung und bietet Vorschläge für die Optimierung.
  2. Steuerfeld Enthält Steuerelemente, mit denen Sie die Anzahl der in der Tabelle angezeigten Vorgänge sowie die anzuzeigenden und sortierten Vorgänge festlegen können.
  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. Vorgangsdetailkarten: Zeigt Details zu den Vorgängen an, die angezeigt werden, wenn Sie auf einen Vorgang in der Tabelle zeigen. Zu diesen Details gehören die FLOPS-Auslastung, der Ausdruck, in dem der Vorgang verwendet wird, und das Vorgangslayout (Anpassung).

XLA-Vorgangstabelle

In der Vorgangstabelle sind die XLA-Vorgangskategorien vom höchsten zum niedrigsten Prozentsatz der Cloud TPU-Nutzung aufgeführt. Die Tabelle zeigt den Prozentsatz der benötigten Zeit, den Namen der Vorgangskategorie, den zugehörigen TensorFlow-Vorgangsnamen und den Prozentsatz der FLOPS-Auslastung für die Kategorie. Klicken Sie in der Tabelle auf das Dreieck neben dem Kategorienamen, um die zehn zeitaufwendigsten XLA-Vorgänge für eine Kategorie anzuzeigen oder auszublenden.

Image

  1. Zeit: Zeigt die Gesamtzeit in Prozent an, die von allen Vorgängen in dieser Kategorie verbracht wurde. 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-Ten-Vorgänge: Die Ein/Aus-Schaltfläche neben einem Kategorienamen, mit dem die zehn wichtigsten zeitaufwendigen Vorgänge in der Kategorie ein- oder ausgeblendet werden. Wenn in der Liste ein Fusionsvorgang angezeigt wird, können Sie ihn erweitern, um die darin enthaltenen nicht fusionierten, elementweisen Vorgänge zu sehen.
  3. TensorFlow-Vorgang: Zeigt den TensorFlow-Vorgangsnamen an, der dem XLA-Vorgang zugeordnet ist.
  4. FLOPS: Zeigt die FLOPS-Auslastung an. Dabei handelt es sich um die gemessene Anzahl von FLOPS, ausgedrückt als Prozentsatz der maximalen FLOPS der 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 angezeigt. 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 gesamten möglichen FLOPS an.
  • Ausdruck: Zeigt den XLA-Ausdruck an, der den Vorgang enthält.
  • Arbeitsspeicherauslastung: Zeigt die Prozentzahl der Spitzenauslastung des Arbeitsspeichers durch Ihr Programm an.
  • Layout (nur Faltungsvorgänge) Zeigt Form und Layout eines Tensors an, einschließlich einer Beschreibung des vom XLA-Compiler ausgeführten Paddings.

Ergebnisse interpretieren

Bei Faltungsvorgängen kann eine niedrige TPU-FLOPS-Auslastung auf einen oder beide der folgenden Gründe zurückzuführen sein:

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

In diesem Abschnitt werden einige Leistungsmesswerte eines Modells mit geringer FLOP-Auslastung interpretiert. In diesem Beispiel dominierten die Ausgabefusion und die Faltung die Ausführungszeit. Es gab viele Vektor- oder Skalarvorgänge mit geringer FLOP-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 und die Feature-Größe auf 8 aufgefüllt. In diesem Fall werden nur 5% der Matrixeinheiten effektiv verwendet. 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, bei der kein Auffüllen verwendet wurde.

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.
  • 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 Trainingsdaten vorverarbeitet und an die TPU übertragen werden, während die TPU das eigentliche Modelltraining ausführt.

Mit dem Trace Viewer können Sie Leistungsprobleme in Ihrem Modell identifizieren und Maßnahmen zu deren Lösung ergreifen. Auf übergeordneter Ebene können Sie beispielsweise feststellen, ob die Einspeisung oder das Modelltraining die meiste Zeit in Anspruch nehmen. Durch einen Drilldown können Sie ermitteln, welche TensorFlow-Vorgänge am längsten dauern.

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

Trace Viewer-Oberfläche

Um den Trace Viewer zu öffnen, gehen Sie 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 die folgenden Hauptelemente (im vorherigen Screenshot mit Zahlen markiert):

  1. Drop-down-Menü „Ausführungen“: Enthält alle Durchläufe, für die Traceinformationen erfasst wurden. Die Standardansicht zeigt den letzten Durchlauf an. Sie können aber auch das Drop-down-Menü öffnen, um eine andere Ausführung auszuwählen.
  2. Drop-down-Menü "Tools": Wählt verschiedene Tools zur Profilerstellung aus.
  3. Drop-down-Menü für Host: Wählt einen Host aus, der einen Cloud TPU-Satz enthält.
  4. Zeitachsenbereich: Zeigt Vorgänge an, die von Cloud TPU und vom Hostcomputer im Zeitverlauf ausgeführt wurden.
  5. Detailbereich: Zeigt zusätzliche Informationen zu Vorgängen an, die im Zeitachsenbereich ausgewählt sind.

Eine genauere Ansicht des Zeitachsenbereichs:

Image

Der Zeitachsenbereich setzt sich aus folgenden Elementen zusammen:

  1. Leiste am oberen Rand Enthält verschiedene zusätzliche Steuerelemente.
  2. Zeitachse: Zeigt die Zeit bezogen auf den Trace-Anfang an.
  3. Abschnitts- und Tracklabels: Jeder Abschnitt enthält mehrere Tracks. Außerdem ist auf der linken Seite ein Dreieck zu sehen, auf das Sie klicken können, um den Abschnitt zu maximieren oder zu minimieren. Jedes Verarbeitungselement im System ist durch einen Abschnitt vertreten.
  4. Toolauswahl Enthält verschiedene Tools für die Interaktion mit dem Trace Viewer.
  5. Ereignisse: Zeigt die Zeit an, während der ein Vorgang ausgeführt wurde, 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 von Chrome bereitgestellten universellen Trace Viewer-Tools, das für verschiedene Leistungsanalyseaufgaben verwendet wird.

Abschnitte und Tracks

Trace Viewer enthält folgende Abschnitte:

  • Einen Abschnitt für jeden TPU-Knoten, der mit der Nummer des TPU-Chips und des TPU-Kerns innerhalb des Chips gekennzeichnet ist (z. B. „Chip 2: TPU Core 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 in einen oder mehrere XLA-Vorgänge übersetzt. 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, namens Hostthreads. 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 Zeitachsen-Tool, um ein Tool 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:

Auswahltool
Klicken Sie auf ein Ereignis, um es auszuwählen, oder ziehen Sie es, um mehrere Ereignisse auszuwä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 Zoomtool aktiv bleibt, nachdem Sie die Maustaste losgelassen haben, klicken Sie auf die Zeitachsenansicht, um das Zoomtool 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 Spitzenauslastungs- und Arbeitsspeichernutzungstrends für Ihr Programm visualisieren.

Die Benutzeroberfläche des Memory Viewer sieht so aus:

Image

  1. Drop-down-Menü Host: Wählt einen TPU-Host und XLA-HLO-Module (High Level Optimizer) aus, die visualisiert werden sollen.
  2. Arbeitsspeicherübersicht: Zeigt die maximale Arbeitsspeicherzuweisung und -größe ohne Auffüllung an.
  3. Arbeitsspeicherdiagramm: Zeigt die maximale Speichernutzung und ein Diagramm mit Trends zur Speichernutzung für Ihr Programm an. Bewegen Sie den Mauszeiger auf einen Zwischenspeicher in einem der Zwischenspeicherdiagramme, um zusätzliche Informationen auf der Karte zur Zwischenspeicherzuordnung anzuzeigen.
  4. Zwischenspeicherdiagramme: Zwei Diagramme, in denen die Zwischenspeicherzuweisung bei maximaler Arbeitsspeichernutzung angezeigt wird. Bewegen Sie den Mauszeiger auf einen Zwischenspeicher in einem der Zwischenspeicherdiagramme, um zusätzliche Informationen auf der Karte mit den Zwischenspeicherdetails anzuzeigen.
  5. Karte mit Details zur Zwischenspeicherzuweisung: Zeigt die Zuweisungsdetails 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.

Image

Arbeitsspeicherdiagramm

Dieses Diagramm zeigt die maximale Speichernutzung und ein Diagramm der Arbeitsspeichernutzungstrends für Ihr Programm an. Die vertikale Linie zeigt die maximale Arbeitsspeicherauslastung für das Programm an. Diese Diagramme zeigen, ob Ihr Programm in den verfügbaren globalen Speicherplatz passt.

Image

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

Interaktion mit Zwischenspeicherdiagrammelementen

Wenn Sie den Mauszeiger in Abweichungsdiagrammen auf einen Zwischenspeicher bewegen, wird im Arbeitsraumdiagramm eine horizontale Linie mit der Lebensdauer des Zwischenspeichers angezeigt.

Image

Die Stärke der horizontalen Linie gibt die relative Größe der Zwischenspeichergröße im Verhältnis zur maximalen Speicherzuweisung 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 Reihenfolge an, in der sie während der Programmausführung aktiv waren.

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

Detailkarte zur Zwischenspeicherzuordnung

Wenn Sie den Mauszeiger auf einen Zwischenspeicher bewegen, der in einem der Zwischenspeicherdiagramme angezeigt wird, wird eine Karte mit Details zur Zwischenspeicherzuweisung 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 Zwischenspeicherzuweisung ohne Auffüllung.
  5. Erweiterung: Die relative Größe der Puffergröße mit Auffüllung im Vergleich zur Größe ohne Auffüllung.
  6. Extra memory (Zusätzlicher Arbeitsspeicher): Gibt an, wie viel zusätzlicher Arbeitsspeicher für das Padding verwendet wird.
  7. Form: Beschreibt Rang, Größe und Datentyp des n-dimensionalen Arrays.
  8. Name des TensorFlow-Vorgangs: Zeigt den Namen des TensorFlow-Vorgangs an, der mit der Zwischenspeicherzuweisung verknüpft ist.
  9. Allocation type (Zuordnungstyp): Gibt die Zwischenspeicherzuweisungskategorie an: Parameter, Output, Thread-local und temporär (z. B. Zwischenspeicherzuweisung innerhalb einer Fusion).

Unzureichender Speicherplatz

Wenn Sie beim Ausführen eines Modells den Fehler „Nicht genügend Arbeitsspeicher“ erhalten, können Sie anhand der Richtlinien in diesem Dokument ein Profil erfassen. Warten Sie, bis das Skript das Modell trainiert, bevor Sie den Profiler starten. Die Profilerstellungsausgabe kann Ihnen dabei helfen, die Fehlerursache zu verstehen.