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.
Greifen Sie auf die Python-Profiling-Statistikdaten zu
Das Python-Profiling bietet Framework-Metriken zu Python-Funktionen und -Operatoren in Ihren Trainingsskripten und den SageMaker KI-Dep-Learning-Frameworks.
Trainingsmodi und Phasen für die Python-Profilerstellung
Um bestimmte Intervalle während des Trainings zu profilieren und die Statistiken für jedes dieser Intervalle aufzuteilen, bietet der Debugger Werkzeuge zur Einstellung von Modi und Phasen.
Verwenden Sie PythonProfileModes
Folgendes für die Modelltraining:
from smdebug.profiler.python_profile_utils import PythonProfileModes
Diese Klasse bietet die folgenden Optionen:
-
PythonProfileModes.TRAIN
– Verwenden Sie diese Option, wenn Sie ein Profil der Zielschritte in der Trainingsphase erstellen möchten. Diese Modusoption ist nur verfügbar für TensorFlow. -
PythonProfileModes.EVAL
– Verwenden Sie diese Option, wenn Sie ein Profil der Zielschritte in der Evaluierungsphase erstellen möchten. Diese Modusoption ist nur verfügbar für TensorFlow. -
PythonProfileModes.PREDICT
– Verwenden Sie diese Option, wenn Sie ein Profil der Zielschritte in der Vorhersagephase erstellen möchten. Diese Modusoption ist nur verfügbar für TensorFlow. -
PythonProfileModes.GLOBAL
– Verwenden Sie diese Option, wenn Sie ein Profil der Zielschritte in der globalen Phase erstellen möchten, die die vorherigen drei Phasen umfasst. Diese Modusoption ist nur verfügbar für PyTorch. -
PythonProfileModes.PRE_STEP_ZERO
– Verwenden Sie diese Option, wenn Sie ein Profil der Zielschritte in der Initialisierungsphase erstellen möchten, bevor der erste Trainingsschritt der ersten Epoche beginnt. Diese Phase umfasst die erste Einreichung des Jobs, das Hochladen der Schulungsskripte auf die EC2 Instances, das Vorbereiten der EC2 Instanzen und das Herunterladen der Eingabedaten. Diese Modusoption ist sowohl für als auch TensorFlow verfügbar. PyTorch -
PythonProfileModes.POST_HOOK_CLOSE
– Verwenden Sie diese Option, wenn Sie ein Profil der Zielschritte in der Finalisierungsphase erstellen möchten, nachdem der Trainingsauftrag abgeschlossen und der Debugger-Hook geschlossen wurde. Diese Phase umfasst die Erstellung von Profildaten, während die Trainingsaufträge fertiggestellt und abgeschlossen werden. Diese Modusoption ist sowohl für als TensorFlow auch verfügbar PyTorch.
Verwenden Sie für Trainingsphasen die folgende StepPhase
Klasse:
from smdebug.profiler.analysis.utils.python_profile_analysis_utils import StepPhase
Diese Klasse bietet folgende Optionen:
-
StepPhase.START
– Wird verwendet, um den Startpunkt der Initialisierungsphase anzugeben. -
StepPhase.STEP_START
– Wird verwendet, um den Startschritt der Trainingsphase anzugeben. -
StepPhase.FORWARD_PASS_END
– Hiermit können Sie die Schritte angeben, an denen der Vorwärtspass endet. Diese Option ist nur für verfügbar PyTorch. -
StepPhase.STEP_END
– Dient zur Angabe der Endschritte in der Trainingsphase. Diese Option ist nur für verfügbar TensorFlow. -
StepPhase.END
— Dient zur Angabe des Endpunkts der Finalisierungsphase (post-hook-close). Wenn der Callback-Hook nicht geschlossen wird, findet keine Profilierung in der Abschlussphase statt.
Analysetools zur Python-Profilerstellung
Debugger unterstützt die Python-Profilerstellung mit zwei Profiling-Tools:
-
cProfile – Der Standard-Python-Profiler. cProfile sammelt Framework-Metriken zur CPU-Zeit für jede Funktion, die aufgerufen wurde, als die Profilerstellung aktiviert war.
-
Pyinstrument – Dies ist ein Python-Profiler mit geringem Overhead, der alle Millisekunden Profilereignisse abtastet.
Weitere Informationen zu den Python-Profilerstellungsoptionen und den gesammelten Informationen finden Sie unter Standardmäßige Systemüberwachung und angepasste Framework-Profilerstellung mit unterschiedlichen Profilerstellungsoptionen.
Die folgenden Methoden der PythonProfileAnalysis
, cProfileAnalysis
, PyinstrumentAnalysis
Klassen werden bereitgestellt, um die Python-Profilerstellungsdaten abzurufen und zu analysieren. Jede Funktion lädt die neuesten Daten aus dem Standard-S3-URI.
from smdebug.profiler.analysis.python_profile_analysis import PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis
Verwenden Sie die PyinstrumentAnalysis Klassen cProfileAnalysis oder, wie im folgenden Beispielcode gezeigt, um Python-Profilerstellungsobjekte für die Analyse festzulegen. Es zeigt, wie ein cProfileAnalysis
Objekt gesetzt wird, und wenn Sie es verwenden PyinstrumentAnalysis
möchten, ersetzen Sie den Klassennamen.
python_analysis = cProfileAnalysis( local_profile_dir=tf_python_stats_dir, s3_path=tj.profiler_s3_output_path )
Die folgenden Methoden sind für die cProfileAnalysis
und PyinstrumentAnalysis
Klassen verfügbar, um die Python-Profiling-Statistikdaten abzurufen:
-
python_analysis.fetch_python_profile_stats_by_time(start_time_since_epoch_in_secs, end_time_since_epoch_in_secs)
– Nimmt eine Start- und eine Endzeit an und gibt die Funktionsstatistiken aller Schrittstatistiken zurück, deren Start- oder Endzeit sich mit dem angegebenen Intervall überschneidet. -
python_analysis.fetch_python_profile_stats_by_step(start_step, end_step, mode, start_phase, end_phase)
– Nimmt einen Startschritt und einen Endschritt auf und gibt die Funktionsstatistiken aller Schrittstatistiken zurück, deren Profilwertstep
den Anforderungen entsprichtstart_step <= step < end_step
.-
start_step
undend_step
(str) – Geben Sie den Startschritt und den Endschritt an, um die Python-Profilierungsstatistikdaten zu holen. -
mode
(str) – Geben Sie den Modus des Trainingsauftrages mithilfe derPythonProfileModes
Enumerator-Klasse an. Der Standardwert istPythonProfileModes.TRAIN
. Verfügbare Optionen finden Sie im Abschnitt Trainingsmodi und Phasen für die Python-Profilerstellung. -
start_phase
(str) – Geben Sie die Startphase in den Zielschritten mithilfe derStepPhase
Enumerator-Klasse an. Dieser Parameter ermöglicht die Profilerstellung zwischen verschiedenen Trainingsphasen. Der Standardwert istStepPhase.STEP_START
. Verfügbare Optionen finden Sie im Abschnitt Trainingsmodi und Phasen für die Python-Profilerstellung. -
end_phase
(str) – Geben Sie die Endphase in den Zielschritten mithilfe derStepPhase
Enumerator-Klasse an. Dieser Parameter legt die Endphase des Trainings fest. Die verfügbaren Optionen sind dieselben wie für denstart_phase
Parameter. Der Standardwert istStepPhase.STEP_END
. Verfügbare Optionen finden Sie im Abschnitt Trainingsmodi und Phasen für die Python-Profilerstellung.
-
-
python_analysis.fetch_profile_stats_between_modes(start_mode, end_mode)
– Holt Statistiken aus dem Python-Profiling zwischen dem Start- und Endmodus. -
python_analysis.fetch_pre_step_zero_profile_stats()
– Holt die Statistiken aus der Python-Profilierung bis Schritt 0. -
python_analysis.fetch_post_hook_close_profile_stats()
– Holt Statistiken aus dem Python-Profiling, nachdem der Hook geschlossen wurde. -
python_analysis.list_profile_stats()
— Gibt eine DataFrame der Python-Profiling-Statistiken zurück. Jede Zeile enthält die Metadaten für jede Instance der Profilerstellung und die entsprechende Statistikdatei (eine pro Schritt). -
python_analysis.list_available_node_ids()
— Gibt eine Liste der verfügbaren Knoten IDs für die Python-Profiling-Statistiken zurück.
Die cProfileAnalysis
klassenspezifischen Methoden:
-
fetch_profile_stats_by_training_phase()
– Holt und aggregiert die Python-Profiling-Statistiken für jede mögliche Kombination von Start- und Endmodi. Wenn beispielsweise eine Trainings- und Validierungsphase durchgeführt wird, während die detaillierte Profilerstellung aktiviert ist, lauten die Kombinationen(PRE_STEP_ZERO, TRAIN)
,(TRAIN, TRAIN)
,(TRAIN, EVAL)
,(EVAL, EVAL)
und(EVAL, POST_HOOK_CLOSE)
. Alle Statistikdateien in jeder dieser Kombinationen werden aggregiert. -
fetch_profile_stats_by_job_phase()
– Holt und aggregiert die Python-Profiling-Statistiken nach Auftragsphasen. Die Auftragsphasen sindinitialization
(Profilerstellung bis Schritt 0),training_loop
(Training und Validierung) undfinalization
(Profilerstellung nach dem Schließen des Hooks).