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
Esta guía muestra cómo se utilizan para definir los rangos SageMaker APIs 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 contribuyan 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, se SageMaker añade _tuning_objective_metric
automáticamente.
Hiperparámetros estáticos
Utilice hiperparámetros estáticos para los casos siguientes: Por ejemplo, puedes AMT ajustar tu modelo usando 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" }
Puede usar Amazon SageMaker API para especificar pares de valores clave en el StaticHyperParameterscampo del HyperParameterTrainingJobDefinition
parámetro que pasa a la CreateHyperParameterTuningJoboperación.
Hiperparámetros dinámicos
Puede usarlo 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.
-
TrainingJobEarlyStoppingType— Un 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:
-
Especifique el hiperparámetro y un valor de ejemplo en el
AutoParameters
campo de. ParameterRangesAPI -
Habilite el ajuste automático.
AMTdeterminará si sus hiperparámetros y valores de ejemplo son aptos para el autoajuste. Los hiperparámetros que se pueden utilizar en el ajuste automático se asignan automáticamente al tipo de rango de parámetros adecuado. A continuación, se AMT utiliza ValueHint
para seleccionar un rango óptimo para usted. Puede utilizar el DescribeHyperParameterTrainingJob
API 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 al CreateHyperParameterTuningJob
API. A continuación, el autotune convierte el hiperparámetro max_depth en AutoParameters hiperparámetro. IntegerParameterRanges
La siguiente respuesta de a DescribeHyperParameterTrainingJob
API muestra que los valores óptimos IntegerParameterRanges
están entre y. max_depth
2
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