amazon SageMaker JumpStart proporciona un conjunto de algoritmos integrados, modelos previamente entrenados y plantillas de soluciones prediseñadas para ayudar a los científicos de datos y profesionales del aprendizaje automático (ML) a comenzar a entrenar e implementar modelos de ML rápidamente. Puede utilizar estos algoritmos y modelos para el aprendizaje tanto supervisado como no supervisado. Pueden procesar varios tipos de datos de entrada, incluidos imágenes, texto y tabulares.
Esta publicación presenta el uso de clasificación de texto y máscara de relleno Modelos disponibles en Hugging Face en SageMaker JumpStart para clasificación de texto en un conjunto de datos personalizado. También demostramos cómo realizar inferencias por lotes y en tiempo real para estos modelos. Este algoritmo de aprendizaje supervisado admite el aprendizaje por transferencia para todos los modelos previamente entrenados disponibles en Hugging Face. Toma un fragmento de texto como entrada y genera la probabilidad de cada una de las etiquetas de clase. Puede ajustar estos modelos previamente entrenados mediante el aprendizaje por transferencia incluso cuando no haya un gran corpus de texto disponible. Está disponible en la interfaz de usuario de SageMaker JumpStart en amazon SageMaker Studio. También puede usarlo a través del SDK de Python de SageMaker, como se demuestra en el cuaderno de ejemplo. amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart_text_classification/Amazon_JumpStart_HuggingFace_Text_Classification.ipynb” target=”_blank” rel=”noopener”>Introducción a SageMaker HuggingFace: clasificación de texto.
Descripción general de la solución
La clasificación de texto con Hugging Face en SageMaker proporciona aprendizaje por transferencia en todos los modelos previamente entrenados disponibles en Hugging Face. Según la cantidad de etiquetas de clase en los datos de entrenamiento, se adjunta una capa de clasificación al modelo Hugging Face previamente entrenado. Luego, se puede ajustar toda la red, incluido el modelo previamente entrenado, o solo la capa de clasificación superior en los datos de entrenamiento personalizados. En este modo de aprendizaje por transferencia, la capacitación se puede lograr incluso con un conjunto de datos más pequeño.
En esta publicación, demostramos cómo hacer lo siguiente:
- Utilice el nuevo algoritmo de clasificación de texto de Hugging Face
- Realizar inferencias con el algoritmo de clasificación de texto de Hugging Face
- Ajuste el modelo previamente entrenado en un conjunto de datos personalizado
- Realice inferencia por lotes con el algoritmo de clasificación de texto Hugging Face
Requisitos previos
Antes de ejecutar el portátil, debe completar algunos pasos de configuración iniciales. Configuremos el rol de ejecución de SageMaker para que tenga permisos para ejecutar servicios de AWS en su nombre:
Ejecutar inferencia en el modelo previamente entrenado
SageMaker JumpStart admite la inferencia para cualquier modelo de clasificación de texto disponible a través de Hugging Face. El modelo se puede alojar para inferencia y texto de soporte como tipo de contenido de aplicación/x-text. Esto no solo le permitirá utilizar un conjunto de modelos previamente entrenados, sino que también le permitirá elegir otras tareas de clasificación.
La salida contiene los valores de probabilidad, las etiquetas de clase para todas las clases y la etiqueta prevista correspondiente al índice de clase con la probabilidad más alta codificada en formato JSON. El modelo procesa una sola cadena por solicitud y genera solo una línea. El siguiente es un ejemplo de una respuesta en formato JSON:
Si accept
se establece en application/json
, entonces el modelo solo genera probabilidades. Para obtener más detalles sobre entrenamiento e inferencia, consulte el ejemplo. amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart_text_classification/Amazon_JumpStart_HuggingFace_Text_Classification.ipynb” target=”_blank” rel=”noopener”>computadora portátil.
Puede ejecutar inferencias en el modelo de clasificación de texto pasando el model_id
en la variable de entorno mientras se crea el objeto del Modelo clase. Vea el siguiente código:
Ajuste el modelo previamente entrenado en un conjunto de datos personalizado
Puedes ajustar cada uno de los programas previamente entrenados. máscara de relleno o clasificación de texto modelos a cualquier conjunto de datos dado compuesto por oraciones de texto con cualquier número de clases. El modelo previamente entrenado adjunta una capa de clasificación al modelo de incrustación de texto e inicializa los parámetros de la capa con valores aleatorios. La dimensión de salida de la capa de clasificación se determina en función del número de clases detectadas en los datos de entrada. El objetivo es minimizar los errores de clasificación en los datos de entrada. Luego puede implementar el modelo ajustado para realizar inferencias.
Las siguientes son las instrucciones sobre cómo se deben formatear los datos de entrenamiento para ingresarlos al modelo:
- Aporte – Un directorio que contiene un
data.csv
archivo. Cada fila de la primera columna debe tener una etiqueta de clase entera entre 0 y el número de clases. Cada fila de la segunda columna debe tener los datos de texto correspondientes. - Producción – Un modelo ajustado que se puede implementar para inferencia o entrenar más mediante entrenamiento incremental.
El siguiente es un ejemplo de un archivo CSV de entrada. El archivo no debe tener ningún encabezado. El archivo debe estar alojado en un depósito de amazon Simple Storage Service (amazon S3) con una ruta similar a la siguiente: s3://bucket_name/input_directory/
. el seguimiento /
se requiere.
El algoritmo también admite el aprendizaje por transferencia para Hugging Face modelos previamente entrenados. Cada modelo está identificado por un único model_id
. El siguiente ejemplo muestra cómo ajustar un modelo base BERT identificado por model_id=huggingface-tc-bert-base-cased
en un conjunto de datos de entrenamiento personalizado. Los archivos tar del modelo previamente entrenado se descargaron previamente de Hugging Face y se guardaron con la firma del modelo adecuada en depósitos de S3, de modo que el trabajo de entrenamiento se ejecute en aislamiento de red.
Para transferir el aprendizaje en su conjunto de datos personalizado, es posible que necesite cambiar los valores predeterminados de los hiperparámetros de entrenamiento. Puede obtener un diccionario Python de estos hiperparámetros con sus valores predeterminados llamando hyperparameters.retrieve_default
, actualícelos según sea necesario y luego páselos a la clase Estimador. El hiperparámetro Train_only_top_layer
Define qué parámetros del modelo cambian durante el proceso de ajuste. Si train_only_top_layer
es True
, los parámetros de las capas de clasificación cambian y el resto de los parámetros permanecen constantes durante el proceso de ajuste. Si train_only_top_layer
es False
, todos los parámetros del modelo están ajustados. Vea el siguiente código:
Para este caso de uso, proporcionamos SST2 como conjunto de datos predeterminado para ajustar los modelos. El conjunto de datos contiene críticas de películas positivas y negativas. Se ha descargado de TensorFlow bajo la Licencia Apache 2.0. El siguiente código proporciona el conjunto de datos de entrenamiento predeterminado alojado en depósitos de S3:
Creamos un objeto Estimador proporcionando el model_id
y valores de hiperparámetros de la siguiente manera:
Para iniciar el trabajo de capacitación de SageMaker para ajustar el modelo, llame .fit
en el objeto de la clase Estimator, mientras pasa la ubicación S3 del conjunto de datos de entrenamiento:
Puede ver métricas de rendimiento, como la pérdida de capacitación y la precisión/pérdida de validación, a través de amazon CloudWatch durante la capacitación. También puedes recuperar estas métricas y analizarlas usando TrainingJobAnalytics:
El siguiente gráfico muestra diferentes métricas recopiladas del registro de CloudWatch usando TrainingJobAnalytics
.
Para obtener más información sobre cómo utilizar el nuevo algoritmo de clasificación de texto Hugging Face de SageMaker para transferir el aprendizaje en un conjunto de datos personalizado, implementar el modelo ajustado, ejecutar inferencia en el modelo implementado e implementar el modelo previamente entrenado tal como está sin primero sintonizando un conjunto de datos personalizado, vea el siguiente ejemplo amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart_text_classification/Amazon_JumpStart_HuggingFace_Text_Classification.ipynb” target=”_blank” rel=”noopener”>computadora portátil.
Ajuste cualquier modelo de clasificación de texto o máscara de relleno de Hugging Face
SageMaker JumpStart admite el ajuste fino de cualquier máscara de relleno previamente entrenada o modelo de clasificación de texto Hugging Face. Puede descargar el modelo requerido desde el centro Hugging Face y realizar el ajuste. Para utilizar estos modelos, el model_id
se proporciona en los hiperparámetros como hub_key
. Vea el siguiente código:
Ahora puedes construir un objeto de la Estimador clase pasando los hiperparámetros actualizados. Llama .fit
en el objeto de la clase Estimator mientras pasa la ubicación S3 del conjunto de datos de entrenamiento para realizar el trabajo de entrenamiento de SageMaker para ajustar el modelo.
Ajustar un modelo con ajuste automático de modelo
El ajuste automático de modelos (ATM) de SageMaker, también conocido como ajuste de hiperparámetros, encuentra la mejor versión de un modelo ejecutando muchos trabajos de entrenamiento en su conjunto de datos utilizando el algoritmo y los rangos de hiperparámetros que usted especifica. Luego elige los valores de hiperparámetros que dan como resultado un modelo que funciona mejor, según lo medido por una métrica que usted elija. En el siguiente código, utiliza un objeto HyperparameterTuner para interactuar con las API de ajuste de hiperparámetros de SageMaker:
Después de haber definido los argumentos para el HyperparameterTuner
objeto, le pasas el Estimador y comienzas el entrenamiento. Esto encontrará el modelo de mejor rendimiento.
Realice inferencia por lotes con el algoritmo de clasificación de texto Hugging Face
Si el objetivo de la inferencia es generar predicciones a partir de un modelo entrenado en un gran conjunto de datos donde minimizar la latencia no es una preocupación, entonces la funcionalidad de inferencia por lotes puede ser más sencilla, más escalable y más apropiada.
La inferencia por lotes es útil en los siguientes escenarios:
- Preprocesar conjuntos de datos para eliminar el ruido o el sesgo que interfiere con el entrenamiento o la inferencia de su conjunto de datos.
- Obtenga inferencias de grandes conjuntos de datos
- Ejecute inferencia cuando no necesite un punto final persistente
- Asociar registros de entrada con inferencias para ayudar en la interpretación de los resultados.
Para ejecutar la inferencia por lotes en este caso de uso, primero descargue el SST2 conjunto de datos localmente. Elimine la etiqueta de clase y cárguela en amazon S3 para realizar inferencias por lotes. Tu creas el objeto de Modelo clase sin proporcionar el punto final y crear el objeto transformador por lotes a partir de él. Utilice este objeto para proporcionar predicciones por lotes sobre los datos de entrada. Vea el siguiente código:
Después de ejecutar la inferencia por lotes, puede comparar la precisión de la predicción en el conjunto de datos SST2.
Conclusión
En esta publicación, analizamos el algoritmo de clasificación de texto de SageMaker Hugging Face. Proporcionamos un código de ejemplo para realizar el aprendizaje por transferencia en un conjunto de datos personalizado utilizando un modelo previamente entrenado en aislamiento de red utilizando este algoritmo. También proporcionamos la funcionalidad para utilizar cualquier máscara de relleno de Hugging Face o modelo de clasificación de texto para inferencia y transferencia de aprendizaje. Por último, utilizamos la inferencia por lotes para ejecutar la inferencia en grandes conjuntos de datos. Para obtener más información, consulte el ejemplo. amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart_text_classification/Amazon_JumpStart_HuggingFace_Text_Classification.ipynb” target=”_blank” rel=”noopener”>computadora portátil.
Sobre los autores
Hemant Singh es un Científico Aplicado con experiencia en amazon SageMaker JumpStart. Obtuvo su maestría del Instituto Courant de Ciencias Matemáticas y su B.tech del IIT Delhi. Tiene experiencia trabajando en una amplia gama de problemas de aprendizaje automático dentro del dominio del procesamiento del lenguaje natural, la visión por computadora y el análisis de series temporales.
Rachna Chadha es arquitecto principal de soluciones ai/ML en Cuentas Estratégicas en AWS. Rachna es una optimista que cree que el uso ético y responsable de la IA puede mejorar la sociedad en el futuro y generar prosperidad económica y social. En su tiempo libre, a Rachna le gusta pasar tiempo con su familia, hacer senderismo y escuchar música.
Dr. Ashish Khaitan es un científico aplicado senior con algoritmos integrados de amazon SageMaker y ayuda a desarrollar algoritmos de aprendizaje automático. Obtuvo su doctorado en la Universidad de Illinois Urbana-Champaign. Es un investigador activo en aprendizaje automático e inferencia estadística, y ha publicado numerosos artículos en conferencias NeurIPS, ICML, ICLR, JMLR, ACL y EMNLP.