Führen Sie die Zeitachsen mehrerer Profil-Trace-Dateien zusammen - Amazon SageMaker

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.

Führen Sie die Zeitachsen mehrerer Profil-Trace-Dateien zusammen

Die SMDebug-Client-Bibliothek bietet Profiling-Analyse- und Visualisierungs-Tools für die Zusammenführung von Zeitreihen von System-Metriken, Framework-Metriken und Python-Profiling-Daten, die von Debugger gesammelt wurden.

Tipp

Bevor Sie fortfahren, müssen Sie ein TrainingJob Objekt festlegen, das in den Beispielen auf dieser Seite verwendet wird. Weitere Informationen zum Einrichten eines TrainingJob Objekts finden Sie unterGreifen Sie auf die Profildaten zu.

Die MergedTimeline Klasse bietet Tools zum Integrieren und Korrelieren verschiedener Profiling-Informationen in einer einzigen Zeitleiste. Nachdem Debugger Profilerfassungsdaten und Anmerkungen aus verschiedenen Phasen eines Trainingsauftrags erfasst hat, werden JSON-Dateien mit Trace-Ereignissen in einem tracefolder Standardverzeichnis gespeichert.

  • Für Anmerkungen in den Python-Layern werden die Trace-Dateien in *pythontimeline.json gespeichert.

  • Bei Anmerkungen in den TensorFlow C++-Ebenen werden die Trace-Dateien in *model_timeline.json gespeichert.

  • Der Tensorflow Profiler speichert Ereignisse in einer *trace.json.gz Datei.

Tipp

Wenn Sie alle JSON-Trace-Dateien auflisten möchten, verwenden Sie den folgenden AWS CLI Befehl:

! aws s3 ls {tj.profiler_s3_output_path} --recursive | grep '\.json$'

Wie in der folgenden animierten Abbildung zu sehen ist, kann die Zusammenstellung und Ausrichtung der aus den verschiedenen Profiling-Quellen erfassten Trace-Ereignisse in einem einzigen Diagramm einen Überblick über die gesamten Ereignisse in den verschiedenen Phasen des Trainingsauftrags geben.

Ein Beispiel für eine zusammengeführte Zeitleiste
Tipp

Zur Interaktion mit der zusammengeführten Zeitleiste in der Traicing-App mit einer Tastatur verwenden Sie die W Taste zum Vergrößern, die A Taste zum Verschieben nach links, die S Taste zum Verkleinern und die D Taste zum Verschieben nach rechts.

Die JSON-Dateien mit mehreren Ereignisverfolgungen können mit der folgenden MergedTimeline API-Operation und Klassenmethode des smdebug.profiler.analysis.utils.merge_timelines Moduls zu einer JSON-Datei mit Ereignisverfolgungen zusammengeführt werden.

from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(path, file_suffix_filter, output_directory) combined_timeline.merge_timeline(start, end, unit)

Die MergedTimeline API-Operation übergibt die folgenden Parameter:

  • path (str) – Geben Sie einen Stammordner (/profiler-output) an, der Trace-Dateien für die System- und Framework-Profilerstellung enthält. Sie können das profiler-output mithilfe der SageMaker Estimator-Klassenmethode oder des Objekts ausfindig machen. TrainingJob Beispiel, estimator.latest_job_profiler_artifacts_path() oder tj.profiler_s3_output_path.

  • file_suffix_filter (Liste) – Geben Sie eine Liste von Dateisuffixfiltern an, um Zeitleisten zusammenzuführen. Verfügbare Suffiexfilter sind: ["model_timeline.json", "pythontimeline.json", "trace.json.gz"]. Wenn dieser Parameter nicht manuell angegeben wird, werden standardmäßig alle Trace-Dateien zusammengeführt.

  • output_directory (str) – Geben Sie einen Pfad zum Speichern der zusammengeführten Timeline-JSON-Datei an. Die Standardeinstellung ist das für den path Parameter angegebene Verzeichnis.

Die merge_timeline() Klassenmethode übergibt die folgenden Parameter, um den Zusammenführungsprozess auszuführen:

  • start (int) – Geben Sie die Startzeit (in Mikrosekunden und im Unix-Zeitformat) oder den Startschritt für das Zusammenführen von Zeitlinien an.

  • end (int) – Geben Sie die Endzeit (in Mikrosekunden und im Unix-Zeitformat) oder den Endschritt an, um Zeitlinien zusammenzuführen.

  • unit (str) – Wählen Sie zwischen "time" und "step". Der Standardwert ist "time".

Führen Sie die merge_timeline() Methode anhand der folgenden Beispielcodes aus und laden Sie die zusammengeführte JSON-Datei herunter.

  • Zeitleiste mit der "time" Option Einheit zusammenführen. Der folgende Beispielcode führt alle verfügbaren Trace-Dateien zwischen der Unix-Startzeit (der absoluten Unix-Nullzeit) und der aktuellen Unix-Zeit zusammen, d. h. Sie können die Zeitleisten für die gesamte Ausbildungsdauer zusammenführen.

    import time from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline from smdebug.profiler.profiler_constants import CONVERT_TO_MICROSECS combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(0, int(time.time() * CONVERT_TO_MICROSECS))
  • Zeitleiste mit der "step" Option Einheit zusammenführen. Der folgende Beispielcode führt alle verfügbaren Zeitleisten zwischen Schritt 3 und Schritt 9 zusammen.

    from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(3, 9, unit="step")

Öffnen Sie die Chrome-Tracing-App unter chrome://tracing in einem Chrome-Browser und öffnen Sie die JSON-Datei. Sie können die Ausgabe untersuchen, um die zusammengeführte Zeitleiste darzustellen.