There’s a specific moment in the life of any data team that starts working seriously with machine learning. At first everything is manageable: there’s one model, one person trains it, it’s deployed somehow, and it works. But as soon as there are three models in production, two data scientists working in parallel and pressure from the business to update the models with new data, the system breaks.
No one knows which version of the demand-forecasting model is running in production. Last week’s experiments live in a local notebook that the data scientist who ran them no longer remembers well. If an internal audit arrives, or the business asks why the model changed its behavior in October, answering that question can take days. And retraining the model because the data has changed means manually repeating a process no one documented properly the first time.
That scenario isn’t an exception. It’s the usual state of data teams that have grown fast without putting order into how they manage models. MLflow exists to solve exactly that.
What MLflow is
MLflow is the open-source AI engineering platform for managing the full lifecycle of machine learning models, from the first experiment to production deployment. Databricks created it in 2018 with a clear goal: to let data teams take models to production in a reproducible, traceable and maintainable way, without depending on handcrafted solutions built from scratch in each project.
What sets MLflow apart from other experiment-management tools is its agnostic design. It works with any ML framework and any cloud or local environment. It doesn’t force you to change how you train your models: it integrates into existing code in a few lines and starts logging information from the first moment. With over 30 million monthly downloads, it has established itself as the industry’s de facto standard for experiment management and model lifecycle.
For a CTO or a head of data architecture, MLflow isn’t a data scientists’ tool: it’s the governance and traceability layer that makes ML projects auditable, maintainable and able to scale beyond the first pilot.
The four components of MLflow
MLflow is organized into four modules that can be adopted progressively, according to the team’s maturity level. You don’t have to switch everything on at once: most teams start with the first and add the rest as projects grow.
MLflow Tracking
It’s the usual entry point and the most-used component. Every time a training run executes, MLflow Tracking automatically logs the parameters used, the metrics the model produced, the artifacts generated and the code version. All that information is available in a visual interface where the team can compare runs, identify which configuration gave the best results and reproduce any previous experiment without rebuilding it from scratch.
In practice, it solves the most common problem in ML teams: the loss of context between experiments. When there are dozens of runs and several people working in parallel, centralized tracking is the difference between a team that learns cumulatively and one that repeats the same mistakes because it has no record of what it already tried.
MLflow Projects
It defines a standard format to package machine learning code so that it’s portable and reproducible. It specifies the environment dependencies, the input parameters and the entry point of each experiment in a configuration file that any team member can run in any environment (local, CI/CD server, cloud) and get the same results.
For teams with several technical profiles working in parallel, MLflow Projects removes the classic “it works on my machine” problem. The code is packaged with everything it needs to run, which makes collaboration smoother and means the move to production doesn’t require an additional adaptation process.
MLflow Models
It lets you package trained models in a standard format (called MLmodel) that can be deployed across multiple platforms without modifications. That format includes the serialized model, the exact dependencies it needs and the input/output signature, so any serving platform can consume it directly. Integration is native with Azure ML, AWS SageMaker, Databricks Model Serving and any REST endpoint.
In operational terms, this means the model leaves the training environment already prepared for production. There’s no adaptation process between what the data scientist hands over and what the infrastructure engineer deploys: the artifact that gets registered is exactly the one that ends up serving predictions.
MLflow Model Registry
It’s the component that closes the loop and the one that adds the most value in enterprise environments with several models in production at once. The Model Registry is a centralized store that manages the full lifecycle of each model: versions, transitions between environments (development, staging, production), annotations and metadata for each change.
It works like Git for ML models. Just as no software team would deploy code without version control, no ML team should have models in production without a registry documenting which version is active, when it was deployed, what metrics it had in validation and who authorized the change. The Model Registry provides that control layer without adding operational complexity for the team.
MLflow in practice: a real industrial production scenario
The best way to understand what MLflow adds, and what its absence costs, is through a concrete case.
Picture an industrial company with several production lines that has developed a predictive-maintenance model to anticipate failures in critical equipment. The model processes real-time sensor data and generates alerts when it detects patterns that have historically preceded a breakdown.
The first deployment was relatively simple: a data scientist trained the model, packaged it manually, and the infrastructure team deployed it on the production server. The problem came three months later, when the model’s performance began to degrade. The sensors on a new line generated data with a slightly different distribution from what the model had seen in training (known as data drift), and the alerts started to become less accurate.
The cost of not having MLflow
Without MLflow, solving that problem took weeks of work. The team had to:
- Identify which exact version of the model was in production by searching through code repositories and servers.
- Rebuild the original training environment to reproduce the baseline results.
- Understand which data was used initially and compare its distribution with the current data.
- And do all of that manually, with no interface to centralize the information and no registry documenting the decisions made.
When they finally retrained the model with updated data (including the signals from the new line), they deployed it. But no one documented what exactly changed, or why the new model was better than the previous one and according to which metrics. Six months later, when an internal quality audit arrived, the team couldn’t clearly demonstrate the model’s lineage or justify its technical decisions.
The same scenario with MLflow
With MLflow in place, every training experiment is logged automatically: the model parameters, the validation metrics on the test set, the code version and the datasets used. When the team detects the performance degradation, it can open the MLflow interface and see exactly when the production model’s metrics began to diverge from its original validation metrics.
- Retraining is launched as a new logged run.
- The resulting model is registered in the Model Registry as version 2, with its metrics documented and a direct comparison against version 1 in production.
- The team can validate that the new model beats the previous one according to the defined business metrics (real-failure detection rate, false-alarm rate) before promoting it to production with one click.
- The transition is logged: who authorized it, when and why. If an audit arrives six months later, all that information is available in the registry without reconstructing anything.
The difference isn’t only speed, though it’s that too: what used to take weeks now gets resolved in hours. The deeper difference is that the team operates with real control over its models in production, not with the hope that everything keeps working until someone remembers how to undo it if something fails.
MLflow and Databricks: why the integration changes what you can do
MLflow is open source and can be deployed in any environment. But its native integration with Databricks significantly changes the scope of what the platform can do, especially for teams already working in Azure environments.
In a Databricks environment, MLflow requires no separate configuration or additional infrastructure. Tracking, the Model Registry and serving are available directly from Databricks notebooks and jobs, connected to Unity Catalog for model governance. That means every registered model has full traceability of its data lineage: which Lakehouse tables were used in training, what transformations were applied, which version of the data corresponds to each version of the model.
For companies in sectors where traceability is a regulatory requirement (pharmaceutical, healthcare, financial), that integration between MLflow and Unity Catalog isn’t a convenience improvement. It’s what makes it possible to answer audit questions with verifiable data instead of approximate reconstructions. Databricks Model Serving, integrated with MLflow’s Model Registry, manages model deployment as REST APIs with automatic scaling, which removes much of the operational complexity that usually comes with putting a model into production and maintaining it.
For teams working in Azure without Databricks, the integration with Azure Machine Learning is also native: MLflow can point to an Azure ML workspace as its tracking server without changing a single line of training code, and models registered in MLflow can be managed from the Azure ML interface without duplicating the registration work.
When it makes sense to adopt MLflow (and when not yet)
MLflow adds real value as soon as the team gets past the first model and starts managing several experiments in parallel. If there are more than two people working on models, if there are models in production that need to be kept updated on some regular basis, or if the business starts asking questions about model behavior that the team can’t answer quickly, MLflow pays back its adoption cost in the first weeks.
There are situations where full adoption makes less sense. If the team is in an exploration phase (a first prototype, a three-month pilot), the full infrastructure can be more overhead than value. At that stage, the sensible move is to start with MLflow Tracking in a light way: three lines of code in the training script and you already have experiment logging. The rest of the components are added as the project matures and the requirements grow.
What’s worth being clear about from the start is that MLflow doesn’t solve the problem of taking models to production sustainably on its own. It’s the lifecycle traceability and governance layer, but it needs to coexist with a solid data architecture and with the automated training pipelines that form the core of a real MLOps strategy.
MLflow without MLOps is like having a Git repository with no continuous integration process: useful, but incomplete.
How we work with MLflow at BertIA
In the machine learning projects BertIA takes to production, MLflow is part of the usual stack when we work in Databricks environments. Not as a decorative layer added at the end of the project, but as the governance infrastructure set up from the start, before the team begins training the first models.
The reason is practical: adding MLflow retroactively to an ML project that has been running for months is costly. You have to rebuild the experiment history, standardize the artifact format and migrate the existing models to the Model Registry. Doing it from the start adds no significant time to the project, but it avoids that later reordering cost that always arrives when the project scales.
When the client’s team needs to demonstrate to an audit which data trained which version of the model and what metrics it had before being deployed, that information is available in the registry without reconstructing anything.
Conclusion
MLflow isn’t the most visible tool in an AI strategy, but it’s one of those that most determines whether that strategy works in the long run.
Without a model lifecycle management layer, any machine learning project that gets past the pilot phase ends up generating technical debt that slows iteration, complicates maintenance and makes it almost impossible to answer basic questions about how models behave in production. With MLflow in place, the team gains control, traceability and the ability to operate models with real guarantees instead of on faith.
If you’re building the data architecture that has to support your AI initiatives, or evaluating how to integrate MLflow into your stack, talk to our experts to review what fits your specific case.




