2 puntos por GN⁺ 2025-01-29 | 1 comentarios | Compartir por WhatsApp
  • El curso de primavera de 2025 de CMU 17-445/17-645/17-745 Machine Learning in Production / AI Engineering cubre el proceso de convertir modelos de ML en productos de software que puedan desplegarse y operarse en entornos reales
  • El foco es una comprensión común que permita a científicos de datos e ingenieros de software trabajar juntos, conectando requisitos, diseño, despliegue, operación y aseguramiento de calidad bajo la premisa de que los modelos pueden cometer errores
  • El curso abarca ampliamente preparación ante predicciones incorrectas, MLOps, pruebas A/B y lanzamientos canary, detección de calidad de datos, deriva de concepto y bucles de retroalimentación, testing y depuración, equidad, privacidad y seguridad
  • Los estudiantes construyen, despliegan, evalúan y mantienen como proyecto grupal un servicio de recomendación de películas a escala de 1 millón de usuarios, y también practican con Kafka, Jenkins, Prometheus, Grafana, Docker, entre otros
  • Se espera experiencia básica en ML y capacidad de programación, pero no es obligatoria la experiencia en ingeniería de software; los materiales del curso, tareas y libro de texto están disponibles públicamente para autoaprendizaje y como material educativo

Objetivos del curso y público objetivo

  • Machine Learning in Production / AI Engineering es un curso que trata lo que viene después de crear predicciones con modelos de ML o prompts
    • Convertir modelos en productos y desplegarlos en entornos reales
    • Obtener confianza en la calidad
    • Operarlos y mantenerlos a escala
  • El curso de primavera de 2025 está diseñado para estudiantes con cierto nivel de experiencia en ciencia de datos
    • Por ejemplo: haber tomado un curso de ML, experiencia usando sklearn
    • Se espera programación básica en Python y capacidad para usar la shell de Unix
    • No se requiere experiencia en ingeniería de software, como testing, requisitos, arquitectura, procesos o trabajo en equipo
  • En el futuro, se espera que este curso se ofrezca al menos cada semestre de primavera, y posiblemente en algunos semestres de otoño
    • No está previsto ofrecerlo en el semestre de verano

Materiales públicos y recursos de referencia

Preguntas abordadas en sistemas de ML en producción

  • Diseño para predicciones incorrectas

    • Trata cómo debe comportarse el sistema incluso en situaciones en las que el modelo pueda equivocarse
    • Aborda cómo mantener seguridad y protección ante posibles errores
    • Considera tanto interfaces de usuario que funcionan en entornos reales como el diseño del sistema completo
  • Despliegue y actualizaciones en producción

    • Trata cómo desplegar y actualizar modelos de forma confiable
    • Aborda cómo probar todo el pipeline de ML
    • Automatiza y escala el proceso de despliegue con herramientas de MLOps
    • Cubre experimentos en producción como pruebas A/B y lanzamientos canary
    • Aborda la detección de problemas de calidad de datos, deriva de concepto y bucles de retroalimentación
  • Sistemas de ML escalables

    • Trata el diseño de sistemas que procesan grandes volúmenes de datos de entrenamiento, datos de telemetría y solicitudes de usuarios
    • Compara opciones como procesamiento de streams, procesamiento por lotes, arquitectura lambda y data lakes
  • Testing y depuración

    • Trata cómo evaluar en producción la calidad de las predicciones del modelo
    • Prueba no solo el modelo, sino el sistema completo basado en ML
    • Aplica lecciones de testing de software, generación automática de casos de prueba, simulación e integración continua al testing de ML en producción
  • Atributos de calidad más allá de la precisión

    • Cubre latencia de entrenamiento e inferencia, costos operativos, escalabilidad, explicabilidad, equidad, privacidad, robustez y seguridad
    • También considera si se requiere funcionamiento offline y la frecuencia de actualización del modelo
    • Identifica requisitos de calidad importantes en entornos de producción empresariales y gestiona conflictos y trade-offs

Estudios de caso y proyecto grupal

  • Los estudios de caso tratados en el curso incluyen diversos productos basados en ML
    • Transcripción automática de voz
    • Detección distribuida de niños desaparecidos basada en webcams
    • Traducción instantánea con realidad aumentada
    • Servicios médicos y de salud como detección de cáncer, detección de caídas y diagnóstico de COVID
    • Diseño automático de diapositivas en PowerPoint
    • Evaluación semiautomática de admisiones universitarias
    • Gestión de inventario
    • Playlists inteligentes y recomendaciones de películas
    • Detección de fraude publicitario
    • Robots de reparto y funciones de conducción inteligente
  • El proyecto grupal extendido consiste en construir, desplegar, evaluar y mantener un servicio de recomendación de películas
    • Se supone un entorno de “producción” relativamente realista
    • La escala de usuarios es de 1 millón de personas

