Capacitación incremental con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Entrenamiento incremental con Amazon SageMaker JumpStart

En diciembre de 2020, AWS anunció la disponibilidad general de Amazon SageMaker JumpStart, una capacidad de Amazon SageMaker que lo ayuda a comenzar rápida y fácilmente con el aprendizaje automático (ML). Inicio rápido de SageMaker proporciona ajuste e implementación con un solo clic de una amplia variedad de modelos preentrenados 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 facilita el desarrollo de modelos de alta calidad y reduce el tiempo de implementación.

Anteriormente, todo el contenido de JumpStart solo estaba disponible a través de Estudio Amazon SageMaker, que proporciona un interfaz gráfica fácil de usar para interactuar con la característica. Recientemente, también anunció el lanzamiento de fácil uso API JumpStart como una extensión de SageMaker Python SDK, lo que le permite implementar y ajustar mediante programación una amplia selección de modelos preentrenados compatibles con JumpStart en sus propios conjuntos de datos. Este lanzamiento desbloquea el uso de las capacidades de JumpStart en sus flujos de trabajo de código, canalizaciones de MLOps y en cualquier otro lugar donde esté interactuando con SageMaker a través de SDK.

En esta publicación, nos complace anunciar que todos los modelos de JumpStart entrenables ahora son compatibles con el entrenamiento incremental. El entrenamiento incremental le permite entrenar un modelo que ya ha ajustado utilizando un conjunto de datos expandido que contiene un patrón subyacente que no se tuvo en cuenta en las ejecuciones de ajuste anteriores, lo que resultó en un rendimiento deficiente del modelo. El entrenamiento incremental ahorra tiempo y recursos porque no necesita volver a entrenar el modelo desde cero. Si desea acceder directamente al código de la API de JumpStart que explicamos en esta publicación, puede consultar el cuaderno de muestra.

Descripción general de JumpStart

JumpStart es un producto multifacético que incluye diferentes capacidades para ayudarlo a comenzar rápidamente con ML en SageMaker. Al momento de escribir, JumpStart le permite hacer lo siguiente:

  • Implemente modelos previamente entrenados para tareas comunes de ML – JumpStart le permite abordar tareas comunes de ML sin esfuerzo de desarrollo al proporcionar una fácil implementación de modelos entrenados previamente en grandes conjuntos de datos disponibles públicamente. La comunidad de investigación de ML ha realizado un gran esfuerzo para hacer que la mayoría de los modelos desarrollados recientemente estén disponibles públicamente para su uso; JumpStart alberga una colección de más de 300 modelos, que abarcan las 15 tareas de ML más populares, como detección de objetos, clasificación de texto y generación de texto, lo que facilita su uso a los principiantes. Estos modelos se extraen de centros de modelos populares, como TensorFlow, PyTorch, Hugging Face y MXNet Hub.
  • Ajuste fino de modelos preentrenados – JumpStart le permite ajustar modelos previamente entrenados sin necesidad de escribir su propio algoritmo de entrenamiento. En ML, la capacidad de transferir el conocimiento aprendido en un dominio a otro se denomina transferencia de aprendizaje. Puede usar el aprendizaje por transferencia para producir modelos precisos en sus conjuntos de datos más pequeños, con costos de capacitación mucho más bajos que los involucrados en la capacitación del modelo original. JumpStart también incluye algoritmos de entrenamiento populares basados ​​en LightGBM, CatBoost, XGBoost y Scikit-learn que puede entrenar desde cero para regresión tabular y clasificación.
  • Utilice soluciones prediseñadas – JumpStart proporciona un conjunto de 17 soluciones para casos de uso comunes de ML, como pronóstico de demanda y aplicaciones industriales y financieras, que puede implementar con solo unos pocos clics. Las soluciones son aplicaciones de aprendizaje automático integrales que unen varios servicios de AWS para resolver un caso de uso comercial particular. Ellos usan Formación en la nube de AWS plantillas y arquitecturas de referencia para una implementación rápida, lo que significa que son totalmente personalizables.
  • Use ejemplos de cuadernos para los algoritmos de SageMaker – SageMaker proporciona un conjunto de algoritmos integrados para ayudar a los científicos de datos y profesionales de ML a comenzar a entrenar e implementar modelos de ML rápidamente. JumpStart proporciona cuadernos de muestra que puede usar para aplicar rápidamente estos algoritmos.
  • Revisar videos y blogs de capacitación – JumpStart también proporciona numerosas publicaciones de blog y videos que le enseñan cómo usar diferentes funcionalidades dentro de SageMaker.

JumpStart acepta configuraciones de VPC personalizadas y Servicio de administración de claves de AWS (AWS KMS) claves de cifrado, para que pueda utilizar los modelos y soluciones disponibles de forma segura dentro de su entorno empresarial. Puede pasar su configuración de seguridad a JumpStart dentro de Studio o a través del SDK de Python de SageMaker.

Clasificación de la imagen

