MLflow:MLOps 入门

发布: (2026年2月18日 GMT+8 04:25)
7 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容,我将按照要求保留源链接、格式和技术术语,仅翻译文本部分。

介绍

在机器学习模型中取得优秀的指标并非易事。想象一下,因为不记得使用了哪些超参数而无法复现结果。

我们的目标是摆脱“训练了一个模型,结果不错”这种状态,进入 MLOps 的世界,在那里可以:

  • 跟踪实验
  • 比较运行
  • 存储制品
  • 自信地重复过程

MLOps 是在 ML 项目中应用 DevOps 原则的实践。它涉及管理 ML 项目的 生命周期,从开发和训练阶段的 可复现性部署 与监控。

在传统软件开发中,代码版本控制(例如 Git)通常就足够了。而在机器学习中,结果取决于 代码 + 数据 + 超参数

专用工具可以在实验过程变得混乱之前,简化模型的审计和协作。缺乏结构化的历史记录会阻碍任何 AI 项目的可复现性和可扩展性。


什么是 MLflow?

MLflow 帮助实施 MLOps,以组织机器学习项目的生命周期。即使在一个简单的项目中,它也会为每次训练创建所有操作的历史记录。

在实际使用中,MLflow 能帮助回答以下问题:

  • 哪个参数组合产生了最佳指标?
  • 我何时运行了训练以及结果是什么?
  • 该次运行的训练模型保存在哪里?

MLflow 的出现是为了标准化这种管理。在本文档中,我们将关注三种基本的记录类型:

类型描述
参数配置输入(例如:learning_raten_estimators
指标性能结果(例如:accuracylog_loss
制品二进制输出(例如:保存为 .pkl.onnx 的模型)

MLflow 将随意的实验转变为可审计且标准化的记录系统。

简单的 MLflow 配置

Backend Store

SQLite (mlflow.db) – 保存元数据(实验、runs、参数、指标)。

Artifact Store

File store (mlruns/) – 保存制品(模型、图表等)。

安装

pip install mlflow

启动服务器

mlflow server \
    --backend-store-uri sqlite:///mlflow.db \
    --default-artifact-root ./mlruns \
    --host 0.0.0.0 \
    --port 5000

参数说明

参数描述
mlflow server启动 MLflow 服务
--backend-store-uriSQLite 轻量,适合首次迭代
--default-artifact-root存放制品的目录
--host--port服务器可用的地址(UI 也使用)

当我们使用 SQLite + 文件存储时,MLflow 目录中会出现两个主要组件:

  • mlflow.db – 包含元数据的 SQLite 数据库(实验、runs、参数、指标)。
  • mlruns/ – 包含制品及运行内容的文件夹(模型、图表等)。

与 Python 的集成

mlflow 库可以 几乎不改动代码 地连接到服务器。只需设置 URI 并使用 mlflow.start_run()

import mlflow
import mlflow.sklearn
from sklearn.metrics import accuracy_score, recall_score

# 连接到跟踪服务器
mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("Customer_Churn_Experiment")

with mlflow.start_run():
    # ----- 模型训练 -----
    # model = ... (此处编写你的训练代码)

    # 记录参数
    mlflow.log_param("max_depth", 10)
    mlflow.log_param("n_estimators", 100)

    # 评估
    y_pred = model.predict(X_test)
    acc = accuracy_score(y_test, y_pred)
    rec = recall_score(y_test, y_pred)

    # 记录指标
    mlflow.log_metric("accuracy", acc)
    mlflow.log_metric("recall", rec)

    # 记录工件(模型)
    mlflow.sklearn.log_model(model, "random_forest_model")

首次运行时会发生什么?

  • 实验 Customer_Churn_Experiment 会自动创建。
  • 会记录一次 run
  • 参数、指标和工件会被发送到跟踪服务器。

可视化结果

在 MLflow UI 中您将看到:

  • 已跟踪的参数和指标
  • 包含各自工件的运行列表

我记录的参数和指标示例:

参数
n_estimators100
max_depth10
指标
accuracy0.85
recall0.78

这使得可以在不依赖终端 print 的情况下比较不同的运行。

用例:超参数比较

我进行了第二次交互,修改了 max_depthn_estimators。虽然预期会有改进,但在检查 UI 时发现 accuracy 指标下降了。

经验教训

支柱MLflow 显示的内容
可追溯性实证证明超参数的更改导致了过拟合
技术比较UI 允许直观地比较两个运行
可复现性前一个版本的制品已记录并准备部署

一般优势

  • 划时代的突破:改变我们在模型生命周期中管理可追溯性的方式。
  • 易于检查:可以直接通过命令行查询 SQLite。
  • 高级 MLOps 的基础:跟踪只是第一步;随后是 Model RegistryModel Serving

掌握实验追踪是未来实现 Continuous Training (CT) 的基石。

仓库

此项目的完整代码可在我的 GitHub 上获取:
mlops‑tel(将 SEU_USUARIO 替换为您的用户名)。

co-churn-predict

你呢:在日常工作中已经使用 MLflow 了吗?在你看来,确保模型完全可复现的最大挑战是什么?

让我们在评论区讨论!

0 浏览
Back to Blog

相关文章

阅读更多 »

AI 编码工具:为什么开发者意见不合

AI‑Coding“辩论”并非真正的辩论 你会听到两个截然不同的故事: 朋友的创业公司创始人——“我们的团队现在使用 AI,功能发布速度提升了一倍。我是 e...”

谁在招聘 — 2026年2月

在以开发者为先的公司开放职位:产品工程师、Developer advocates 或 Community builders?以全新的 dev tools 机会开启新的一年。