# M6 · MLOps, LLMOps y Despliegue de Soluciones de IA **Máster en Inteligencia Artificial, Automatización y Agentes Digitales** · Next Educación · Próxima edición **6 ECTS · 12 sesiones de una hora · Responsable de producción y coordinación: Sami Halawa Ribas** ## Descripción Industrialización de los modelos construidos en los módulos anteriores: seguimiento de experimentos, versionado de datos y modelos, integración y despliegue continuos, servicio en línea y por lotes, monitorización de rendimiento y deriva, y operación específica de modelos de lenguaje con control de coste y evaluación continua. ## Competencias del módulo 1. Diseñar un pipeline de ML/IA end-to-end. 2. Versionar datos y modelos. 3. Desplegar modelos como servicios. 4. Monitorizar rendimiento y deriva. 5. Operar LLMs controlando costes. ## Evaluación | Instrumento | Peso | |---|---:| | Prácticas de sesión | 30% | | Sistema desplegado, monitorizado y documentado | 50% | | Runbook operativo y defensa | 20% | ## Mapa de sesiones | # | Sesión | Entregable | |---:|---|---| | 1 | Del modelo al sistema: arquitectura de un pipeline de IA en producción | Documento de arquitectura con diagrama, contratos de datos y requisitos operativos cuantificados. | | 2 | Seguimiento de experimentos con MLflow | Servidor de seguimiento operativo con la mejor ejecución reproducida y verificada. | | 3 | Versionado de datos y registro de modelos | Linaje reconstruido y documentado desde la predicción hasta el dato de origen. | | 4 | Empaquetado y servicio del modelo con FastAPI y contenedores | Servicio contenedorizado con informe de prueba de carga y latencia por percentil. | | 5 | Inferencia por lotes, en línea y en flujo | Ambas vías operativas con la comparación de coste documentada. | | 6 | Integración y entrega continuas para sistemas de IA | Flujo de despliegue operativo con bloqueo y reversión demostrados. | | 7 | Monitorización, observabilidad y deriva | Cuadro de mando operativo con la deriva detectada y el procedimiento de respuesta. | | 8 | Reentrenamiento, fiabilidad y operación del sistema | Manual operativo validado mediante la resolución del incidente ensayado. | | 9 | LLMOps: trazas, caché semántica y control de coste | Informe con el ahorro porcentual conseguido y la evidencia de calidad no degradada. | | 10 | Evaluación continua y despliegue seguro de modelos de lenguaje | Despliegue canario documentado con la reversión verificada. | | 11 | Taller integrador: sistema industrializado de extremo a extremo | Sistema desplegado y operado con éxito por un tercero. | | 12 | Evaluación del módulo y defensa | Prueba resuelta y defensa realizada. | --- ## Programación sesión a sesión ### Sesión 01 — Del modelo al sistema: arquitectura de un pipeline de IA en producción **Objetivos** - Distinguir el cuaderno experimental del sistema en producción y enumerar lo que falta en cada capa. - Diseñar la arquitectura completa del sistema del proyecto con sus contratos entre componentes. - Establecer los niveles de madurez y el objetivo realista del módulo. **Contenidos** - **Anatomía de un sistema de IA en producción** - Componentes: ingesta, entrenamiento, registro, servicio, monitorización y reentrenamiento - La proporción real entre código de modelo y código de sistema - Deuda técnica específica de los sistemas de aprendizaje automático - Contratos explícitos entre componentes y esquemas de datos - **Niveles de madurez** - Nivel manual: cuaderno, despliegue artesanal y ausencia de trazabilidad - Nivel automatizado: pipeline de entrenamiento reproducible y registro de modelos - Nivel continuo: integración, entrega y reentrenamiento disparados por evidencia - Qué nivel corresponde a cada organización y por qué subir uno cuesta - **Decisiones estructurales** - Predicción en línea, por lotes o en flujo según el requisito de negocio - Entrenamiento y servicio coherentes: el riesgo de sesgo entre ambos - Dónde vive la lógica de transformación y por qué duplicarla es un error - Propiedad del sistema, guardias y compromiso de nivel de servicio **Práctica — Arquitectura y contratos del sistema del proyecto** Diseño de la arquitectura completa del sistema que se implementará durante el módulo, con diagrama de componentes, contratos de datos y requisitos operativos explícitos. 1. Inventariar los activos disponibles del Módulo 3 o del Módulo 5 y detectar lo que falta para producción. 2. Dibujar el diagrama de componentes con los flujos de entrenamiento y de inferencia separados. 3. Especificar el contrato de entrada y de salida del servicio con su esquema y sus validaciones. 4. Fijar los requisitos operativos: latencia objetivo, volumen esperado, disponibilidad y coste máximo mensual. - *Stack:* Diagrama de arquitectura, Pydantic, Markdown - *Entregable:* Documento de arquitectura con diagrama, contratos de datos y requisitos operativos cuantificados. **Lecturas** - Sculley et al., Hidden Technical Debt in Machine Learning Systems (paper) - Huyen, Designing Machine Learning Systems, cap. 1 *Materiales:* `teoria/M6_S01_Del_modelo_al_sistema_arquitectura_de_un_pipelin.html` · `code/M6_S01_Del_modelo_al_sistema_arquitectura_de_un_pipelin.ipynb` --- ### Sesión 02 — Seguimiento de experimentos con MLflow **Objetivos** - Registrar experimentos de forma que sean comparables y reproducibles. - Recuperar y reconstruir cualquier ejecución pasada. - Convertir el registro en el criterio de promoción de un modelo. **Contenidos** - **Registro de ejecuciones** - Parámetros, métricas, artefactos y etiquetas - Versión de código, de datos y de entorno asociada a la ejecución - Ejecuciones anidadas para búsquedas de hiperparámetros - Registro automático y sus límites - **Comparación y selección** - Comparación de ejecuciones y detección de la mejor configuración - Métricas por partición y por subgrupo dentro de la ejecución - Trazabilidad del artefacto hasta el dato que lo produjo - Reproducción exacta de una ejecución anterior - **Operación del servidor** - Servidor de seguimiento, almacén de artefactos y base de metadatos - Despliegue del servidor en contenedor - Organización por experimento, proyecto y equipo - Retención y limpieza de ejecuciones **Práctica — Instrumentación del entrenamiento con seguimiento completo** Despliegue de un servidor de seguimiento e instrumentación del entrenamiento del proyecto para que toda ejecución quede registrada y sea reproducible. 1. Desplegar el servidor de seguimiento con su almacén de artefactos. 2. Instrumentar el entrenamiento con parámetros, métricas y artefactos. 3. Ejecutar una búsqueda de hiperparámetros con ejecuciones anidadas. 4. Reproducir la mejor ejecución partiendo únicamente del registro. - *Stack:* MLflow, Docker, Python - *Entregable:* Servidor de seguimiento operativo con la mejor ejecución reproducida y verificada. **Lecturas** - Documentación de MLflow: tracking y model registry *Materiales:* `teoria/M6_S02_Seguimiento_de_experimentos_con_MLflow.html` · `code/M6_S02_Seguimiento_de_experimentos_con_MLflow.ipynb` --- ### Sesión 03 — Versionado de datos y registro de modelos **Objetivos** - Versionar conjuntos de datos de forma verificable. - Gestionar el ciclo de vida del modelo mediante un registro. - Vincular cada modelo desplegado con el dato y el código que lo produjeron. **Contenidos** - **Versionado de datos** - Por qué el control de versiones de código no basta - DVC: punteros, almacenamiento remoto y reproducción de etapas - Tablas versionadas y viajes en el tiempo como alternativa - Huella criptográfica del conjunto como identificador - **Registro de modelos** - Versiones, alias y etapas del ciclo de vida - Metadatos obligatorios: métricas, firma y dependencias - Promoción y retirada con aprobación explícita - Comparación entre la versión candidata y la vigente - **Linaje** - Encadenamiento de dato, código, ejecución y artefacto desplegado - Reconstrucción de una predicción concreta del pasado - Requisitos de auditoría y conservación - Ficha de modelo publicada junto a la versión **Práctica — Linaje verificable de la versión desplegada** Versionado del conjunto de entrenamiento y registro del modelo de forma que sea posible reconstruir por completo una predicción emitida hace semanas. 1. Versionar el conjunto con DVC y almacenamiento remoto. 2. Registrar el modelo con su firma, métricas y dependencias. 3. Promover una versión a producción con aprobación registrada. 4. Reconstruir el linaje completo de una predicción concreta y documentarlo. - *Stack:* DVC, MLflow Model Registry, git - *Entregable:* Linaje reconstruido y documentado desde la predicción hasta el dato de origen. **Lecturas** - Documentación de DVC: pipelines y almacenamiento remoto *Materiales:* `teoria/M6_S03_Versionado_de_datos_y_registro_de_modelos.html` · `code/M6_S03_Versionado_de_datos_y_registro_de_modelos.ipynb` --- ### Sesión 04 — Empaquetado y servicio del modelo con FastAPI y contenedores **Objetivos** - Exponer un modelo como servicio con contrato validado. - Empaquetar el servicio en un contenedor reproducible y ligero. - Instrumentar el servicio con comprobaciones de estado y métricas. **Contenidos** - **Servicio HTTP** - Contrato de entrada y salida validado con esquemas - Carga del modelo al arranque y gestión del ciclo de vida - Operaciones asíncronas, concurrencia y trabajadores - Manejo de errores y códigos de respuesta significativos - **Contenedorización** - Imagen base, construcción por etapas y tamaño final - Dependencias fijadas y reproducibilidad de la imagen - Variables de entorno, secretos y configuración externa - Usuario sin privilegios y superficie de ataque mínima - **Observabilidad desde el inicio** - Comprobaciones de vida y de disponibilidad - Registro estructurado con identificador de petición - Métricas de latencia, volumen y errores - Versión del modelo expuesta en la respuesta **Práctica — Servicio de inferencia contenedorizado** Construcción, empaquetado y prueba de carga del servicio de inferencia del modelo del proyecto. 1. Implementar el servicio con validación de esquema y carga del modelo desde el registro. 2. Construir la imagen por etapas y medir su tamaño. 3. Añadir comprobaciones de estado, registro estructurado y métricas. 4. Ejecutar una prueba de carga y registrar la latencia en los percentiles relevantes. - *Stack:* FastAPI, Docker, uvicorn, locust - *Entregable:* Servicio contenedorizado con informe de prueba de carga y latencia por percentil. **Lecturas** - Documentación de FastAPI: despliegue y ciclo de vida de la aplicación *Materiales:* `teoria/M6_S04_Empaquetado_y_servicio_del_modelo_con_FastAPI_y_.html` · `code/M6_S04_Empaquetado_y_servicio_del_modelo_con_FastAPI_y_.ipynb` --- ### Sesión 05 — Inferencia por lotes, en línea y en flujo **Objetivos** - Elegir el modo de inferencia adecuado al requisito de negocio. - Implementar un proceso de inferencia por lotes fiable y reejecutable. - Optimizar el rendimiento del servicio en línea. **Contenidos** - **Modos de inferencia** - Lotes programados: latencia tolerada y coste mínimo - Servicio en línea: latencia estricta y coste por disponibilidad - Procesamiento en flujo y ventanas de evento - Predicción anticipada y almacenamiento en caché de resultados - **Inferencia por lotes** - Particionado del trabajo y paralelismo - Idempotencia, reintentos y reejecución de un día concreto - Escritura de resultados con marca de versión de modelo - Coste por millón de predicciones - **Optimización del servicio en línea** - Agrupación dinámica de peticiones - Escalado horizontal y arranque en frío - Caché de características y de resultados - Servidores especializados de inferencia **Práctica — Doble vía de inferencia sobre el mismo modelo** Implementación del proceso por lotes y del servicio en línea sobre el mismo artefacto, con comparación de coste por predicción. 1. Implementar la inferencia por lotes idempotente con escritura versionada. 2. Reejecutar un lote pasado y verificar la coherencia de los resultados. 3. Optimizar el servicio en línea con agrupación de peticiones. 4. Comparar coste por millón de predicciones en ambas vías. - *Stack:* Python, FastAPI, Docker, DuckDB - *Entregable:* Ambas vías operativas con la comparación de coste documentada. **Lecturas** - Huyen, Designing Machine Learning Systems, cap. 7 *Materiales:* `teoria/M6_S05_Inferencia_por_lotes_en_linea_y_en_flujo.html` · `code/M6_S05_Inferencia_por_lotes_en_linea_y_en_flujo.ipynb` --- ### Sesión 06 — Integración y entrega continuas para sistemas de IA **Objetivos** - Automatizar pruebas, construcción y despliegue del sistema. - Definir las pruebas específicas que requiere un sistema de aprendizaje automático. - Establecer una estrategia de despliegue con reversión segura. **Contenidos** - **Automatización** - Flujos de trabajo por evento: cambio de código, de dato o de modelo - Construcción y publicación de la imagen en un registro - Entornos de desarrollo, preproducción y producción - Gestión de secretos en la automatización - **Pruebas específicas de IA** - Pruebas de la lógica de transformación de datos - Pruebas de contrato y de esquema del servicio - Pruebas de comportamiento del modelo sobre casos críticos - Umbral de métrica como puerta de despliegue - **Estrategias de despliegue** - Despliegue azul y verde - Liberación progresiva y despliegue canario - Modelo en sombra contra el modelo vigente - Reversión automática ante degradación **Práctica — Flujo de despliegue continuo con puerta de calidad** Construcción del flujo automatizado que prueba, construye y despliega el servicio, bloqueando el despliegue si la métrica cae por debajo del umbral. 1. Definir el flujo de trabajo con pruebas de datos, de contrato y de comportamiento. 2. Añadir la puerta de calidad basada en la métrica del conjunto de referencia. 3. Publicar la imagen y desplegar de forma progresiva. 4. Provocar una regresión deliberada y comprobar el bloqueo y la reversión. - *Stack:* GitHub Actions, Docker, pytest, Coolify o equivalente - *Entregable:* Flujo de despliegue operativo con bloqueo y reversión demostrados. **Lecturas** - Documentación de GitHub Actions: entornos y despliegues protegidos *Materiales:* `teoria/M6_S06_Integracion_y_entrega_continuas_para_sistemas_de.html` · `code/M6_S06_Integracion_y_entrega_continuas_para_sistemas_de.ipynb` --- ### Sesión 07 — Monitorización, observabilidad y deriva **Objetivos** - Distinguir monitorización de sistema, de datos y de modelo. - Detectar deriva de datos y de concepto con métodos adecuados. - Diseñar alertas que se atiendan en lugar de ignorarse. **Contenidos** - **Capas de monitorización** - Sistema: latencia, errores, saturación y disponibilidad - Datos de entrada: esquema, rangos, nulos y cardinalidades - Predicciones: distribución de salidas y tasa de casos límite - Modelo: métrica real cuando llega la etiqueta - **Deriva** - Deriva de covariables, de etiqueta y de concepto - Pruebas de distribución y distancias entre poblaciones - Deriva en datos de alta dimensión y en representaciones vectoriales - Retardo de la etiqueta y métricas indirectas mientras tanto - **Alertas útiles** - Umbrales, ventanas y tolerancia al ruido - Fatiga de alertas y priorización por impacto - Cuadro de mando operativo frente a cuadro de mando de negocio - Procedimiento de respuesta ante alerta **Práctica — Monitorización con deriva simulada** Instrumentación completa de la monitorización del servicio y validación mediante la inyección de una deriva controlada en el tráfico. 1. Instrumentar las métricas de sistema, de datos y de predicción. 2. Definir el conjunto de referencia y las pruebas de deriva. 3. Inyectar una deriva controlada en el tráfico simulado. 4. Verificar que la alerta se dispara y redactar el procedimiento de respuesta. - *Stack:* Evidently, Prometheus, Grafana, Python - *Entregable:* Cuadro de mando operativo con la deriva detectada y el procedimiento de respuesta. **Lecturas** - Documentación de Evidently: presets de deriva y calidad de datos *Materiales:* `teoria/M6_S07_Monitorizacion_observabilidad_y_deriva.html` · `code/M6_S07_Monitorizacion_observabilidad_y_deriva.ipynb` --- ### Sesión 08 — Reentrenamiento, fiabilidad y operación del sistema **Objetivos** - Definir la política de reentrenamiento con criterio económico. - Preparar el sistema para fallar de forma controlada. - Redactar el manual operativo que permite a un tercero mantenerlo. **Contenidos** - **Política de reentrenamiento** - Reentrenamiento programado frente a disparado por evidencia - Ventana de datos y peso del histórico - Validación del modelo candidato antes de sustituir al vigente - Coste del reentrenamiento frente a la ganancia recuperada - **Fiabilidad** - Modos de degradación: respuesta por defecto y modelo de reserva - Tiempos de espera, reintentos y cortacircuitos - Límites de tasa y protección frente a sobrecarga - Objetivos de nivel de servicio y presupuesto de error - **Operación** - Manual operativo: síntomas, diagnóstico y acciones - Guardia, escalado y responsables - Análisis posterior a incidente sin búsqueda de culpables - Retirada ordenada de un modelo o de un servicio **Práctica — Manual operativo y ensayo de incidente** Redacción del manual operativo del sistema y ejecución de un ensayo de incidente con un fallo inyectado por el docente. 1. Definir la política de reentrenamiento con su criterio de disparo. 2. Implementar el modo degradado y el cortacircuitos. 3. Redactar el manual operativo con síntomas y acciones. 4. Resolver un incidente inyectado siguiendo únicamente el manual. - *Stack:* Python, FastAPI, Prometheus, Markdown - *Entregable:* Manual operativo validado mediante la resolución del incidente ensayado. **Lecturas** - Beyer et al., Site Reliability Engineering, caps. 4 y 6 *Materiales:* `teoria/M6_S08_Reentrenamiento_fiabilidad_y_operacion_del_siste.html` · `code/M6_S08_Reentrenamiento_fiabilidad_y_operacion_del_siste.ipynb` --- ### Sesión 09 — LLMOps: trazas, caché semántica y control de coste **Objetivos** - Instrumentar una aplicación con modelos de lenguaje con trazas completas. - Controlar y atribuir el coste por token, por usuario y por caso de uso. - Reducir coste y latencia sin degradar la calidad percibida. **Contenidos** - **Trazabilidad** - Traza de la llamada: prompt, contexto, respuesta, tokens y latencia - Ejecuciones anidadas en flujos con recuperación y herramientas - Correlación entre la traza y la sesión del usuario - Retención de trazas y datos personales en el registro - **Control de coste** - Coste por token de entrada y de salida y su asimetría - Atribución por usuario, equipo y caso de uso - Presupuestos, límites de tasa y cortes duros - Enrutado a modelo pequeño o grande según la dificultad de la consulta - **Optimización** - Caché exacta y caché semántica de respuestas - Caché de prompt del proveedor y reutilización de contexto - Compresión del contexto y reducción de fragmentos recuperados - Medición conjunta del ahorro y del efecto sobre la calidad **Práctica — Reducción de coste del asistente del Módulo 5** Instrumentación con trazas del asistente construido en el Módulo 5 y reducción medida del coste por consulta manteniendo la calidad. 1. Instrumentar el flujo con trazas y atribución de coste por consulta. 2. Establecer la línea base de coste y latencia sobre cien consultas reales. 3. Aplicar caché semántica, reutilización de contexto y enrutado por dificultad. 4. Medir el ahorro obtenido y verificar que la evaluación del Módulo 5 no se degrada. - *Stack:* Langfuse o MLflow Tracing, Redis, Python - *Entregable:* Informe con el ahorro porcentual conseguido y la evidencia de calidad no degradada. **Lecturas** - Documentación de Langfuse: trazas, sesiones y cálculo de coste *Materiales:* `teoria/M6_S09_LLMOps_trazas_cache_semantica_y_control_de_coste.html` · `code/M6_S09_LLMOps_trazas_cache_semantica_y_control_de_coste.ipynb` --- ### Sesión 10 — Evaluación continua y despliegue seguro de modelos de lenguaje **Objetivos** - Integrar la evaluación del Módulo 5 en el ciclo de despliegue. - Desplegar cambios de prompt o de modelo sin regresiones silenciosas. - Operar los controles de seguridad en producción. **Contenidos** - **Evaluación en el ciclo** - Ejecución del banco de evaluación en cada cambio de prompt o de modelo - Umbrales de regresión y bloqueo automático - Evaluación en línea sobre tráfico real muestreado - Recogida de valoraciones del usuario y su sesgo - **Despliegue seguro** - Versionado de prompts como artefacto desplegable - Despliegue canario y comparación entre variantes - Ejecución en sombra del modelo candidato - Reversión inmediata del prompt o del modelo - **Seguridad en operación** - Barreras activas en producción y registro de bloqueos - Detección de abuso y de consumo anómalo - Revisión periódica de las conversaciones marcadas - Trazabilidad exigible ante una reclamación **Práctica — Despliegue canario de un cambio de prompt** Despliegue progresivo de una nueva versión de prompt con evaluación automática, comparación entre variantes y reversión ante regresión. 1. Versionar el prompt como artefacto y conectarlo al banco de evaluación. 2. Desplegar la nueva versión sobre el diez por ciento del tráfico simulado. 3. Comparar calidad, coste y latencia entre variantes. 4. Provocar una regresión y verificar la reversión automática. - *Stack:* Langfuse, GitHub Actions, FastAPI, RAGAS - *Entregable:* Despliegue canario documentado con la reversión verificada. *Materiales:* `teoria/M6_S10_Evaluacion_continua_y_despliegue_seguro_de_model.html` · `code/M6_S10_Evaluacion_continua_y_despliegue_seguro_de_model.ipynb` --- ### Sesión 11 — Taller integrador: sistema industrializado de extremo a extremo **Objetivos** - Integrar entrenamiento, despliegue, monitorización y operación en un sistema único. - Demostrar que el sistema es operable por una persona distinta de su autor. - Dejar la infraestructura lista para el trabajo final de máster. **Contenidos** - **Contenido del entregable** - Pipeline reproducible con linaje verificable - Servicio desplegado con contrato y prueba de carga - Cuadro de mando de monitorización con alertas activas - Manual operativo y modelo de coste mensual - **Prueba cruzada** - Otro alumno despliega el sistema desde cero con la documentación - Resolución de un incidente inyectado en el sistema ajeno - Auditoría del linaje de una predicción concreta - Registro de las fricciones encontradas - **Cierre** - Correcciones derivadas de la prueba cruzada - Infraestructura reutilizable para el trabajo final de máster - Plan de mejora priorizado por coste y riesgo **Práctica — Despliegue cruzado y ensayo de incidente** Cada sistema debe ser desplegado y operado íntegramente por otro alumno partiendo solo de la documentación entregada. 1. Entregar el sistema completo con su manual operativo. 2. Desplegar desde cero el sistema de un compañero. 3. Resolver un incidente inyectado en ese sistema. 4. Registrar fricciones, corregir el sistema propio y volver a entregar. - *Stack:* Entorno del máster - *Entregable:* Sistema desplegado y operado con éxito por un tercero. *Materiales:* `teoria/M6_S11_Taller_integrador_sistema_industrializado_de_ext.html` · `code/M6_S11_Taller_integrador_sistema_industrializado_de_ext.ipynb` --- ### Sesión 12 — Evaluación del módulo y defensa **Objetivos** - Defender oralmente las decisiones de arquitectura y de operación. - Demostrar competencia en despliegue, monitorización y control de coste. - Cerrar el módulo con la infraestructura lista para el trabajo final. **Contenidos** - **Prueba práctica** - Diagnóstico de un servicio con degradación de latencia - Interpretación de un informe de deriva - Cálculo del coste mensual de una configuración dada - **Defensa** - Presentación de siete minutos - Preguntas del tribunal docente sobre fiabilidad y coste - Criterios de la rúbrica - **Cierre y transición** - Devolución individual - Errores comunes detectados en el grupo - Preparación de los módulos siguientes y del trabajo final **Práctica — Prueba práctica y defensa** Evaluación sumativa del módulo. 1. Resolver la prueba práctica. 2. Defender el sistema industrializado. 3. Recibir devolución. - *Stack:* Entorno del máster - *Entregable:* Prueba resuelta y defensa realizada. *Materiales:* `teoria/M6_S12_Evaluacion_del_modulo_y_defensa.html` · `code/M6_S12_Evaluacion_del_modulo_y_defensa.ipynb` ---