Utilice Amazon SageMaker Profiler para perfilar las actividades en los AWS recursos informáticos - 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.

Utilice Amazon SageMaker Profiler para perfilar las actividades en los AWS recursos informáticos

Amazon SageMaker Profiler se encuentra actualmente en versión preliminar y está disponible sin coste alguno si es compatible Regiones de AWS. La versión general de Amazon SageMaker Profiler (si existe) puede incluir funciones y precios diferentes a los que se ofrecen en la versión preliminar.

Amazon SageMaker Profiler es una función de Amazon SageMaker que proporciona una vista detallada de los recursos AWS informáticos aprovisionados durante el entrenamiento de modelos de aprendizaje profundo. SageMaker Se centra en la elaboración de perfiles del uso de la CPU y la GPU, la ejecución del núcleo en las GPU, el lanzamiento del núcleo en las CPU, las operaciones de sincronización, las operaciones de memoria entre las CPU y las GPU, las latencias entre los lanzamientos del núcleo y las ejecuciones correspondientes, y la transferencia de datos entre las CPU y las GPU. SageMaker Profiler también ofrece una interfaz de usuario (UI) que visualiza el perfil, un resumen estadístico de los eventos perfilados y la cronología de un trabajo de capacitación para rastrear y comprender la relación temporal de los eventos entre las GPU y las CPU.

nota

SageMaker Profiler admite PyTorch TensorFlow y está disponible en AWS Deep Learning Containers para SageMaker. Para obtener más información, consulte Marcos, imágenes y tipos Regiones de AWS de instancias compatibles.

Para científicos de datos

El entrenamiento de modelos de aprendizaje profundo en un clúster de computación grande suele tener problemas de optimización computacional, como cuellos de botella, latencias de lanzamiento del kernel, límite de memoria y bajo consumo de recursos.

Para identificar estos problemas de rendimiento computacional, es necesario analizar más a fondo los recursos de computación para comprender qué kernels introducen latencias y qué operaciones provocan cuellos de botella. Los científicos de datos pueden aprovechar la interfaz de usuario de SageMaker Profiler para visualizar el perfil detallado de los trabajos de formación. La interfaz de usuario proporciona un panel de control con gráficos resumidos y una interfaz de cronograma para realizar un seguimiento de todos los eventos de los recursos de computación. Los científicos de datos también pueden añadir anotaciones personalizadas para realizar un seguimiento de determinadas partes del trabajo de formación mediante los módulos SageMaker Profiler Python.

Para administradores

A través de la página de inicio de Profiler en la SageMaker consola o el SageMaker dominio, puede administrar los usuarios de la aplicación Profiler si es administrador de una AWS cuenta o dominio. SageMaker Cada usuario del dominio puede acceder a su propia aplicación Profiler con los permisos concedidos. Como SageMaker administrador y usuario del dominio, puede crear y eliminar la aplicación Profiler en función del nivel de permisos del que disponga.

Marcos, imágenes y tipos Regiones de AWS de instancias compatibles

Esta característica es compatible con los siguientes marcos de machine learning y Regiones de AWS.

nota

Para usar esta función, asegúrate de tener instalada al menos la versión 2.180.0 del SDK de SageMaker Python.

SageMaker imágenes del marco preinstaladas con Profiler SageMaker

SageMaker Profiler viene preinstalado en los siguientes AWS Deep Learning Containers para. SageMaker

PyTorchimágenes

PyTorch versiones AWS URI de imagen DLC
2.2.0

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker

2.1.0

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker

2.0.1

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu121-ubuntu20.04-sagemaker

1.13.1

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker

TensorFlow imágenes

TensorFlow versiones AWS URI de imagen DLC
2.13.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.13.0-gpu-py310-cu118-ubuntu20.04-sagemaker

2.12.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker

2.11.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.11.0-gpu-py39-cu112-ubuntu20.04-sagemaker

importante

La distribución y el mantenimiento de los contenedores del marco de las tablas anteriores se rigen por la Política de soporte del marco gestionada por el servicio AWS Deep Learning Containers. Le recomendamos encarecidamente que actualice a las versiones de marco compatibles actualmente si utiliza versiones de marco anteriores que ya no son compatibles.

nota

Si desea utilizar SageMaker Profiler para otras imágenes de framework o para sus propias imágenes de Docker, puede instalar SageMaker Profiler utilizando los archivos binarios del paquete Profiler SageMaker Python que se proporcionan en la siguiente sección.

SageMaker Archivos binarios del paquete Profiler Python

Si desea configurar su propio contenedor de Docker, usar SageMaker Profiler en otros contenedores prediseñados o instalar el paquete Profiler SageMaker Python de forma local TensorFlow, use uno de los siguientes archivos binarios. PyTorch En función de las versiones de Python y CUDA de su entorno, elija una de las siguientes opciones.

PyTorch

TensorFlow

Para obtener más información sobre cómo instalar SageMaker Profiler mediante los archivos binarios, consulte. (Opcional) Instale el paquete SageMaker Profiler Python

