Llevar un modelo de machine learning a producción no termina cuando lo registras: necesitas validarlo con un conjunto de pruebas para confirmar que responde como esperas. Aquí aprenderás a cargar un modelo desde MLflow usando su stage de producción y a medir su desempeño con datos de prueba, además de entender qué ventajas y límites tiene esta herramienta frente a alternativas como Weights & Biases o DVC.
¿Cómo defines una función para probar un modelo desde MLflow?
La idea es construir una función reutilizable que reciba el nombre del modelo, el stage y el conjunto de prueba, y devuelva la métrica de desempeño.
Antes de escribirla, importa scipy. Esto te permitirá tipar correctamente el X_test como matriz dispersa, algo común cuando trabajas con vectorización de texto. Tipar las variables y mantener el docstring es buena práctica porque deja claro qué espera y qué retorna cada función.
La función test_model_from_mlflow recibe estos parámetros:
model_name: el nombre con el que registraste el modelo, en este caso ticket_classifier.
stage: el estado del modelo, que aquí será Production.
X_test: la matriz dispersa con los datos de prueba.
y_test: las etiquetas verdaderas para comparar contra las predicciones.
Dentro de la función defines un model_uri con el formato models:/<model_name>/<stage>. Ese URI le indica a MLflow exactamente qué versión cargar. Luego usas mlflow.pyfunc.load_model(model_uri) para traer el modelo, generas las predicciones sobre X_test y devuelves el accuracy_score comparándolas con y_test.
¿Qué es el model_uri en MLflow? Es la ruta que apunta a un modelo registrado siguiendo el formato models:/nombre_modelo/stage. Sirve para cargar la versión exacta que necesitas sin depender de rutas locales.
¿Por qué usar el stage de producción al evaluar?
Usar el stage de producción asegura que estás probando el mismo modelo que se está sirviendo a usuarios finales, no una versión experimental.
Cuando ejecutas la función con model_name="ticket_classifier", stage="Production" y los conjuntos X_test y y_test, obtienes la métrica real sobre datos no vistos. Ese número es el que te dice si el modelo está listo para seguir en producción o si necesita ajustes.
Hasta este punto, con MLflow ya puedes hacer varias cosas que antes resolvías a mano:
- Llevar registro de tus experimentos sin depender de hojas de Excel.
- Saber qué hiperparámetros dieron los mejores resultados.
- Guardar metadatos como artefactos junto al modelo.
- Reentrenar partiendo de configuraciones probadas, no de valores aleatorios.
¿Cuáles son las ventajas y desventajas reales de MLflow?
MLflow gestiona el ciclo de vida completo de tus modelos, pero tiene puntos fuertes y limitaciones que conviene conocer antes de adoptarlo en equipos grandes.
Ventajas que destacan en el flujo diario
- Seguimiento de experimentos: registras hiperparámetros, métricas y artefactos en cada corrida.
- Interoperabilidad: se integra con Scikit-Learn, Hugging Face, TensorFlow y PyTorch.
- Trazabilidad y reproducibilidad: replicas un experimento partiendo de los mejores hiperparámetros guardados.
- Comunidad activa: encuentras soluciones rápido cuando aparecen dudas o errores.
Desventajas que debes considerar
- Curva de aprendizaje: tiene muchos métodos y cambian entre versiones, así que conviene fijar la versión que usas.
- Limitaciones con grandes volúmenes: ciertos flujos de trabajo se quedan cortos cuando manejas información a gran escala.
¿Qué alternativas existen a MLflow? TensorBoard para visualización, DVC (Data Version Control) para versionar datos y modelos, y Weights & Biases para tracking de experimentos, tags y flujos de trabajo colaborativos.
La elección depende del tamaño de tu equipo, del volumen de datos y de qué tan profundo quieras integrar el seguimiento con tu stack actual. ¿Cuál de estas herramientas usas tú hoy y qué te gustaría que mejorara?