Greifen Sie auf die Python-Profiling-Statistikdaten zu - 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.

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 Deep-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 Auftrags, das Hochladen der Trainingsskripte auf EC2-Instances, das Vorbereiten der EC2-Instances und das Herunterladen der Eingabedaten. Diese Modusoption ist sowohl für als TensorFlow auch 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 – Wird verwendet, um den Endpunkt der Finalisierungsphase (Post-Hook-Close) anzugeben. 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 Starten Sie einen Trainingsauftrag mit der Standardsystemüberwachung und der benutzerdefinierten Framework-Profilerstellung mit verschiedenen 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 Profilwert step den Anforderungen entsprichtstart_step <= step < end_step.

    • start_step und end_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 der PythonProfileModes Enumerator-Klasse an. Der Standardwert ist PythonProfileModes.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 der StepPhase Enumerator-Klasse an. Dieser Parameter ermöglicht die Profilerstellung zwischen verschiedenen Trainingsphasen. Der Standardwert ist StepPhase.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 der StepPhase Enumerator-Klasse an. Dieser Parameter legt die Endphase des Trainings fest. Die verfügbaren Optionen sind dieselben wie für den start_phase Parameter. Der Standardwert ist StepPhase.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 sind initialization (Profilerstellung bis Schritt 0), training_loop (Training und Validierung) und finalization (Profilerstellung nach dem Schließen des Hooks).