[ad_1]
Ha habido mucho progreso en el campo de la PNL últimamente. Los modelos preentrenados y los servicios de NLP totalmente administrados han democratizado el acceso y la adopción de NLP. Amazon Comprehend es un servicio completamente administrado que puede realizar tareas de NLP como detección de entidades personalizadas, modelado de temas, análisis de opiniones 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 con Hugging Face para acelerar la producción de modelos de procesamiento de lenguaje natural (NLP). 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 de Transformer populares y de vanguardia, como BERT, RoBERTa y GPT. Puede aplicar estos modelos a una variedad de tareas de PNL, como: B. Clasificación de textos, extracción de información y respuesta a preguntas.
Amazon SageMaker es un servicio totalmente administrado que brinda a los desarrolladores y científicos de datos la capacidad de crear, entrenar e implementar rápidamente modelos de aprendizaje automático (ML). 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 para 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 Pegaso [1] Con este fin, el primer modelo basado en Transformer se entrenó previamente específicamente para un objetivo adaptado al resumen del texto abstracto. BERT está capacitado para enmascarar palabras aleatorias en una oración; Por el contrario, durante el entrenamiento previo de Pegasus, las oraciones se escapan de un documento de entrada. Luego, el modelo genera las oraciones que faltan como una sola secuencia de salida, utilizando las oraciones sin escape como contexto, y produce un resumen del documento como resultado.
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 optimizar 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. Que map
La función itera sobre el conjunto de datos cargado y aplica la función de tokenización a cada muestra. Luego, el conjunto de datos tokenizados 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 están trabajando juntos para simplificar y acelerar la adopción de modelos de procesamiento de lenguaje natural. Entrenar a un modelo Hugging Face en SageMaker nunca ha sido tan fácil. Podemos hacer esto usando el Estimador de rostro abrazado del SDK de SageMaker.
El siguiente fragmento de código refina Pegasus en nuestro conjunto de datos. También puede encontrar muchos cuadernos de muestra que lo guiarán 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 la Biblioteca de paralelismo de datos en SageMaker, que se ha integrado en la API de HuggingFace Trainer. Para habilitar el paralelismo de datos, necesitamos definir el distribution
Parámetros en nuestro estimador de cara abrazada.
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. Cuando la capacitación distribuida de SageMaker está habilitada, el tamaño total del lote es la suma de todos los lotes distribuidos a 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 entrenan ocho dispositivos en paralelo.
Como es habitual con SageMaker, vamos a crear uno 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 con los 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 hecho que la inferencia de modelos de SageMaker para Transformers sea más fácil que nunca gracias al kit de herramientas de inferencia de SageMaker Hugging Face. Puede implementar el modelo previamente entrenado directamente simplemente configurando la variable de entorno "HF_TASK":"summarization"
(Consulte los modelos Pegasus para obtener instrucciones), seleccione Desplegary luego seleccione Amazon SageMakersin tener que escribir un script de inferencia.
Sin embargo, si necesita un método específico para generar o posprocesar predicciones, p. B. generar múltiples 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 fácil:
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:
- modelo_fn() – Lee el contenido de lo que estaba almacenado en el interior al final del trabajo de entrenamiento
SM_MODEL_DIR
, o desde un directorio de peso de modelo existente almacenado como un archivo tar.gz en Amazon Simple Storage Service (Amazon S3). Se utiliza para cargar el modelo entrenado y el tokenizador asociado. - entrada_fn() – Da formato a los datos recibidos de una solicitud al punto final.
- predecir_fn() – Llama a la salida de
model_fn()
(el modelo y el tokenizador) para realizar la inferencia en la salida deinput_fn()
(los datos formateados).
Opcionalmente, puede crear uno output_fn()
Función de formato de inferencia utilizando la salida de predict_fn()
que no hemos demostrado en este post.
Luego, podemos implementar el modelo Hugging Face entrenado con su script de inferencia asociado en SageMaker mediante la clase Hugging Face SageMaker Model:
Probar el modelo proporcionado
Para esta demostración, entrenamos el modelo en el conjunto de datos de Reseñas de ropa de comercio electrónico para mujeres, que contiene reseñas de artículos de ropa (que consideramos texto de entrada) y sus títulos asociados (que consideramos resúmenes). Después de que eliminamos los artículos a los que les faltaban títulos, el conjunto de datos contiene 19 675 reseñas. El ajuste fino del modelo Pegasus en un conjunto de entrenamiento que contenía el 70 % de estos elementos durante cinco épocas tomó aproximadamente 3,5 horas en una instancia ml.p3.16xlarge.
Luego podemos implementar el modelo y probarlo con algunos datos de muestra del conjunto de prueba. La siguiente es una revisión de muestra que describe un suéter:
Gracias a nuestro script de inferencia personalizado alojado en un punto final de SageMaker, podemos crear 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 una serie 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). A continuación se muestran algunos ejemplos de entradas de parámetros y los subsiguientes resúmenes generados por la máquina:
¿Qué resumen prefieres? El primer título generado captura todos los hechos importantes sobre la revisión en una cuarta parte del recuento de palabras. En contraste, el último usa solo 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
Con este sencillo ejemplo, disponible en GitHub, puede optimizar un resumen de texto para su conjunto de datos personalizado e implementarlo en SageMaker para producción. También hay disponibles cuadernos de muestra adicionales para entrenar e implementar modelos Hugging Face en SageMaker.
Como siempre, AWS agradece los comentarios. Por favor envíe comentarios o preguntas.
referencias
[1] PEGASUS: Entrenamiento previo con frases en blanco extraídas para el resumen abstracto
Sobre los autores
Viktor Malesevic es ingeniero de aprendizaje automático en AWS Professional Services y tiene una pasión por el procesamiento del lenguaje natural y MLOps. Trabaja con clientes para desarrollar modelos sofisticados de aprendizaje profundo y ponerlos en producción en AWS. En su tiempo libre le gusta compartir una copa de vino tinto y un poco de queso con amigos.
Aamna Najmi es científico de datos en AWS Professional Services. Le apasiona ayudar a los clientes a innovar con big data y tecnologías de inteligencia artificial para desbloquear el valor comercial y los conocimientos de los datos. En su tiempo libre, disfruta de la jardinería y de viajar a nuevos lugares.
[ad_2]