Definición de intervalos de hiperparámetros - 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.

Definición de intervalos de hiperparámetros

En esta guía, se muestra cómo utilizar las SageMaker API para definir los rangos de hiperparámetros. También proporciona una lista de tipos de escalado de hiperparámetros que puede utilizar.

Elegir hiperparámetros e intervalos afecta significativamente al rendimiento del trabajo de ajuste. El ajuste de hiperparámetros encuentra los mejores valores de hiperparámetros para su modelo buscando en un rango de valores que usted especifica para cada hiperparámetro ajustable. También puede especificar hasta 100 hiperparámetros estáticos que no cambien durante el trabajo de ajuste. Puede utilizar hasta 100 hiperparámetros en total (estáticos y ajustables). Para obtener instrucciones sobre cómo elegir hiperparámetros e intervalos, consulte Prácticas recomendadas para el ajuste de hiperparámetros. También puede utilizar el ajuste automático para encontrar la configuración óptima de los trabajos de ajuste. Para obtener más información, consulte la siguiente sección Ajuste automático.

nota

SageMaker El ajuste automático del modelo (AMT) puede añadir hiperparámetros adicionales que contribuyen al límite de 100 hiperparámetros en total. Actualmente, para pasar la métrica objetivo al trabajo de ajuste para utilizarla durante el entrenamiento, SageMaker se añade automáticamente. _tuning_objective_metric

Hiperparámetros estáticos

Utilice hiperparámetros estáticos para los casos siguientes: Por ejemplo, puede usar AMT para ajustar el modelo mediante param1 (un parámetro ajustable) y param2 (un parámetro estático). Si lo hace, utilice un espacio de búsqueda para param1 que se encuentre entre dos valores y pase param2 como un hiperparámetro estático, de la siguiente manera.

param1: ["range_min","range_max"] param2: "static_value"

Los hiperparámetros estáticos tienen la siguiente estructura:

"StaticHyperParameters": { "objective" : "reg:squarederror", "dropout_rate": "0.3" }

Puedes usar la SageMaker API de Amazon para especificar pares de valores clave en el campo StaticHyperParámetros del HyperParameterTrainingJobDefinition parámetro que pasas a la operación CreateHyperParameterTuningJob.

Hiperparámetros dinámicos

Puede utilizar la SageMaker API para definir los rangos de hiperparámetros. Especifique los nombres de hiperparámetros e intervalos de valores en el campo ParameterRanges del parámetro HyperParameterTuningJobConfig que pasa a la operación CreateHyperParameterTuningJob.

El campo tiene ParameterRanges tres subcampos: categórico, entero y continuo. Puede definir hasta 30 hiperparámetros ajustables en total (categóricos + enteros + continuos) para realizar búsquedas.

nota

Cada hiperparámetro categórico puede tener como máximo 30 valores diferentes.

Los hiperparámetros dinámicos tienen la siguiente estructura:

"ParameterRanges": { "CategoricalParameterRanges": [ { "Name": "tree_method", "Values": ["auto", "exact", "approx", "hist"] } ], "ContinuousParameterRanges": [ { "Name": "eta", "MaxValue" : "0.5", "MinValue": "0", "ScalingType": "Auto" } ], "IntegerParameterRanges": [ { "Name": "max_depth", "MaxValue": "10", "MinValue": "1", "ScalingType": "Auto" } ] }

Si crea un trabajo de ajuste con una estrategia Grid, solo puede especificar valores categóricos. No es necesario proporcionar el MaxNumberofTrainingJobs. Este valor se deduce del número total de configuraciones que se pueden producir a partir de sus parámetros categóricos. Si se especifica, el valor de MaxNumberOfTrainingJobs debe ser igual al número total de combinaciones categóricas distintas posibles.

Ajuste automático

Para ahorrar tiempo y recursos al buscar rangos de hiperparámetros, recursos o métricas objetivas, el ajuste automático puede adivinar automáticamente los valores óptimos para algunos campos de hiperparámetros. Utilice el ajuste automático para buscar valores óptimos para los siguientes campos:

  • ParameterRanges— Los nombres y rangos de los hiperparámetros que un trabajo de ajuste puede optimizar.

  • ResourceLimits— Los recursos máximos que se utilizarán en un trabajo de ajuste. Estos recursos pueden incluir el número máximo de trabajos de entrenamiento, el tiempo de ejecución máximo de un trabajo de ajuste y el número máximo de trabajos de entrenamiento que se pueden ejecutar al mismo tiempo.

  • TrainingJobEarlyStoppingTipo: indicador que detiene un trabajo de formación si no mejora significativamente con respecto a una métrica objetiva. El valor predeterminado es activado. Para obtener más información, consulte Detener trabajos de entrenamiento pronto.

  • RetryStrategy— El número de veces que se debe volver a intentar un trabajo de formación. Los valores distintos de cero de RetryStrategy pueden aumentar la probabilidad de que el trabajo se complete correctamente.

  • Strategy: especifica cómo el ajuste de hiperparámetros elige las combinaciones de valores de hiperparámetros que se van a utilizar en el trabajo de entrenamiento que lanza.

  • ConvergenceDetected— Un indicador que indica que el ajuste automático del modelo (AMT) ha detectado la convergencia del modelo.