Soportado Regiones de AWS

SageMaker El generador de perfiles está disponible en las siguientes Regiones de AWS versiones.

  • Este de EE. UU. (Norte de Virginia) (us-east-1)

  • Este de EE. UU. (Ohio) (us-east-2)

  • Oeste de EE. UU. (Oregón) (us-west-2)

  • Europa (Fráncfort) (eu-central-1)

  • Europa (Irlanda) (eu-west-1)

Tipos de instancias admitidas

SageMaker Profiler admite la creación de perfiles de los trabajos de formación en los siguientes tipos de instancias.

Elaboración de perfiles de CPU y GPU

  • ml.g4dn.12xlarge

  • ml.g5.24xlarge

  • ml.g5.48xlarge

  • ml.p3dn.24xlarge

  • ml.p4de.24xlarge

  • ml.p4d.24xlarge

  • ml.p5.48xlarge

Solo creación de perfiles de GPU

  • ml.g5.2xlarge

  • ml.g5.4xlarge

  • ml.g5.8xlarge

  • ml.g5.16.xlarge

Requisitos previos

En la siguiente lista se muestran los requisitos previos para empezar a utilizar SageMaker Profiler.

  • Un SageMaker dominio configurado con Amazon VPC en tu AWS cuenta.

    Para obtener instrucciones sobre cómo configurar un dominio, consulta Cómo incorporar un SageMaker dominio de Amazon mediante una configuración rápida. También debes añadir perfiles de usuario de dominio para que los usuarios individuales puedan acceder a la aplicación de interfaz de usuario Profiler. Para obtener más información, consulte Añadir y eliminar perfiles de usuario de SageMaker dominio.

  • La siguiente lista es el conjunto mínimo de permisos para usar la aplicación de interfaz de usuario Generador de perfiles.

    • sagemaker:CreateApp

    • sagemaker:DeleteApp

    • sagemaker:DescribeTrainingJob

    • sagemaker:Search

    • s3:GetObject

    • s3:ListBucket

Prepare y ejecute un trabajo de formación con SageMaker Profiler

La configuración para ejecutar un trabajo de formación con el SageMaker Profiler consta de dos pasos: adaptar el guion de formación y configurar el lanzador de tareas de SageMaker formación.

Paso 1: Adapte su script de entrenamiento con los módulos SageMaker Profiler Python

Para empezar a capturar las ejecuciones del núcleo en las GPU mientras se ejecuta el trabajo de entrenamiento, modifique el script de entrenamiento mediante los módulos SageMaker Profiler Python. Importe la biblioteca y añada los métodos start_profiling() y stop_profiling() para definir el principio y el final de la creación de perfiles. También puede utilizar anotaciones personalizadas opcionales para añadir marcadores en el script de entrenamiento a fin de visualizar las actividades del hardware durante determinadas operaciones de cada paso.

Ten en cuenta que los anotadores extraen las operaciones de las GPU. Para las operaciones de creación de un perfil en las CPU, no es necesario añadir ninguna anotación adicional. La creación de perfiles de CPU también se activa cuando especificas la configuración de creación de perfiles, con la que practicará en Paso 2: Cree un estimador de SageMaker marcos y active Profiler SageMaker .

nota

Elaborar un perfil de todo un trabajo de entrenamiento no es el uso más eficiente de los recursos. Recomendamos perfilar un máximo de 300 pasos de un trabajo de entrenamiento.

importante

La versión en curso 14 de diciembre de 2023 implica un cambio radical. El nombre del paquete SageMaker Profiler Python se cambia de smppy asmprof. Esto es efectivo en los contenedores de SageMaker Framework para la TensorFlow versión 2.12 y versiones posteriores.

Si utiliza una de las versiones anteriores de SageMaker Framework Containers, como la TensorFlow v2.11.0, el paquete Profiler SageMaker Python seguirá disponible como. smppy Si no está seguro de qué versión o del nombre del paquete debe utilizar, sustituya la declaración de importación del paquete SageMaker Profiler por el siguiente fragmento de código.

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

Método 1. Utilice el administrador de contexto smprof.annotate para anotar todas las funciones

Puede agrupar todas las funciones con el smprof.annotate() administrador de contexto. Se recomienda utilizar este contenedor si desea crear perfiles por funciones en lugar de por líneas de código. El siguiente script de ejemplo muestra cómo implementar el administrador de contexto para encapsular el ciclo de entrenamiento y todas las funciones en cada iteración.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): with smprof.annotate("step_"+str(i)): inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() with smprof.annotate("Forward"): outputs = net(inputs) with smprof.annotate("Loss"): loss = criterion(outputs, labels) with smprof.annotate("Backward"): loss.backward() with smprof.annotate("Optimizer"): optimizer.step() SMProf.stop_profiling()

Método 1. Utilice smprof.annotation_begin() y smprof.annotation_end() anote una línea de código específica en funciones

