Defina las métricas y las variables de entorno - 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.

Defina las métricas y las variables de entorno

Un trabajo de ajuste optimiza hiperparámetros para trabajos de entrenamiento que lanza mediante el uso de una métrica para evaluar el rendimiento. Esta guía muestra cómo definir las métricas para que puedas usar un algoritmo personalizado para el entrenamiento o usar un algoritmo integrado de Amazon SageMaker. Esta guía también muestra cómo especificar variables de entorno durante un trabajo de ajuste automático del modelo (AMT).

Definición de métricas

SageMaker El ajuste de hiperparámetros de Amazon analiza los algoritmos stdout y las stderr transmisiones de su aprendizaje automático para encontrar métricas, como la pérdida o la precisión de la validación. Las métricas muestran el rendimiento del modelo en el conjunto de datos.

En las secciones siguientes se describe cómo utilizar dos tipos de algoritmos para el entrenamiento: integrados y personalizados.

Usa un algoritmo integrado para el entrenamiento

Si utiliza uno de los algoritmos SageMaker integrados, las métricas ya están definidas. Además, los algoritmos integrados envían automáticamente métricas al ajuste de hiperparámetros para optimización. Estas métricas también se escriben en los CloudWatch registros de Amazon. Para obtener más información, consulta Registrar SageMaker eventos de Amazon con Amazon CloudWatch.

Para la métrica objetiva del trabajo de ajuste, elija una de las métricas que emite el algoritmo integrado. Para obtener una lista de las métricas disponibles, consulte la sección de ajuste del modelo para ver el algoritmo correspondiente en Use Amazon Builted SageMaker Algorithms or Pretrained Models.

Puede elegir hasta 40 métricas para que su trabajo de ajuste las supervise. Seleccione una de esas métricas para que sea la métrica objetiva. El trabajo de ajuste de hiperparámetros muestra el trabajo de entrenamiento que obtuvo el mejor rendimiento en comparación con la métrica objetiva.

nota

El ajuste de hiperparámetros envía automáticamente un hiperparámetro adicional _tuning_objective_metric para pasar la métrica objetiva al trabajo de ajuste y utilizarlo durante el entrenamiento.

Use un algoritmo personalizado para el entrenamiento

En esta sección se muestra cómo definir sus propias métricas para usar su propio algoritmo personalizado para el entrenamiento. Al hacerlo, asegúrese de que su algoritmo escriba al menos una métrica en stderr o stdout. El ajuste de hiperparámetros analiza estas secuencias para encontrar métricas del algoritmo que muestren el rendimiento del modelo en el conjunto de datos.

Las métricas de un trabajo de ajuste se pueden definir especificando un nombre y una expresión regular para cada métrica que su trabajo de ajuste monitoriza. A continuación, pase estas definiciones de métricas al TrainingJobDefinition parámetro del MetricDefinitions campo deAlgorithmSpecification. CreateHyperParameterTuningJobAPI

A continuación, se muestra un ejemplo del resultado de un registro escrito en stderr o stdout por un algoritmo de entrenamiento.

GAN_loss=0.138318; Scaled_reg=2.654134; disc:[-0.017371,0.102429] real 93.3% gen 0.0% disc-combined=0.000000; disc_train_loss=1.374587; Loss = 16.020744; Iteration 0 took 0.704s; Elapsed=0s

El siguiente ejemplo de código muestra cómo utilizar expresiones regulares en Python (regex). Se utiliza para buscar el resultado del registro de muestra y capturar los valores numéricos de cuatro métricas distintas.

[ { "Name": "ganloss", "Regex": "GAN_loss=(.*?);", }, { "Name": "disc-combined", "Regex": "disc-combined=(.*?);", }, { "Name": "discloss", "Regex": "disc_train_loss=(.*?);", }, { "Name": "loss", "Regex": "Loss = (.*?);", }, ]

En las expresiones regulares, los paréntesis () se utilizan para agrupar partes de la expresión regular.

  • Para la métrica loss que se define en el ejemplo de código, la expresión (.*?); captura cualquier carácter entre el texto exacto "Loss=" y el primer carácter de punto y coma (;).

  • El carácter . indica a la expresión regular que coincida con cualquier carácter.

  • El carácter * significa que coincida con cero o más caracteres.

  • El carácter ? significa capturar solo hasta la primera instancia del carácter ;.

La métrica de pérdida definida en la muestra de código capturará Loss = 16.020744 del resultado de la muestra.

Elija una de las métricas que defina como la métrica objetiva del trabajo de ajuste. Si utiliza el SageMaker API, especifique el valor de la name clave en el HyperParameterTuningJobObjective campo del HyperParameterTuningJobConfig parámetro que va a enviar a la CreateHyperParameterTuningJoboperación.

Especificar variables de entorno

SageMaker AMToptimiza los hiperparámetros de un trabajo de ajuste para encontrar los mejores parámetros para el rendimiento del modelo. Puede usar variables de entorno para configurar su trabajo de ajuste para cambiar su comportamiento. También puede usar variables de entorno que haya utilizado durante el entrenamiento en su trabajo de ajuste.

Si desea utilizar una variable de entorno de su trabajo de ajuste o especificar una nueva variable de entorno, introduzca un valor de cadena dentro del Environment SageMaker HyperParameterTrainingJobDefinitionAPI. Pase esta definición de trabajo de formación al CreateHyperParameterTuningJobAPI.

Por ejemplo, la variable de entorno SM_LOG_LEVEL se puede establecer en los siguientes valores para personalizar la salida de un contenedor de Python.

NOTSET=0 DEBUG=10 INFO=20 WARN=30 ERROR=40 CRITICAL=50

Por ejemplo, para configurar el nivel de registro como para 10 depurar los registros del contenedor, defina la variable de entorno dentro del HyperParameterTrainingJobDefinition, de la siguiente manera.

{ "HyperParameterTuningJobConfig": { ..., } "TrainingJobDefinition": { ..., "Environment" : [ { "SM_LOG_LEVEL": 10 } ], ..., }, ..., }