Para usar el ajuste automático, haga lo siguiente:

  1. Especifique el hiperparámetro y un valor de ejemplo en el AutoParameters campo de la ParameterRangesAPI.

  2. Habilite el ajuste automático.

AMT determinará si sus hiperparámetros y valores de ejemplo son aptos para el ajuste automático. Los hiperparámetros que se pueden utilizar en el ajuste automático se asignan automáticamente al tipo de rango de parámetros adecuado. Luego, AMT utiliza ValueHint para seleccionar un rango óptimo para usted. Puede usar la API DescribeHyperParameterTrainingJob para ver estos rangos.

En el siguiente ejemplo se muestra cómo configurar un trabajo de ajuste que utiliza ajuste automático. En el ejemplo de configuración, el hiperparámetro max_depth tiene ValueHint con un valor de ejemplo de 4.

config = { 'Autotune': {'Mode': 'Enabled'}, 'HyperParameterTuningJobName':'my-autotune-job', 'HyperParameterTuningJobConfig': { 'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'}, 'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1}, 'ParameterRanges': { 'AutoParameters': [ {'Name': 'max_depth', 'ValueHint': '4'} ] } }, 'TrainingJobDefinition': { .... }

Continuando con el ejemplo anterior, se crea un trabajo de ajuste después de incluir la configuración anterior en una llamada a la API CreateHyperParameterTuningJob. A continuación, el autoajuste convierte el hiperparámetro max_depth en hiperparámetro. AutoParameters IntegerParameterRanges La siguiente respuesta de una API DescribeHyperParameterTrainingJob muestra que los valores óptimos IntegerParameterRanges para max_depth están comprendidos entre 2 y 8.

{ 'HyperParameterTuningJobName':'my_job', 'HyperParameterTuningJobConfig': { 'ParameterRanges': { 'IntegerParameterRanges': [ {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'}, ], } }, 'TrainingJobDefinition': { ... }, 'Autotune': {'Mode': 'Enabled'} }

Tipos de escalado de hiperparámetros

Para los rangos de hiperparámetros enteros y continuos, puede elegir la escala que desee que utilice el ajuste de hiperparámetros. Por ejemplo, para buscar en el rango de valores, puede especificar un valor para el campo ScalingType del rango de hiperparámetros. Puede elegir entre los siguientes tipos de escalado de hiperparámetros:

Auto

SageMaker el ajuste del hiperparámetro elige la mejor escala para el hiperparámetro.

Lineal

El ajuste de hiperparámetros busca los valores en el rango de hiperparámetros utilizando una escala lineal. Normalmente, esta opción se elige si el rango de todos los valores, desde el más bajo hasta el más alto, es relativamente pequeño (dentro de un orden de magnitud). La búsqueda uniforme de valores del rango proporciona una exploración razonable de todo el rango.

Logarítmico

El ajuste de hiperparámetros busca los valores en el rango de hiperparámetros utilizando una escala logarítmica.

El escalado logarítmico funciona solo para rangos que solo tienen valores mayores que 0.

Elija el escalado logarítmico cuando está buscando un rango que abarque varios órdenes de magnitud.

Por ejemplo, si está ajustando un modelo Ajustar un modelo de aprendizaje lineal y especifica un rango de valores entre 0,0001 y 1,0 para el hiperparámetro learning_rate, tenga en cuenta lo siguiente: si busca de manera uniforme en una escala logarítmica, obtendrá una mejor muestra de todo el rango que si lo hiciera en una escala lineal. Esto se debe a que al buscar en una escala lineal se dedicaría, de media, el 90 por ciento del presupuesto de entrenamiento únicamente a los valores comprendidos entre 0,1 y 1,0. Como resultado, solo queda el 10 por ciento del presupuesto de entrenamiento para los valores entre 0,0001 y 0,1.

ReverseLogarithmic

El ajuste de hiperparámetros busca los valores en el rango de hiperparámetros utilizando una escala logarítmica. El escalado logarítmico inverso solo se admite para rangos de hiperparámetros continuos. No se admite para rangos de hiperparámetros enteros.

Elija el escalado logarítmico inverso cuando se busca un rango que sea muy sensible a pequeños cambios que sean muy próximos a 1.

El escalado logarítmico inverso funciona solo para rangos que están completamente dentro del rango 0<=x<1,0.

Para ver un ejemplo de bloc de notas que utiliza el escalado de hiperparámetros, consulte estos ejemplos de SageMaker hiperparámetros de Amazon en. GitHub