Resultados de aprendizaje y herramientas prácticas

  • Al terminar el curso, los estudiantes deberían poder analizar trade-offs entre varios atributos de calidad en el diseño de sistemas de producción que incluyen componentes de ML
    • Además de la precisión, se abordan costos operativos, latencia, capacidad de actualización y explicabilidad
  • Deberían poder implementar sistemas robustos con calidad de producción bajo la premisa de la posibilidad de errores en los componentes de ML
  • Deberían poder diseñar infraestructura de datos tolerante a fallas y escalable para entrenamiento, serving, versionado y experimentación de modelos
  • Se asegura la calidad de todo el pipeline de ML mediante automatización de pruebas y técnicas de aseguramiento de calidad
    • Calidad de datos
    • Deriva de datos
    • Bucles de retroalimentación
    • Calidad del modelo
  • Deberían poder crear sistemas testeables y monitoreables en producción, junto con pipelines de despliegue robustos
  • Consideran requisitos a nivel de sistema como seguridad, protección, privacidad, equidad y usabilidad
  • Las herramientas con las que se familiarizarán incluyen Apache Kafka, Jenkins, Prometheus, Grafana, Docker y varias herramientas de MLOps

Operación del curso y cronograma

  • Los números del curso son 17-445/17-645/17-745, y es un curso de 12 unidades
  • El contenido del curso es el mismo para todos los números, pero 17-745, de nivel PhD, reemplaza dos tareas obligatorias por un research project
  • Las clases de primavera de 2025 se realizan de forma presencial
    • Clase: lunes y miércoles 2:00–3:20pm, PH 100
    • Laboratorio: los viernes en varios horarios y lugares, con algunos laboratorios exclusivamente remotos
  • El contenido del curso se ha mantenido en general estable durante los últimos años, pero los temas y herramientas específicos se actualizan continuamente según nuevas investigaciones y herramientas
  • El cronograma preliminar puede cambiar, y durante el semestre puede ajustarse para reflejar temas solicitados o necesidades de apoyo al aprendizaje
  • El flujo de temas del curso va desde la transición de modelos a sistemas basados en IA, recopilación de requisitos, preparación ante errores, calidad del modelo, colaboración, testing de modelos basado en comportamiento, arquitectura y diseño, despliegue de modelos, experimentación en producción, calidad de datos, automatización de pipelines, escalamiento, planificación operativa, versionado, procedencia y reproducibilidad, deuda técnica, ética y equidad, explicabilidad, seguridad, protección y privacidad

Evaluación y política de tareas

  • Para entrega de tareas, calificación, debates, preguntas, anuncios y documentos de apoyo se usan Canvas y Gradescope
  • Las diapositivas se publican en la página del curso, y Slack se usa para la comunicación relacionada con tareas y proyectos
  • GitHub se usa para coordinar el trabajo grupal
  • La ponderación de la calificación es la siguiente
    • Tareas individuales 35%
    • Proyecto grupal 30%
    • Examen parcial 15%
    • Participación 5%
    • Laboratorio 10%
    • Cuestionarios de lectura 5%
    • No hay examen final
  • La calificación ofrece especificaciones claras y criterios de puntaje, y cada parte se califica como aprobado/reprobado
    • No hay puntaje parcial
    • Algunas tareas tienen una pequeña cantidad de puntos extra
  • Los límites de calificación son relativamente altos
    • A+ es más de 99%
    • A es más de 96%
    • A- es más de 94%
    • B+ es más de 91%
    • B es más de 86%
    • B- es más de 82%
    • C es más de 75%
    • D es más de 60%

