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
. CreateHyperParameterTuningJob
API
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 CreateHyperParameterTuningJob
operació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 } ], ..., }, ..., }