WBlog

wangzhiwei blog

0%

MLOps

Q1: 什么是 MLOps?和 DevOps 有什么区别?

DevOps 是让代码从开发到上线自动化(CI/CD)。
MLOps 是让机器学习模型从实验到生产自动化,额外要管数据、模型版本、效果监控。

DevOps MLOps
版本控制 代码(Git) 代码 + 数据 + 模型权重
测试 单元测试、集成测试 模型效果测试(精度、延迟)
部署 二进制/容器 模型文件 + 推理服务
监控 系统指标(CPU/内存) 数据漂移模型效果衰减
回滚 代码回滚 模型版本回滚

Q3: 用过哪些 MLOps 工具?分别管什么?

“我的MLOps栈是轻量级:MLflow管实验,DVC管数据,Docker+FastAPI管部署,Prometheus+Grafana管监控。没有重基础设施,但覆盖了模型全生命周期。”

Q4: 模型版本怎么管理?上线后发现有问题怎么办?

1
2
3
4
模型注册表(Model Registry):
- v1.0.0:2024-01-15,K=1000,F1=0.85,标签"production"
- v1.1.0:2024-03-20,K=1500,F1=0.87,标签"staging"
- v2.0.0:2024-06-01,K=2000,F1=0.89,标签"experiment"
1
2
3
4
5
6
7
8
9
# 1. 监控告警:ROUGE-L下降超过10%
if current_rouge < baseline_rouge * 0.9:
send_alert("模型效果衰减")

# 2. 自动回滚(蓝绿部署)
# 流量从v2.0.0切回v1.0.0,5秒内完成

# 3. 人工介入:检查数据漂移、定位bad case

Q5: RAG/Agent 场景题(结合你的项目)RAG 系统怎么做 MLOps?和传统 ML 有什么不同?

传统 ML RAG 系统
模型权重固定,数据在线流入 知识库动态更新,文档增删改
主要监控模型效果 还要监控检索质量生成质量
重训练 = 重新跑实验 重训练 = 重新切分文档重新Embedding重建向量索引

你的 RAG MLOps 流水线:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
每日凌晨:


┌─────────────────┐
│ 1. 数据更新 │ ← 新文档入库,旧文档过期
│ (DVC版本) │
└─────────────────┘


┌─────────────────┐
│ 2. 重新切分+Embedding │ ← LangChain处理,产出新向量
│ (MLflow记录参数) │
└─────────────────┘


┌─────────────────┐
│ 3. K-Means重新训练 │ ← Scikit-learn,找最佳K
│ (GridSearchCV) │
└─────────────────┘


┌─────────────────┐
│ 4. 重建Milvus索引 │ ← 新分区替换旧分区(蓝绿)
│ (Docker部署) │
└─────────────────┘


┌─────────────────┐
│ 5. A/B测试 │ ← 10%流量切新索引,对比ROUGE-L
│ (FastAPI路由) │
└─────────────────┘


┌─────────────────┐
│ 6. 全量上线/回滚 │ ← 效果达标则全切,否则回滚
└─────────────────┘


Q6: 怎么监控 Agent 系统的效果?不是单一指标能衡量的

分层监控

层级 指标 工具
任务完成率 用户任务是否走到最后一步 业务埋点
Agent决策 Planner是否正确拆解意图 人工标注 + 自动规则
检索质量 召回文档的相关性 ROUGE-L、人工抽样
生成质量 答案准确性、幻觉率 BertScore、LLM-as-Judge
系统性能 延迟、成本、错误率 Prometheus

Q7: 数据漂移(Data Drift)在 RAG 里怎么发现?

传统 ML: 输入特征分布变了(比如房价模型里,平均房价从100万涨到200万)。

漂移类型 表现 检测方法
查询漂移 用户问题主题变了(从”财务”变”技术”) K-Means中心点偏移检测
文档漂移 知识库内容过时(政策更新) 文档时间戳监控 + 效果下降
检索漂移 相似度分数分布变了 平均相似度监控

Q8: 如果让你从零搭建 MLOps 平台,优先级是什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
第1周:可复现实验
- MLflow记录超参和指标
- 代码+数据版本控制(Git+DVC)

第2-4周:自动化部署
- Docker打包模型
- FastAPI服务 + 健康检查
- 蓝绿部署(零停机)

第2-3月:监控告警
- Prometheus+Grafana看延迟/错误率
- 效果监控(ROUGE-L趋势图)
- 数据漂移检测

第3-6月:高级功能
- 自动重训练流水线(Airflow)
- A/B测试框架
- 模型解释性(SHAP)

关键原则: 先让”能跑”变”可靠”,再追求”全自动”。

Q9: 小团队(2-3人)做 MLOps,怎么取舍?

必做(高ROI) 可砍(低ROI)
实验记录(MLflow) 复杂的Kubeflow流水线
Docker部署 Kubernetes编排(先用Docker Compose)
基础监控(Prometheus) 实时特征平台
模型版本注册 自动重训练(先手动触发)

“小团队用精益MLOps:MLflow+Docker+Prometheus三件套覆盖80%需求,等团队大了再上Kubeflow。关键是可复现和可回滚,其他可以慢慢补。”

Prometheus监控指标设计
“我的RAG监控系统分四层:基础设施层看GPU显存防OOM,服务层分阶段看延迟定位瓶颈,模型层用ROUGE-L和幻觉率监控效果,业务层盯成本和用户满意度。关键设计是Agent状态机埋点,每个LangGraph节点的进入次数、耗时、成功率都有指标,死循环或频繁自我修正能立即发现。告警用多层级:延迟/错误率critical立即电话,效果下降warning工单跟进。”

RAG系统的自动重训练触发策略

一、为什么要自动重训练?

问题 后果 例子
知识库更新了(新政策/新产品) 检索到旧答案,用户拿到过期信息 “2024年税率”查到2023年数据
查询分布变了(用户问新话题) K-Means预分类失效,找不到文档 原来问”财务”多,现在问”AI”多
文档质量下降(爬虫抓错/格式乱) 噪声文档污染检索结果 PDF解析失败,内容变成乱码
模型效果衰减 ROUGE-L逐渐下降,用户投诉增多 从0.75降到0.55,没人知道

二、触发策略分类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
触发条件

├── 时间驱动(Time-based) ← 兜底,定期刷新
│ └── 每周日凌晨2点

├── 数据驱动(Data-based) ← 知识库变了
│ ├── 文档新增/删除/修改超过阈值
│ └── 文档内容漂移检测

├── 效果驱动(Performance-based) ← 质量下降了
│ ├── 检索Recall@10下降
│ ├── 生成ROUGE-L下降
│ └── 用户反馈差评率上升

└── 异常驱动(Anomaly-based) ← 出事了
├── 大量检索无结果
├── Agent死循环激增
└── 成本异常暴涨

“我的RAG自动重训练分四层触发:时间兜底每周刷新,数据驱动检测文档变化,效果驱动监控ROUGE-L和Recall下降,异常驱动响应事故。核心设计是A/B测试+渐进上线:新版本先给10%流量,观察30分钟错误率和延迟,达标再扩到50%、100%,任何一步失败自动回滚。紧急情况下一键暂停+立即回滚,人只审批不操作,系统自治但可控。”