Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Desde el primer curso de aprendizaje automático que impartí en Stanford en 2017, muchas personas me han pedido consejo sobre cómo implementar modelos de ML en sus organizaciones. Estas preguntas pueden ser genéricas, como "¿Qué modelo debo utilizar?". "¿Con qué frecuencia debo volver a entrenar mi modelo?" "¿Cómo puedo detectar cambios en la distribución de los datos?" "¿Cómo me aseguro de que las características utilizadas durante el entrenamiento son coherentes con las utilizadas durante la inferencia?
Estas preguntas también pueden ser específicas, como "Estoy convencido de que pasar de la predicción por lotes a la predicción en línea mejorará el rendimiento de nuestro modelo, pero ¿cómo convenzo a mi jefe para que me deje hacerlo?" o "Soy el científico de datos más veterano de mi empresa y hace poco me han encargado que cree nuestra primera plataforma de aprendizaje automático; ¿por dónde empiezo?".
Mi respuesta breve a todas estas preguntas es siempre: "Depende". Mis respuestas largas suelen implicar horas de debate para comprender de dónde viene el que pregunta, qué intenta conseguir realmente y los pros y los contras de los distintos enfoques para su caso de uso específico.
Los sistemas de ML son a la vez complejos y únicos. Son complejos porque constan de muchos componentes diferentes (algoritmos de ML, datos, lógica empresarial, métricas de evaluación, infraestructura subyacente, etc.) e implican a muchas partes interesadas diferentes (científicos de datos, ingenieros de ML, líderes empresariales, usuarios, incluso la sociedad en general). Los sistemas de ML son únicos porque dependen de los datos, y éstos varían enormemente de un caso de uso a otro.
Por ejemplo, dos empresas pueden estar en el mismo dominio (comercio electrónico) y tener el mismo problema que quieren que resuelva el ML (sistema de recomendación), pero sus sistemas de ML resultantes pueden tener una arquitectura de modelos diferente, utilizar conjuntos de características diferentes, evaluarse con métricas diferentes y aportar rendimientos de la inversión diferentes.
Muchas entradas de blog y tutoriales sobre la producción de ML se centran en responder a una pregunta concreta. Aunque este enfoque ayuda a entender el punto, pueden crear la impresión de que es posible considerar cada una de estas preguntas de forma aislada. En realidad, los cambios en un componente probablemente afectarán a otros componentes. Por lo tanto, es necesario considerar el sistema en su conjunto al intentar tomar cualquier decisión de diseño.
Este libro adopta un enfoque holístico de los sistemas de ML. Tiene en cuenta los distintos componentes del sistema y los objetivos de las distintas partes implicadas. El contenido de este libro se ilustra mediante casos prácticos reales, en muchos de los cuales he trabajado personalmente, respaldados por amplias referencias y revisados por profesionales del ML tanto del mundo académico como de la industria. Las secciones que requieren un conocimiento profundo de un tema determinado -por ejemplo, procesamiento por lotes frente a procesamiento por flujos, infraestructura de almacenamiento y computación, e IA responsable- son revisadas por expertos cuyo trabajo se centra en ese tema. En otras palabras, este libro es un intento de dar respuestas matizadas a las preguntas antes mencionadas y a otras más.
Cuando escribí por primera vez los apuntes de clase que sentaron las bases de este libro, pensé que los había escrito para mis alumnos, con el fin de prepararlos para las exigencias de sus futuros trabajos como científicos de datos e ingenieros de ML. Sin embargo, pronto me di cuenta de que yo también había aprendido muchísimo durante el proceso. Los borradores iniciales que compartí con los primeros lectores suscitaron muchas conversaciones que pusieron a prueba mis suposiciones, me obligaron a considerar diferentes perspectivas y me introdujeron en nuevos problemas y nuevos enfoques.
Espero que este proceso de aprendizaje continúe para mí ahora que el libro está en tus manos, ya que tienes experiencias y perspectivas que son únicas para ti. No dudes en compartir conmigo cualquier comentario que tengas sobre este libro, a través del servidor MLOps Discord que dirijo (donde también puedes encontrar a otros lectores de este libro), Twitter, LinkedIn u otros canales que puedes encontrar en mi sitio web.
A quién va dirigido este libro
Este libro es para cualquiera que quiera aprovechar el ML para resolver problemas del mundo real. ML en este libro se refiere tanto al aprendizaje profundo como a los algoritmos clásicos, con una inclinación hacia los sistemas ML a escala, como los que se ven en empresas medianas y grandes y en startups de rápido crecimiento. Los sistemas a menor escala tienden a ser menos complejos y podrían beneficiarse menos del enfoque exhaustivo expuesto en este libro.
Como mi formación es de ingeniería, el lenguaje de este libro está orientado a los ingenieros, incluidos los ingenieros de ML, los científicos de datos, los ingenieros de datos, los ingenieros de plataformas de ML y los directores de ingeniería. Puede que te sientas identificado con alguno de los siguientes escenarios:
Te han dado un problema empresarial y un montón de datos en bruto. Quieres diseñar estos datos y elegir las métricas adecuadas para resolver el problema.
Tus modelos iniciales funcionan bien en experimentos fuera de línea y quieres implementarlos.
Tienes poca información sobre el rendimiento de tus modelos una vez implementados, y quieres encontrar una forma de detectar, depurar y resolver rápidamente cualquier problema que puedan tener tus modelos en producción.
El proceso de desarrollo, evaluación, implementación y actualización de modelos para tu equipo ha sido en su mayor parte manual, lento y propenso a errores. Quieres automatizar y mejorar este proceso.
Cada caso de uso de ML en tu organización se ha implementado utilizando su propio flujo de trabajo, y quieres sentar las bases (por ejemplo, almacén de modelos, almacén de funciones, herramientas de monitoreo) que puedan compartirse y reutilizarse en todos los casos de uso.
Te preocupa que pueda haber sesgos en tus sistemas de ML y ¡quieres que tus sistemas sean responsables!
También puedes beneficiarte del libro si perteneces a uno de los siguientes grupos:
Desarrolladores de herramientas que quieran identificar áreas desatendidas en la producción de ML y averiguar cómo posicionar sus herramientas en el ecosistema.
Personas que buscan puestos relacionados con el ML en la industria.
Responsables técnicos y empresariales que estén considerando adoptar soluciones de ML para mejorar sus productos y/o procesos empresariales. Los lectores sin una sólida formación técnica podrían beneficiarse más de los Capítulos 1, 2 y 11.
Lo que este libro no es
Este libro no es una introducción al ML. Hay muchos libros, cursos y recursos disponibles para las teorías de ML, por lo que este libro se aleja de estos conceptos para centrarse en los aspectos prácticos de ML. En concreto, el libro asume que los lectores tienen un conocimiento básico de los siguientes temas:
Modelos de LD como agrupación, regresión logística, árboles de decisión, filtrado colaborativo y diversas arquitecturas de redes neuronales, como las de avance, recurrentes, convolucionales y transformadoras.
Técnicas de ML, como las supervisadas frente a las no supervisadas, el descenso gradiente, la función objetivo/pérdida, la regularización, la generalización y el ajuste de hiperparámetros.
Métricas como exactitud, F1, precisión, recuerdo, ROC, error cuadrático medio y log-verosimilitud
Conceptos estadísticos como varianza, probabilidad y distribución normal/de cola larga
Tareas comunes de ML como el modelado del lenguaje, la detección de anomalías, la clasificación de objetos y la traducción automática
No es necesario que conozcas estos temas al dedillo -para los conceptos cuyas definiciones exactas pueden requerir cierto esfuerzo para recordar, por ejemplo, la puntuación F1, incluimos breves notas como referencia-, pero deberías tener una idea aproximada de lo que significan al empezar.
Aunque este libro menciona herramientas actuales para ilustrar ciertos conceptos y soluciones, no es un libro tutorial. Las tecnologías evolucionan con el tiempo. Las herramientas entran y salen de moda rápidamente, pero los enfoques fundamentales para la resolución de problemas deberían durar un poco más. Este libro proporciona un marco para que evalúes la herramienta que mejor se adapta a tus casos de uso. Cuando hay una herramienta que quieres utilizar, suele ser sencillo encontrar tutoriales sobre ella en Internet. Por ello, este libro contiene pocos fragmentos de código y se centra en ofrecer un amplio debate sobre las ventajas y desventajas, los pros y los contras, y ejemplos concretos.
Repositorio GitHub y Comunidad
Este libro va acompañado de un repositorio GitHub que contiene:
Una revisión de los conceptos básicos del ML
Una lista de referencias utilizadas en este libro y otros recursos avanzados y actualizados
Fragmentos de código utilizados en este libro
Una lista de herramientas que puedes utilizar para determinados problemas que puedes encontrar en tus flujos de trabajo
También dirijo un servidor Discord en MLOps donde se te anima a debatir y hacer preguntas sobre el libro.
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.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
Como ya se ha mencionado, el material complementario (ejemplos de código, ejercicios, etc.) está disponible para su descarga en https://oreil.ly/designing-machine-learning-systems-code.
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.
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 "Diseño de Sistemas de Aprendizaje Automático por Chip Huyen (O'Reilly). Copyright 2022 Huyen Thi Khanh Nguyen, 978-1-098-10796-3".
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 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 https://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/designing-machine-learning-systems.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.
Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media
Síguenos en Twitter: https://twitter.com/oreillymedia
Míranos en YouTube: https://youtube.com/oreillymedia
Agradecimientos
Este libro tardó dos años en escribirse, y muchos más años antes en prepararse. Mirando hacia atrás, estoy asombrada y agradecida a partes iguales por la enorme ayuda que he recibido para escribir este libro. He hecho todo lo posible por incluir aquí los nombres de todas las personas que me han ayudado, pero debido al defecto inherente a la memoria humana, sin duda he omitido mencionar a muchas. Si he olvidado incluir tu nombre, que sepas que no ha sido porque no aprecie tu contribución y, por favor, ¡ten la amabilidad de recordármelo para que pueda rectificar lo antes posible!
En primer lugar, me gustaría dar las gracias al personal del curso que me ayudó a desarrollar el curso y los materiales en los que se basa este libro: Michael Cooper, Xi Yin, Chloe He, Kinbert Chou, Megan Leszczynski, Karan Goel y Michele Catasta. Me gustaría dar las gracias a mis profesores, Christopher Ré y Mehran Sahami, sin los cuales el curso no existiría en primer lugar.
Me gustaría dar las gracias a una larga lista de revisores que no sólo dieron ánimos, sino que mejoraron el libro en muchos órdenes de magnitud: Eugene Yan, Josh Wills, Han-chung Lee, Thomas Dietterich, Irene Tematelewo, Goku Mohandas, Jacopo Tagliabue, Andrey Kurenkov, Zach Nussbaum, Jay Chia, Laurens Geffert, Brian Spiering, Erin Ledell, Rosanne Liu, Chin Ling, Shreya Shankar y Sara Hooker.
Me gustaría dar las gracias a todos los lectores que leyeron la versión preliminar del libro y me dieron ideas sobre cómo mejorarlo, entre ellos Charles Frye, Xintong Yu, Jordan Zhang, Jonathon Belotti y Cynthia Yu.
Por supuesto, el libro no habría sido posible sin el equipo de O'Reilly, especialmente mi editora de desarrollo, Jill Leonard, y mis editores de producción, Kristen Brown, Sharon Tripp y Gregory Hyman. Me gustaría dar las gracias a Laurence Moroney, Hannes Hapke y Rebecca Novack, que me ayudaron a llevar este libro de una idea a una propuesta.
Este libro, al fin y al cabo, es una acumulación de lecciones inestimables que he aprendido a lo largo de mi carrera hasta la fecha. Debo estas lecciones a mis extremadamente competentes y pacientes compañeros y antiguos compañeros de trabajo en Claypot AI, Primer AI, Netflix, NVIDIA y Snorkel AI. Cada persona con la que he trabajado me ha enseñado algo nuevo sobre cómo traer el ML al mundo.
Un agradecimiento especial a mi cofundador Zhenzhong Xu por apagar los fuegos de nuestra startup y permitirme dedicar tiempo a este libro. Gracias, Luke, por apoyarme siempre en todo lo que quiero hacer, por ambicioso que sea.
Get Diseño de sistemas 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.