Conocimientos previos y preparación para tomar el curso

  • No hay prerrequisitos formales, pero para cursarlo con éxito se espera experiencia básica en ML y capacidad básica de programación
  • Como base de ML, se recomienda una comprensión básica de extracción de características, construcción y evaluación de modelos, y cuándo y cómo funcionan las técnicas de entrenamiento
    • La experiencia con Python y Jupyter notebook ayuda
    • Los proyectos prácticos, el autoaprendizaje y los cursos en línea también pueden ser suficientes
    • Se puede revisar el conocimiento previo mediante un prerequisite knowledge check anónimo y sin calificación
  • Se necesita dominio básico de programación
    • Fluidez básica en un lenguaje como Python
    • Capacidad para instalar y aprender bibliotecas de ese lenguaje
    • Capacidad para conectarse por ssh a una máquina Unix y realizar tareas básicas de línea de comandos
    • Capacidad para instalar y aprender herramientas nuevas como Docker
  • No se especifica un lenguaje de programación concreto, pero casi todos los equipos usan principalmente Python
  • Las herramientas esenciales como Git, Docker, Grafana y Jenkins se presentan con ejemplos en los laboratorios, y se espera que los estudiantes aprendan leyendo documentación y tutoriales por su cuenta
  • Deberían poder aprender por su cuenta el uso básico para escribir servicios web con bibliotecas como Flask
  • La experiencia en ingeniería de software no es un requisito previo
    • Temas como ingeniería de requisitos, diseño de software, testing de software, sistemas distribuidos, despliegue continuo y gestión de equipos se tratan en el curso

Participación en clase, laboratorios y lecturas

  • Las clases se realizan de forma presencial, y la participación en clase es una parte importante de la experiencia de aprendizaje
    • Las grabaciones de las clases se ofrecen en Canvas como best effort
    • No hay opción de clase remota sincrónica
    • Los laboratorios no se graban
  • Slack también se usa para actividades durante la clase, por lo que debe estar accesible desde laptops, tablets o teléfonos durante la clase
  • Los laboratorios suelen presentar herramientas y exigir uno o más entregables claros
    • Las tareas de laboratorio están diseñadas para tomar alrededor de 1 hora
    • Los entregables se muestran al TA durante el horario de laboratorio de esa semana y se califican como aprobado/reprobado
    • Pueden incluir código, demostración en ejecución y respuestas orales a preguntas
  • Los laboratorios están diseñados como una primera práctica de baja presión
    • Si no se cumple con las expectativas, se puede seguir corrigiendo durante el horario de laboratorio
    • No se aceptan entregas después del cierre del laboratorio sin una razón explícita o uso de tokens
  • Como material de lectura se usa mucho Building Intelligent Systems: A Guide to Machine Learning Engineering de Goeff Hulten
  • El libro propio Machine Learning in Production está estrechamente relacionado con cada clase, pero se indica como lectura complementaria, no como capítulos de lectura obligatoria
  • La mayoría de las clases tienen lecturas asignadas, y los cuestionarios de lectura de Canvas deben entregarse antes de la clase
    • El cuestionario consiste en 1 pregunta abierta relacionada con la lectura
    • Se evalúa como aprobado/reprobado según la participación de buena fe

Trabajo en equipo y flexibilidad en las entregas

  • El trabajo en equipo es un elemento esencial del curso
    • El proyecto grupal se realiza en equipos de 3 a 5 personas
    • Los equipos son asignados por el docente
    • A cada equipo se le asigna un mentor TA
  • En las tareas de equipo se aplica evaluación entre pares según el criterio de team citizenship
    • Evalúa el rol activo y colaborativo como integrante del equipo
    • Después de cada hito, el mentor del equipo hace un debriefing con el equipo y discute estrategias para mejorar el trabajo en equipo
  • Cada estudiante recibe 8 tokens personales para usar durante el semestre
    • 1 token permite entregar una tarea individual 1 día tarde
    • 3 tokens permiten mejorar o rehacer una tarea individual y reenviarla con una breve reflexión
    • 1 token permite entregar tarde o reenviar un cuestionario de lectura
    • 1 token permite completar tarde o rehacer un laboratorio
    • Los tokens personales restantes cuentan como 1 día de participación al final del semestre
  • Cada equipo también recibe por separado 8 tokens de equipo
    • Se puede usar 1 token por cada día de extensión en la fecha límite de un hito
    • Se pueden usar 3 tokens para reenviar un hito con una reflexión
  • Los tokens personales y de equipo no son intercambiables entre sí
  • Cuando no hay tokens, las entregas tardías de tareas individuales o de equipo reciben una penalización del 15% por cada día iniciado

