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