También puede definir anotaciones para perfilar líneas de código específicas. Puede establecer el punto de inicio y el punto de conexión exactos de la creación de perfiles a nivel de líneas de código individuales, no mediante las funciones. Por ejemplo, en el siguiente script, el step_annotator se define el al principio de cada iteración y termina al final de la iteración. Mientras tanto, se definen otros anotadores detallados para cada operación y encapsulan las operaciones objetivo a lo largo de cada iteración.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): step_annotator = smprof.annotation_begin("step_" + str(i)) inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() forward_annotator = smprof.annotation_begin("Forward") outputs = net(inputs) smprof.annotation_end(forward_annotator) loss_annotator = smprof.annotation_begin("Loss") loss = criterion(outputs, labels) smprof.annotation_end(loss_annotator) backward_annotator = smprof.annotation_begin("Backward") loss.backward() smprof.annotation_end(backward_annotator) optimizer_annotator = smprof.annotation_begin("Optimizer") optimizer.step() smprof.annotation_end(optimizer_annotator) smprof.annotation_end(step_annotator) SMProf.stop_profiling()

Tras anotar y configurar los módulos de iniciación del generador de perfiles, guarde el guion para enviarlo mediante un lanzador de tareas de SageMaker formación en el siguiente paso 2. En el ejemplo del lanzador se presupone que el script de entrenamiento se llama train_with_profiler_demo.py.

Paso 2: Cree un estimador de SageMaker marcos y active Profiler SageMaker

El siguiente procedimiento muestra cómo preparar un estimador de SageMaker marco para el entrenamiento con el SDK de SageMaker Python.

  1. Configure un objeto profiler_config mediante los módulos ProfilerConfig y Profiler de la siguiente manera.

    from sagemaker import ProfilerConfig, Profiler profiler_config = ProfilerConfig( profile_params = Profiler(cpu_profiling_duration=3600) )

    La siguiente es la descripción del módulo Profiler y su argumento.

    • Profiler: El módulo para activar SageMaker Profiler con el trabajo de formación.

      • cpu_profiling_duration (int): especifique la duración en segundos para la creación de perfiles en las CPU. El valor predeterminado es de 3600 segundos.

  2. Cree un estimador de SageMaker marco con el profiler_config objeto creado en el paso anterior. El código siguiente muestra un ejemplo de creación de un PyTorch estimador. Si desea crear un TensorFlow estimador, impórtelo sagemaker.tensorflow.TensorFlow en su lugar y especifique una de TensorFlowlas versiones compatibles con Profiler. SageMaker Para obtener más información sobre los tipos de instancias admitidos, consulte SageMaker imágenes del marco preinstaladas con Profiler SageMaker .

    import sagemaker from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version="2.0.0", role=sagemaker.get_execution_role(), entry_point="train_with_profiler_demo.py", # your training job entry point source_dir=source_dir, # source directory for your training script output_path=output_path, base_job_name="sagemaker-profiler-demo", hyperparameters=hyperparameters, # if any instance_count=1, # Recommended to test with < 8 instance_type=ml.p4d.24xlarge, profiler_config=profiler_config )
  3. Inicie el trabajo de entrenamiento ejecutando el método fit. Con wait=False, puede silenciar los registros de los trabajos de entrenamiento y dejar que se ejecuten en segundo plano.

    estimator.fit(wait=False)

Mientras ejecuta el trabajo de entrenamiento o una vez finalizado el trabajo, puede pasar al tema siguiente en Abre la aplicación de interfaz de SageMaker usuario Profiler y empezar a explorar y visualizar los perfiles guardados.

Si desea acceder directamente a los datos del perfil guardados en el bucket de Amazon S3, utilice el siguiente script para recuperar el URI de S3.

import os # This is an ad-hoc function to get the S3 URI # to where the profile output data is saved def get_detailed_profiler_output_uri(estimator): config_name = None for processing in estimator.profiler_rule_configs: params = processing.get("RuleParameters", dict()) rule = config_name = params.get("rule_to_invoke", "") if rule == "DetailedProfilerProcessing": config_name = processing.get("RuleConfigurationName") break return os.path.join( estimator.output_path, estimator.latest_training_job.name, "rule-output", config_name, ) print( f"Profiler output S3 bucket: ", get_detailed_profiler_output_uri(estimator) )

(Opcional) Instale el paquete SageMaker Profiler Python

Para usar SageMaker Profiler en imágenes de TensorFlow marcos PyTorch o marcos que no figuran en SageMaker imágenes del marco preinstaladas con Profiler SageMaker él o en su propio contenedor Docker personalizado con fines de formación, puede instalar SageMaker Profiler mediante uno de los. SageMaker Archivos binarios del paquete Profiler Python

Opción 1: Instale el paquete SageMaker Profiler al iniciar un trabajo de formación

