Definición de las métricas de capacitación - Amazon SageMaker

Definición de las métricas de capacitación

Sagemaker analiza automáticamente los registros de los trabajos de entrenamiento y envía las métricas de entrenamiento a CloudWatch. De forma predeterminada, SageMaker envía las métricas de utilización de los recursos del sistema que figuran en Trabajos de SageMaker y métricas de puntos de conexión. Si quiere que Sagemaker analice los registros y envíe métricas personalizadas de un trabajo de entrenamiento de su propio algoritmo a CloudWatch, debe especificar las definiciones de las métricas pasando el nombre de las métricas y las expresiones regulares al configurar una solicitud de trabajo de entrenamiento de Sagemaker.

Puede especificar las métricas de las que quiere realizar un seguimiento mediante la consola de SageMaker, el SDK Python de SageMaker o la API de SageMaker de bajo nivel.

Si utiliza su propio algoritmo, haga lo siguiente:

  • Asegúrese de que el algoritmo escribe en los registros las métricas que desea capturar.

  • Defina una expresión regular que busque de forma precisa en los registros para capturar los valores de las métricas que desea enviar a CloudWatch.

Por ejemplo, suponga que su algoritmo emite métricas para errores de entrenamiento y errores de validación:

Train_error=0.138318; Valid_error=0.324557;

Si quiere monitorizar ambas métricas en CloudWatch, el diccionario de las definiciones de métricas debería tener el siguiente aspecto:

[ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]

En la expresión regular para la métrica train:error definida anteriormente, la primera parte de la expresión regular encuentra el texto exacto "Train_error =", y la expresión (.*?); captura cualquier carácter hasta que aparece el primer carácter de punto y coma. En esta expresión, el paréntesis indica a la expresión regular que debe capturar lo que está dentro de ellos, . significa cualquier carácter, * significa cero o más caracteres y ? significa realizar la captura solo hasta la primera instancia del carácter ;.

Definir métricas con el SDK de Python de SageMaker

Defina las métricas que desea enviar a CloudWatch especificando una lista de nombres de métricas y expresiones regulares como el argumento metric_definitions al inicializar un objeto Estimator. Por ejemplo, si desea monitorizar las métricas train:error y validation:error en CloudWatch, su inicialización Estimator podría tener el siguiente aspecto:

import sagemaker from sagemaker.estimator import Estimator estimator = Estimator( image_uri="your-own-image-uri", role=sagemaker.get_execution_role(), sagemaker_session=sagemaker.Session(), instance_count=1, instance_type='ml.c4.xlarge', metric_definitions=[ {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'}, {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'} ] )

Para obtener más información sobre el entrenamiento con los estimadores Amazon SageMaker Python SDK, consulte Sagemaker Python SDK en GitHub.

Definir métricas con la consola de SageMaker

Si elige la opción Your own algorithm container in ECR (Su propio contenedor de algoritmos en ECR) como fuente de algoritmos en la consola de SageMaker al crear un trabajo de entrenamiento, añada las definiciones de métricas en la sección Metrics (Métricas). La siguiente captura de pantalla muestra cómo debería quedar después de añadir los nombres de las métricas de ejemplo y las expresiones regulares correspondientes.

Formulario Opciones de algoritmo de ejemplo en la consola

Definir métricas mediante la API de bajo nivel de SageMaker

Defina las métricas que desea enviar a CloudWatch especificando una lista de los nombres de métricas y expresiones regulares en el campo MetricDefinitions del parámetro de entrada AlgorithmSpecification que transfiere a la operación CreateTrainingJob. Por ejemplo, si desea monitorizar las métricas train:error y validation:error en CloudWatch, su AlgorithmSpecification podría tener el siguiente aspecto:

"AlgorithmSpecification": { "TrainingImage": your-own-image-uri, "TrainingInputMode": "File", "MetricDefinitions" : [ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ] }

Para obtener más información acerca de la definición y ejecución de un trabajo de entrenamiento mediante la API de bajo nivel de SageMaker, consulte CreateTrainingJob.