Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Prepara y ejecuta un trabajo de formación con SageMaker Profiler

Modo de enfoque
Prepara y ejecuta un trabajo de formación con SageMaker Profiler - Amazon SageMaker AI

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.

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.

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 GPUs mientras se ejecuta el trabajo de entrenamiento, modifique el script de entrenamiento mediante los módulos Python de SageMaker Profiler. 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.

Tenga en cuenta que los anotadores extraen las operaciones de. GPUs Para realizar operaciones de creación de perfiles CPUs, 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 del marco de SageMaker IA 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 14 de diciembre de 2023 implica un cambio importante. El nombre del paquete SageMaker Profiler Python se cambia de smppy asmprof. Esto es efectivo en los contenedores de SageMaker AI Framework para la TensorFlow versión 2.12 y versiones posteriores.

Si utiliza una de las versiones anteriores de los contenedores de SageMaker AI Framework, 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

El administrador de contextos de smprof.annotate() puede encapsular todas las funciones. 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 del marco de SageMaker IA y active Profiler SageMaker

El siguiente procedimiento muestra cómo preparar un estimador del marco de SageMaker IA 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 activar la creación de perfiles. CPUs El valor predeterminado es de 3600 segundos.

  2. Cree un estimador del marco de SageMaker IA con el profiler_config objeto creado en el paso anterior. En el siguiente código se 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 de AI Framework 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 de AI Framework 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 de AI Framework 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 del marco de SageMaker IA 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 archivo requirements.txt, añada una de las rutas de bucket de S3 para los SageMaker 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 usa un contenedor de Docker personalizado para entrenamiento, agregue uno de los SageMaker Archivos binarios del paquete Profiler Python a su 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 sobre SageMaker IA en general, consulta Cómo adaptar tu propio contenedor de entrenamiento.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.