Amazon SageMaker Ajuste Automático de Modelos ahora elige automáticamente las configuraciones de afinamiento para mejorar la usabilidad y la eficiencia de costos.

Amazon SageMaker Ajuste Automático de Modelos elige las configuraciones de afinamiento automáticamente para mejorar usabilidad y eficiencia de costos.

Amazon SageMaker Automatic Model Tuning ha introducido Autotune, una nueva función para elegir automáticamente los hiperparámetros por ti. Esto proporciona una forma acelerada y más eficiente de encontrar rangos de hiperparámetros, y puede proporcionar una gestión presupuestaria y de tiempo optimizada significativa para tus trabajos de ajuste de modelo automático.

En esta publicación, discutimos esta nueva capacidad y algunos de los beneficios que brinda.

Resumen de hiperparámetros

Cuando entrenas cualquier modelo de aprendizaje automático (ML), generalmente estás tratando con tres tipos de datos: datos de entrada (también llamados datos de entrenamiento), parámetros del modelo e hiperparámetros. Utilizas los datos de entrada para entrenar tu modelo, que en efecto aprende tus parámetros del modelo. Durante el proceso de entrenamiento, tus algoritmos de ML intentan encontrar los parámetros óptimos del modelo basados en datos, al mismo tiempo que cumplen con los objetivos de tu función objetivo. Por ejemplo, cuando se entrena una red neuronal, el peso de los nodos de la red se aprende del entrenamiento e indica cuánto impacto tiene en la predicción final. Estos pesos son los parámetros del modelo.

Los hiperparámetros, por otro lado, son parámetros de un algoritmo de aprendizaje y no del modelo en sí. El número de capas ocultas y el número de nodos son algunos ejemplos de hiperparámetros que puedes establecer para una red neuronal. La diferencia entre los parámetros del modelo y los hiperparámetros es que los parámetros del modelo se aprenden durante el proceso de entrenamiento, mientras que los hiperparámetros se establecen antes del entrenamiento y permanecen constantes durante el proceso de entrenamiento.

Puntos de dolor

El ajuste automático de modelos de SageMaker, también llamado ajuste de hiperparámetros, ejecuta muchos trabajos de entrenamiento en tu conjunto de datos utilizando una variedad de hiperparámetros que especificas. Puede acelerar tu productividad al probar muchas variaciones de un modelo. Busca el mejor modelo automáticamente centrándose en las combinaciones más prometedoras de valores de hiperparámetros dentro de los rangos que especificas. Sin embargo, para obtener buenos resultados, debes elegir los rangos correctos para explorar.

Pero, ¿cómo sabes cuál es el rango correcto para empezar? Con los trabajos de ajuste de hiperparámetros, suponemos que el conjunto óptimo de hiperparámetros se encuentra dentro del rango que especificamos. ¿Qué sucede si el rango elegido no es correcto y el hiperparámetro óptimo realmente se encuentra fuera del rango?

Elegir los hiperparámetros correctos requiere experiencia con la técnica de ML que estás utilizando y comprensión de cómo se comportan sus hiperparámetros. Es importante comprender las implicaciones de los hiperparámetros porque cada hiperparámetro que elijas para ajustar tiene el potencial de aumentar el número de pruebas requeridas para un trabajo de ajuste exitoso. Necesitas encontrar un equilibrio óptimo entre los recursos asignados al trabajo de ajuste y lograr los objetivos que has establecido.

El equipo de SageMaker Automatic Model Tuning está constantemente innovando en nombre de nuestros clientes para optimizar sus cargas de trabajo de ML. AWS anunció recientemente el soporte de nuevos criterios de finalización para la optimización de hiperparámetros: el criterio de tiempo de ejecución máximo, que es un criterio de finalización de control de presupuesto que se puede utilizar para limitar el costo y el tiempo de ejecución. La monitorización de mejora, la detección de convergencia y las métricas objetivo deseadas supervisan el rendimiento del modelo y ayudan a detener temprano si los modelos no mejoran después de un número definido de trabajos de entrenamiento. Autotune es una nueva función de ajuste automático de modelo que ayuda a ahorrar tiempo y reducir los recursos desperdiciados en la búsqueda de rangos óptimos de hiperparámetros.

Beneficios de Autotune y cómo el ajuste automático de modelos alivia esos puntos de dolor

