Ejecute el ajuste automático del modelo con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Ejecute el ajuste automático del modelo con Amazon SageMaker JumpStart

En diciembre de 2020, AWS anunció la disponibilidad general de JumpStart de Amazon SageMaker, una capacidad de Amazon SageMaker que lo ayuda a comenzar rápida y fácilmente con el aprendizaje automático (ML). En marzo de 2022, también anunció el soporte para API en JumpStart. JumpStart proporciona ajuste e implementación con un solo clic de una amplia variedad de modelos previamente entrenados en tareas populares de ML, así como una selección de soluciones integrales que resuelven problemas comerciales comunes. Estas características eliminan el trabajo pesado de cada paso del proceso de ML, lo que simplifica el desarrollo de modelos de alta calidad y reduce el tiempo de implementación.

En esta publicación, demostramos cómo ejecutar el ajuste automático del modelo con JumpStart.

Ajuste automático del modelo SageMaker

Tradicionalmente, los ingenieros de ML implementan un método de prueba y error para encontrar el conjunto correcto de hiperparámetros. Prueba y error implica ejecutar varios trabajos secuencialmente o en paralelo mientras se aprovisionan los recursos necesarios para ejecutar el experimento.

Con Ajuste automático del modelo SageMaker, los ingenieros de aprendizaje automático y los científicos de datos pueden descargar la tarea que lleva mucho tiempo de optimizar su modelo y dejar que SageMaker ejecute la experimentación. SageMaker aprovecha la elasticidad de la plataforma de AWS para ejecutar de forma eficiente y simultánea múltiples simulaciones de entrenamiento en un conjunto de datos y encontrar los mejores hiperparámetros para un modelo.

El ajuste automático de modelos de SageMaker encuentra la mejor versión de un modelo ejecutando muchos trabajos de entrenamiento en su conjunto de datos usando el algoritmo y rangos de hiperparámetros que especifique. Luego elige los valores de hiperparámetros que dan como resultado un modelo que funciona mejor, según lo medido por un métrico que tu elijas.

El ajuste automático del modelo utiliza un Bayesiano (predeterminado) o un azar estrategia de búsqueda para encontrar los mejores valores para los hiperparámetros. La búsqueda bayesiana trata el ajuste de hiperparámetros como un regresión problema. Al elegir los mejores hiperparámetros para el próximo trabajo de entrenamiento, considera todo lo que sabe sobre el problema hasta el momento y permite que el algoritmo explote los resultados más conocidos.

En esta publicación, usamos la estrategia de búsqueda bayesiana predeterminada para demostrar los pasos necesarios para ejecutar el ajuste automático del modelo con JumpStart usando el LuzGBM modelo.

JumpStart actualmente es compatible con 10 portátiles de ejemplo con ajuste de modelo automático. También admite cuatro algoritmos populares para el modelado de datos tabulares. Las tareas y los vínculos a sus blocs de notas de muestra se resumen en la siguiente tabla.

Tarea Modelos Pre-entrenados Admite conjuntos de datos personalizados Marcos compatibles Cuadernos de ejemplo
Clasificación de imagen si si PyTorch, TensorFlow Introducción a JumpStart: clasificación de imágenes
Detección de objetos si si PyTorch, TensorFlow, MXNet Introducción a JumpStart: detección de objetos
Segmentación semántica si si MXNet Introducción a JumpStart – Segmentación Semántica
Clasificación de texto si si TensorFlow Introducción a JumpStart: clasificación de texto
Clasificación de pares de oraciones si si TensorFlow, abrazando la cara Introducción a JumpStart: clasificación de pares de oraciones
Respuesta a preguntas si si PyTorch Introducción a JumpStart: respuesta a preguntas
Clasificación tabular si si LightGBM, CatBoost, XGBoost, aprendizaje lineal Introducción a JumpStart – Clasificación tabular – LightGBM, CatBoost
Introducción a JumpStart – Clasificación tabular – XGBoost, Linear Learner
Regresión tabular si si LightGBM, CatBoost, XGBoost, aprendizaje lineal Introducción a JumpStart – Regresión tabular – LightGBM, CatBoost
Introducción a JumpStart – Regresión tabular – XGBoost, Linear Learner

