Acceda a un contenedor de capacitación AWS Systems Manager para la depuración remota - 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.

Acceda a un contenedor de capacitación AWS Systems Manager para la depuración remota

Puede conectarse de forma segura a los contenedores de SageMaker entrenamiento a través AWS Systems Manager de (SSM). Esto le proporciona un acceso a nivel de consola para depurar los trabajos de formación que se están ejecutando dentro del contenedor. También puedes registrar los comandos y las respuestas que se transmiten a Amazon CloudWatch. Si utiliza su propia Amazon Virtual Private Cloud (VPC) para entrenar un modelo, puede utilizarla para configurar un punto final de VPC para SSM y conectarse AWS PrivateLink a los contenedores de forma privada a través de SSM.

Puede conectarse a SageMaker Framework Containers o conectarse a su propio contenedor de formación configurado con el entorno de formación. SageMaker

Configurar permisos de IAM

Para habilitar el SSM en su contenedor de SageMaker formación, debe configurar un rol de IAM para el contenedor. Para que usted o los usuarios de su AWS cuenta puedan acceder a los contenedores de formación a través de SSM, debe configurar los usuarios de IAM con permisos para usar SSM.

Rol de IAM

Para que un contenedor de SageMaker formación comience con el agente de SSM, proporciona un rol de IAM con permisos de SSM.

Para habilitar la depuración remota para su trabajo de formación, SageMaker debe iniciar el agente SSM en el contenedor de formación cuando comience el trabajo de formación. Para permitir que el agente SSM se comunique con el servicio SSM, añada la siguiente política a la función de IAM que utiliza para ejecutar su trabajo de formación.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }

Usuario de IAM

Agregue la siguiente política para proporcionar a un usuario de IAM permisos de sesión de SSM para conectarse a un destino de SSM. En este caso, el objetivo del SSM es un contenedor de entrenamiento. SageMaker

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }

Puede restringir a los usuarios de IAM para que se conecten únicamente a contenedores para tareas de formación específicas añadiendo la Condition clave, como se muestra en el siguiente ejemplo de política.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": [ "*" ], "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "sagemaker-training-job:*" ] } } } ] }

También puedes usar de forma explícita la clave de sagemaker:EnableRemoteDebug condición para restringir la depuración remota. El siguiente es un ejemplo de política para que los usuarios de IAM restrinjan la depuración remota.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyRemoteDebugInTrainingJob", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:UpdateTrainingJob" ], "Resource": "*", "Condition": { "BoolIfExists": { "sagemaker:EnableRemoteDebug": false } } } ] }

Para obtener más información, consulta las claves de estado de Amazon SageMaker en la Referencia AWS de autorización de servicio.

¿Cómo habilitar la depuración remota para un trabajo de SageMaker formación

En esta sección, aprenderás a habilitar la depuración remota al iniciar o actualizar un trabajo de formación en Amazon SageMaker.

SageMaker Python SDK

Con la clase estimator del SDK de SageMaker Python, puedes activar o desactivar la depuración remota mediante el enable_remote_debug parámetro o los enable_remote_debug() métodos and. disable_remote_debug()

Para habilitar la depuración remota al crear un trabajo de formación

Para habilitar la depuración remota al crear un nuevo trabajo de formación, defina el enable_remote_debug parámetro en. True El valor predeterminado esFalse, por lo que si no estableces este parámetro en absoluto, o lo estableces explícitamenteFalse, la funcionalidad de depuración remota estará deshabilitada.