La clasificación de imágenes se refiere a clasificar una imagen en una de las etiquetas de clase en el conjunto de datos de entrenamiento. Puede ajustar el modelo a cualquier conjunto de datos dado que comprenda imágenes que pertenezcan a cualquier número de clases. El modelo disponible para el ajuste fino en JumpStart adjunta una capa de clasificación al modelo extractor de características correspondiente e inicializa los parámetros de la capa en valores aleatorios. La dimensión de salida de la capa de clasificación se determina en función del número de clases en los datos de entrada. El paso de ajuste fino ajusta los parámetros de la capa de clasificación, mientras mantiene congelados los parámetros del modelo extractor de características, y devuelve el modelo ajustado. El objetivo es minimizar el error de predicción en los datos de entrada.

Para nuestro conjunto de datos, la entrada es un directorio con tantos subdirectorios como clases. Cada subdirectorio debe tener imágenes pertenecientes a esa clase en formato .jpg. El directorio de entrada debería parecerse a la siguiente jerarquía si los datos de entrenamiento contienen imágenes de dos clases: roses y dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

Los nombres de las carpetas, las clases y los nombres de los archivos .jpg pueden ser cualquier cosa.

Proporcionamos el tf_flowers1 conjunto de datos como un conjunto de datos predeterminado para ajustar el modelo. Este conjunto de datos comprende imágenes de cinco tipos de flores. El conjunto de datos se ha descargado de TensorFlow.

Descripción general del tutorial

Las siguientes secciones proporcionan una demostración paso a paso para realizar la clasificación de imágenes con JumpStart, tanto a través de la interfaz de usuario de Studio como de las API de JumpStart.

Seguimos los siguientes pasos:

  1. Acceda a JumpStart a través de la interfaz de usuario de Studio:
    1. Ajuste el modelo preentrenado.
    2. Implemente el modelo ajustado.
    3. Entrene de forma incremental el modelo ajustado y vuelva a implementarlo.
  2. Use JumpStart mediante programación con SageMaker Python SDK:
    1. Ajuste el modelo preentrenado.
    2. Implemente el modelo ajustado.
    3. Entrene de forma incremental el modelo ajustado y vuelva a implementarlo.

Acceda a JumpStart a través de la interfaz de usuario de Studio

En esta sección, demostramos cómo ajustar e implementar modelos JumpStart a través de la interfaz de usuario de Studio. Además, mostramos cómo entrenar de forma incremental un modelo que ha ajustado previamente.

Afinar el modelo pre-entrenado

El siguiente video le muestra cómo encontrar un modelo de clasificación de imágenes previamente entrenado en JumpStart y cómo ajustarlo. La página del modelo contiene información valiosa sobre el modelo, cómo usarlo, el formato de datos esperado y algunos detalles de ajuste.

Para fines de demostración, ajustamos el modelo utilizando el conjunto de datos proporcionado por defecto, que es el tf_flowers conjunto de datos, compuesto por diferentes variedades de flores. El ajuste fino de su propio conjunto de datos implica tomar el formato correcto de los datos (como se explica en la página del modelo), subirlo a Servicio de almacenamiento simple de Amazon (Amazon S3) y especificando su ubicación en la configuración del origen de datos.

Usamos los mismos valores de hiperparámetro establecidos de forma predeterminada (número de épocas, tasa de aprendizaje y tamaño del lote). También usamos una instancia ml.p3.2xlarge respaldada por GPU como nuestra instancia de capacitación de SageMaker.

Puede monitorear su trabajo de capacitación directamente en la consola de Studio y recibir una notificación cuando finalice.

Implemente el modelo ajustado

Una vez completada la capacitación, puede implementar el modelo ajustado desde la misma página que contiene los detalles del trabajo de capacitación. Para implementar nuestro modelo, elegimos un tipo de instancia diferente, ml.p2.xlarge. Todavía proporciona la aceleración de GPU necesaria para una latencia de inferencia baja, pero a un precio más bajo. Después de configurar la instancia de alojamiento de SageMaker, elija Despliegue. Pueden pasar entre 5 y 10 minutos hasta que su terminal persistente esté en funcionamiento.

¡Entonces su punto final está operativo y listo para responder a las solicitudes de inferencia!

Para acelerar su tiempo de inferencia, JumpStart proporciona un cuaderno de muestra que le muestra cómo ejecutar la inferencia en su punto final recién implementado. Elegir cuaderno abierto bajo Usar punto final de Estudio.

Entrene de forma incremental el modelo ajustado e implemente

Cuando finaliza el ajuste fino, puede seguir entrenando el modelo para aumentar el rendimiento. Este paso es muy similar al proceso de ajuste fino inicial, excepto que usamos el modelo ya ajustado como punto de partida. Puede usar datos nuevos, pero el formato del conjunto de datos debe ser el mismo (mismo conjunto de clases).

Utilice JumpStart mediante programación con el SDK de SageMaker

En las secciones anteriores, mostramos cómo puede usar la interfaz de usuario de JumpStart para ajustar, implementar y entrenar progresivamente un modelo de forma interactiva con unos pocos clics. También puede usar los modelos de JumpStart y ajustarlos fácilmente mediante programación mediante el uso de API que están integradas en el SDK de SageMaker. Ahora repasamos un ejemplo rápido de cómo puede replicar el proceso anterior. Todos los pasos de esta demostración están disponibles en los cuadernos adjuntos. Introducción a JumpStart: clasificación de imágenes.

