Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Desde su introducción en 2017, los transformadores se han convertido en el estándar de facto para abordar una amplia gama de tareas de procesamiento del lenguaje natural (PLN) tanto en el mundo académico como en la industria. Sin darte cuenta, es probable que hoy hayas interactuado con un transformador: Google utiliza ahora BERT para mejorar su motor de búsqueda al comprender mejor las consultas de búsqueda de los usuarios. Del mismo modo, la familia de modelos GPT de OpenAI ha aparecido repetidamente en los titulares de los principales medios de comunicación por su capacidad para generar texto e imágenes similares a los humanos.1 Estos transformadores alimentan ahora aplicaciones como Copilot de GitHub, que, como se muestra en la Figura P-1, puede convertir un comentario en código fuente que crea automáticamente una red neuronal por ti.

Entonces, ¿qué tienen los transformadores que cambiaron el campo casi de la noche a la mañana? Como muchos grandes avances científicos, fue la síntesis de varias ideas, como la atención, el aprendizaje por transferencia y laampliación de las redes neuronales, que estaban filtrándose en la comunidad investigadora en aquel momento.

Pero por muy útil que sea, para ganar adeptos en la industria cualquier método nuevo y elegante necesita herramientas que lo hagan accesible. Labibliotecanlpt_pin01Transformers y el ecosistema que la rodea respondieron a esa llamada facilitando a los profesionales el uso, la formación y el intercambio de modelos. Esto aceleró enormemente la adopción de los transformadores, y la biblioteca es utilizada ahora por más de cinco mil organizaciones. A lo largo de este libro te guiaremos sobre cómo entrenar y optimizar estos modelos para aplicaciones prácticas.

copilot
Figura P-1. Un ejemplo de GitHub Copilot en el que, dada una breve descripción de la tarea, la aplicación proporciona una sugerencia para toda la clase (todo lo que sigue a class es autogenerado)

¿A quién va dirigido este libro?

Este libro está escrito para científicos de datos e ingenieros de aprendizaje automático que hayan oído hablar de los recientes avances relacionados con los transformadores, pero que carezcan de una guía en profundidad que les ayude a adaptar estos modelos a sus propios casos de uso. El libro no pretende ser una introducción al aprendizaje automático, y asumimos que te sientes cómodo programando en Python y que tienes conocimientos básicos de marcos de aprendizaje profundo como PyTorch yTensorFlow. También asumimos que tienes alguna experiencia práctica con el entrenamiento de modelos en GPUs. Aunque el libro se centra en la API PyTorch de nlpt_pin01Transformers, el Capítulo 2 te muestra cómo trasladar todos los ejemplos a TensorFlow.

