返回学习地图
llmPhase C · 第 23

3.6 MLOps

模型版本管理/CI-CD/监控/A-B测试:AI系统的持续运维

4 个章节·按类别展开/折叠
知识

什么是MLOps?——DevOps的AI版本

MLOps = Machine Learning + Operations。把DevOps的最佳实践应用到机器学习系统。包括:模型开发、训练、部署、监控、更新的全生命周期管理。

为什么MLOps比DevOps更难?

  • 模型是代码+数据:传统软件只需要版本控制代码,ML还需要版本控制数据、超参数、模型权重
  • 模型会退化:数据分布变化(概念漂移)导致模型性能下降,需要持续监控
  • 实验管理:ML需要大量实验(不同超参数、不同数据),需要追踪每次实验
  • 可复现性:同样的代码+数据+超参数,必须得到同样的结果

MLOps生命周期:

1. 数据准备:收集、清洗、标注、版本化
2. 实验:训练多个模型,比较性能
3. 模型注册:把最佳模型注册到模型仓库
4. 部署:把模型部署到生产环境
5. 监控:监控模型性能、数据漂移、延迟
6. 再训练:性能下降时,用新数据重新训练
7. A/B测试:新模型 vs 旧模型,逐步切换

MLOps工具链:

功能工具
实验追踪MLflow, Weights & Biases, TensorBoard
模型注册MLflow Model Registry, DVC
工作流编排Airflow, Kubeflow, Prefect
特征存储Feast, Tecton
监控Evidently, WhyLabs, Arize
代码

代码实战:MLflow实验追踪

知识

模型监控与A/B测试

为什么需要监控模型?模型上线后,真实数据分布可能与训练数据不同。例如:训练时客户主要是年轻人,上线后老年人增多,模型可能不再准确。

监控维度:

监控项指标告警阈值
模型性能准确率、F1、AUC下降>5%
数据漂移特征分布KL散度、PSIPSI>0.2
概念漂移标签分布变化显著变化
延迟P50/P95/P99响应时间P99>500ms
吞吐量QPS低于目标
错误率5xx错误比例>1%

A/B测试:新模型(B)和旧模型(A)同时运行,逐步把流量切给B。

阶段1: A=100%, B=0%   (基线)
阶段2: A=90%,  B=10%  (小流量验证)
阶段3: A=70%,  B=30%  (逐步放大)
阶段4: A=50%,  B=50%  (对照实验)
阶段5: A=20%,  B=80%  (接近全量)
阶段6: A=0%,   B=100% (完全切换)

每个阶段监控:
- 业务指标(转化率、收入)
- 模型指标(准确率、延迟)
- 用户反馈(满意度、投诉率)

如果B的性能显著优于A(p<0.05),继续放量。
如果B的性能显著差于A,回滚到A。

参数表:

参数含义典型值太大/太小
A/B流量比例B模型接收的流量比例10%~50%太高→风险大;太低→统计不显著
置信水平统计显著性95% (p<0.05)太高→难显著;太低→误判
监控窗口评估周期7天~30天太短→随机波动;太长→风险暴露
练习

练习:MLOps

练习

Q1:MLOps和DevOps的核心区别是什么?为什么ML需要额外的实验管理?

Q2:什么是数据漂移(Data Drift)和概念漂移(Concept Drift)?举例说明。

Q3:A/B测试中,为什么流量不能一次性切到100%新模型?

Q4:MLflow的Run、Experiment、Artifact分别是什么?

Q5:模型监控中,如果准确率下降但数据漂移指标正常,可能是什么原因?

查看答案

A1:MLOps需要管理代码+数据+模型+超参数。DevOps只管理代码。ML需要实验管理是因为:1.超参数组合多,需要追踪每次实验;2.数据版本影响模型性能;3.需要比较不同实验选择最佳模型;4.可复现性要求。

A2:数据漂移:输入特征的分布变化。例:训练时用户年龄20-30岁,上线后40-50岁用户增多。概念漂移:输入和输出关系变化。例:疫情期间训练的销售预测模型,疫情后消费习惯改变,模型失效。

A3:一次性切换风险太大。如果新模型有bug或在某些场景表现差,100%流量会导致严重事故。逐步放量可以及时发现问题并回滚。通常从5%~10%开始。

A4:Run:一次具体的训练执行,包含参数、指标、时间戳。Experiment:一组相关的Run(如同一个任务的不同实验)。Artifact:训练产生的文件(模型、图表、数据集)。

A5:可能原因:1.标签质量问题(标注错误增多);2.模型bug(代码更新引入);3.特定子群体性能下降(整体指标掩盖了局部问题);4.对抗样本或异常输入;5.上游数据预处理变化。