MLflow 简介 #

什么是机器学习生命周期? #

在了解 MLflow 之前,我们需要先理解机器学习生命周期的概念。机器学习项目不仅仅是训练模型,它包含从数据处理到模型部署的完整流程。

text
┌─────────────────────────────────────────────────────────────┐
│                    机器学习生命周期                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐ │
│  │ 数据准备  │ → │ 实验开发  │ → │ 模型训练  │ → │ 模型评估  │ │
│  └──────────┘   └──────────┘   └──────────┘   └──────────┘ │
│       ↑              ↑              ↑              ↑       │
│       │              │              │              │       │
│       ↓              ↓              ↓              ↓       │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐ │
│  │ 特征工程  │   │ 参数调优  │   │ 版本管理  │   │ 模型部署  │ │
│  └──────────┘   └──────────┘   └──────────┘   └──────────┘ │
│                                                             │
└─────────────────────────────────────────────────────────────┘

传统 ML 工作的痛点 #

text
痛点 1:实验难以追踪
────────────────────────
- 哪个参数组合效果最好?
- 这次的改动为什么效果变差了?
- 之前的实验记录在哪里?

痛点 2:代码难以复现
────────────────────────
- 这段代码依赖什么环境?
- 数据版本是什么?
- 随机种子设置了吗?

痛点 3:模型难以管理
────────────────────────
- 生产环境用的是哪个模型?
- 模型文件在哪里?
- 如何回滚到上一个版本?

痛点 4:部署流程复杂
────────────────────────
- 如何打包模型?
- 如何在不同环境部署?
- 如何监控模型性能?

什么是 MLflow? #

MLflow 是一个开源平台,用于管理机器学习完整的生命周期。它由 Databricks 于 2018 年创建,现已成为 MLOps 领域最受欢迎的工具之一。

核心定位 #

text
┌─────────────────────────────────────────────────────────────┐
│                       MLflow 定位                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  框架无关    │  │  端到端      │  │  开源免费    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  易于扩展    │  │  可自托管    │  │  活跃社区    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

MLflow 的设计理念 #

text
1. 开放性
   ├── 支持所有主流 ML 框架
   ├── 可与任何存储后端集成
   └── 可在任何平台运行

2. 简洁性
   ├── API 设计简洁直观
   ├── 最小化侵入性
   └── 渐进式采用

3. 可扩展性
   ├── 支持单机到分布式
   ├── 支持小团队到企业
   └── 支持插件扩展

MLflow 的历史 #

发展历程 #

text
2018年 ─── MLflow 项目启动
    │
    │      Databricks 开源
    │      首次发布三大组件
    │
2019年 ─── 快速发展期
    │
    │      社区快速增长
    │      新增多项功能
    │
2020年 ─── Model Registry 发布
    │
    │      模型版本管理
    │      阶段转换功能
    │
2021年 ─── 企业功能增强
    │
    │      认证授权
    │      多租户支持
    │
2022年 ─── MLflow 2.0
    │
    │      架构重构
    │      性能优化
    │
至今   ─── 广泛应用
    │
    │      数百万用户
    │      企业级采用

版本演进 #

版本 发布时间 主要特性
1.0 2018 Tracking, Projects, Models
1.5 2019 Model Registry
1.20 2021 认证支持
2.0 2022 架构重构、性能优化
2.5 2023 LLM 支持、Prompt Engineering
2.10 2024 增强的 LLM 功能

MLflow 核心组件 #

1. MLflow Tracking(实验跟踪) #

text
┌─────────────────────────────────────────────────────────────┐
│                    MLflow Tracking                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:记录和查询实验                                        │
│                                                             │
│  记录内容:                                                  │
│  ├── Parameters(参数)- 模型超参数                         │
│  ├── Metrics(指标)- 评估指标                               │
│  ├── Artifacts(工件)- 模型文件、图表等                    │
│  └── Metadata(元数据)- 代码版本、运行时间等               │
│                                                             │
│  使用方式:                                                  │
│  ├── Python API                                            │
│  ├── CLI 命令                                              │
│  └── Web UI                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. MLflow Projects(项目打包) #

text
┌─────────────────────────────────────────────────────────────┐
│                    MLflow Projects                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:将 ML 代码打包成可复现的格式                          │
│                                                             │
│  项目结构:                                                  │
│  ├── MLproject 文件 - 项目描述                              │
│  ├── conda.yaml - 环境依赖                                  │
│  ├── requirements.txt - Python 依赖                         │
│  └── 代码文件                                               │
│                                                             │
│  支持环境:                                                  │
│  ├── Conda 环境                                             │
│  ├── Docker 容器                                            │
│  └── 系统环境                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. MLflow Models(模型管理) #

text
┌─────────────────────────────────────────────────────────────┐
│                    MLflow Models                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:统一的模型打包格式                                    │
│                                                             │
│  模型结构:                                                  │
│  ├── MLmodel 文件 - 模型元数据                              │
│  ├── 模型文件 - 权重和参数                                  │
│  ├── conda.yaml - 运行环境                                  │
│  └── requirements.txt - 依赖                                │
│                                                             │
│  支持的模型格式(Flavors):                                 │
│  ├── python_function - 通用 Python 接口                     │
│  ├── sklearn - Scikit-learn 模型                            │
│  ├── tensorflow - TensorFlow 模型                           │
│  ├── pytorch - PyTorch 模型                                 │
│  └── 更多...                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. Model Registry(模型注册中心) #

