Modell auf Cloud TPU-VMs profilieren
Mithilfe von Profiling können Sie die Trainingsleistung Ihres Modells auf Cloud TPUs optimieren. Sie verwenden TensorBoard und das Cloud TPU TensorBoard-Plug-in, um Ihr Modell zu profilieren.
Weitere Informationen zur Verwendung von TensorBoard mit einem der unterstützten Frameworks finden Sie in den folgenden Dokumenten:
Voraussetzungen für das Profiling eines Trainingsscripts
Bevor Sie die TPU-Tools zur Profilerstellung verwenden können, müssen Sie Folgendes tun:
Sitzung für das Modelltraining starten
- Richten Sie eine v4-8 TPU ein, 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.
Fügen Sie in Ihrer TPU-VM dem Trainingsskript eine Zeile zum Starten des Profilerstellungs-Servers hinzu.
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 durch die Scripts 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 Script ausführen.
Starten Sie das Modelltraining.
Führen Sie das Trainingsskript aus und warten Sie, bis die Ausgabe anzeigt, dass das 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 in der Google Cloud Console die Seite „Cloud TPU“ aufrufen, Ihre TPU auswählen und die CPU-Auslastungsgrafik ansehen. 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.
Stellen Sie im neuen Fenster oder in der neuen Shell eine Verbindung zu Ihrer TPU-VM über die 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 Ihr lokaler Browser mit dem TensorBoard-Server kommunizieren, der auf Ihrer TPU-VM ausgeführt wird.
Installieren Sie TensorFlow-Anforderungen.
Auf Ihrer TPU-VM ist standardmäßig TensorBoard installiert. Sie können 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
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
TensorBoard-Server starten
Führen Sie TensorBoard aus und erstellen Sie auf der TPU-VM ein Protokollverzeichnis (
logdir
), in das TensorBoard Profiling-Daten 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.
Profil auf TPU-VMs erfassen
- Wählen Sie die Schaltfläche CAPTURE PROFILE aus.
- Wählen Sie das Optionsfeld IP-Adresse aus.
- Geben Sie HOSTNAME:6000 in das Feld
Profile Service URL
ein. - Wählen Sie die Schaltfläche AUFNEHMEN aus.
Profildaten mit TensorBoard ansehen
Nachdem Sie ein Profil erfasst haben, wird in TensorBoard die Seite overview_page angezeigt. Die Liste der verfügbaren Profiling-Tools wird im linken Bereich angezeigt.
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, wird durch Klicken auf den Tab Profil eine Auswahl von Tools zur Unterstützung der Leistungsanalyse angezeigt. Sie können eines der folgenden Tools verwenden, um Ihr Modell zu profilieren.
- Übersichtsseite
- Input Pipeline Analyzer
- XLA Op-Profil
- Trace Viewer (nur Chrome-Browser)
- Memory Viewer
Profilübersicht
Die auf der Seite Profil verfügbare Übersichtsseite (overview_page) bietet eine Zusammenfassung über die Leistung Ihres Modells während einer Erfassungsausführung. Die Seite bietet eine aggregierte Übersicht aller TPUs sowie eine allgemeine Analyse der Eingabepipeline. Im Drop-down-Menü Host können Sie einzelne TPUs auswählen.
Auf der Seite werden Daten in den folgenden Bereichen angezeigt:
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)
- 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 geräteseitige und hostseitige Analysen, um Engpässe in allen Phasen der Pipeline zu beheben.
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 Stufe ist die Eingabe der nächsten. Dieses Lesesystem wird als Eingabepipeline bezeichnet.
Eine typische Pipeline zum Lesen von Datensätzen aus Dateien gliedert sich in folgende Phasen:
- Datei lesen
- Datei vorverarbeiten (optional)
- 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: Hier finden Sie Details zu den Geräteschrittzeiten.
- Statistiken zu Geräteschritten
- Prozentsatz der Geräteschrittzeit, in der auf Eingabedaten gewartet wurde
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: Zeitaufwand für Vorverarbeitungsvorgänge, z. B. für die Bild-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: Zeit, die für das Lesen von Daten aus Dateien aufgewendet wird, ohne Caching, Prefetching und Verschränkung.
- Sonstiges Lesen oder Verarbeiten von Daten: Zeit für andere eingabebezogene Vorgänge, die
tf.data
nicht verwenden.
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:
Jeder Tabelleneintrag enthält folgende Informationen:
- Input Op (Eingabevorgang): Zeigt den TensorFlow-Vorgangsnamen des Eingabevorgangs an.
- Anzahl: Die Gesamtzahl der Vorgangsinstanzen, die während des Profilerstellungszeitraums ausgeführt wurden.
- Gesamtzeit (in ms): Gibt die gesamte Zeit an, die für jede dieser Vorgangsinstanzen aufgewendet wurde.
- Gesamtzeit %: Gibt die für einen Vorgang aufgewendete Zeit als Anteil der Gesamtzeit an, die für die Eingabeverarbeitung aufgewendet wurde.
- 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 vonIterator::PaddedBatch::Filter
aufgerufen, daher wird ihre gesamte Eigenzeit von der gesamten Eigenzeit der letzteren Funktion abgezogen. - Gesamte Eigenzeit %: Gibt die gesamte Eigenzeit als Anteil der Gesamtzeit an, die für die Eingabeverarbeitung aufgewendet wurde.
- 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 beispielsweise ermitteln, welche XLA-Vorgänge die längste Ausführungszeit benötigen und wie viele TPU-FLOPS sie verbrauchen.
Op Profile verwenden
Das Tool „Op Profile“ enthält Leistungsstatistiken von XLA-Vorgängen. Sie können die Daten des Operatorprofils in TensorBoard aufrufen. Klicken Sie dazu oben auf dem Bildschirm auf den Tab Profil und wählen Sie dann im Drop-down-Menü Tools die Option op_profile aus. Sie sehen eine Anzeige wie diese:
- Übersichtsbereich: Zeigt die Cloud TPU-Auslastung an und stellt Optimierungsvorschläge bereit.
- Steuerfeld: Enthält Steuerelemente, mit denen Sie Anzahl und Art der in der Tabelle angezeigten Vorgänge festlegen können und wie sie sortiert werden.
- 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.
- Karten mit Vorgangsdetails: Hier werden Details zu den Vorgängen angezeigt, die angezeigt werden, wenn Sie den Mauszeiger auf einen Vorgang in der Tabelle bewegen. 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 enthält 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. 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.
- Zeit: Gibt die Gesamtzeit in Prozent an, die von allen Vorgängen in dieser Kategorie beansprucht 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.
- 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.
- TensorFlow-Vorgang: Enthält den Namen des TensorFlow-Vorgangs, der zum XLA-Vorgang gehört.
- FLOPS: Zeigt die FLOPS-Auslastung an. Dabei handelt es sich um die gemessene Anzahl von FLOPS, ausgedrückt als Prozentsatz der höchsten Cloud TPU-FLOPS. 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:
- Name und Kategorie: Zeigt den hervorgehobenen XLA-Vorgangsnamen und die hervorgehobene Kategorie an.
- FLOPS-Auslastung: Zeigt die FLOPS-Auslastung als Prozentsatz der insgesamt möglichen FLOPS an.
- Ausdruck: Zeigt den XLA-Ausdruck an, 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 an, einschließlich einer Beschreibung der vom XLA-Compiler durchgeführten Auffüllung.
Ergebnisse interpretieren
Für Faltungsvorgänge kann die geringe TPU-FLOPS-Auslastung aus einem oder beiden der folgenden Gründe zurückzuführen sein:
- 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 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.
In diesem Beispiel wird die Batchgröße auf 128 und die Featuregröße auf 8 aufgefüllt. In diesem Fall werden nur 5% der Matrixeinheiten effektiv genutzt. Die Auslastung wird berechnet durch (((batch_time * num_of_features) / padding_size) / num_of_cores). Die FLOPS in diesem Beispiel können Sie mit der %convolution.340 im vorherigen Beispiel vergleichen, bei dem kein Padding verwendet wird.
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. Normalerweise führt der Hostcomputer Einspeisevorgänge zur Vorverarbeitung der Trainingsdaten und deren Übertragung an die TPU aus, während die TPU das eigentliche Modelltraining übernimmt.
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.
Der Trace Viewer ist auf eine Million Ereignisse pro Cloud TPU beschränkt. Wenn Sie weitere Ereignisse bewerten möchten, verwenden Sie stattdessen 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:
Dieser Bildschirm enthält hauptsächlich folgende Elemente (im vorherigen Screenshot mit Zahlen gekennzeichnet):
- Drop-down-Menü „Durchläufe“: Enthält alle Durchläufe, für die Trace-Informationen erfasst wurden. Die Standardansicht ist Ihr letzter Durchlauf. Sie können die Drop-down-Liste jedoch öffnen, um einen anderen Durchlauf auszuwählen.
- Drop-down-Menü „Tools“: Wählt verschiedene Tools zur Profilerstellung aus.
- Drop-down-Liste „Host“: Wählt einen Host aus, der einen Cloud TPU-Satz enthält.
- Zeitachse: Zeigt Vorgänge an, die Cloud TPU und der Hostcomputer im Laufe der Zeit ausgeführt haben.
- Detailsbereich: Zeigt zusätzliche Informationen zu Vorgängen an, die im Zeitachsenbereich ausgewählt wurden.
Eine genauere Ansicht des Zeitachsenbereichs:
Der Zeitachsenbereich setzt sich aus folgenden Elementen zusammen:
- Obere Leiste: Enthält verschiedene zusätzliche Steuerelemente.
- Zeitachse: Zeigt die Zeit in Relation zum Trace-Anfang.
- 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.
- Toolauswahl: Enthält verschiedene Tools für die Interaktion mit dem Trace Viewer.
- Ereignisse: Hier sehen Sie die Ausführungszeiten von Vorgängen oder die Dauer von Metaereignissen wie Trainingsschritten.
- Vertical tab bar (Vertikale Tableiste): Diese Leiste hat für die Cloud TPU keinen Verwendungszweck. Die Leiste ist Teil des von Chrome bereitgestellten universellen Trace Viewer-Tools, das für eine Vielzahl von 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-Vorgänge: Zeigt die auf der TPU ausgeführten TensorFlow-Vorgänge an.
- XLA-Vorgänge: Zeigt XLA 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, 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:
Auswahltool Klicken Sie auf ein Ereignis, um es auszuwählen, oder ziehen Sie, 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 Zoom-Tool nach dem Loslassen der Maustaste aktiv bleibt, klicken Sie auf die Zeitachsenansicht, um es 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 maximale Speicherauslastung und die Speicherauslastungstrends für Ihr Programm visualisieren.
Die Benutzeroberfläche der Speicheranzeige sieht so aus:
- Drop-down-Menü „Host“: Hier können Sie einen TPU-Host und XLA-HLO-Module (High Level Optimizer) auswählen, die visualisiert werden sollen.
- Speicherübersicht: Zeigt die maximale Speicherzuweisung und -größe ohne Auffüllung an.
- Arbeitsspeicherdiagramm: Zeigt die maximale Speicherauslastung und ein Diagramm der Speichernutzungstrends für Ihr Programm an. Bewegen Sie den Mauszeiger auf einen Zwischenspeicher in einem der Zwischenspeicherdiagramme, um auf der Karte „Zwischenspeicherzuweisung“ weitere Informationen zu sehen.
- 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.
- 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.
Arbeitsspeicherdiagramm
In diesem Diagramm werden die maximale Speicherauslastung und ein Diagramm der Trends zur Speichernutzung für Ihr Programm angezeigt. Die vertikale Linie gibt die maximale Speicherauslastung des Programms an. Dieses Diagramm zeigt, ob Ihr Programm in den verfügbaren globalen Speicherbereich passt.
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 den Mauszeiger auf einen Zwischenspeicher in einem Zwischenspeicherdiagramm bewegen, wird im Arbeitsspeicherdiagramm eine horizontale Linie mit der Lebensdauer des Zwischenspeichers angezeigt.
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 Aufteilung der Speichernutzung am Spitzenlastpunkt.
Nach Programmreihenfolge: Die Zwischenspeicher werden von links nach rechts in der Reihenfolge angezeigt, in der sie während der Programmausführung aktiv waren.
Nach Größe: Die Zwischenspeicher, die während der Programmausführung aktiv waren, werden in absteigender Größe angezeigt.
Detailkarte zur Zwischenspeicherzuordnung
Wenn Sie den Mauszeiger auf einen in einem der Diagramme angezeigten Zwischenspeicher bewegen, wird eine Detailansicht der Zwischenspeicherzuweisung angezeigt. Eine typische Karte sieht so aus:
- Name: Name des XLA-Vorgangs.
- Kategorie: Die Vorgangskategorie.
- Größe: Die Größe der Zwischenspeicherzuordnung (einschließlich Auffüllung).
- Größe ohne Auffüllung: Die Größe der Zwischenspeicherzuordnung ohne Auffüllung.
- Ausweitung: Die relative Größe des Puffers mit Auffüllung im Vergleich zur Größe ohne Auffüllung.
- Zusätzlicher Arbeitsspeicher: Gibt an, wie viel zusätzlicher Arbeitsspeicher für die Auffüllung verwendet wird.
- Shape: Beschreibt Rang, Größe und Datentyp des n-dimensionalen Arrays.
- TensorFlow-Vorgangsname: Der Name des TensorFlow-Vorgangs, der mit der Zwischenspeicherzuordnung verknüpft ist.
- Zuordnungstyp: Gibt die Zwischenspeicherzuordnungskategorie an: Parameter, Ausgabe, Thread-lokal und Temporär (z. B. Zwischenspeicherzuordnung, die mit Fusion verknüpft ist).
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 das Modell mit dem Script trainiert wird, bevor Sie den Profiler starten. Anhand der Profilierungsausgabe können Sie die Ursache des Fehlers ermitteln.