Los siguientes recursos proporcionan una buena base para los temas tratados en este libro. Suponemos que tus conocimientos técnicos están más o menos a su nivel:

  • Aprendizaje automático práctico con Scikit-Learn y TensorFlow, por Aurélien Géron (O'Reilly)

  • Aprendizaje profundo para programadores con fastai y PyTorch, por Jeremy Howard y Sylvain Gugger (O'Reilly)

  • Procesamiento del lenguaje natural con PyTorch, por Delip Rao y Brian McMahan (O'Reilly)

  • El curso Hugging Face, por el equipo de código abierto de Hugging Face

Lo que aprenderás

El objetivo de este libro es que puedas crear tus propias aplicaciones lingüísticas. Para ello, se centra en casos de uso práctico, y profundiza en la teoría sólo cuando es necesario. El estilo del libro es práctico, y te recomendamos encarecidamente que experimentes ejecutando tú mismo los ejemplos de código.

El libro abarca las principales aplicaciones de los transformadores en la PNL, dedicando cada capítulo (con algunas excepciones) a una tarea, combinada con un caso de uso y un conjunto de datos realistas. Cada capítulo también introduce algunos conceptos adicionales. He aquí un resumen de alto nivel de las tareas y temas que trataremos:

  • El Capítulo 1, Hola Transformadores, presenta los transformadores y los pone en contexto. También proporciona una introducción al ecosistema Cara Abrazada.

  • El Capítulo 2, Clasificación de textos, se centra en la tarea del análisis de sentimientos (un problema habitual de clasificación de textos) e introduce la API Trainer.

  • El Capítulo 3, Anatomía del Transformador, profundiza en la arquitectura del Transformador, para prepararte para los capítulos siguientes.

  • El Capítulo 4, Reconocimiento multilingüe de entidades con nombre, se centra en la tarea de identificar entidades en textos en varias lenguas (un problema de clasificación de tokens).

  • El Capítulo 5, Generación de texto, explora la capacidad de los modelos de transformador para generar texto, e introduce estrategias y métricas de descodificación.

  • El Capítulo 6, Resumir, profundiza en la compleja tarea secuencia a secuencia de resumir textos y explora las métricas utilizadas para esta tarea.

  • El Capítulo 7, Respuesta a preguntas, se centra en la construcción de un sistema de respuesta a preguntas basado en revisiones e introduce la recuperación con Haystack.

  • El Capítulo 8, Cómo hacer que los transformadores sean eficientes en la producción, se centra en el rendimiento de los modelos. Examinaremos la tarea de detección de intenciones (un tipo de problema de clasificación de secuencias) y exploraremos técnicas como la destilación de conocimientos, la cuantización y la poda.

  • Enel Capítulo 9, Cómo lidiar con pocas o ninguna etiqueta, se estudian formas de mejorar el rendimiento del modelo en ausencia de grandes cantidades de datos etiquetados. Construiremos un etiquetador de temas de GitHub y exploraremos técnicas como la clasificación sin etiquetas y el aumento de datos.

  • El capítulo 10, Entrenar transformadores desde cero, te muestra cómo construir y entrenar un modelo para autocompletar código fuente Python desde cero. Veremos el streaming de conjuntos de datos y el entrenamiento a gran escala, y construiremos nuestro propio tokenizador.

  • El Capítulo 11, Orientaciones futuras, explora los retos a los que se enfrentan los transformadores y algunas de las nuevas y apasionantes direcciones que está tomando la investigación en este campo.

nlpt_pin01 Transformadores ofrece varias capas de abstracción para utilizar y entrenar modelos de transformadores. Empezaremos con las tuberías fáciles de usar que nos permiten pasar ejemplos de texto a través de los modelos e investigar las predicciones en sólo unas líneas de código. Luego pasaremos a los tokenizadores, las clases de modelos y la API Trainer, que nos permiten entrenar modelos para nuestros propios casos de uso. Más adelante, te mostraremos cómo sustituirTrainer por la biblioteca nlpt_pin01 Accelerate, que nos da un control total sobre el bucle de entrenamiento y nos permite entrenar transformadores a gran escala ¡totalmente desde cero! Aunque cada capítulo es en su mayor parte autocontenido, la dificultad de las tareas aumenta en los últimos capítulos. Por ello, te recomendamos que empieces por los capítulos 1 y 2, antes de desviarte hacia el tema que más te interese.

Además de nlpt_pin01 Transformers ynlpt_pin01 Accelerate, también haremos un amplio uso de nlpt_pin01Datasets, que se integra perfectamente con otras bibliotecas. nlpt_pin01Datasets ofrece una funcionalidad para el procesamiento de datos similar a la de Pandas, pero está diseñada desde cero para abordar grandes conjuntos de datos y el aprendizaje automático.

Con estas herramientas, ¡tienes todo lo que necesitas para afrontar casi cualquier reto de PNL!

Requisitos de software y hardware

Debido al enfoque práctico de este libro, te recomendamos encarecidamente que ejecutes los ejemplos de código mientras lees cada capítulo. Como estamos tratando con transformadores, necesitarás acceso a un ordenador con una GPU NVIDIA para entrenar estos modelos. Afortunadamente, existen varias opciones gratuitas en línea que puedes utilizar, entre ellas:

Para ejecutar los ejemplos, tendrás que seguir la guía de instalación que proporcionamos en el repositorio GitHub del libro. Puedes encontrar esta guía y los ejemplos de código enhttps://github.com/nlp-with-transformers/notebooks.

Consejo

Desarrollamos la mayoría de los capítulos utilizando GPUs NVIDIA Tesla P100, que tienen 16 GB de memoria. Algunas de las plataformas libres proporcionan GPUs con menos memoria, por lo que puede que tengas que reducir el tamaño del lote al entrenar los modelos.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://github.com/nlp-with-transformers/notebooks.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Procesamiento del Lenguaje Natural con Transformadores" de Lewis Tunstall, Leandro von Werra y Thomas Wolf (O'Reilly). Copyright 2022 Lewis Tunstall, Leandro von Werra y Thomas Wolf, 978-1-098-13679-6".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/nlp-with-transformers.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para noticias e información sobre nuestros libros y cursos, visita http://oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://youtube.com/oreillymedia

Agradecimientos

Escribir un libro sobre uno de los campos de aprendizaje automático que más rápido evoluciona no habría sido posible sin la ayuda de muchas personas. Damos las gracias al maravilloso equipo de O'Reilly, y especialmente a Melissa Potter, Rebecca Novack y Katherine Tozer por su apoyo y asesoramiento. El libro también se ha beneficiado de revisores increíbles que dedicaron incontables horas a proporcionarnos comentarios de valor incalculable. Estamos especialmente agradecidos a Luca Perozzi, Hamel Husain, Shabie Iqbal, Umberto Lupo, Malte Pietsch, Timo Möller y Aurélien Géron por sus detalladas revisiones. Damos las gracias a Branden Chan, dedeepset, por su ayuda para ampliar la biblioteca Haystack y hacerla compatible con el caso de uso del capítulo 7. Las preciosas ilustraciones de este libro se deben a la increíbleChrista Lanz: graciaspor hacer que este libro sea muy especial. También tuvimos la suerte de contar con el apoyo de todo el equipo de Hugging Face. Muchas gracias a Quentin Lhoest por responder a innumerables preguntas sobre nlpt_pin01 Datasets, a Lysandre Debut por su ayuda en todo lo relacionado con el Hub de Hugging Face, a Sylvain Gugger por su ayuda con nlpt_pin01Accelerate, y a Joe Davison por su inspiración para elCapítulo 9 en lo que respecta al aprendizaje de tiro cero. También damos las gracias a Sidd Karamcheti y a todo elequipo de Mistral por añadir ajustes de estabilidad para GPT-2 para hacer posible el Capítulo 10. Este libro se ha escrito íntegramente en cuadernos Jupyter, y damos las gracias a Jeremy Howard y Sylvain Gugger por crear herramientas tan agradables como fastdoc, que lo han hecho posible.

Lewis

A Sofía, gracias por ser una fuente constante de apoyo y ánimo; sin ambos, este libro no existiría. Después de escribir durante mucho tiempo, ¡por fin podemos volver a disfrutar de los fines de semana!

Leandro

Gracias Janine, por tu paciencia y apoyo alentador durante este largo año con muchas noches hasta tarde y fines de semana ajetreados.

Thomas

Me gustaría dar las gracias en primer lugar a Lewis y a Leandro por haber tenido la idea de este libro y por haber empujado con fuerza para producirlo en un formato tan bonito y accesible. También me gustaría dar las gracias a todo el equipo de Hugging Face por creer en la misión de la IA como un esfuerzo comunitario, y a toda la comunidad de PNL/IA por construir y utilizar junto con nosotros las bibliotecas y la investigación que describimos en este libro.

Más que lo que construimos, el viaje que emprendemos es lo que realmente importa, y hoy tenemos el privilegio de recorrer este camino con miles de miembros de la comunidad y lectores como tú. Gracias a todos de todo corazón.

1 Los investigadores en PNL suelen poner a sus creaciones nombres de personajes de Barrio Sésamo. Explicaremos qué significan todas estas siglas en el Capítulo 1.

Get Procesamiento del Lenguaje Natural con Transformadores, Edición Revisada now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.