Acceso a los datos de estadísticas de creación de perfiles de Python - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceso a los datos de estadísticas de creación de perfiles de Python

La creación de perfiles de Python proporciona métricas del marco relacionadas con las funciones y los operadores de Python en sus scripts de entrenamiento y los marcos de aprendizaje SageMaker profundo.

Modos y fases de entrenamiento para la creación de perfiles en Python

A fin de elaborar perfiles de intervalos específicos durante el entrenamiento y segmentar las estadísticas de cada uno de estos intervalos, el depurador proporciona herramientas para establecer modos y fases.

Para los modos de entrenamiento, utilice la siguiente clase PythonProfileModes:

from smdebug.profiler.python_profile_utils import PythonProfileModes

Esta clase proporciona las siguientes opciones.

  • PythonProfileModes.TRAIN: úsela si quiere elaborar perfiles de los pasos previstos en la fase de entrenamiento. Esta opción de modo solo está disponible para TensorFlow.

  • PythonProfileModes.EVAL: úsela si quiere elaborar perfiles de los pasos previstos en la fase de evaluación. Esta opción de modo solo está disponible para TensorFlow.

  • PythonProfileModes.PREDICT: úsela si quiere elaborar perfiles de los pasos previstos en la fase de predicción. Esta opción de modo solo está disponible para TensorFlow.

  • PythonProfileModes.GLOBAL: úsela si desea elaborar perfiles de los pasos previstos en la fase global, lo que incluye las tres fases previas. Esta opción de modo solo está disponible para PyTorch.

  • PythonProfileModes.PRE_STEP_ZERO: úsela si desea elaborar perfiles de los pasos previstos en la fase de inicialización, antes de que comience el primer paso de entrenamiento del primer epoch. Esta fase incluye el envío del trabajo inicial, la carga de los scripts de entrenamiento en las instancias de EC2, la preparación de las instancias de EC2 y la descarga de los datos de entrada. Esta opción de modo está disponible tanto para como TensorFlow para PyTorch.

  • PythonProfileModes.POST_HOOK_CLOSE: úsela si desea elaborar perfiles de los pasos previstos en la fase de finalización, tras el trabajo de entrenamiento y tras cerrar el enlace del depurador. Esta fase incluye la elaboración de perfiles mientras se finalizan y completan los trabajos de entrenamiento. Esta opción de modo está disponible tanto para como TensorFlow para PyTorch.

Para las fases de entrenamiento, utilice la siguiente clase StepPhase:

from smdebug.profiler.analysis.utils.python_profile_analysis_utils import StepPhase

Esta clase proporciona las siguientes opciones.

  • StepPhase.START: se utiliza para especificar el punto de inicio de la fase de inicialización.

  • StepPhase.STEP_START: se utiliza para especificar el paso de inicio de la fase de entrenamiento.

  • StepPhase.FORWARD_PASS_END: se utiliza para especificar los pasos en los que termina la propagación hacia delante. Esta opción solo está disponible para PyTorch.

  • StepPhase.STEP_END: se utiliza para especificar los pasos finales de la fase de entrenamiento. Esta opción solo está disponible para TensorFlow.

  • StepPhase.END: se utiliza para especificar el punto final de la fase de finalización (posterior al cierre del enlace). Si el enlace de devolución de llamada no está cerrado, no se lleva a cabo la creación de perfiles de la fase de finalización.

Herramientas de Python para el análisis en la elaboración de perfiles

El depurador es compatible con la creación de perfiles de Python mediante dos herramientas de creación de perfiles:

  • cProfile: el generador de perfiles estándar de Python. cProfile recopila métricas del marco sobre el tiempo de CPU para cada función llamada cuando la creación de perfiles estaba habilitada.

  • Pyinstrument: un generador de perfiles de Python de bajo coste que muestrea eventos de creación de perfiles con una frecuencia de milisegundos.

Para obtener más información sobre las opciones de creación de perfiles de Python y lo que se recopila, consulte Comience un trabajo de entrenamiento con la monitorización predeterminada del sistema y la creación de perfiles de marco personalizada con diferentes opciones de creación de perfiles.

Los siguientes métodos de las clases PythonProfileAnalysis, cProfileAnalysis y PyinstrumentAnalysis se proporcionan para obtener y analizar los datos de creación de perfiles de Python. Cada función carga los datos más recientes del URI de S3 predeterminado.