Si desea utilizar SageMaker Profiler para realizar tareas de formación con TensorFlow imágenes PyTorch o imágenes que no aparecen en ellasSageMaker imágenes del marco preinstaladas con Profiler SageMaker , cree un requirements.txt archivo y ubíquelo en la ruta que especifique para el source_dir parámetro del estimador de SageMaker marcos en el paso 2. Para obtener más información sobre la configuración de un requirements.txt archivo en general, consulte Uso de bibliotecas de terceros en la documentación del SDK de SageMaker Python. En el requirements.txt archivo, añada una de las rutas de bucket de S3 paraSageMaker Archivos binarios del paquete Profiler Python.

# requirements.txt https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Opción 2: instale el paquete SageMaker Profiler en sus contenedores Docker personalizados

Si utilizas un contenedor Docker personalizado para la formación, añade uno de ellos SageMaker Archivos binarios del paquete Profiler Python a tu Dockerfile.

# Install the smprof package version compatible with your CUDA version RUN pip install https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Para obtener información sobre cómo ejecutar un contenedor Docker personalizado para el entrenamiento SageMaker en general, consulta Cómo adaptar tu propio contenedor de entrenamiento.

Abre la aplicación de interfaz de SageMaker usuario Profiler

Puede acceder a la aplicación de interfaz de usuario SageMaker Profiler a través de las siguientes opciones.

Opción 1: inicie la interfaz de usuario del SageMaker generador de perfiles desde la página de detalles del dominio

Si tiene acceso a la SageMaker consola, puede utilizar esta opción.

Ve a la página de detalles del dominio

El siguiente procedimiento muestra cómo ir a la página de detalles del dominio.

  1. Abre la SageMaker consola de Amazon en https://console.aws.amazon.com/sagemaker/.

  2. En el panel de navegación izquierdo, selecciona dominios.

  3. En la lista de dominios, seleccione el dominio en el que desee iniciar la aplicación SageMaker Profiler.

Inicie la aplicación SageMaker Profiler UI

El siguiente procedimiento muestra cómo iniciar la aplicación SageMaker Profiler que está relacionada con un perfil de usuario.

  1. En la página de detalles del dominio, seleccione la pestaña Perfiles de usuario.

  2. Identifique el perfil de usuario para el que desea iniciar la aplicación de interfaz de usuario SageMaker Profiler.

  3. Elija Launch (Lanzar) para el perfil de usuario seleccionado y elija Profiler (Generador de perfiles).

Opción 2: inicie la aplicación de interfaz de usuario de SageMaker Profiler desde la página de inicio de SageMaker Profiler de la consola SageMaker

El siguiente procedimiento describe cómo iniciar la aplicación de interfaz de usuario de SageMaker Profiler desde la página de inicio de SageMaker Profiler de la consola. SageMaker Si tiene acceso a la SageMaker consola, puede utilizar esta opción.

  1. Abre la SageMaker consola de Amazon en https://console.aws.amazon.com/sagemaker/.

  2. En el panel de navegación izquierdo, seleccione Profiler (Generador de perfiles).

  3. En Comenzar, selecciona el dominio en el que quieres lanzar la aplicación Studio Classic. Si su perfil de usuario solo pertenece a un dominio, no verá la opción para seleccionar un dominio.

  4. Seleccione el perfil de usuario para el que desea iniciar la aplicación de interfaz de usuario SageMaker Profiler. Si no hay ningún perfil de usuario en el dominio, elija Crear perfil de usuario. Para obtener más información sobre la creación de un nuevo perfil de usuario, consulte Añadir y eliminar perfiles de usuario.

  5. Seleccione Open Profiler (Abrir generador de perfiles).

Opción 3: usar la función de inicio de aplicaciones en el SDK de SageMaker Python

Si es un usuario de SageMaker dominio y solo tiene acceso a SageMaker Studio, puede acceder a la aplicación de interfaz de usuario SageMaker Profiler a través de SageMaker Studio Classic ejecutando la sagemaker.interactive_apps.detail_profiler_app.DetailProfilerAppfunción.

Ten en cuenta que SageMaker Studio Classic es la experiencia anterior a la interfaz de usuario de Studio antes de re:Invent 2023 y se migrará como aplicación a una interfaz de usuario de Studio de nuevo diseño en re:Invent 2023. La aplicación de interfaz de usuario SageMaker Profiler está disponible a nivel de SageMaker dominio y, por lo tanto, requiere tu ID de dominio y tu nombre de perfil de usuario. Actualmente, la DetailedProfilerApp función solo funciona en la aplicación SageMaker Studio Classic; la función recoge correctamente la información del dominio y del perfil de usuario de SageMaker Studio Classic.

Para dominios, usuarios de dominios y Studio creados antes de re:Invent 2023, Studio Classic sería la experiencia predeterminada, a menos que la hayas actualizado siguiendo las instrucciones de Migración desde Amazon SageMaker Studio Classic. Si este es tu caso, no es necesario realizar ninguna otra acción y puedes iniciar directamente la aplicación de interfaz de usuario SageMaker Profiler ejecutando la función. DetailProfilerApp

Si has creado un dominio y Studio nuevos después de re:Invent 2023, inicia la aplicación Studio Classic en la interfaz de usuario de Studio y, a continuación, ejecuta la DetailProfilerApp función para iniciar la aplicación de interfaz de usuario de Profiler. SageMaker