Autotune es una nueva configuración en la API CreateHyperParameterTuningJob y en el SDK de Python de SageMaker HyperparameterTuner que alivia la necesidad de especificar los rangos de hiperparámetros, la estrategia de ajuste, las métricas objetivo o el número de trabajos que se requirieron como parte de la definición del trabajo. Autotune elige automáticamente las configuraciones óptimas para tu trabajo de ajuste, ayuda a prevenir el desperdicio de recursos y acelera la productividad.

El siguiente ejemplo muestra cómo muchos de los parámetros no son necesarios al usar Autotune.

El siguiente código crea un ajuste de hiperparámetros utilizando el SDK de Python de SageMaker sin Autotune:

estimador = PyTorch(
    entry_point="mnist.py",
    instance_type="ml.p4d.24xlarge",
    hyperparameters={
        "epochs": 1, "backend": "gloo"
    },
)

tuner = HyperparameterTuner(
    estimador, 
    objective_metric_name='validation:rmse',
    objective_type='Minimize',
    hyperparameter_ranges = {
        "lr": ContinuousParameter(0.001, 0.1),
        "batch-size": CategoricalParameter([32, 64, 128, 256, 512])
    },
    metric_definitions=[{...}],
    max_jobs=10,
    strategy="Random"
)

tuner.fit(...)

El siguiente ejemplo muestra cómo muchos de los parámetros no son necesarios al utilizar Autotune:

estimator = PyTorch(
    entry_point="mnist.py",
    instance_type="ml.p4d.24xlarge",
    hyperparameters={
        "epochs": 1, "backend": "gloo", "lr": 0.01, "batch-size": 32
    },
)
tuner = HyperparameterTuner(
    estimator, 
    objective_metric_name='validation:rmse',
    objective_type='Minimize', 
    autotune=True
)

Si está utilizando la API, el código equivalente sería el siguiente:

create_hyper_parameter_tuning_job(
    HyperParameterTuningJobName=tuning_job_name,
    HyperParameterTuningJobConfig=tuning_job_config,
    TrainingJobDefinition=training_job_definition,
    Autotune={'Mode': 'Enabled'},
)

El ejemplo de código ilustra algunos de los beneficios clave de Autotune:

  • Una elección clave para un trabajo de ajuste es qué hiperparámetros ajustar y sus rangos. Autotune hace esta elección por usted basándose en una lista de hiperparámetros que proporcione. Usando el ejemplo anterior, los hiperparámetros que Autotune puede elegir para ser ajustados son lr y batch-size.
  • Autotune seleccionará automáticamente los rangos de hiperparámetros en su nombre. Autotune utiliza las mejores prácticas, así como las pruebas internas para seleccionar los rangos apropiados.
  • Autotune selecciona automáticamente la estrategia sobre cómo elegir las combinaciones de valores de hiperparámetros para usar en el trabajo de entrenamiento.
  • La detención temprana está habilitada de manera predeterminada cuando se utiliza Autotune. Al utilizar la detención temprana, SageMaker detiene los trabajos de entrenamiento lanzados por el trabajo de ajuste de hiperparámetros cuando es poco probable que funcionen mejor que los trabajos de entrenamiento completados anteriormente para evitar el uso adicional de recursos.
  • Los recursos máximos esperados que consumirá el trabajo de ajuste (trabajos en paralelo, tiempo de ejecución máximo, etc.) se calcularán y establecerán en el registro del trabajo de ajuste tan pronto como se cree. Dichos recursos reservados no aumentarán durante el curso del trabajo de ajuste; esto mantendrá un límite superior de costo y duración del trabajo de ajuste que es fácilmente predecible por el usuario. Por defecto se utilizará un tiempo de ejecución máximo de 48 horas.

Puede anular cualquier configuración elegida automáticamente por Autotune. Como ejemplo, si especifica sus propios rangos de hiperparámetros, se utilizarán junto con los rangos inferidos. Cualquier rango de hiperparámetro especificado por el usuario tendrá prioridad sobre los mismos rangos inferidos con el mismo nombre:

estimator = PyTorch(
    ...
    hyperparameters={
        "epochs": 100, "backend": "gloo", "lr": 0.01, "beta1": 0.8
    }

tuner = HyperparameterTuner(
    ...
    hyperparameter_ranges = {
        "lr": ContinuousParameter(0.001, 0.01) # tiene prioridad sobre "lr" inferido
    }

Autotune genera un conjunto de configuraciones como parte del trabajo de ajuste. Cualquier configuración especificada por el cliente que tenga el mismo nombre anulará las configuraciones seleccionadas por Autotune. Cualquier configuración proporcionada por el cliente (que no sea la misma que las configuraciones nombradas de Autotune) se agregará además de las configuraciones seleccionadas por Autotune.

Inspeccionar los parámetros elegidos por Autotune

Autotune reduce el tiempo que normalmente hubiera pasado decidiendo sobre el conjunto inicial de hiperparámetros para ajustar. Pero, ¿cómo se obtienen información sobre los valores de hiperparámetros que Autotune terminó eligiendo? Puede obtener información sobre las decisiones tomadas por usted en la descripción del trabajo de ajuste en ejecución (en la respuesta de la operación DescribeHyperParameterTuningJob). Después de enviar una solicitud para crear un trabajo de ajuste, la solicitud se procesa y se establecen todos los campos que faltan por Autotune. Todos los campos establecidos se informan en la operación DescribeHyperParameterTuningJob.

Alternativamente, puede inspeccionar los campos de la clase HyperparameterTuner para ver las configuraciones elegidas por Autotune.

El siguiente es un ejemplo de XGBoost de cómo puede usar DescribeHyperParameterTuningJob para inspeccionar los hiperparámetros elegidos por Autotune.

Primero, creamos un trabajo de ajuste con ajuste de modelo automático:

hyperparameters = {
    "objective": "reg:squarederror",
    "num_round": "50",
    "verbosity": "2",
    "max_depth": "5",  # la superposición con los rangos está bien cuando Autotune está habilitado
}
estimator = XGBoost(hyperparameters=hyperparameters, ...)

hp_tuner = HyperparameterTuner(estimator, autotune=True)
hp_tuner.fit(wait=False)

Después de que el trabajo de ajuste se haya creado con éxito, podemos descubrir qué configuraciones eligió Autotune. Por ejemplo, podemos describir el trabajo de ajuste por el nombre que se le dio desde hp_tuner:

import boto3 
sm = boto3.client('sagemaker')

response = sm.describe_hyper_parameter_tuning_job(
   HyperParameterTuningJobName=hp_tuner.latest_tuning_job.name
)

print(response)

Luego podemos inspeccionar la respuesta generada para revisar las configuraciones elegidas por Autotune en nuestro nombre.

Si las configuraciones actuales del trabajo de ajuste no son satisfactorias, puedes detener el trabajo de ajuste:

hp_tuner.stop()

Conclusión

SageMaker Automatic Model Tuning te permite reducir el tiempo para ajustar un modelo buscando automáticamente la mejor configuración de hiperparámetros dentro de los rangos que especifiques. Sin embargo, elegir los rangos de hiperparámetros adecuados puede ser un proceso que consume mucho tiempo y puede tener implicaciones directas en el costo y la duración de tu entrenamiento.

En esta publicación, discutimos cómo ahora puedes usar Autotune, una nueva característica introducida como parte del ajuste automático de modelos, para elegir automáticamente un conjunto inicial de rangos de hiperparámetros en tu nombre. Esto puede reducir el tiempo que se tarda en comenzar con el proceso de ajuste de tu modelo. Además, puedes evaluar los rangos elegidos por Autotune y ajustarlos según tus necesidades.

También mostramos cómo Autotune puede elegir automáticamente la configuración de parámetros óptima en tu nombre, como el número de trabajos de entrenamiento, la estrategia para elegir las combinaciones de hiperparámetros y habilitar la detención temprana por defecto. Esto puede resultar en límites de presupuesto y tiempo significativamente optimizados que son fácilmente predecibles.

Para obtener más información, consulta Realizar ajuste automático de modelos con SageMaker.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Related articles

    Discover more

    Inteligencia Artificial

    Conoce Quivr Un proyecto de código abierto diseñado para almacenar y recuperar información desestructurada como un segundo cerebro

    Ha habido un crecimiento continuo en el dominio de OpenAI en los últimos años. Investigadores de muchas universidades...

    Inteligencia Artificial

    Una inmersión profunda en las implicaciones de seguridad de la personalización y afinación de grandes modelos de lenguaje.

    En un esfuerzo colaborativo revolucionario, IBM Research, Princeton University y Virginia Tech han arrojado luz sobre...

    Inteligencia Artificial

    Conoce a Falcon 180B El modelo de lenguaje más grande disponible públicamente con 180 mil millones de parámetros

    La demanda de modelos de lenguaje potentes y versátiles se ha vuelto más apremiante en el procesamiento del lenguaje ...

    Aprendizaje Automático

    Red Cat y Athena AI crean drones militares inteligentes con visión nocturna.

    Red Cat Holdings, Inc., una empresa líder en tecnología militar, ha logrado un hito en su colaboración con Athena AI....