Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Todo el mundo habla del aprendizaje automático. Ha pasado de ser una disciplina académica a una de las tecnologías más apasionantes del momento. Desde la comprensión de las secuencias de vídeo en los coches autoconducidos hasta la personalización de los medicamentos, está adquiriendo importancia en todos los sectores. Aunque las arquitecturas y los conceptos de los modelos han recibido mucha atención, el aprendizaje automático aún no ha pasado por la estandarización de procesos que experimentó la industria del software en las dos últimas décadas. En este libro, nos gustaría mostrarte cómo construir un sistema de aprendizaje automático estandarizado que esté automatizado y dé como resultado modelos que sean reproducibles.
¿Qué son los conductos de aprendizaje automático?
Durante los últimos años, los avances en el campo del aprendizaje automático han sido asombrosos. Con la amplia disponibilidad de unidades de procesamiento gráfico (GPU) y el auge de nuevos conceptos de aprendizaje profundo como los Transformadores, como BERT, o las Redes Generativas Adversariales (GAN), como las GAN convolucionales profundas, el número de proyectos de IA se ha disparado. El número de startups de IA es enorme. Las organizaciones aplican cada vez más los últimos conceptos de aprendizaje automático a todo tipo de problemas empresariales. En esta carrera por la solución de aprendizaje automático más eficaz, hemos observado algunas cosas a las que se ha prestado menos atención. Hemos visto que los científicos de datos y los ingenieros de aprendizaje automático carecen de buenas fuentes de información sobre conceptos y herramientas para acelerar, reutilizar, gestionar e implementar sus desarrollos. Lo que se necesita es la normalización de los conductos de aprendizaje automático.
Las canalizaciones de aprendizaje automático implementan y formalizan procesos para acelerar, reutilizar, gestionar e implementar modelos de aprendizaje automático. La ingeniería de software experimentó los mismos cambios hace aproximadamente una década con la introducción de la integración continua (IC) y la implementación continua (IC). Antes, probar e implementar una aplicación web era un proceso largo. Hoy en día, estos procesos se han simplificado enormemente gracias a unas pocas herramientas y conceptos. Antes, la implementación de aplicaciones web requería la colaboración entre un ingeniero de DevOps y el desarrollador de software. Hoy, la aplicación puede probarse e implementarse de forma fiable en cuestión de minutos. Los científicos de datos y los ingenieros de aprendizaje automático pueden aprender mucho sobre flujos de trabajo de la ingeniería de software. Nuestra intención con este libro es contribuir a la estandarización de los proyectos de aprendizaje automático guiando a los lectores a través de todo un proceso de aprendizaje automático, de principio a fin.
Según nuestra experiencia personal, la mayoría de los proyectos de ciencia de datos que pretenden implementar modelos en producción no pueden permitirse el lujo de contar con un gran equipo. Esto dificulta la construcción interna de un pipeline completo desde cero. Puede significar que los proyectos de aprendizaje automático se conviertan en esfuerzos puntuales en los que el rendimiento se degrada con el tiempo, el científico de datos pasa gran parte de su tiempo corrigiendo errores cuando cambian los datos subyacentes, o el modelo no se utiliza ampliamente. Un proceso automatizado y reproducible reduce el esfuerzo necesario para la implementación de un modelo. El proceso debe incluir pasos que:
-
Versiona eficazmente tus datos y pon en marcha una nueva ejecución de entrenamiento del modelo
-
Valida los datos recibidos y comprueba la deriva de los datos
-
Preprocesa eficazmente los datos para el entrenamiento y la validación de tu modelo
-
Entrena eficazmente tus modelos de aprendizaje automático
-
Sigue el entrenamiento de tu modelo
-
Analiza y valida tus modelos entrenados y ajustados
-
Implementación del modelo validado
-
Escala el modelo de implementación
-
Captura nuevos datos de entrenamiento y métricas de rendimiento del modelo con bucles de retroalimentación
Esta lista deja fuera un punto importante: la elección de la arquitectura del modelo. Suponemos que ya tienes un buen conocimiento práctico de este paso. Si te estás iniciando en el aprendizaje automático o profundo, estos recursos son un buen punto de partida para familiarizarte con el aprendizaje automático:
-
Fundamentos del Aprendizaje Profundo: Designing Next-Generation Machine Intelligence Algorithms, 1ª edición de Nikhil Buduma y Nicholas Locascio (O'Reilly)
-
Aprendizaje automático práctico con Scikit-Learn, Keras y TensorFlow, 2ª ediciónpor Aurélien Géron (O'Reilly)
¿A quién va dirigido este libro?
Los destinatarios principales del libro son los científicos de datos y los ingenieros de aprendizaje automático que quieran ir más allá del entrenamiento de un modelo de aprendizaje automático puntual y que deseen productivizar con éxito sus proyectos de ciencia de datos. Debes sentirte cómodo con los conceptos básicos del aprendizaje automático y estar familiarizado con al menos un marco de aprendizaje automático (por ejemplo, PyTorch, TensorFlow, Keras). Los ejemplos de aprendizaje automático de este libro se basan en TensorFlow y Keras, pero los conceptos básicos pueden aplicarse a cualquier marco.
Un público secundario para este libro son los gestores de proyectos de ciencia de datos, los desarrolladores de software o los ingenieros DevOps que quieran capacitar a su organización para acelerar sus proyectos de ciencia de datos. Si estás interesado en comprender mejor los ciclos de vida automatizados del aprendizaje automático y cómo pueden beneficiar a tu organización, el libro presentará una cadena de herramientas para conseguir exactamente eso.
¿Por qué TensorFlow y TensorFlow Extended?
A lo largo de este libro, todos nuestros ejemplos de canalización utilizarán herramientas del ecosistema TensorFlow, y en particular TensorFlow Extended (TFX). Hay varias razones para elegir este marco de trabajo:
-
El ecosistema TensorFlow es el más extenso para el aprendizaje automático en el momento de escribir estas líneas. Incluye múltiples proyectos útiles y bibliotecas de apoyo más allá de su núcleo principal, como TensorFlow Privacy y TensorFlow Probability.
-
Es popular y se utiliza ampliamente en montajes de producción pequeños y grandes, y existe una comunidad activa de usuarios interesados.
-
Los casos de uso admitidos abarcan desde la investigación académica hasta el aprendizaje automático en producción. TFX está estrechamente integrado con el núcleo de la plataforma TensorFlow para casos de uso en producción.
-
Tanto TensorFlow como TFX son herramientas de código abierto, y no hay restricciones para su uso.
Sin embargo, todos los principios que describimos en este libro también son relevantes para otras herramientas y marcos.
Resumen de los capítulos
En cada capítulo, introduciremos pasos específicos para construir canalizaciones de aprendizaje automático y demostraremos cómo funcionan con un proyecto de ejemplo.
El Capítulo 1: Introducción ofrece una visión general de las canalizaciones de aprendizaje automático, analiza cuándo debes utilizarlas y describe todos los pasos que componen una canalización. También presentamos el proyecto de ejemplo que utilizaremos a lo largo del libro.
El Capítulo 2: Introducción a TensorFlow Extended presenta el ecosistema TFX, explica cómo se comunican las tareas entre sí y describe cómo funcionan internamente los componentes TFX. También echamos un vistazo al ML MetadataStore y cómo se utiliza en el contexto de TFX, y cómo Apache Beam ejecuta los componentes TFX entre bastidores.
Enel Capítulo 3: Ingestión de datos, se explica cómo introducir datos en nuestras canalizaciones de forma coherente y también se trata el concepto de versionado de datos.
El Capítulo 4: Validación de Datos explica cómo los datos que fluyen hacia tu pipeline pueden validarse de forma eficiente utilizando la Validación de Datos de TensorFlow. Esto te alertará si los nuevos datos cambian sustancialmente con respecto a los anteriores de una forma que pueda afectar al rendimiento de tu modelo .
El Capítulo 5: Preprocesamiento de datos se centra en el preprocesamiento de datos (la ingeniería de características) mediante la Transformación TensorFlow para convertir los datos brutos en características adecuadas para entrenar un modelo de aprendizaje automático.
Enel Capítulo 6: Entrenamiento de modelos se explica cómo puedes entrenar modelos dentro de los conductos de aprendizaje automático. También explicamos el concepto de ajuste de modelos.
El Capítulo 7: Análisis y validación del modelo presenta métricas útiles para comprender tu modelo en producción, incluidas las que pueden permitirte descubrir sesgos en las predicciones del modelo, y analiza métodos para explicar las predicciones de tu modelo. "Análisis y validación en TFX" explica cómo controlar el versionado de tu modelo cuando una nueva versión mejora una métrica. El modelo en el pipeline puede actualizarse automáticamente a la nueva versión.
Capítulo 8: Implementación de modelos con TensorFlow Serving se centra en cómo implementar eficientemente tu modelo de aprendizaje automático. Comenzando con una sencilla implementación en Flask, destacamos las limitaciones de este tipo de aplicaciones de modelos personalizados. Presentaremos TensorFlow Serving y cómo configurar tus instancias servidoras. También hablaremos de su funcionalidad de procesamiento por lotes y te guiaremos en la configuración de clientes para solicitar predicciones de modelos.
Capítulo 9: Implementaciones avanzadas de modelos con TensorFlow Serving analiza cómo optimizar tus implementaciones de modelos y cómo monitorizarlas. Cubrimos estrategias para optimizar tus modelos TensorFlow con el fin de aumentar su rendimiento. También te guiamos a través de una configuración básica de implementación con Kubernetes.
El Capítulo 10: TensorFlow Extendido Avanzado introduce el concepto de componentes personalizados para tus pipelines de aprendizaje automático, de modo que no estés limitado por los componentes estándar de TFX. Tanto si quieres añadir pasos adicionales de ingestión de datos como convertir tus modelos exportados a TensorFlow Lite (TFLite), te guiaremos por los pasos necesarios para crear dichos componentes.
Capítulo 11: Pipelines Parte I: Apache Beam y Apache Airflow conecta todos los puntos de los capítulos anteriores. Discutimos cómo puedes convertir tus componentes en pipelines y cómo tendrás que configurarlos para la plataforma de orquestación que elijas. También te guiamos a través de un canal completo de principio a fin que se ejecuta en Apache Beam y Apache Airflow.
Capítulo 12: Pipelines Parte 2: Pipelines Kubeflow continúa desde el capítulo anterior y recorre los pipelines de extremo a extremo utilizando Pipelines Kubeflow y la Plataforma de IA de Google.
El Capítulo 13: Bucles de retroalimentación trata de cómo convertir tu canalización de modelos en un ciclo que pueda mejorarse mediante la retroalimentación de los usuarios del producto final. Discutiremos qué tipo de datos capturar para mejorar el modelo para futuras versiones y cómo retroalimentar los datos en el conducto.
El Capítulo 14: Privacidad de los datos para el aprendizaje automático introduce el campo en rápido crecimiento del aprendizaje automático que preserva la privacidad y analiza tres métodos importantes para ello: la privacidad diferencial, el aprendizaje federado y el aprendizaje automático cifrado.
El Capítulo 15: El futuro de las canalizaciones y los próximos pasos ofrece una perspectiva de las tecnologías que influirán en las futuras canalizaciones de aprendizaje automático y de cómo pensaremos en la ingeniería del aprendizaje automático en los próximos años.
El Apéndice A: Introducción a la infraestructura para el aprendizaje automático ofrece una breve introducción a Docker y Kubernetes.
El Apéndice B: Configuración de un clúster de Kubernetes en Google Cloud contiene material complementario sobre la configuración de Kubernetes en Google Cloud.
El Apéndice C: Consejos para el funcionamiento de las tuberías Kubeflow contiene algunos consejos útiles para el funcionamiento de tu configuración de tuberías Kubeflow, incluida una descripción general de la interfaz de línea de comandos TFX.
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, etc.) se puede descargar en https://oreil.ly/bmlp-git.
Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a bookquestions@oreilly.com y buildingmlpipelines@gmail.com.
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 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, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Building Machine Learning Pipelines por Hannes Hapke y Catherine Nelson (O'Reilly). Copyright 2020 Hannes Hapke y Catherine Nelson, 978-1-492-05319-4".
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 permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación, conocimientos y perspectivas sobre tecnología y negocios 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
Ambos autores desean agradecerte que hayas escogido este libro y le hayas prestado atención. Si quieres ponerte en contacto con ellos, puedes hacerlo a través de su sitio web www.buildingmlpipelines.com o por correo electrónico en buildingmlpipelines@gmail.com. Te desean mucho éxito en la creación de tus propias líneas de aprendizaje automático.
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/build-ml-pipelines.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para obtener 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://www.youtube.com/oreillymedia
Agradecimientos
Hemos recibido mucho apoyo de muchas personas maravillosas a lo largo del proceso de escribir este libro. ¡Muchas gracias a todos los que nos han ayudado a hacerlo realidad! Nos gustaría dar las gracias especialmente a las siguientes personas.
Ha sido fantástico trabajar con todo el mundo en O'Reilly durante todo el ciclo de vida de este libro. A nuestras editoras, Melissa Potter, Nicole Taché y Amelia Blevins, gracias por vuestro increíble apoyo, vuestro ánimo constante y vuestros atentos comentarios. Gracias también a Katie Tozer y Jonathan Hassell por su apoyo a lo largo del camino.
Gracias a Aurélien Géron, Robert Crowe, Margaret Maynard-Reid, Sergii Khomenko y Vikram Tiwari, que revisaron todo el libro y aportaron muchas sugerencias útiles y comentarios perspicaces. Vuestras revisiones han hecho del borrador final un libro mejor. Gracias por las horas que habéis dedicado a revisar el libro con tanto detalle.
Gracias a Yann Dupis, Jason Mancuso y Morten Dahl por su exhaustiva y profunda revisión del capítulo sobre privacidad del aprendizaje automático.
Hemos recibido un apoyo fantástico de muchas personas maravillosas de Google. Gracias por ayudarnos a encontrar y corregir errores, ¡y gracias por hacer que estas herramientas estén disponibles como paquetes de código abierto! Además de a los Googlers mencionados, gracias especialmente a Amy Unruh, Anusha Ramesh, Christina Greer, Clemens Mewald, David Zats, Edd Wilder-James, Irene Giannoumis, Jarek Wilkiewicz, Jiayi Zhao, Jiri Simsa, Konstantinos Katsiapis, Lak Lakshmanan, Mike Dreves, Paige Bailey, Pedram Pejman, Sara Robinson, Soonson Kwon, Thea Lamkin, Tris Warkentin, Varshaa Naganathan, Zhitao Li y Zohar Yahav.
Damos las gracias a la comunidad TensorFlow y Google Developer Expert y a sus increíbles miembros. Debemos una profunda gratitud a la comunidad. Gracias por apoyar este esfuerzo.
Gracias a los demás colaboradores que ayudaron en las distintas fases: Barbara Fusinska, Hamel Husain, Michał Jastrzębski e Ian Hensel.
Gracias a las personas de Concur Labs (pasadas y presentes) y de otros departamentos de SAP Concur por sus magníficos debates y sus útiles ideas. En particular, gracias a John Dietz y Richard Puckett por su increíble apoyo al libro.
- Hannes
-
Me gustaría dar las gracias a mi maravillosa compañera, Whitney, por su enorme apoyo a lo largo de la escritura de este libro. Gracias por sus constantes ánimos y comentarios, así como por aguantarme largas horas escribiendo. Gracias a mi familia, especialmente a mis padres, que me permiten seguir mis sueños por todo el mundo.
Este libro no habría sido posible sin amigos increíbles. Gracias, Cole Howard por ser un amigo y maestro maravilloso. Nuestra colaboración en su día dio el pistoletazo de salida a esta publicación y a mi forma de pensar sobre los conductos de aprendizaje automático. A mis amigos Timo Metzger y Amanda Wright, gracias por enseñarme el poder del lenguaje. Y gracias a Eva y Kilian Rambach, así como a Deb y David Hackleman. Sin vuestra ayuda, no habría llegado hasta Oregón.
Me gustaría dar las gracias a mis anteriores empleadores, como Cambia Health, Caravel y Talentpair, por permitirme poner en práctica conceptos de esta publicación en entornos de producción, a pesar de que los conceptos eran novedosos.
Esta publicación no habría sido posible sin mi coautora, Catherine. Gracias por tu amistad, tus ánimos y tu infinita paciencia. Me alegro de que nos hayamos conocido por pura casualidad de la vida. Estoy muy contenta de que hayamos logrado esta publicación juntas.
- Catherine
-
He escrito muchas palabras en este libro, pero no hay palabras para expresar lo mucho que agradezco el apoyo que he tenido de mi marido, Mike. Gracias por todos sus ánimos, su cocina, sus útiles discusiones, su sarcasmo y sus perspicaces comentarios. Gracias a mis padres por plantar la semilla de la programación hace tanto tiempo: tardó en crecer, ¡pero siempre tuvisteis razón!
Gracias a todas las maravillosas comunidades de las que he tenido la suerte de formar parte. He conocido a tanta gente estupenda a través de Seattle PyLadies, Women in Data Science y la comunidad Python en general. Agradezco de verdad vuestro aliento.
Y gracias a Hannes por invitarme a este viaje. ¡No habría sido posible sin ti! Tus profundos conocimientos, tu atención a los detalles y tu persistencia han hecho que todo este proyecto sea un éxito. ¡Y también ha sido muy divertido!
Get Construir Pipelines de Aprendizaje Automático 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.