from smdebug.profiler.analysis.python_profile_analysis import PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis

Para configurar los objetos de creación de perfiles de Python para su análisis, utilice las PyinstrumentAnalysis clases cProfileAnalysis o como se muestra en el siguiente código de ejemplo. Muestra cómo configurar un objeto cProfileAnalysis y, si desea usar PyinstrumentAnalysis, cómo reemplazar el nombre de la clase.

python_analysis = cProfileAnalysis( local_profile_dir=tf_python_stats_dir, s3_path=tj.profiler_s3_output_path )

Hay los siguientes métodos disponibles para las clases PyinstrumentAnalysis y cProfileAnalysis, a fin de obtener los datos de las estadísticas de creación de perfiles de Python.

  • python_analysis.fetch_python_profile_stats_by_time(start_time_since_epoch_in_secs, end_time_since_epoch_in_secs): toma en cuenta la hora de inicio y la hora de finalización y devuelve las estadísticas de función de los pasos cuyas horas de inicio o finalización coinciden con el intervalo proporcionado.

  • python_analysis.fetch_python_profile_stats_by_step(start_step, end_step, mode, start_phase, end_phase): incluye un paso de inicio y un paso final y devuelve las estadísticas de función de todas las estadísticas de paso cuyo step perfilado cumpla con start_step <= step < end_step.

    • start_step y end_step (str): especifique el paso de inicio y el paso final para obtener los datos de las estadísticas de creación de perfiles de Python.

    • mode (str): especifique el modo del trabajo de entrenamiento mediante la clase enumeradora PythonProfileModes. El valor predeterminado es PythonProfileModes.TRAIN. Las opciones disponibles se proporcionan en la sección Training Modes and Phases for Python Profiling.

    • start_phase (str): especifique la fase de inicio en los pasos objetivo mediante la clase enumeradora StepPhase. Este parámetro permite crear perfiles entre las diferentes fases del entrenamiento. El valor predeterminado es StepPhase.STEP_START. Las opciones disponibles se proporcionan en la sección Training Modes and Phases for Python Profiling.

    • end_phase (str): especifique la fase final en los pasos objetivo mediante la clase enumeradora StepPhase. Este parámetro configura la fase final del entrenamiento. Las opciones disponibles son las mismas que las del parámetro start_phase. El valor predeterminado es StepPhase.STEP_END. Las opciones disponibles se proporcionan en la sección Training Modes and Phases for Python Profiling.

  • python_analysis.fetch_profile_stats_between_modes(start_mode, end_mode): obtiene estadísticas de la creación de perfiles de Python entre los modos de inicio y final.

  • python_analysis.fetch_pre_step_zero_profile_stats(): obtiene las estadísticas de la creación de perfiles de Python hasta el paso 0.

  • python_analysis.fetch_post_hook_close_profile_stats(): obtiene las estadísticas de la creación de perfiles de Python después de cerrar el enlace.

  • python_analysis.list_profile_stats()— Devuelve una DataFrame de las estadísticas de creación de perfiles de Python. Cada fila contiene los metadatos de cada instancia de creación de perfiles y el archivo de estadísticas correspondiente (uno por paso).

  • python_analysis.list_available_node_ids(): devuelve una lista de los id. de nodo disponibles para las estadísticas de creación de perfiles de Python.

Los métodos específicos de la clase cProfileAnalysis.

  • fetch_profile_stats_by_training_phase(): obtiene y agrega las estadísticas de creación de perfiles de Python para cada combinación posible de modos de inicio y finalización. Por ejemplo, si las fases de entrenamiento y validación se llevan a cabo con la creación de perfiles detallados habilitada, las combinaciones son (PRE_STEP_ZERO, TRAIN), (TRAIN, TRAIN), (TRAIN, EVAL), (EVAL, EVAL) y (EVAL, POST_HOOK_CLOSE). Se agregan todos los archivos de estadísticas de cada una de estas combinaciones.

  • fetch_profile_stats_by_job_phase(): obtiene y agrega las estadísticas de creación de perfiles de Python por fase de trabajo. Las fases del trabajo son initialization (creación de perfiles hasta el paso 0), training_loop (entrenamiento y validación) y finalization (creación de perfiles tras cerrar el enlace).