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.
Crea acciones sobre las reglas con Amazon CloudWatch y AWS Lambda
Amazon CloudWatch recopila los registros de trabajos de formación de SageMaker modelos de Amazon y los registros de trabajos de procesamiento de reglas de Amazon SageMaker Debugger. Configure el depurador con Amazon CloudWatch Events y AWS Lambda tome medidas en función del estado de evaluación de las reglas del depurador.
CloudWatch Registra las reglas del depurador y los trabajos de formación
Para buscar registros de trabajos de entrenamiento y reglas del depurador
Abra la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. -
En el panel de navegación de la izquierda, en el nodo Registro, seleccione Grupos de registros.
-
En la lista de grupos de registros, haga lo siguiente:
-
Elija TrainingJobs/aws/sagemaker/ para los registros de trabajos de formación.
-
Elija /aws/sagemaker/ para los registros de trabajos de las reglas del depurador. ProcessingJobs
-
Puede utilizar el estado de trabajo de la regla de entrenamiento y de depuración que aparece en los CloudWatch registros para tomar medidas adicionales cuando surjan problemas de formación.
Para obtener más información sobre la supervisión de los trabajos de formación mediante el uso CloudWatch, consulte Supervisar Amazon SageMaker.
Configure el depurador para la finalización automática de trabajos de formación mediante CloudWatch Lambda
Las reglas del depurador supervisan el estado del trabajo de formación y la regla de CloudWatch eventos supervisa el estado de la evaluación del trabajo de entrenamiento con la regla del depurador.
Paso 1: Crear una función Lambda
Para crear una función de Lambda
Abra la AWS Lambda consola en https://console.aws.amazon.com/lambda/.
-
En el panel de navegación de la izquierda, seleccione Funciones y Crear una función.
-
En la página Crear una función, seleccione la opción Crear desde cero.
-
En la sección Información básica, introduzca un nombre de función (por ejemplo, debugger-rule-stop-training-job).
-
En Runtime (Tiempo de ejecución), elija Python 3.7.
-
En Permisos, expanda la opción desplegable y seleccione Cambiar el rol de ejecución predeterminado.
-
En Función de ejecución, elija Usar una función existente y elija la función de IAM que utilizará para los trabajos de formación. SageMaker
nota
Debe utilizar el rol de ejecución con
AmazonSageMakerFullAccess
yAWSLambdaBasicExecutionRole
asociados. De lo contrario, la función de Lambda no reaccionará correctamente a los cambios del estado de la regla del depurador en el trabajo de entrenamiento. Si no está seguro de qué función de ejecución se está utilizando, ejecute el siguiente código en un cuaderno de Jupyter para recuperar el resultado del rol de ejecución:import sagemaker sagemaker.get_execution_role()
-
En la parte inferior de la página, elija Create function.
En la siguiente imagen se ve un ejemplo de la página Crear una función, con los campos de entrada y las selecciones completadas.
![Página Crear una función.](images/debugger/debugger-lambda-create.png)
Paso 2: configurar la función de Lambda
Para configurar la función de Lambda
-
En la sección Código de la función de la página de configuración, pegue el siguiente script de Python en el panel del editor de código Lambda. La
lambda_handler
función supervisa el estado de evaluación de las reglas del depurador recopilado CloudWatch y activa la operación de laStopTrainingJob
API. La AWS SDK for Python (Boto3)client
función SageMaker proporciona un método de alto nivel que activa la operación de laStopTrainingJob
API.stop_training_job
import json import boto3 import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): training_job_name = event.get("detail").get("TrainingJobName") logging.info(f'Evaluating Debugger rules for training job: {training_job_name}') eval_statuses = event.get("detail").get("DebugRuleEvaluationStatuses", None) if eval_statuses is None or len(eval_statuses) == 0: logging.info("Couldn't find any debug rule statuses, skipping...") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } # should only attempt stopping jobs with InProgress status training_job_status = event.get("detail").get("TrainingJobStatus", None) if training_job_status != 'InProgress': logging.debug(f"Current Training job status({training_job_status}) is not 'InProgress'. Exiting") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } client = boto3.client('sagemaker') for status in eval_statuses: logging.info(status.get("RuleEvaluationStatus") + ', RuleEvaluationStatus=' + str(status)) if status.get("RuleEvaluationStatus") == "IssuesFound": secondary_status = event.get("detail").get("SecondaryStatus", None) logging.info( f'About to stop training job, since evaluation of rule configuration {status.get("RuleConfigurationName")} resulted in "IssuesFound". ' + f'\ntraining job "{training_job_name}" status is "{training_job_status}", secondary status is "{secondary_status}"' + f'\nAttempting to stop training job "{training_job_name}"' ) try: client.stop_training_job( TrainingJobName=training_job_name ) except Exception as e: logging.error( "Encountered error while trying to " "stop training job {}: {}".format( training_job_name, str(e) ) ) raise e return None
Para obtener más información sobre la interfaz del editor de código Lambda, consulte Creación de funciones mediante el editor de consola AWS Lambda.
-
Omita todos los demás ajustes y seleccione Guardar, en la parte superior de la página de configuración.
Paso 3: Crear una regla de CloudWatch eventos y vincularla a la función Lambda para el depurador
Para crear una regla de CloudWatch eventos y vincularla a la función Lambda para Debugger
Abra la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.
-
En el panel de navegación de la izquierda, seleccione Reglas en el nodo Eventos.
-
Seleccione Crear regla.
-
En la sección Origen del evento de la página Paso 1: Crear regla, elija SageMakerNombre del servicio y elija SageMakerTraining Job State Change para el tipo de evento. La vista previa del patrón de eventos tendrá un aspecto similar al de las siguientes cadenas JSON de ejemplo:
{ "source": [ "aws.sagemaker" ], "detail-type": [ "SageMaker Training Job State Change" ] }
-
En la sección Objetivos, elija Agregar objetivo* y elija la función debugger-rule-stop-trainingLambda -job que creó. Este paso vincula la regla de CloudWatch eventos con la función Lambda.
-
Seleccione Configurar los detalles y vaya a la página Paso 2: configurar detalles de la regla.
-
Especifique el nombre de la definición de la CloudWatch regla. Por ejemplo, debugger-cw-event-rule.
-
Para terminar, elija Crear una regla.
-
Vuelva a la página de configuración de la función de Lambda y actualice la página. Confirme que está configurada correctamente en el panel Diseño. La regla CloudWatch Events debe registrarse como activador de la función Lambda. El diseño de la configuración debe ser similar al siguiente ejemplo:
Ejecutar cuadernos de ejemplo para probar la finalización automática de los trabajos de entrenamiento
Puede ejecutar los siguientes cuadernos de ejemplo, que están preparados para experimentar con la interrupción de un trabajo de entrenamiento utilizando las reglas integradas del depurador.
-
En este ejemplo de cuaderno, se ejecuta un trabajo de entrenamiento que tiene un problema de desaparición de gradiente. La regla VanishingGradient integrada del depurador se utiliza al construir el SageMaker TensorFlow estimador. Cuando la regla del depurador detecta el problema, finaliza el trabajo de entrenamiento.
-
Detecte un entrenamiento estancado e invoque acciones mediante la regla del depurador SageMaker
Este cuaderno de ejemplo ejecuta un script de entrenamiento con una línea de código que fuerza el modo suspensión durante diez minutos. La regla StalledTrainingRule integrada del depurador invoca los problemas y detiene el trabajo de entrenamiento.
Desactive la regla de CloudWatch eventos para dejar de utilizar la terminación automática de trabajos de formación
Si desea deshabilitar la finalización automática de los trabajos de formación, debe deshabilitar la regla de CloudWatch eventos. En el panel Lambda Designer, elija el bloque EventBridge (CloudWatch Eventos) vinculado a la función Lambda. Aquí se muestra un EventBridgepanel debajo del panel Diseñador (por ejemplo, consulte la captura de pantalla anterior). Seleccione la casilla de verificación situada junto a EventBridge (CloudWatch Eventos): y debugger-cw-event-rule, a continuación, seleccione Desactivar. Si desea utilizar la funcionalidad de rescisión automática más adelante, puede volver a activar la regla de CloudWatch eventos.