Ten en cuenta que la DetailedProfilerApp función no funciona en otros IDE de aprendizaje SageMaker automático, como la aplicación Studio, la JupyterLab aplicación SageMaker SageMaker Studio Code Editor y SageMaker las instancias de Notebook. Si ejecutas la DetailedProfilerApp función en esos IDE, devolverá una URL a la página de inicio de Profiler en la SageMaker consola, en lugar de un enlace directo para abrir la aplicación de interfaz de usuario de Profiler.

Explore los datos de salida del perfil visualizados en la interfaz de usuario de Profiler SageMaker

En esta sección, se explica la interfaz de usuario del SageMaker generador de perfiles y se proporcionan consejos sobre cómo utilizarla y obtener información al respecto.

Cargar perfil

Al abrir la interfaz de usuario del SageMaker generador de perfiles, se abre la página Cargar perfil. Para cargar y generar Dashboard (Panel de control) y Timeline (Línea temporal), siga el siguiente procedimiento.

Para cargar el perfil de un trabajo de entrenamiento
  1. En la sección List of training jobs (Lista de trabajos de entrenamiento), utilice la casilla de verificación para elegir el trabajo de entrenamiento para el que desea cargar el perfil.

  2. Elija Load (Cargar). El nombre del trabajo debe aparecer en la sección Loaded profile (Perfil cargado), en la parte superior.

  3. Pulse el botón de radio situado a la izquierda de Job name (Nombre del trabajo) para generar el Dashboard (Panel de control) y Timeline (Línea temporal). Tenga en cuenta que cuando selecciona el botón de opción, la interfaz de usuario abre automáticamente Dashboard (Panel de control). Tenga en cuenta también que si genera las visualizaciones mientras el estado del trabajo y el estado de carga aún parecen estar en curso, la interfaz de usuario del SageMaker generador de perfiles genera gráficos de panel y una cronología con los datos de perfil más recientes recopilados del trabajo de formación en curso o los datos del perfil cargados parcialmente.

sugerencia

Puede cargar y visualizar un perfil a la vez. Para cargar otro perfil, primero debe descargar el perfil cargado anteriormente. Para descargar un perfil, utilice el icono de la papelera situado en el extremo derecho del perfil, en la sección Loaded profile (Perfil cargado).

Captura de pantalla de la página Cargar perfil en la interfaz de usuario del generador de SageMaker perfiles

Panel de control

