Resumen
En el episodio 177, el conductor presenta una introducción práctica a MLflow, una herramienta para versionar modelos de machine learning, registrar parámetros, métricas y artefactos, y servirlos como API. Explica la motivación (olvidar qué configuración dio qué resultado, nombres de archivo limitantes, planillas Excel caóticas) y recorre el código de un tutorial: tracking manual, autolog, comparación de varios modelos, PyFunc para modelos custom, carga de modelos, registro con versiones y despliegue como API REST. Hay una discusión sobre si versionar datasets dentro de MLflow o solo guardar una referencia (ID/URI) a una fuente oficial versionada aparte. En el cierre se debate la adopción en los equipos: MLflow rinde sobre todo cuando un modelo se productiviza (rollback, trazabilidad), pero cuesta por el cambio cultural, la falta de tiempo y de un rol que construya herramientas estándar. El episodio incluye además memes sobre bots, una red social de agentes y comentarios sobre trabajo y proyectos con FastAPI y MCP.
Capítulos
- 00:00IntroSe presenta el episodio 177 sobre MLflow: una intro con funcionalidades básicas, código de ejemplo y un documento Quarto que se compartirá en Discord. MLflow sirve para versionar modelos y usarlos, por ejemplo servidos en una API.
- 00:24Visión General de MLflowMLflow se describe como una de las herramientas más típicas y populares de MLOps. El conductor armó el tutorial pidiéndole a Claude uno de lo básico a lo complejo y luego lo modificó; el proyecto tiene unas 4000 líneas de código.
- 01:56Importancia del Versionado de ModelosEs fácil olvidar parámetros y métricas de cada entrenamiento; guardar modelos con joblib/pickle, poner hiperparámetros en el nombre del archivo o llevar un Excel son soluciones limitadas y poco escalables. MLflow registra métricas, parámetros, modelo y artefactos (imágenes, gráficos) automáticamente con `autolog`. Explica que lo estudia porque en su nuevo trabajo implementan MLflow administrado por el equipo de plataforma; mencionan alternativas como Weights & Biases, Neptune AI (comprada, según cree, por OpenAI) y Vertex AI Model Registry de GCP.
- 11:00Setup del proyectoConfiguración con UV: instalación, creación de carpetas, `pyproject.toml` con dependencias y `uv.lock` con las versiones exactas para reproducir el proyecto. Se configura el servidor local en el puerto 5000 y la carpeta `mlruns` para guardar los registros. En paralelo se habla de Vertex en GCP, del equipo de plataforma de IA y de herramientas de moda como Claude/OpenClaw.
- 20:17Tracking ManualSe distinguen experimentos (conjunto de ejecuciones) y runs. El código usa `mlflow.sklearn`, datos Iris, `mlflow.start_run`, `log_params`, métricas, tags, artefactos (gráfico de barras y matriz de confusión) y `log_model`. Se aclara que MLflow trae módulos por librería (sklearn, TensorFlow, etc.), no es agnóstico, y que métricas custom se pueden guardar a mano en el diccionario.
- 30:02Explorando la Interfaz de MLflowSe levanta la UI con `mlflow ui` y se revisan experimentos, tags, la run con sus parámetros, métricas, artefactos y versión del modelo. Se muestra que por debajo todo son archivos de texto simples (un archivo por parámetro), sin validación semántica; se comenta que la UI ayuda a estandarizar el trabajo de equipos con juniors y que MLflow no sirve para optimizar hiperparámetros (a lo más un grid search con `for`).
- 38:48MemesMemes de la semana: el cambio de nombre del asistente tipo Clawdbot/Moltbot, la red social de bots (con un video de Primeagen), un bot que "gastó 1000 tokens" sin recordar por qué, un captcha inverso para bots, y memes de empleados remotos y de "si no está en MLflow, no pasó". Se subraya la importancia del rollback.
- 45:10Updates de encodersConversación informal sobre el trabajo actual: aprender de IA generativa, FastAPI y MCP, patrones de diseño (factory), y un sistema de autoatención con diagnóstico basado en herramientas MCP; se discute si bastaba un orquestador de flujo como n8n. El conductor no puede dar detalles por confidencialidad.
- 51:53Auto-LoggingCon `mlflow.sklearn.autolog()` se registran métricas, parámetros, modelo y artefactos (imagen, JSON, HTML) sin llamadas explícitas a `log_*`, y se desactiva con `autolog(disable=True)`. Se compara con la run manual y se ve que autolog guarda más métricas y parámetros.
- 55:12Autolog con Múltiples ModelosSe entrenan cinco modelos (Random Forest, regresión logística, SVM, KNN, árbol de decisión) con una run por modelo y se compara el resultado. Autolog guarda también el esquema del dataset (columnas y tipos), no el dataset completo. Se discute que lo recomendable es versionar los datos en una fuente oficial (S3 con versionado, parquet) y guardar en MLflow solo el ID/URI de referencia, ya que MLflow referencia y guarda artefactos en el storage configurado.
- 01:02:27PyFunc para crear modelos customizadosSe define una clase `IrisPreprocessorModel` (PythonModel de `mlflow.pyfunc`) con preproceso (nulos, duplicados) y `predict` sobre un modelo base de scikit-learn, y se loguea en una run. Se destaca la flexibilidad frente a autolog. Se menciona el valor de tener un ID humano/semántico además del run ID automático.
- 01:09:45Cargando y usando modelosCon `MlflowClient` se obtiene el experimento por nombre, se busca la última run ordenada por fecha de inicio y se carga el modelo con `mlflow.pyfunc.load_model` usando la URI `runs:/<run_id>/...`. Si el modelo es fijo, se puede dar la URI directa. La predicción sobre el ejemplo da todo setosa, coherente con la precisión perfecta.
- 01:13:42Registro de Modelos y VersionadoEntrenando tres veces con el mismo nombre de modelo se crean versiones 1, 2 y 3 en el registry. Se explican tags y alias (los "stages" están deprecados) y estrategias de promoción como A/B testing y canary, con alias como champion, challenger y baseline para rollback. Se bromea sobre versionar archivos como "final_final".
- 01:20:20Desplegando Modelos como APIsSe levanta un servidor REST local que sirve el modelo; un script de prueba le envía dos filas en CSV y devuelve predicciones (0 y 1) para las clases de Iris. Aclara que en la práctica debe montarse en la infraestructura de la empresa, no localmente.
- 01:24:24AdopciónDiscusión sobre por qué MLflow rara vez se adoptó: muchos modelos terminan descartados, la presión por entregar, el costo de cambio cultural y capacitación, y que cuesta incluso que se use Git. Se argumenta que rinde cuando se productiviza (rollback automático, reproducibilidad, trazabilidad) y que hace falta un rol que cree herramientas estándar, CI/CD y automatización. Un participante sustituye MLflow por tags de Git y archivos JSON/YAML.
- 01:39:51CierreRespuesta sobre ofertas laborales: no hay canal dedicado en Discord, se puede publicar en el general. Se despiden, piden like y suscripción, y anuncian que el próximo tema se confirmará después.