import sagemaker session = sagemaker.Session() estimator = sagemaker.estimator.Estimator( ..., sagemaker_session=session, image_uri="<your_image_uri>", #must be owned by your organization or Amazon DLCs role=role, instance_type="ml.m5.xlarge", instance_count=1, output_path=output_path, max_run=1800, enable_remote_debug=True )

Para habilitar la depuración remota mediante la actualización de un trabajo de formación

Con los siguientes métodos de clases estimadoras, puede habilitar o deshabilitar la depuración remota mientras se ejecuta un trabajo SecondaryStatus de formación cuando el trabajo está en curso o. Downloading Training

# Enable RemoteDebug estimator.enable_remote_debug() # Disable RemoteDebug estimator.disable_remote_debug()
AWS SDK for Python (Boto3)

Para habilitar la depuración remota al crear un trabajo de formación

Para habilitar la depuración remota al crear un nuevo trabajo de formación, defina el valor de la EnableRemoteDebug clave True en el RemoteDebugConfig parámetro.

import boto3 sm = boto3.Session(region_name=region).client("sagemaker") # Start a training job sm.create_training_job( ..., TrainingJobName=job_name, AlgorithmSpecification={ // Specify a training Docker container image URI // (Deep Learning Container or your own training container) to TrainingImage. "TrainingImage": "<your_image_uri>", "TrainingInputMode": "File" }, RoleArn=iam_role_arn, OutputDataConfig=output_path, ResourceConfig={ "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "VolumeSizeInGB": 30 }, StoppingCondition={ "MaxRuntimeInSeconds": 86400 }, RemoteDebugConfig={ "EnableRemoteDebug": True } )

Para habilitar la depuración remota mediante la actualización de un trabajo de formación

Con la update_traing_job API, puede habilitar o deshabilitar la depuración remota mientras se está ejecutando un trabajo SecondaryStatus de formación cuando el trabajo está Downloading en curso o. Training

# Update a training job sm.update_training_job( TrainingJobName=job_name, RemoteDebugConfig={ "EnableRemoteDebug": True # True | False } )
AWS Command Line Interface (CLI)

Para habilitar la depuración remota al crear un trabajo de formación

Prepare un archivo de CreateTrainingJob solicitud en formato JSON, de la siguiente manera.

// train-with-remote-debug.json { "TrainingJobName": job_name, "RoleArn": iam_role_arn, "AlgorithmSpecification": { // Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage. "TrainingImage": "<your_image_uri>", "TrainingInputMode": "File" }, "OutputDataConfig": { "S3OutputPath": output_path }, "ResourceConfig": { "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "VolumeSizeInGB": 30 }, "StoppingCondition": { "MaxRuntimeInSeconds": 86400 }, "RemoteDebugConfig": { "EnableRemoteDebug": True } }

Después de guardar el archivo JSON, ejecute el siguiente comando en la terminal a la que envía el trabajo de formación. El siguiente comando de ejemplo supone que el archivo JSON tiene un nombretrain-with-remote-debug.json. Si lo ejecuta desde un bloc de notas de Jupyter, añada un signo de exclamación (!) al principio de la línea.

aws sagemaker create-training-job \ --cli-input-json file://train-with-remote-debug.json

Para habilitar la depuración remota mediante la actualización de un trabajo de formación

Prepare un archivo de UpdateTrainingJob solicitud en formato JSON, de la siguiente manera.

// update-training-job-with-remote-debug-config.json { "TrainingJobName": job_name, "RemoteDebugConfig": { "EnableRemoteDebug": True } }

Después de guardar el archivo JSON, ejecute el siguiente comando en la terminal a la que envía el trabajo de formación. El siguiente comando de ejemplo supone que el archivo JSON tiene un nombretrain-with-remote-debug.json. Si lo ejecuta desde un bloc de notas de Jupyter, añada un signo de exclamación (!) al principio de la línea.

aws sagemaker update-training-job \ --cli-input-json file://update-training-job-with-remote-debug-config.json

Acceda a su contenedor de formación

Puede acceder a un contenedor de formación cuando se SecondaryStatus trate del trabajo de formación correspondienteTraining. Los siguientes ejemplos de código muestran cómo comprobar el estado de su trabajo de formación mediante la DescribeTrainingJob API, cómo comprobar los inicios de sesión del trabajo de formación y cómo iniciar sesión en el contenedor de formación. CloudWatch

Para comprobar el estado de un trabajo de formación

SageMaker Python SDK

Para comprobar la calidad SecondaryStatus de un trabajo de formación, ejecuta el siguiente código del SDK de SageMaker Python.

import sagemaker session = sagemaker.Session() # Describe the job status training_job_info = session.describe_training_job(job_name) print(training_job_info)
AWS SDK for Python (Boto3)

Para comprobar si se SecondaryStatus trata de un trabajo de formación, ejecuta el siguiente código del SDK para Python (Boto3).

import boto3 session = boto3.session.Session() region = session.region_name sm = boto3.Session(region_name=region).client("sagemaker") # Describe the job status sm.describe_training_job(TrainingJobName=job_name)
AWS Command Line Interface (CLI)

Para comprobar el estado SecondaryStatus de un trabajo de formación, ejecuta el siguiente AWS CLI comando for. SageMaker

aws sagemaker describe-training-job \ --training-job-name job_name

Para buscar el nombre de host de un contenedor de formación

Para conectarse al contenedor de entrenamiento a través de SSM, utilice este formato para el ID de destino:sagemaker-training-job:<training-job-name>_algo-<n>, donde algo-<n> es el nombre del anfitrión del contenedor. Si su trabajo se ejecuta en una sola instancia, el host siempre algo-1 lo estará. Si ejecuta un trabajo de formación distribuido en varias instancias, SageMaker crea el mismo número de hosts y flujos de registro. Por ejemplo, si usas 4 instancias, SageMaker crea algo-1algo-2,algo-3, yalgo-4. Debe determinar qué flujo de registro desea depurar y su número de host. Para acceder a los flujos de registro asociados a un trabajo de formación, haga lo siguiente.

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

  2. En el panel de navegación izquierdo, selecciona Formación y, a continuación, Formación de trabajos.

  3. En la lista de trabajos de formación, elija el trabajo de formación que desee depurar. Se abre la página de detalles del trabajo de formación.

  4. En la sección Supervisar, selecciona Ver registros. La lista de registros de trabajos de formación relacionados se abre en la CloudWatch consola.

  5. Los nombres de los flujos de registro aparecen en <training-job-name>/algo-<n>-<time-stamp> formato y algo-<n> representan el nombre del host.

Para obtener más información sobre cómo se SageMaker administra la información de configuración para la formación distribuida de varias instancias, consulte Configuración de la formación distribuida.

Para acceder al contenedor de formación

Utilice el siguiente comando en la terminal para iniciar la sesión SSM (aws ssm start-session) y conectarse al contenedor de entrenamiento.

aws ssm start-session --target sagemaker-training-job:<training-job-name>_algo-<n>

Por ejemplo, si el nombre del trabajo de formación es training-job-test-remote-debug y el nombre del host esalgo-1, el ID de destino pasa sagemaker-training-job:training-job-test-remote-debug_algo-1 a ser. Si el resultado de este comando es similar aStarting session with SessionId:xxxxx, la conexión se ha realizado correctamente.

Acceso SSM con AWS PrivateLink

Si sus contenedores de formación se ejecutan en una Amazon Virtual Private Cloud que no está conectada a la Internet pública, puede utilizarlos AWS PrivateLink para habilitar SSM. AWS PrivateLink restringe todo el tráfico de red entre sus instancias de punto final, SSM y Amazon EC2 a la red de Amazon. Para obtener más información sobre cómo configurar el acceso SSM con AWS PrivateLink, consulte Configurar un punto de conexión de Amazon VPC para Session Manager.

Registre los comandos y los resultados de la sesión de SSM

Tras seguir las instrucciones de la sección Crear un documento de preferencias del administrador de sesiones (línea de comandos), puede crear documentos SSM que definan sus preferencias para las sesiones SSM. Puede usar los documentos SSM para configurar las opciones de sesión, como el cifrado de datos, la duración de la sesión y el registro. Por ejemplo, puede especificar si desea almacenar los datos del registro de sesión en un bucket de Amazon Simple Storage Service (Amazon S3) o en un grupo de CloudWatch Amazon Logs. Puede crear documentos que definan las preferencias generales para todas las sesiones de una AWS cuenta o documentos que definan las preferencias de las sesiones individuales. Región de AWS

Solución de problemas consultando los registros de errores de SSM

Amazon SageMaker carga los errores del agente SSM a tus CloudWatch registros del grupo de /aws/sagemaker/TrainingJobs registros. Los flujos de registro del agente SSM se nombran en este formato:. <job-name>/algo-<n>-<timestamp>/ssm Por ejemplo, si crea un trabajo de formación de dos nodos llamadotraining-job-test-remote-debug, el registro de trabajos de formación training-job-test-remote-debug/algo-<n>-<timestamp> y varios registros de errores del agente SSM training-job-test-remote-debug/algo-<n>-<timestamp>/ssm se cargan en sus registros. CloudWatch En este ejemplo, puedes revisar los flujos de */ssm registro para solucionar problemas relacionados con el SSM.

training-job-test-remote-debug/algo-1-1680535238 training-job-test-remote-debug/algo-2-1680535238 training-job-test-remote-debug/algo-1-1680535238/ssm training-job-test-remote-debug/algo-2-1680535238/ssm

Consideraciones

Tenga en cuenta lo siguiente cuando utilice la depuración SageMaker remota.

  • La depuración remota no es compatible con los contenedores de SageMaker algoritmos ni con los contenedores a partir de SageMaker ahora. AWS Marketplace

  • No se puede iniciar una sesión de SSM para los contenedores que tienen activado el aislamiento de red porque este aislamiento impide las llamadas de red salientes.