Herramientas de IA, colaboración y participación en investigación

  • Dada la naturaleza del curso, no se imponen restricciones al uso de herramientas de IA generativa de contenido
    • Se pueden usar herramientas como ChatGPT, Bard, Co-Pilot y Stable Diffusion
    • También se permite reutilizar código externo como StackOverflow o tutoriales
  • La exactitud de las entregas es responsabilidad exclusiva del estudiante
    • Las herramientas de generación de contenido pueden producir respuestas plausibles pero incorrectas, y esas respuestas no recibirán puntos
    • También es responsabilidad del estudiante cumplir con las licencias aplicables
  • Se aplican las políticas habituales de integridad académica
    • No se deben copiar soluciones de otros estudiantes ni tomar soluciones escritas en conjunto
    • No se deben ver soluciones de otros estudiantes, entregar las propias ni dejarlas en un lugar donde otros estudiantes puedan verlas
    • Tampoco se permite subir soluciones a GitHub público
  • En los laboratorios se puede colaborar con otros estudiantes, pero no se permite colaborar en cuestionarios de lectura, tareas ni exámenes
  • La sanción mínima por hacer trampa es 0 en toda la tarea correspondiente, y puede haber sanciones adicionales según los procedimientos de la universidad
  • En el curso también se realiza investigación académica que analiza las tareas de los estudiantes
    • No participar no afecta la calificación ni la trayectoria académica en CMU
    • Los datos de investigación no incluyen calificaciones de los estudiantes
    • El análisis se realiza después de que termina el curso y se entregan las calificaciones finales, en forma desidentificada y agregada

