Ha habido muchos avances recientes en el dominio de la PNL. Los modelos preentrenados y los servicios de PNL completamente administrados han democratizado el acceso y la adopción de la PNL. Amazon Comprehend es un servicio totalmente administrado que puede realizar tareas de NLP como el reconocimiento de entidades personalizadas, el modelado de temas, el análisis de sentimientos y más para extraer información de los datos sin necesidad de experiencia previa en ML.
El año pasado, AWS anunció una asociación Abrazando la cara para ayudar a que los modelos de procesamiento de lenguaje natural (NLP) entren en producción más rápido. Hugging Face es una comunidad de IA de código abierto, centrada en la PNL. Su biblioteca basada en Python (Transformers) proporciona herramientas para usar fácilmente arquitecturas populares de Transformer de última generación como BERT, RoBERTa y GPT. Puede aplicar estos modelos a una variedad de tareas de NLP, como clasificación de texto, extracción de información y respuesta a preguntas, entre otros.
Amazon SageMaker es un servicio completamente administrado que brinda a los desarrolladores y científicos de datos la capacidad de crear, entrenar e implementar modelos de aprendizaje automático (ML) rápidamente. SageMaker elimina el trabajo pesado de cada paso del proceso de ML, lo que facilita el desarrollo de modelos de alta calidad. El SDK de Python de SageMaker proporciona API y contenedores de código abierto para entrenar e implementar modelos en SageMaker, utilizando varios marcos de aprendizaje profundo y aprendizaje automático diferentes.
La integración de Hugging Face con SageMaker le permite crear modelos de Hugging Face a escala en sus propios casos de uso específicos de dominio.
En esta publicación, lo guiaremos a través de un ejemplo de cómo crear e implementar un resumen de texto personalizado de Hugging Face en SageMaker. Usamos Pegasus [1] para este propósito, el primer modelo basado en Transformer específicamente entrenado previamente en un objetivo diseñado para el resumen de texto abstracto. BERT está previamente capacitado para enmascarar palabras aleatorias en una oración; por el contrario, durante el entrenamiento previo de Pegasus, las oraciones se enmascaran de un documento de entrada. Luego, el modelo genera las oraciones que faltan como una sola secuencia de salida usando todas las oraciones sin enmascarar como contexto, creando como resultado un resumen ejecutivo del documento.
Gracias a la flexibilidad de la biblioteca HuggingFace, puede adaptar fácilmente el código que se muestra en esta publicación para otros tipos de modelos de transformadores, como t5, BART y más.
Cargue su propio conjunto de datos para ajustar un modelo Hugging Face
Para cargar un conjunto de datos personalizado desde un archivo CSV, usamos el load_dataset
método del paquete Transformers. Podemos aplicar la tokenización al conjunto de datos cargado usando el datasets.Dataset.map
función. los map
itera sobre el conjunto de datos cargado y aplica la función tokenize a cada ejemplo. Luego, el conjunto de datos tokenizado se puede pasar al entrenador para ajustar el modelo. Ver el siguiente código:
Cree su guión de entrenamiento para el estimador Hugging Face SageMaker
Como se explica en la publicación. AWS y Hugging Face colaboran para simplificar y acelerar la adopción de modelos de procesamiento de lenguaje natural, capacitar a un modelo Hugging Face en SageMaker nunca ha sido tan fácil. Podemos hacerlo usando el estimador Hugging Face de la SDK de SageMaker.
El siguiente fragmento de código ajusta Pegasus en nuestro conjunto de datos. También puedes encontrar muchos cuadernos de muestra que lo guían a través del ajuste fino de diferentes tipos de modelos, disponibles directamente en el repositorio de Transformers GitHub. Para habilitar el entrenamiento distribuido, podemos usar el Biblioteca de paralelismo de datos en SageMaker, que se ha integrado en la API HuggingFace Trainer. Para habilitar el paralelismo de datos, necesitamos definir el distribution
parámetro en nuestro estimador Hugging Face.
El tamaño máximo del lote de entrenamiento que puede configurar depende del tamaño del modelo y la memoria de GPU de la instancia utilizada. Si la capacitación distribuida de SageMaker está habilitada, el tamaño total del lote es la suma de cada lote que se distribuye en cada dispositivo/GPU. Si usamos una instancia ml.g4dn.16xlarge con entrenamiento distribuido en lugar de una instancia ml.g4dn.xlarge, tenemos ocho veces (8 GPU) más memoria que una instancia ml.g4dn.xlarge (1 GPU). El tamaño del lote por dispositivo sigue siendo el mismo, pero se están capacitando ocho dispositivos en paralelo.
Como es habitual con SageMaker, creamos un train.py
secuencia de comandos para usar con el modo de secuencia de comandos y pasar hiperparámetros para el entrenamiento. El siguiente fragmento de código para Pegasus carga el modelo y lo entrena usando Transformers Trainer
clase:
El código completo está disponible en GitHub.
Implemente el modelo de cara abrazada capacitado en SageMaker
Nuestros amigos de Hugging Face han simplificado más que nunca la inferencia en SageMaker para los modelos de Transformers gracias a la Kit de herramientas de inferencia de cara abrazada de SageMaker. Puede implementar directamente el modelo previamente entrenado simplemente configurando la variable de entorno "HF_TASK":"summarization"
(para obtener instrucciones, consulte Modelos Pegasus), eligiendo Despliegue, y luego eligiendo Amazon SageMaker, sin necesidad de escribir un script de inferencia.
Sin embargo, si necesita alguna forma específica de generar o posprocesar predicciones, por ejemplo, generar varias sugerencias de resumen basadas en una lista de diferentes parámetros de generación de texto, escribir su propio script de inferencia puede ser útil y relativamente sencillo:
Como se muestra en el código anterior, una secuencia de comandos de inferencia de este tipo para HuggingFace en SageMaker solo necesita las siguientes funciones de plantilla:
- model_fn () – Lee el contenido de lo que se guardó al final del trabajo de entrenamiento en el interior
SM_MODEL_DIR
, o desde un directorio de pesos de modelo existente guardado como un archivo tar.gz en Servicio de almacenamiento simple de Amazon (Amazon S3). Se usa para cargar el modelo entrenado y el tokenizador asociado. - input_fn () – Formatea los datos recibidos de una solicitud realizada al punto final.
- predic_fn () – Llama la salida de
model_fn()
(el modelo y tokenizador) para ejecutar la inferencia en la salida deinput_fn()
(los datos formateados).
Opcionalmente, puede crear un output_fn()
función para el formato de inferencia, utilizando la salida de predict_fn()
, que no demostramos en esta publicación.
Luego, podemos implementar el modelo Hugging Face entrenado con su script de inferencia asociado en SageMaker usando el Modelo de SageMaker de cara abrazada clase:
Probar el modelo desplegado
Para esta demostración, entrenamos al modelo en el Conjunto de datos de reseñas de ropa de comercio electrónico para mujeres, que contiene reseñas de prendas de vestir (que consideramos como texto de entrada) y sus títulos asociados (que consideramos como resúmenes). Después de eliminar los artículos a los que les faltan títulos, el conjunto de datos contiene 19,675 70 reseñas. Ajustar el modelo de Pegasus en un conjunto de entrenamiento que contenía el 3.5 % de esos artículos durante cinco épocas llevó aproximadamente 3.16 horas en una instancia ml.pXNUMXxlarge.
Luego podemos implementar el modelo y probarlo con algunos datos de ejemplo del conjunto de prueba. El siguiente es un ejemplo de revisión que describe un suéter:
Gracias a nuestro script de inferencia personalizado alojado en un punto final de SageMaker, podemos generar varios resúmenes para esta revisión con diferentes parámetros de generación de texto. Por ejemplo, podemos pedirle al punto final que genere un rango de resúmenes muy cortos a moderadamente largos que especifiquen diferentes penalizaciones de longitud (cuanto menor sea la penalización de longitud, más corto será el resumen generado). Los siguientes son algunos ejemplos de entrada de parámetros y los subsiguientes resúmenes generados por máquinas:
¿Qué resumen prefieres? El primer título generado captura todos los hechos importantes sobre la reseña, con una cuarta parte del número de palabras. En contraste, el último solo usa tres palabras (menos de 1/10 de la extensión de la reseña original) para enfocarse en la característica más importante del suéter.
Conclusión
Puede ajustar un resumen de texto en su conjunto de datos personalizado e implementarlo en producción en SageMaker con este sencillo ejemplo disponible en GitHub. Adicional cuadernos de muestra para entrenar e implementar modelos Hugging Face en SageMaker también están disponibles.
Como siempre, AWS agradece sus comentarios. Envíe sus comentarios o preguntas.
Referencias
[1] PEGASUS: Pre-entrenamiento con oraciones en hueco extraídas para resúmenes abstractivos
Sobre los autores
Viktor Malesevic es un ingeniero de aprendizaje automático de AWS Professional Services, apasionado por el procesamiento del lenguaje natural y MLOps. Trabaja con los clientes para desarrollar y poner en producción modelos desafiantes de aprendizaje profundo en AWS. En su tiempo libre, disfruta compartir una copa de vino tinto y un poco de queso con amigos.
Aamna Najmi es un científico de datos con los servicios profesionales de AWS. Le apasiona ayudar a los clientes a innovar con tecnologías de Big Data e Inteligencia Artificial para aprovechar el valor comercial y los conocimientos de los datos. En su tiempo libre, disfruta de la jardinería y de viajar a nuevos lugares.
- AI
- arte ai
- generador de arte ai
- robot ai
- Amazon SageMaker
- inteligencia artificial
- certificación de inteligencia artificial
- inteligencia artificial en banca
- robots de inteligencia artificial
- robots de inteligencia artificial
- software de inteligencia artificial
- Aprendizaje automático de AWS
- blockchain
- conferencia blockchain ai
- Coingenius
- inteligencia artificial conversacional
- criptoconferencia ai
- de dall
- deep learning
- google ai
- máquina de aprendizaje
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- escala ia
- sintaxis
- zephyrnet