Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Profilierung von Datenladern
In PyTorch werden Datenlader-Iteratoren wie SingleProcessingDataLoaderIter und MultiProcessingDataLoaderIter zu Beginn jeder Iteration über einen Datensatz initiiert. Während der Initialisierungsphase schaltet PyTorch je nach der konfigurierten Anzahl von Arbeitnehmern Arbeitsprozesse ein, richtet eine Datenwarteschlange zum Abrufen von Daten und pin_memory Thread ein.
Um das Profiling-Analysetool PyTorch Data Loader zu verwenden, importieren Sie die folgende PT_dataloader_analysis Klasse:
from smdebug.profiler.analysis.utils.pytorch_dataloader_analysis import PT_dataloader_analysis
Übergeben Sie die Profilerstellungsdaten, die als Pandas-Rahmendatenobjekt im Zugriff auf die Profilerstellungsdaten mit dem Pandas Data Parsing Tool Abschnitt abgerufen wurden:
pt_analysis = PT_dataloader_analysis(pf)
Die folgenden Funktionen sind für das pt_analysis Objekt verfügbar:
Die S3SystemMetricsReader SMDebug-Klasse liest die Systemmetriken aus dem im s3_trial_path Parameter angegebenen S3-Bucket.
-
pt_analysis.analyze_dataloaderIter_initialization()Die Analyse gibt den Median und die maximale Dauer für diese Initialisierungen aus. Wenn es Ausreißer gibt (d. h. die Dauer ist größer als 2 * Median), gibt die Funktion die Start- und Endzeiten für diese Dauern aus. Diese können verwendet werden, um die Systemmetriken während dieser Zeitintervalle zu überprüfen.
Die folgende Liste zeigt, welche Analysen mit dieser Klassenmethode möglich sind:
-
Welcher Typ von Datenlader-Iteratoren initialisiert wurde.
-
Die Anzahl der Arbeitnehmer pro Iterator.
-
Überprüfen Sie, ob der Iterator mit oder ohne pin_memory initialisiert wurde.
-
Anzahl der Iteratoren, die während des Trainings initialisiert wurden.
-
-
pt_analysis.analyze_dataloaderWorkers()Die folgende Liste zeigt, welche Analysen mit dieser Klassenmethode möglich sind:
-
Die Anzahl der Arbeitsprozesse, die während der gesamten Training abgespalten wurden.
-
Mittlere und maximale Dauer für die Arbeitsprozesse.
-
Start- und Endzeit für die Arbeitsprozesse, die Ausreißer sind.
-
-
pt_analysis.analyze_dataloader_getnext()Die folgende Liste zeigt, welche Analysen mit dieser Klassenmethode möglich sind:
-
Anzahl der GetNext-Aufrufe, die während des Trainings getätigt wurden.
-
Mittlere und maximale Dauer in Mikrosekunden für GetNext-Aufrufe.
-
Startzeit, Endzeit, Dauer und Arbeitnehmer-ID für den Ausreißer GetNext-Anrufdauer.
-
-
pt_analysis.analyze_batchtime(start_timestamp, end_timestamp, select_events=[".*"], select_dimensions=[".*"])Der Debugger sammelt die Start- und Endzeiten aller GetNext-Aufrufe. Sie können die Zeit ermitteln, die das Trainingsskript für einen Datenstapel benötigt. Innerhalb des angegebenen Zeitfensters können Sie die Anrufe identifizieren, die nicht direkt zur Ausbildung beitragen. Bei diesen Aufrufen kann es sich um folgende Operationen handeln: Berechnung der Genauigkeit, Addition der Verluste zu Debugging- oder Protokollierungszwecken und Ausdruck der Debugging-Informationen. Solche Vorgänge können rechenintensiv oder zeitaufwendig sein. Wir können solche Operationen identifizieren, indem wir den Python-Profiler, die Systemmetriken und die Framework-Metriken miteinander in Beziehung setzen.
Die folgende Liste zeigt, welche Analysen mit dieser Klassenmethode möglich sind:
-
Profil der für jeden Datenstapel,
BatchTime_in_seconds, indem die Differenz zwischen den Startzeiten des aktuellen und der nachfolgenden GetNext-Aufrufe ermittelt wird. -
Ermitteln Sie die Ausreißer in
BatchTime_in_secondsund die Start- und Endzeit für diese Ausreißer. -
Ermitteln Sie die System- und Rahmenmetriken während dieser
BatchTime_in_secondsZeitspannen. Dies gibt an, wo die Zeit verbracht wurde.
-
-
pt_analysis.plot_the_window()Zeichnet ein Zeitdiagramm zwischen einem Startzeitpunkt und einem Endzeitpunkt.