Cuando termine de cargar y seleccionar el trabajo de entrenamiento, la interfaz de usuario abre la página de Dahsboard (Panel de control), que incluye los siguientes paneles de forma predeterminada.

  • GPU active time (Tiempo de actividad de la GPU): este gráfico circular muestra el porcentaje de tiempo de actividad de la GPU en comparación con el tiempo de inactividad de la GPU. Puedes comprobar si tus GPU están más activas que inactivas durante todo el trabajo de entrenamiento. El tiempo de actividad de la GPU se basa en los puntos de datos del perfil con una tasa de utilización superior al 0 %, mientras que el tiempo de inactividad de la GPU se basa en los puntos de datos perfilados con un 0 % de utilización.

  • GPU utilization over time (Utilización de la GPU a lo largo del tiempo): este gráfico cronológico muestra la tasa media de utilización de la GPU a lo largo del tiempo por nodo, agrupando todos los nodos en un único gráfico. Puede comprobar si las GPU tienen una carga de trabajo desequilibrada, problemas de infrautilización, cuellos de botella o problemas de inactividad durante determinados intervalos de tiempo. Para realizar un seguimiento de la tasa de utilización a nivel de GPU individual y de las ejecuciones del kernel relacionadas, utilice la Interfaz de línea de tiempo. Tenga en cuenta que la recopilación de actividades de la GPU comienza desde donde agregó la función de inicio del generador de perfiles SMProf.start_profiling() en su script de entrenamiento y termina en SMProf.stop_profiling().

  • GPU active time (Tiempo de actividad de la CPU): este gráfico circular muestra el porcentaje de tiempo de actividad de la CPU en comparación con el tiempo de inactividad de la CPU. Puede comprobar si las CPU están más activas que inactivas durante todo el trabajo de entrenamiento. El tiempo de actividad de la GCU se basa en los puntos de datos del perfil con una tasa de utilización superior al 0 %, mientras que el tiempo de inactividad de la CPU se basa en los puntos de datos perfilados con un 0 % de utilización.

  • CPU utilization over time (Utilización de la CPU a lo largo del tiempo): este gráfico cronológico muestra la tasa media de utilización de la CPU a lo largo del tiempo por nodo, agrupando todos los nodos en un único gráfico. Puede comprobar si las CPU tienen cuellos de botella o están infrautilizadas durante determinados intervalos de tiempo. Para realizar un seguimiento de la tasa de utilización de las CPU en función del uso individual de la GPU y de las ejecuciones del kernel, utilice la Interfaz de línea de tiempo. Tenga en cuenta que las métricas de uso comienzan desde el principio, desde la inicialización del trabajo.

  • Tiempo empleado por todos los kernels de GPU: en este gráfico circular se muestran todos los kernels de GPU utilizados durante el trabajo de entrenamiento. Muestra los 15 kernels de GPU principales de forma predeterminada como sectores individuales y todos los demás kernels en un sector. Pase el ratón sobre los sectores para ver información más detallada. El valor muestra el tiempo total de funcionamiento de los kernels de la GPU en segundos y el porcentaje se basa en el tiempo total del perfil.

  • Tiempo empleado por los 15 principales kernels de GPU: en este gráfico circular se muestran todos los kernels de GPU que se utilizaron durante el trabajo de entrenamiento. Muestra los 15 kernels de GPU principales como sectores individuales. Pase el ratón sobre los sectores para ver información más detallada. El valor muestra el tiempo total de funcionamiento de los kernels de la GPU en segundos y el porcentaje se basa en el tiempo total del perfil.

  • Launch counts of all GPU kernels (Número de lanzamientos de todos los kernels de GPU): este gráfico circular muestra el número de lanzamientos de cada kernel de GPU lanzados durante el trabajo de entrenamiento. Muestra los 15 kernels de GPU principales como sectores individuales y todos los demás kernels en un sector. Pase el ratón sobre los sectores para ver información más detallada. El valor muestra el recuento total de los kernels de GPU lanzados y el porcentaje se basa en el número total de todos los kernels.

  • Launch counts of all CPU kernels (Número de lanzamientos de los 15 kernels de CPU): este gráfico circular muestra el número de lanzamientos de cada kernel de CPU lanzados durante el trabajo de entrenamiento. Muestra los 15 kernels de GPU principales. Pase el ratón sobre los sectores para ver información más detallada. El valor muestra el recuento total de los kernels de GPU lanzados y el porcentaje se basa en el número total de todos los kernels.

  • Step time distribution (Distribución del tiempo de paso): este histograma muestra la distribución de la duración de los pasos en las GPU. Este gráfico se genera solo después de añadir el anotador de pasos al script de entrenamiento.

  • Kernel precision distribution (Distribución de precisión del kernel): este gráfico circular muestra el porcentaje de tiempo dedicado a ejecutar los kernels en diferentes tipos de datos, como FP32, FP16, INT32 e INT8.

  • GPU activity distribution (Distribución de la actividad de la GPU): este gráfico circular muestra el porcentaje de tiempo dedicado a las actividades de la GPU, como la ejecución de los kernels, la memoria (memcpy y memset) y la sincronización (sync).

  • GPU memory operations distribution (Distribución de las operaciones de memoria de la GPU): este gráfico circular muestra el porcentaje de tiempo dedicado a las operaciones de memoria de la GPU. Esto visualiza las actividades memcopy y ayuda a identificar si su trabajo de entrenamiento está dedicando demasiado tiempo a determinadas operaciones de memoria.

  • Create a new histogram (Crear un histograma nuevo): cree un diagrama nuevo de una métrica personalizada que haya anotado manualmente durante Paso 1: Adapte su script de entrenamiento con los módulos SageMaker Profiler Python. Al añadir una anotación personalizada a un histograma nuevo, seleccione o escriba el nombre de la anotación que ha añadido en el script de entrenamiento. Por ejemplo, en el script de entrenamiento de demostración del paso 1,step, Forward, Backward, Optimize y Loss están las anotaciones personalizadas. Al crear un histograma nuevo, estos nombres de anotación deberían aparecer en el menú desplegable para seleccionar las métricas. Si elige Backward, la interfaz de usuario añade al panel de control el histograma del tiempo dedicado a las pasadas hacia atrás a lo largo del tiempo perfilado. Este tipo de histograma es útil para comprobar si hay valores atípicos que tardan anormalmente más tiempo y provocan problemas de embotellamiento.

En las siguientes capturas de pantalla se muestra la relación entre el tiempo de actividad de la GPU y la CPU y la tasa media de utilización de la GPU y la CPU con respecto al tiempo por nodo de procesamiento.

Captura de pantalla de la página del panel de control en la interfaz de usuario del generador de perfiles SageMaker

En la siguiente captura de pantalla se muestra un ejemplo de gráficos circulares para comparar el número de veces que se lanzan los kernels de la GPU y medir el tiempo empleado en ejecutarlos. En los paneles Tiempo empleado por todos los kernels de la GPU y Recuento de lanzamientos de todos los kernels de la GPU, también puede especificar un número entero en el campo de entrada de k para ajustar el número de leyendas que se muestran en los gráficos. Por ejemplo, si especifica 10, los gráficos muestran los 10 kernels más ejecutados y lanzados, respectivamente.

Captura de pantalla de la página del panel de control de la interfaz de usuario del SageMaker generador de perfiles

En la siguiente captura de pantalla se muestra un ejemplo de paso, tiempo, duración, histograma y gráficos circulares para la distribución de precisión del kernel, la distribución de la actividad de la GPU y la distribución del funcionamiento de la memoria de la GPU.