1 comentarios

 
GN⁺ 2025-01-29
Opiniones en Hacker News
  • El material es claramente práctico. Kafka, Docker, Kubernetes, Jenkins son todas herramientas estándar de la industria, y también se siente fresco que se enfoque en MLOps.
    Me gusta que no se quede simplemente en crear modelos, sino que aborde la brecha entre el machine learning y los sistemas reales en operación. También me agrada que cubra explicabilidad, equidad y monitoreo. Dicho eso, al ver las prácticas, parece que mucho del contenido podría aprenderlo con tutoriales un ingeniero de software intermedio o un principiante motivado. Git, Flask y la orquestación de contenedores son útiles, pero para alguien que ya haya pasado por entornos de producción son bastante básicos. Parece que se tratan menos temas más profundos como la optimización de redes para entrenamiento distribuido o la operación de inferencia a gran escala, y me da curiosidad si aparecen en los proyectos grupales. Jenkins se usa mucho, pero me pregunto si no sería mejor introducir también herramientas más modernas para CI/CD como GitHub Actions o ArgoCD. Kubernetes también es esencial, pero el curso podría ser más orientado al futuro si cubriera herramientas alternativas o complementarias para despliegues en edge o sistemas serverless.

    • No creo que sea correcto verlo como demasiado introductorio. Aunque cada herramienta sea de nivel inicial, hacer que todas funcionen juntas de verdad es difícil, y el material parece de nivel de mitad a últimos años de licenciatura.
      Si conceptualmente no hay gran diferencia entre Jenkins y otros frameworks de CI/CD, basta con elegir uno de los populares, y parece que eso fue lo que hicieron.
    • Hoy parece que esto se volvió el punto de entrada para primer año de Ciencias de la Computación. Los estudiantes de ahora entran porque quieren hacer machine learning.
      Hace 20 años aprendíamos haciendo bases de datos en Java, y también usábamos “herramientas que algún día parecían destinadas a quedar obsoletas”. Simplemente cambió el nuevo punto de partida.
    • También me intriga la adecuación a largo plazo de estas herramientas. Siento que algún día saldrá una herramienta que permita ejecutar cualquier red neuronal en cualquier hardware, ya sea en una sola máquina local o en un entorno distribuido en la nube.
  • Le eché un vistazo a las prácticas y se ven interesantes. Aunque soy un desarrollador full-stack sin mucha experiencia con LLM, ya estoy familiarizado con la mitad, como Git, Flask, Kafka, Kubernetes, y la otra mitad simplemente parece código.
    Casi no aparece la matemática compleja que uno suele asociar con machine learning. Entonces me pregunto si MLOps es un campo al que un desarrollador común sin doctorado puede acceder en la práctica sin demasiada dificultad.

    • Incluso sin saber mucho de machine learning, puedes avanzar bastante en MLOps. Si en el equipo hay ingenieros sénior de machine learning, terminarás ayudándolos a escalar y construir cosas.
      Por ejemplo, si quieres generar una gran cantidad de datos sintéticos mediante simulación, puede que te importen más problemas como el procesamiento por lotes, los formatos de codificación y la carga de datos que la generación en sí de un dataset sin sesgos. Si tienes que recolectar y muestrear datos mediante crowdsourcing, muchas veces es más importante una implementación que procese rápido en línea y use costos y cómputo de forma eficiente que la teoría del muestreo de reservorio.
    • Es cierto. Es simplemente ingeniería de software con un nombre vistoso. Esta categoría de trabajo es un concepto apenas un poco mejor definido que DevOps.
      En la mayoría de las empresas, un ingeniero de machine learning es un ingeniero que entiende de software y algo de machine learning; en el mejor de los casos es bueno en ambas cosas, y en el peor no es bueno en ninguna.
    • El requisito de doctorado suele ser para puestos de investigación reales, o sirve como filtro cuando una empresa quiere reducir un grupo demasiado grande de candidatos.
    • Normalmente no considero que un rol de “operaciones” necesite doctorado.
  • Este curso casi no trata la calidad de datos y parece que recién aparece en el capítulo 16. Me pregunto cuánta experiencia industrial tienen los autores.
    En la práctica, terminas dedicando el 90% del tiempo a la calidad y limpieza de datos.

    • Eso también puede verse como una preocupación separada, aunque desde luego muy importante. Yo preferiría abstraerlo como una etapa dentro del pipeline y estudiar en profundidad por separado sus propias preocupaciones, desafíos y metodologías.
      Por ejemplo, mi trabajo de machine learning casi siempre está en el contexto de regresión de simulaciones de ingeniería y desarrollo de modelos sustitutos, así que la calidad o limpieza de datos casi no es un problema. La mayor parte del trabajo está en la generación del dataset y en la selección, entrenamiento y despliegue del modelo. Depende del trabajo.
    • La calidad de datos en el mundo real es un problema enorme. He liderado la creación de sistemas de linaje y calidad en organizaciones grandes, y si intentas agregarlos después se vuelve un trabajo gigantesco.
      Si los implementas antes de que los pipelines de datos queden solidificados en las etapas de generación de origen, transformación y preprocesamiento, puedes evitar muchos dolores de cabeza más adelante.
  • Me pregunto si existe algún lugar donde también puedan seguirlo personas que no son estudiantes.

  • Me pregunto si cualquiera puede inscribirse, o si hay que ser aceptado en uno de los mejores programas de Ciencias de la Computación del país.

    • Publicaron notas de clase, capítulos del libro, lecturas adicionales y tareas.
      Se ve bien. Lo mismo con el curso de LLM Systems.
    • Creo que se puede. Soy uno de los instructores de este curso.
  • Me pregunto si alguien conoce bibliografía o cursos sobre la construcción de infraestructura de clústeres para machine learning. Me interesan especialmente el escalamiento de infraestructura de almacenamiento, redes y enfoques de scheduling.

    • No hay nada especial. Los principios centrales son los mismos, y hay que ajustarlos a los cambios de carga de trabajo que trae machine learning.
      Para almacenamiento, si se trata de guardar modelos o datos, puedes usar almacenamiento de objetos como S3 o sistemas de archivos de red compartidos como EFS o Lustre. No conozco materiales definitivos sobre redes para grandes GPU. El scheduling ya está bastante cerca de ser un problema resuelto, así que casi cualquier cosa funciona. También puedes construir tu propio coordinador que ejecute periódicamente trabajos basados en imágenes Docker, y si le agregas un sistema de metadatos y triggers basado en colas de mensajes, puedes armarlo bastante rápido. Airflow o AWS Batch para trabajos a gran escala también sirven. Algo que quizá falta mencionar es el model serving. En especial en sistemas de recomendación, es difícil y sensible a la latencia, y vulnerable a picos de latencia y de tráfico. Incluso un código Python bien escrito puede chocar con sus límites bastante rápido.
  • Me alegra que este curso esté disponible. Christian es una gran persona y su trabajo también es bueno. Conozco en cierta medida las primeras versiones de este curso y del libro, así que puedo recomendarlo ampliamente.

  • He trabajado 9.5 años en plataformas y sistemas de machine learning de varias escalas, y el material se ve bueno.

    • Me pregunto qué recomendarían para que un desarrollador backend que hacía apps REST CRUD pase al área de plataformas de machine learning.
  • Quizá esté subestimando la dificultad del curso, pero suena como un curso introductorio. Hasta antes de las herramientas de explicabilidad de modelos, la mayor parte se ve bastante intuitiva.
    Aun así, me parece bien que use herramientas estándar de la industria para la mayoría de los casos de uso.