Configurar la creación de perfiles del marco - 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.

Configurar la creación de perfiles del marco

aviso

A favor de Amazon SageMaker Profiler, SageMaker Debugger desaprueba la función de creación de perfiles del marco a partir de las versiones 2.11 y 2.0. TensorFlow PyTorch Puede seguir utilizando la función en las versiones anteriores de los marcos y los SDK de la siguiente manera.

  • SageMaker SDK de Python <= v2.130.0

  • PyTorch >= v1.6.0, < v2.0

  • TensorFlow >= v2.3.1, < v2.11

Véase también 16 de marzo de 2023.

Para habilitar la creación de perfiles del marco del depurador, configure el parámetro al crear un estimador. La creación de perfiles del marco del depurador recopila métricas del marco, como los datos de la etapa de inicialización, los procesos de carga de datos, los operadores en Python de los marcos de aprendizaje profundo y los scripts de entrenamiento, la creación de perfiles detallados dentro y entre los pasos, con las opciones de cProfile o Pyinstrument. Con esta clase FrameworkProfile, puede configurar opciones de creación de perfiles de marcos personalizados.

nota

Antes de empezar con la creación de perfiles del marco del depurador, compruebe que el marco utilizado para crear el modelo sea compatible con el depurador para la creación de perfiles del marco. Para obtener más información, consulte Marcos y algoritmos compatibles.

El depurador guarda las métricas del marco en un bucket de S3 predeterminado. El formato del URI del bucket de S3 predeterminado es s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/profiler-output/.

Comience un trabajo de entrenamiento con el perfil del marco predeterminado

El siguiente código de ejemplo es la configuración del parámetro profiler_config más sencilla para iniciar la monitorización del sistema y la creación de perfiles del marco por defecto. La clase FrameworkProfile del siguiente código de ejemplo inicia la creación de perfiles del marco predeterminado cuando comienza un trabajo de entrenamiento. La creación de perfiles del marco del depurador incluye las siguientes opciones: creación de perfiles detallados, creación de perfiles del cargador de datos y creación de perfiles de Python.

from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile() )

Con la configuración de este parámetro profiler_config, el depurador utiliza los ajustes predeterminados de monitorización y creación de perfiles. El depurador monitoriza las métricas del sistema cada 500 milisegundos; perfila el quinto paso con la opción de creación de perfiles detallados; el séptimo paso con la opción de creación de perfiles del cargador de datos; y los pasos noveno, décimo y undécimo con la opción de creación de perfiles de Python.

Para encontrar las opciones de configuración de creación de perfiles disponibles, los ajustes de parámetros predeterminados y ejemplos de cómo configurarlos, 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 y SageMaker Debugger API, FrameworkProfile en el SDK de Amazon SageMaker Python.

Si quiere cambiar el intervalo de monitorización del sistema y activar la creación de perfiles del marco por defecto, puede especificar el parámetro system_monitor_interval_millis de forma explícita con el parámetro framework_profile_params. Por ejemplo, para monitorizar cada 1000 milisegundos y habilitar la creación de perfiles del marco por defecto, utilice el siguiente código de ejemplo.

from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile() )

Para obtener más información sobre la FrameworkProfile clase, consulte API de SageMaker depuración, FrameworkProfile en el SDK de Amazon SageMaker Python.

Comience un trabajo de entrenamiento con la monitorización del sistema predeterminada y una creación de perfiles de marco personalizada para los pasos específicos o un intervalo de tiempo objetivo

Si quiere especificar los pasos o intervalos de tiempo objetivo para perfilar su trabajo de entrenamiento, debe especificar los parámetros de la clase FrameworkProfile. Los siguientes ejemplos de código, muestran cómo especificar los rangos de destino para la creación de perfiles junto con la monitorización del sistema.

  • Para un rango de pasos objetivo

    Con el siguiente ejemplo de configuración, el depurador monitoriza todo el trabajo de entrenamiento cada 500 milisegundos (la monitorización predeterminada) y perfila un rango de pasos objetivo desde el paso 5 al paso 15 (para 10 pasos).

    from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile(start_step=5, num_steps=10) )

    Con el siguiente ejemplo de configuración, el depurador monitoriza todo el trabajo de entrenamiento cada 1000 milisegundos y perfila un rango de pasos objetivo desde el paso 5 al paso 15 (para 10 pasos).

    from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile(start_step=5, num_steps=10) )
  • Para un intervalo de tiempo objetivo

    Con el siguiente ejemplo de configuración, el depurador monitoriza todo el trabajo de entrenamiento cada 500 milisegundos (la monitorización predeterminada) y perfila un intervalo de tiempo objetivo a partir del tiempo actual de Unix durante 600 segundos.

    import time from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile(start_unix_time=int(time.time()), duration=600) )

    Con el siguiente ejemplo de configuración, el depurador monitoriza todo el trabajo de entrenamiento cada 1000 milisegundos y perfila un intervalo de tiempo objetivo a partir del tiempo actual de Unix durante 600 segundos.

    import time from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile(start_unix_time=int(time.time()), duration=600) )

    La creación de perfiles del marco se realiza para todas las opciones de creación de perfiles en el paso o intervalo de tiempo objetivo.

    Para obtener más información sobre las opciones de creación de perfiles disponibles, consulte las API de SageMaker depuración, FrameworkProfile en el SDK de Amazon SageMaker Python.

    La siguiente sección describe cómo programar las opciones de creación de perfiles disponibles.

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

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 TensorFlow perfiles y generador de PyTorch perfiles). Por ejemplo, si se utilizan TensorFlow, los enlaces del depurador permiten al generador de TensorFlow perfiles recopilar métricas específicas del marco. 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 del cargador 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 intervalo 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, DataloaderProfilingConfig y PythonProfilingConfig en el SDK de Amazon SageMaker Python.