Captura de pantalla de la página del panel de control de la interfaz de usuario del SageMaker generador de perfiles

Interfaz de línea de tiempo

Para obtener una visión detallada de los recursos informáticos a nivel de las operaciones y los kernels programados en las CPU y ejecutados en las GPU, utilice la interfaz de Timeline (Línea de tiempo).

Puedes acercar y alejar la imagen y desplazarte hacia la izquierda o hacia la derecha en la interfaz de la línea de tiempo con el ratón, las teclas [w, a, s, d] o las cuatro teclas de flecha del teclado.

sugerencia

Para obtener más consejos sobre los métodos abreviados de teclado para interactuar con la interfaz de Timeline (Línea de tiempo), seleccione Keyboard shortcuts (Métodos abreviados de teclado) en el panel izquierdo.

Las pistas de la línea de tiempo están organizadas en una estructura de árbol, lo que proporciona información desde el nivel del host hasta el nivel del dispositivo. Por ejemplo, si ejecuta instancias de N con ocho GPU en cada una, la estructura temporal de cada instancia sería la siguiente.

  • algo-inode: estas son las SageMaker etiquetas que se utilizan para asignar los trabajos a las instancias aprovisionadas. El dígito inode se asigna de forma aleatoria. Por ejemplo, si usa 4 instancias, esta sección se expande de algo-1 a algo-4.

    • CPU: en esta sección, puede comprobar la tasa media de utilización de la CPU y los contadores de rendimiento.

    • GPU: en esta sección, puede comprobar la tasa de utilización media de la GPU, la tasa de utilización de cada GPU individual y los kernels.

      • SUM Utilization (Utilización de SUM): las tasas de uso medio de la GPU por instancia.

      • HOST-0 PID-123: un nombre único asignado a cada pista de proceso. El acrónimo PID es el ID del proceso y el número que se le asocia es el número de ID del proceso que se registra durante la captura de datos del proceso. En esta sección se muestra la siguiente información del proceso.

        • Utilización de GPU-inum_gpu: la tasa de utilización de la inum_gpu-ésima GPU a lo largo del tiempo.

        • Dispositivo GPU-inum_gpu: el kernel se ejecuta en el inum_gpu-ésimo dispositivo GPU.

          • stream icuda_stream: secuencias CUDA que muestran cómo el kernel se ejecuta en el dispositivo GPU. Para obtener más información sobre las transmisiones de CUDA, consulte las diapositivas en PDF en CUDA C/C++ Streams and Concurrency proporcionadas por NVIDIA.

        • Host GPU-inum_gpu: el kernel se inicia en el inum_gpu-ésimo host de la GPU.

En las siguientes capturas de pantalla se muestra la línea de tiempo del perfil de un trabajo de entrenamiento realizado en instancias ml.p4d.24xlarge equipadas con 8 GPU NVIDIA A100 Tensor Core en cada una.

La siguiente es una vista ampliada del perfil, en la que se imprimen una docena de pasos, incluido un cargador de datos intermitente entre step_232 y step_233 para recuperar el siguiente lote de datos.

Captura de pantalla de la página de cronología de la interfaz de usuario de SageMaker Profiler, que muestra el perfil de un ejemplo de trabajo de formación.

Para cada CPU, puede realizar un seguimiento de los contadores de uso y rendimiento de la CPU, como "clk_unhalted_ref.tsc" y "itlb_misses.miss_causes_a_walk", que son indicativos de las instrucciones que se ejecutan en la CPU.

Para cada GPU, puede ver una línea de tiempo del host y una del dispositivo. Los lanzamientos del kernel se producen en la línea de tiempo del host y las ejecuciones del kernel se realizan en la línea temporal del dispositivo. También puede ver las anotaciones (como avanzar, retroceder y optimizar) si ha añadido un script de entrenamiento en la cronología del host de la GPU.

En la vista cronológica, también puede realizar un seguimiento de los pares de núcleos launch-and-run . Esto le ayuda a entender cómo se ejecuta un lanzamiento del kernel programado en un host (CPU) en el dispositivo GPU correspondiente.

sugerencia

Pulse la tecla f para ampliar el kernel seleccionado.

La siguiente captura de pantalla es una vista ampliada de step_233 y step_234 desde la captura de pantalla anterior. El intervalo temporal seleccionado en la siguiente captura de pantalla corresponde a la operación AllReduce, un paso esencial de comunicación y sincronización en el entrenamiento distribuido, que se ejecuta en el dispositivo GPU-0. En la captura de pantalla, observe que el inicio del kernel en el host de la GPU-0 se conecta con el kernel que se ejecuta en la secuencia 1 de dispositivos de la GPU-0, indicada con una flecha en color cian.

Captura de pantalla de la página de cronología de la interfaz de usuario del SageMaker generador de perfiles

