Supervisión del sistema predeterminada y creación de perfiles de marco personalizada con diferentes opciones de creación de perfiles
En esta sección se proporciona información sobre las clases de configuración de perfiles compatibles, así como un ejemplo de configuración. Puede utilizar las siguientes clases de configuración de creación de perfiles para gestionar las opciones de creación de perfiles del marco:
-
DetailedProfilingConfig
: especifique un paso o intervalo de tiempo objetivo para perfilar las operaciones del marco mediante los generadores de perfiles del marco nativos (generador de perfiles de TensorFlow y generador de perfiles de PyTorch). Por ejemplo, si usa TensorFlow, los enlaces del depurador permiten que el generador de perfiles de TensorFlow recopile métricas del marco específicas de TensorFlow. La creación de perfiles detallados le permite crear un perfil de todos los operadores del marco en un paso previo (antes del primer paso), dentro de los pasos y entre los pasos de un trabajo de entrenamiento. nota
La creación de perfiles detallados puede aumentar considerablemente el consumo de memoria de la GPU. No recomendamos activar la creación de perfiles detallados durante más de un par de pasos.
-
DataLoaderProfilingConfig
: especifique un paso o intervalo de tiempo objetivo para perfilar los procesos de carga de datos del marco de aprendizaje profundo. El depurador recopila todos los eventos de carga de datos de los marcos. nota
La creación de perfiles de los cargadores de datos puede reducir el rendimiento del entrenamiento al recopilar información de los cargadores de datos. No recomendamos activar la creación de perfiles del cargador de datos durante más de un par de pasos.
El depurador está preconfigurado para anotar los procesos del cargador de datos solo para los contenedores de AWS del aprendizaje profundo. El depurador no puede perfilar los procesos del cargador de datos desde ningún otro contenedor de entrenamiento externo o personalizado.
-
PythonProfilingConfig
: especifique un paso o rango de tiempo objetivo para perfilar las funciones de Python. También puede elegir entre dos generadores de perfiles de Python: cProfile y Pyinstrument. -
cProfile: el generador de perfiles de Python estándar. cProfile recopila información de cada operador de Python llamado durante el entrenamiento. Con cProfile, el depurador ahorra tiempo acumulado y anotaciones para cada llamada de función, proporcionando detalles completos sobre las funciones de Python. En el aprendizaje profundo, por ejemplo, las funciones llamadas con más frecuencia pueden ser los filtros convolucionales y los operadores de paso hacia atrás, y cProfile perfila cada una de ellas. Para la opción cProfile, también puede seleccionar una opción de temporizador: tiempo total, tiempo de la CPU y tiempo fuera de la CPU. Si bien puede perfilar cada llamada de función que se ejecuta en procesadores (tanto CPU como GPU) en tiempo de CPU, también puede identificar cuellos de botella de E/S o de red con la opción de tiempo fuera de CPU. El valor predeterminado es el tiempo total y el depurador crea un perfil tanto del tiempo de la CPU como del tiempo fuera de la CPU. Con cProfile, puede desglosar cada una de las funciones al analizar los datos del perfil.
-
Pyinstrument: Pyinstrument es un generador de perfiles de Python de bajo costo que funciona en función del muestreo. Con la opción Pyinstrument, el depurador toma muestras de los eventos de creación de perfiles cada milisegundo. Como Pyinstrument mide el tiempo transcurrido como un reloj de pared en lugar del tiempo de la CPU, la opción Pyinstrument puede ser una mejor opción que la opción cProfile para reducir el ruido de la creación de perfiles (filtrando las llamadas de funciones irrelevantes que son acumulativamente rápidas) y capturar operadores que realmente requieren un uso intensivo de cómputo (lentitud acumulativa) para entrenar el modelo. Con Pyinstrument, puede ver un árbol de llamadas a funciones y comprender mejor la estructura y la causa raíz de la lentitud.
nota
Habilitar la creación de perfiles de Python puede ralentizar el tiempo total de entrenamiento. cProfile perfila los operadores de Python llamados con más frecuencia en cada llamada, por lo que el tiempo de procesamiento de la creación de perfiles aumenta con respecto al número de llamadas. En el caso de Pyinstrument, el tiempo acumulado de creación de perfiles aumenta con respecto al tiempo debido a su mecanismo de muestreo.
-
El siguiente ejemplo de configuración muestra la estructura completa cuando se utilizan las diferentes opciones de creación de perfiles con valores específicos.
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
) ) )
Para obtener más información sobre las opciones de creación de perfiles disponibles, consulte DetailedProfilingConfig