Resumen de la solución

Este flujo de trabajo técnico brinda una descripción general de las diferentes funciones y pasos necesarios de Amazon Sagemaker para ajustar automáticamente un modelo JumpStart.

Ejecute el ajuste automático del modelo con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

En las siguientes secciones, proporcionamos un tutorial paso a paso sobre cómo ejecutar el ajuste automático del modelo con JumpStart utilizando el algoritmo LightGBM. Brindamos un acompañamiento cuaderno para este tutorial.

Caminamos a través de los siguientes pasos de alto nivel:

  1. Recupere el modelo preentrenado de JumpStart y el contenedor de imágenes.
  2. Establecer hiperparámetros estáticos.
  3. Defina los rangos de hiperparámetros ajustables.
  4. Inicialice el ajuste automático del modelo.
  5. Ejecute el trabajo de ajuste.
  6. Implemente el mejor modelo en un punto final.

Recuperar el contenedor de imágenes y modelos preentrenados de JumpStart

En esta sección, elegimos el modelo de clasificación LightGBM para el ajuste fino. Usamos el tipo de instancia ml.m5.xlarge en el que se ejecuta el modelo. Luego recuperamos el contenedor Docker de entrenamiento, la fuente del algoritmo de entrenamiento y el modelo preentrenado. Ver el siguiente código:

training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=train_model_id,
    model_version=train_model_version,
    image_scope=train_scope,
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

Establecer hiperparámetros estáticos

Ahora recuperamos los hiperparámetros predeterminados para este modelo de LightGBM, según lo preconfigurado por JumpStart. También anulamos el num_boost_round hiperparámetro con un valor personalizado.

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values

Definir los rangos de hiperparámetros ajustables

A continuación, definimos los rangos de hiperparámetros para que sean optimizado por el ajuste automático del modelo. Definimos el nombre del hiperparámetro como lo espera el modelo y luego los rangos de valores que se probarán para este hiperparámetro. El ajuste automático del modelo extrae muestras (igual a la max_jobs parámetro) del espacio de hiperparámetros, utilizando una técnica llamada búsqueda bayesiana. Para cada muestra de hiperparámetro dibujada, el sintonizador crea un trabajo de entrenamiento para evaluar el modelo con esa configuración. Ver el siguiente código:

hyperparameter_ranges = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "early_stopping_rounds": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

Inicializar el ajuste automático del modelo

Empezamos creando un Estimador objeto con todos los recursos necesarios que definen el trabajo de entrenamiento, como el modelo preentrenado, la imagen de entrenamiento y el script de entrenamiento. Entonces definimos un Sintonizador de hiperparámetros objeto para interactuar con las API de ajuste de hiperparámetros de SageMaker.

El HyperparameterTuner acepta como parámetros el objeto Estimator, la métrica de destino en función de la cual se decide el mejor conjunto de hiperparámetros, el número total de trabajos de entrenamiento (max_jobs) para iniciar el trabajo de ajuste de hiperparámetros y el máximo de trabajos de entrenamiento paralelos para ejecutar (max_parallel_jobs). Los trabajos de entrenamiento se ejecutan con el algoritmo LightGBM y los valores de hiperparámetro que tienen el mínimo mlogloss Se elige la métrica. Para obtener más información sobre la configuración del ajuste automático del modelo, consulte Prácticas recomendadas para el ajuste de hiperparámetros.

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
) tuner = HyperparameterTuner(
    estimator=tabular_estimator,
    objective_metric_name="multi_logloss",
    hyperparameter_ranges=hyperparameter_ranges,
    metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=2,
    objective_type="Minimize",
    base_tuning_job_name=training_job_name,
)