También aparecen dos pestañas de información en el panel inferior de la interfaz de usuario al seleccionar un intervalo de tiempo, como se muestra en la captura de pantalla anterior. La pestaña Current Selection (Selección actual) muestra los detalles del kernel seleccionado y del lanzamiento del kernel conectado desde el servidor. La dirección de conexión es siempre del host (CPU) al dispositivo (GPU), ya que cada kernel de la GPU siempre se llama desde una CPU. La pestaña Connections (Conexiones) muestra el par de inicio y ejecución del kernel elegido. Puede seleccionar cualquiera de ellas para moverla al centro de la vista Timeline (Línea de tiempo).

En la siguiente captura de pantalla se amplía aún más la combinación de inicio y ejecución de la operación AllReduce.

Captura de pantalla de la página de cronología de la interfaz de usuario del SageMaker generador de perfiles

Información

En Information (Información), puede acceder a la información sobre el trabajo de entrenamiento cargado, como el tipo de instancia, los Nombres de recurso de Amazon (ARN) (ARN) de los recursos de computación aprovisionados para el trabajo, los nombres de los nodos y los hiperparámetros.

Configuración

De forma predeterminada, la instancia de la aplicación SageMaker Profiler UI está configurada para cerrarse tras 2 horas de inactividad. En Settings (Ajustes), use los siguientes parámetros para ajustar el temporizador de cierre automático.

  • Enable app auto shutdown (Habilitar el cierre de la aplicación): seleccione y configúrelo como Enabled (Habilitado) para permitir que la aplicación se cierre automáticamente después del número especificado de horas de inactividad. Para desactivar la función de apagado automático, selecciona DIsabled (Desactivado).

  • Auto shutdown threshold in hours (Umbral de cierre automático en horas): si selecciona Enabled (Habilitado) para Enable app auto shutdown (Habilitar apierre automático de aplicación), puede establecer el tiempo límite en horas para que la aplicación se cierre automáticamente. De forma predeterminada, se establece en 2.

Preguntas frecuentes sobre el uso de Profiler SageMaker

Utilice las siguientes preguntas frecuentes para encontrar respuestas sobre el uso de SageMaker Profiler.

P: Recibo un mensaje de error, ModuleNotFoundError: No module named 'smppy'

Desde diciembre de 2023, el nombre del paquete SageMaker Profiler Python ha cambiado de smppy smprof a para resolver un problema de nombre de paquete duplicado; ya lo smppy usa un paquete de código abierto.

Por lo tanto, si lo ha estado utilizando smppy desde antes de diciembre de 2023 y tiene este ModuleNotFoundError problema, es posible que se deba a que el nombre del paquete de su script de entrenamiento estaba desactualizado mientras tenía el smprof paquete más reciente instalado o estaba utilizando uno de los últimos. SageMaker imágenes del marco preinstaladas con Profiler SageMaker En ese caso, asegúrate de sustituir todas las menciones por «smprofen el guion de smppy formación».

Al actualizar el nombre del paquete Python de SageMaker Profiler en sus scripts de entrenamiento, para evitar confusiones sobre la versión del nombre del paquete que debe usar, considere la posibilidad de usar una declaración de importación condicional, como se muestra en el siguiente fragmento de código.

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

Tenga en cuenta también que, si lo ha estado utilizando smppy durante la actualización a la TensorFlow versión PyTorch o versiones más recientes, asegúrese de instalar el smprof paquete más reciente siguiendo las instrucciones que aparecen en. (Opcional) Instale el paquete SageMaker Profiler Python

P: Recibo un mensaje de error ModuleNotFoundError: No module named 'smprof'

En primer lugar, asegúrese de utilizar uno de los contenedores SageMaker Framework compatibles oficialmente. Si no usa uno de esos, puede instalar el smprof paquete siguiendo las instrucciones que aparecen en(Opcional) Instale el paquete SageMaker Profiler Python.

P: No puedo importar ProfilerConfig

Si no puede importar ProfilerConfig el script del iniciador de tareas mediante el SDK de SageMaker Python, es posible que su entorno local o el núcleo de Jupyter tengan una versión bastante desactualizada del SDK de Python SageMaker . Asegúrese de actualizar el SDK a la versión más reciente.

$ pip install --upgrade sagemaker

P: Recibo un mensaje de error aborted: core dumped when importing smprof into my training script

En una versión anterior desmprof, este problema se producía con la versión PyTorch 2.0+ y PyTorch Lightning. Para resolver este problema, instale también el smprof paquete más reciente siguiendo las instrucciones que se encuentran en(Opcional) Instale el paquete SageMaker Profiler Python.

P: No encuentro la interfaz de usuario SageMaker de Profiler en SageMaker Studio. ¿Cómo puedo encontrarla?

Si tiene acceso a la SageMaker consola, elija una de las siguientes opciones.

Si es usuario de un dominio y no tiene acceso a la SageMaker consola, puede acceder a la aplicación a través de SageMaker Studio Classic. Si este es tu caso, elige la siguiente opción.

Consideraciones

Tenga en cuenta lo siguiente cuando utilice SageMaker Profiler.