Standardmäßige Systemüberwachung und angepasste Framework-Profilerstellung mit unterschiedlichen Profiling-Optionen - 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.

Standardmäßige Systemüberwachung und angepasste Framework-Profilerstellung mit unterschiedlichen Profiling-Optionen

Dieser Abschnitt enthält Informationen zu den unterstützten Konfigurationsklassen für die Profilerstellung sowie eine Beispielkonfiguration. Sie können die folgenden Profilkonfigurationsklassen verwenden, um die Framework-Profilerstellungsoptionen zu verwalten:

  • DetailedProfilingConfig— Geben Sie einen Zielschritt oder einen Zeitraum an, um Framework-Operationen mithilfe der systemeigenen Framework-Profiler (TensorFlow Profiler und PyTorch Profiler) zu profilieren. Wenn Sie beispielsweise die Debugger-Hooks verwenden TensorFlow, ermöglichen sie es dem TensorFlow Profiler, spezifische Framework-Metriken zu sammeln. TensorFlow Mit der detaillierten Profilerstellung können Sie alle Framework-Operatoren in einem Vorschritt (vor dem ersten Schritt), innerhalb von Schritten und zwischen den Schritten eines Trainingsauftrages profilieren.

    Anmerkung

    Eine detaillierte Profilerstellung kann den Speicherverbrauch erheblich erhöhen. GPU Es wird nicht empfohlen, die detaillierte Profilerstellung für mehr als ein paar Schritte zu aktivieren.

  • DataloaderProfilingConfig— Geben Sie einen Zielschritt oder einen Zeitraum für die Profilierung von Deep-Learning-Framework-Dataloader-Prozessen an. Der Debugger erfasst jedes Dataloader-Ereignis der Frameworks.

    Anmerkung

    Die Profilerstellung von Dataloadern kann das Trainingsleistung beim Sammeln von Informationen von Datenladeprogrammen beeinträchtigen. Wir empfehlen, die Profilerstellung für Data Loader nicht länger als ein paar Schritte zu aktivieren.

    Der Debugger ist so vorkonfiguriert, dass er Dataloader-Prozesse nur für die AWS Deep-Learning-Container annotiert. Der Debugger kann keine Profile für Dataloader-Prozesse aus anderen benutzerdefinierten oder externen Trainingscontainern erstellen.

  • PythonProfilingConfig— Geben Sie einen Zielschritt oder einen Zeitbereich an, um Python-Funktionen zu profilieren. Sie können auch zwischen zwei Python-Profilern wählen: cProfile und Pyinstrument.

    • cProfile— Der Standard-Python-Profiler. cProfile sammelt Informationen für jeden Python-Operator, der während des Trainings aufgerufen wird. Mit cProfile spart Debugger kumulative Zeit und Anmerkungen für jeden Funktionsaufruf und bietet vollständige Details zu Python-Funktionen. Beim Deep Learning könnten die am häufigsten aufgerufenen Funktionen beispielsweise die Faltungsfilter und Backward-Pass-Operatoren sein, wobei für jede einzelne Funktion Profile erstellt werden. cProfile Für cProfile diese Option können Sie außerdem eine Timer-Option auswählen: Gesamtzeit, Zeit und CPU Ausschaltzeit. CPU Sie können zwar für jeden Funktionsaufruf, der auf Prozessoren (CPUsowohl als auchGPU) ausgeführt wird, ein CPU Zeitprofil erstellen. Mit der Option „CPUAuszeit“ können Sie aber auch I/O- oder Netzwerkengpässe identifizieren. Die Standardeinstellung ist die Gesamtzeit, und der Debugger berechnet sowohl die Gesamtzeit als auch die CPU Off-Zeit. CPU Mit cProfile können Sie bei der Analyse der Profildaten auf alle einzelnen Funktionen zugreifen.

    • Pyinstrument – Pyinstrument ist ein Python-Profiler mit geringem Overhead, der auf Sampling basiert. Mit der Option Pyinstrument tastet der Debugger jede Millisekunde Profiling-Ereignisse ab. Da Pyinstrument die verstrichene Uhrzeit und nicht die Zeit misst, kann die Option Pyinstrument die bessere Wahl sein als die cProfile Option zur Reduzierung des CPU Rauschens bei der Profilerstellung (Herausfiltern irrelevanter Funktionsaufrufen, die kumulativ schnell sind) und zur Erfassung von Operatoren, die tatsächlich rechenintensiv (kumulativ langsam) sind, zum Trainieren Ihres Modells. Mit Pyinstrument können Sie sich einen Baum von Funktionsaufrufen anzeigen lassen und so die Struktur und die Ursache der Langsamkeit besser verstehen.

    Anmerkung

    Die Aktivierung der Python-Profilerstellung kann die gesamte Trainingszeit verlangsamen. cProfile erstellt bei jedem Aufruf Profile der am häufigsten aufgerufenen Python-Operatoren, sodass die Verarbeitungszeit bei der Profilerstellung mit der Anzahl der Aufrufe zunimmt. Bei Pyinstrument nimmt die kumulative Zeit für die Profilerstellung aufgrund des Sampling-Mechanismus mit der Zeit zu.

Die folgende Beispielkonfiguration zeigt die vollständige Struktur, wenn Sie die verschiedenen Profilerstellungsoptionen mit angegebenen Werten verwenden.

import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=500, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5, num_steps=1 ), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7, num_steps=1 ), python_profiling_config=PythonProfilingConfig( start_step=9, num_steps=1, python_profiler=PythonProfiler.CPROFILE, cprofile_timer=cProfileTimer.TOTAL_TIME ) ) )

Weitere Informationen zu den verfügbaren Profilerstellungsoptionen finden Sie unter DetailedProfilingConfigDataloaderProfilingConfig, und PythonProfilingConfigin Amazon SageMaker Python SDK.