Afinar el modelo pre-entrenado

Para ajustar un modelo seleccionado, necesitamos obtener el URI de ese modelo, así como el del script de entrenamiento y la imagen del contenedor que se usa para el entrenamiento. Afortunadamente, estas tres entradas dependen únicamente del nombre del modelo, la versión (para obtener una lista de modelos disponibles, consulte Tabla de modelos disponibles de JumpStart), y el tipo de instancia en la que desea entrenar. Esto se demuestra en el siguiente fragmento de código:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Recuperamos el model_id correspondiente al mismo modelo que usamos anteriormente. El ic en el identificador corresponde a la clasificación de imágenes.

Ahora puede ajustar este modelo de JumpStart en su propio conjunto de datos personalizado mediante el SDK de SageMaker. usamos lo mismo tf_flowers conjunto de datos que está alojado públicamente en Amazon S3, convenientemente enfocado en el análisis de sentimientos. Su conjunto de datos debe estar estructurado para un ajuste fino, como se explica en la sección anterior. Consulte el siguiente código de ejemplo:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_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,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Obtenemos los mismos hiperparámetros por defecto para nuestro modelo seleccionado que los que vimos en la sección anterior, usando sagemaker.hyperparameters.retrieve_default(). Luego creamos una instancia de un estimador de SageMaker y llamamos al método .fit para comenzar a ajustar nuestro modelo, pasándole el URI de Amazon S3 para nuestros datos de entrenamiento. Como puedes ver, el entry_point script proporcionado se llama transfer_learning.py (lo mismo para otras tareas y modelos), y el canal de datos de entrada pasó a .fit debe ser nombrado training.

Implementación del modelo ajustado

Cuando se completa el entrenamiento, puede implementar su modelo ajustado. Para hacerlo, todo lo que necesitamos obtener es el URI del script de inferencia (el código que determina cómo se usa el modelo para la inferencia una vez implementado) y el URI de la imagen del contenedor de inferencia, que incluye un servidor de modelo apropiado para alojar el modelo que elegimos. Ver el siguiente código:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.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,
)

¡Después de unos minutos, nuestro modelo se implementa y podemos obtener predicciones en tiempo real!

A continuación, invocamos el punto final para predecir qué tipo de flores existen en la imagen de ejemplo. usamos el query_endpoint y parse_response funciones auxiliares, que se definen en el documento adjunto cuaderno.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

Entrene de forma incremental el modelo ajustado y vuelva a implementar

Podemos aumentar el rendimiento de un modelo ajustado si lo entrenamos más con nuevas imágenes. Puede usar cualquier cantidad de imágenes nuevas o antiguas para esto, sin embargo, el formato del conjunto de datos debe permanecer igual (mismo conjunto de clases). El paso de entrenamiento incremental es similar al proceso de ajuste fino, con una diferencia importante: en el ajuste fino inicial comenzamos con un modelo previamente entrenado, mientras que en el entrenamiento incremental comenzamos con un modelo ajustado existente. Ver el siguiente código:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Cuando se completa el entrenamiento, podemos usar los mismos pasos que los descritos en la sección anterior para implementar el modelo.

Conclusión

JumpStart es una capacidad en SageMaker que le permite comenzar rápidamente con ML. JumpStart utiliza modelos preentrenados de código abierto para resolver problemas comunes de ML como clasificación de imágenes, detección de objetos, clasificación de texto, clasificación de pares de oraciones y respuesta a preguntas.

En esta publicación, le mostramos cómo ajustar e implementar un modelo de clasificación de imágenes previamente entrenado. También mostramos cómo entrenar de forma incremental un modelo ajustado para la clasificación de imágenes. Con JumpStart, puede realizar fácilmente este proceso sin necesidad de codificar. Pruebe la solución por su cuenta y háganos saber cómo le va en los comentarios. Para obtener más información sobre JumpStart, consulte el vídeo de AWS re:Invent 2020 Comience con ML en minutos con Amazon SageMaker JumpStart.

Referencias

  1. El equipo de TensorFlow, 2019

Acerca de los autores

Capacitación incremental con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Dr. Vivek Madan es un científico aplicado del equipo JumpStart de Amazon SageMaker. Obtuvo su doctorado. de la Universidad de Illinois en Urbana-Champaign y fue investigadora posdoctoral en Georgia Tech. Es un investigador activo en aprendizaje automático y diseño de algoritmos y ha publicado artículos en conferencias EMNLP, ICLR, COLT, FOCS y SODA.

Capacitación incremental con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.joão moura es un arquitecto de soluciones especializado en IA/ML en Amazon Web Services. Se centra principalmente en los casos de uso de NLP y en ayudar a los clientes a optimizar el entrenamiento y la implementación del modelo de aprendizaje profundo. También es un defensor activo de las soluciones de aprendizaje automático de código bajo y el hardware especializado en aprendizaje automático.

Capacitación incremental 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, ACL y EMNLP.

Sello de tiempo:

Mas de Aprendizaje automático de AWS