Crea acciones sobre las reglas con Amazon CloudWatch y AWS Lambda - 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.

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
  1. Abra la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación de la izquierda, en el nodo Registro, seleccione Grupos de registros.

  3. 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
  1. Abra la AWS Lambda consola en https://console.aws.amazon.com/lambda/.

  2. En el panel de navegación de la izquierda, seleccione Funciones y Crear una función.

  3. En la página Crear una función, seleccione la opción Crear desde cero.

  4. En la sección Información básica, introduzca un nombre de función (por ejemplo, debugger-rule-stop-training-job).

  5. En Runtime (Tiempo de ejecución), elija Python 3.7.

  6. En Permisos, expanda la opción desplegable y seleccione Cambiar el rol de ejecución predeterminado.

  7. 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 y AWSLambdaBasicExecutionRole 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()
  8. 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.

Paso 2: configurar la función de Lambda

Para configurar la función de Lambda
  1. 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 la StopTrainingJob API. La AWS SDK for Python (Boto3) client función SageMaker proporciona un método de alto nivel que activa la operación de la StopTrainingJob 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.

  2. 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
  1. Abra la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación de la izquierda, seleccione Reglas en el nodo Eventos.

  3. Seleccione Crear regla.

  4. 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" ] }
  5. 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.

  6. Seleccione Configurar los detalles y vaya a la página Paso 2: configurar detalles de la regla.

  7. Especifique el nombre de la definición de la CloudWatch regla. Por ejemplo, debugger-cw-event-rule.

  8. Para terminar, elija Crear una regla.

  9. 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:

    Panel de diseño para la CloudWatch configuración.

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.

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.