En el código anterior, le decimos al sintonizador que ejecute como máximo 10 experimentos (max_jobs) y solo dos experimentos simultáneos a la vez (max_parallel_jobs). Ambos parámetros mantienen el costo y el tiempo de capacitación bajo control.

Ejecutar el trabajo de ajuste

Para iniciar el trabajo de ajuste de SageMaker, llamamos al método de ajuste del objeto sintonizador de hiperparámetros y pasamos el Servicio de almacenamiento simple de Amazon (Amazon S3) ruta de los datos de entrenamiento:

tuner.fit({"training": training_dataset_s3_path}, logs=True)

Mientras que el ajuste automático del modelo busca los mejores hiperparámetros, puede monitorear su progreso en la consola de SageMaker o en Reloj en la nube de Amazon. Cuando finaliza el entrenamiento, los artefactos ajustados del mejor modelo se cargan en la ubicación de salida de Amazon S3 especificada en la configuración de entrenamiento.

Implemente el mejor modelo en un punto final

Cuando se completa el trabajo de ajuste, el mejor modelo se ha seleccionado y almacenado en Amazon S3. Ahora podemos implementar ese modelo llamando al método de implementación del HyperparameterTuner objeto y pasando los parámetros necesarios, como la cantidad de instancias que se usarán para el punto final creado, su tipo, la imagen que se implementará y el script que se ejecutará:

tuner.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    entry_point="inference.py",
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    endpoint_name=endpoint_name,
    enable_network_isolation=True
)

Ahora podemos probar el punto final creado haciendo solicitudes de inferencia. Puede seguir el resto del proceso en el adjunto cuaderno.

Conclusión

Con el ajuste automático del modelo en SageMaker, puede encontrar la mejor versión de su modelo ejecutando trabajos de entrenamiento en el conjunto de datos provisto con uno de los algoritmos admitidos. El ajuste automático del modelo le permite reducir el tiempo necesario para ajustar un modelo al buscar automáticamente la mejor configuración de hiperparámetros dentro de los rangos de hiperparámetros que especifique.

En esta publicación, mostramos el valor de ejecutar el ajuste automático del modelo en un modelo preentrenado de JumpStart mediante las API de SageMaker. Usamos el algoritmo LightGBM y definimos un máximo de 10 trabajos de entrenamiento. También proporcionamos enlaces a cuadernos de ejemplo que muestran los marcos de ML que admiten la optimización del modelo JumpStart.

Para obtener más detalles sobre cómo optimizar un modelo JumpStart con el ajuste automático del modelo, consulte nuestro ejemplo cuaderno.


Sobre la autora

Ejecute el ajuste automático del modelo con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.doug mbaya es un arquitecto de soluciones de socio senior con un enfoque en datos y análisis. Doug trabaja en estrecha colaboración con los socios de AWS, ayudándolos a integrar la solución de análisis y datos en la nube.

Ejecute el ajuste automático del modelo con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Kruthi Jayasimha Rao es Partner Solutions Architect en el equipo de Scale-PSA. Kruthi lleva a cabo validaciones técnicas para los socios, lo que les permite progresar en Partner Path.

Ejecute el ajuste automático del modelo con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Giannis Mitropoulos es ingeniero de desarrollo de software para SageMaker Ajuste automático de modelo.

Ejecute el ajuste automático del modelo con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Dr. Ashish Khetan es un científico senior aplicado con JumpStart de Amazon SageMaker y Algoritmos integrados de Amazon SageMaker y ayuda a desarrollar algoritmos de aprendizaje automático. Es un investigador activo en aprendizaje automático e inferencia estadística y ha publicado muchos artículos en conferencias NeurIPS, ICML, ICLR, JMLR y ACL.

Sello de tiempo:

Mas de Aprendizaje automático de AWS