text
┌─────────────────────────────────────────────────────────────┐
│                    Model Registry                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  功能:集中管理模型版本和生命周期                            │
│                                                             │
│  核心概念:                                                  │
│  ├── Registered Model - 注册的模型                          │
│  ├── Model Version - 模型版本                               │
│  └── Model Stage - 模型阶段                                 │
│                                                             │
│  模型阶段:                                                  │
│  ├── None/Archived - 归档                                   │
│  ├── Staging - 预发布                                       │
│  └── Production - 生产环境                                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

MLflow 架构 #

整体架构 #

text
┌─────────────────────────────────────────────────────────────┐
│                      MLflow 架构图                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    客户端层                          │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐             │   │
│  │  │ Python  │  │   CLI   │  │  REST   │             │   │
│  │  │   API   │  │  命令   │  │   API   │             │   │
│  │  └─────────┘  └─────────┘  └─────────┘             │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   MLflow Server                      │   │
│  │  ┌─────────────┐  ┌─────────────┐                   │   │
│  │  │   Tracking  │  │  Registry   │                   │   │
│  │  │    API      │  │    API      │                   │   │
│  │  └─────────────┘  └─────────────┘                   │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│                          ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    存储层                            │   │
│  │  ┌─────────────┐  ┌─────────────┐                   │   │
│  │  │  Backend    │  │  Artifact   │                   │   │
│  │  │  Store      │  │  Store      │                   │   │
│  │  │ (元数据)    │  │ (工件)      │                   │   │
│  │  └─────────────┘  └─────────────┘                   │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

存储后端 #

text
Backend Store(元数据存储)
├── FileStore(本地文件系统)
│   └── 默认方式,适合单机
├── SQLStore(关系数据库)
│   ├── SQLite
│   ├── PostgreSQL
│   ├── MySQL
│   └── SQL Server
└── 自定义存储

Artifact Store(工件存储)
├── LocalArtifactRepo(本地)
├── S3ArtifactRepo(AWS S3)
├── AzureBlobArtifactRepo(Azure)
├── GCSArtifactRepo(GCP)
├── FTPArtifactRepo(FTP)
└── 自定义存储

MLflow 的优势 #

1. 解决实验管理问题 #

text
问题:
├── 实验记录混乱
├── 参数难以追踪
├── 结果难以比较
└── 复现困难

MLflow 解决方案:
├── 自动记录参数和指标
├── 可视化比较实验
├── 版本控制
└── 一键复现

2. 解决模型管理问题 #

text
问题:
├── 模型文件散落各处
├── 版本管理混乱
├── 部署格式不统一
└── 回滚困难

MLflow 解决方案:
├── 统一的模型格式
├── Model Registry 版本管理
├── 多种部署方式
└── 阶段转换和回滚

3. 解决团队协作问题 #

text
问题:
├── 实验结果难以共享
├── 环境配置不一致
├── 模型交接困难
└── 缺乏审计追踪

MLflow 解决方案:
├── 集中的实验存储
├── 项目打包保证一致性
├── 模型注册中心
└── 完整的审计日志

MLflow vs 其他工具 #

功能对比 #

特性 MLflow Weights & Biases Neptune.ai Kubeflow
开源 ✅ 完全开源 部分 部分 ✅ 完全开源
自托管
实验跟踪
模型注册
模型部署
项目打包
学习曲线
企业支持 Databricks W&B Neptune Google

选择建议 #

text
选择 MLflow 的场景:
├── 需要自托管解决方案
├── 需要完整的端到端功能
├── 需要与现有基础设施集成
├── 预算有限(开源免费)
└── 需要灵活定制

选择 W&B/Neptune 的场景:
├── 不介意数据存储在第三方
├── 需要开箱即用的体验
├── 团队协作需求强
└── 预算充足

选择 Kubeflow 的场景:
├── 已有 Kubernetes 基础设施
├── 需要完整的 ML 平台
├── 团队有运维能力
└── 大规模生产环境

MLflow 应用场景 #

1. 个人数据科学家 #

text
场景:
- 管理个人实验
- 追踪模型性能
- 复现历史结果

MLflow 方案:
- 本地文件存储
- Tracking UI 查看实验
- 自动记录功能

2. 小型团队 #

text
场景:
- 团队协作开发
- 共享实验结果
- 模型版本管理

MLflow 方案:
- 共享服务器部署
- Model Registry 管理模型
- 权限控制

3. 企业级应用 #

text
场景:
- 大规模模型管理
- 生产环境部署
- 合规审计需求

MLflow 方案:
- 高可用部署
- 企业级存储后端
- 完整审计日志

学习路径 #

text
入门阶段
├── MLflow 简介(本文)
├── 安装与配置
└── 快速开始

基础阶段
├── 实验跟踪
├── 模型管理
└── 项目打包

进阶阶段
├── 模型注册中心
├── 模型部署
└── 高级配置

实战阶段
├── PyTorch 集成
├── Scikit-learn 集成
└── 生产环境部署

下一步 #

现在你已经了解了 MLflow 的基本概念,接下来学习 安装与配置,开始搭建你的 MLflow 环境!

最后更新:2026-04-04