Ch21 MLOps修订于 二〇二六年七月二日

21.6 生产监控

概念:模型上线不是终点

模型上线之后,很多人以为”完事了”——模型在跑,API 在响应,监控面板一片绿。但实际上,模型在生产环境中是一个持续衰减的资产。不像传统的软件代码——只要不修改,同样的输入永远产生同样的输出。ML 模型面对的是一个不断变化的世界:用户的行为在变、语言的用法在变、新的概念和产品不断出现。1

生活比喻:模型部署就像在一条河道上装了一个自动水质监测站。刚装好时它很准——能根据水的浊度、pH 值、溶解氧判断水质是否达标。但半年后,上游新建了一个工厂,排放了监测站训练数据里从未出现过的化学物质——监测站仍在”正常工作”(没有报错),但它的判断已经不准了。2

生产监控要解决的核心问题是:及时发现模型”悄悄变坏”的状况——不是等到用户投诉才去查,而是在模型性能下降到触发用户体验问题之前就预警。

三种关键退化

数据漂移(Data Drift):模型接收到的输入数据的统计分布发生了变化。你在 2023 年的用户提问数据上训练了模型——那时候用户问的是”怎么用 Python 写爬虫”。现在 2026 年了,用户开始问”怎么用 AI 写代码”、“怎么部署大模型”。输入变了,但模型还停留在 2023 年的知识分布里。数据漂移是最常见的生产问题,通常也是最早出现的预警信号。3

概念漂移(Concept Drift):输入和输出之间的关系发生了变化——同样的问题,正确答案不同了。比如一个股价预测模型,训练时”央行加息”意味着”股价下跌”,但在某些市场环境下”央行加息”反而被解读为”经济信心信号”导致股价上涨。输入没变,但规则变了。4

模型衰退(Model Degradation):以上两种漂移的最终结果——模型的预测准确率持续下降。比漂移更隐蔽的还有一种情况叫训练-服务偏差(Training-Serving Skew)——训练时用的数据预处理方式和上线后的数据预处理方式不一致,导致模型从第一天就在接收”不对”的输入。这就像你在摄氏温度上训练的模型,但线上收到的是华氏温度的数据——模型永远不会报错,只是永远算不对。

教学:用什么监控、监控什么

监控的分层策略

不要一开始就追求”监控一切”。按优先级分层:

第一层:系统健康检查(15 分钟内可配置)。这是任何 Web 服务都需要的基础监控,不是 ML 特有的——API 延迟、错误率、CPU/内存占用。用 Prometheus + Grafana 或者云服务自带的监控面板即可。如果你的模型 API 延迟从 200ms 飙升到 5 秒,不必分析什么数据漂移——先看是不是服务器挂了。

第二层:数据质量检查(2 小时内可配置)。检查进入模型的输入数据是否”正常”——缺失值比例是否突然升高、特征值范围是否超出训练时的分布、文本数据是否出现乱码或异常语言。这是性价比最高的监控:80% 的”模型变差”其实根本是数据管道出了问题(上游系统改了数据格式、API 返回了空字段、有人在数据库里误删了一列)。

第三层:数据漂移检测(1 天内可配置)。用统计方法比较”当前生产数据”和”训练时的参考数据”之间的分布差异。常用方法:

  • PSI(Population Stability Index,群体稳定指数):衡量单个特征的分布变化,PSI < 0.1 表示无明显变化,0.1-0.25 表示中等变化,> 0.25 表示显著变化
  • KS 检验(Kolmogorov-Smirnov 检验):统计检验两个样本是否来自同一分布
  • 域分类器方法:训练一个二分类器来区分”训练数据”和”当前数据”——如果分类器的 AUC 很高,说明两类数据已经可以用统计特征区分开来,漂移发生了。这个方法对文本/NLP 场景尤其有效。5

第四层:模型质量评估(需要真实标签,通常有延迟)。用真实的用户反馈或人工标注来评估模型的实际准确率、召回率等指标。这一层最准确但也最慢——用户反馈可能要几周后才能收集到。所以在没有真实标签的”空窗期”,第三层的漂移检测是你最好的代理指标。

Evidently AI 入门

Evidently AI 是一个开源 ML 监控库,专为小团队设计。不需要 Grafana、不需要 Prometheus、不需要 Kubernetes——几行代码生成一份监控报告,可以存成 HTML 文件定期查看,也可以接入自动化调度。6

from evidently.report import Report
from evidently.metric_preset import DataDriftPreset, DataQualityPreset

# 加载参考数据(训练时的数据)和当前数据(生产数据)
report = Report(metrics=[
    DataDriftPreset(),      # 检测数据漂移
    DataQualityPreset(),    # 检测数据质量问题
])
report.run(reference_data=reference_df, current_data=current_df)
report.save_html("drift_report.html")  # 生成报告,浏览器查看

Evidently 提供三种使用模式:

  • Report(报告):一次性生成一份详细的监控报告,适合在 Jupyter Notebook 里做探索性分析
  • Test Suite(测试套件):设定明确的通过/失败阈值,适合接入 CI/CD 流水线——如果漂移超过阈值,阻止模型部署
  • Dashboard(监控面板):自托管的 Web 界面,持续追踪多个模型的多项指标变化趋势

发现漂移后怎么办

发现漂移不等于要立刻重新训练。一个冷静的响应流程:

  1. 先检查数据管道。90% 的漂移告警其实是上游数据格式变了、某个字段变成了 null、或者 ETL 任务失败了。检查数据质量比检查模型更优先。
  2. 确认漂移的范围和方向。是所有特征都在漂移,还是只有几个?漂移的方向是”新来了一批不同类型的用户”(无害)还是”数据质量在系统性恶化”(有害)?
  3. 评估业务影响。漂移对用户体验/收入的影响有多大?如果是边缘特征的小幅漂移,可能不需要任何操作。
  4. 决策:重新训练(有新标注数据)→ 调整模型后处理逻辑 → 切换到备用规则系统 → 标记低质量输出让人工审核。7

注意事项

阈值不要拍脑袋。PSI 的 0.25 阈值不是金科玉律——如果你的业务对数据变化非常敏感(比如金融交易),阈值应该设得更低。最好的做法是:在部署前先分析训练数据的历史漂移模式(比如季节性波动),以此为基础设定业务的”正常变动范围”。

不要忽略”无目标”场景。很多生产环境根本没有实时标签(你不可能在用户每次搜索后立刻知道”这个结果是不是用户想要的”)。这种情况下不要空等标签——先用数据漂移和预测漂移作为代理指标,同时在后台异步收集用户反馈(点击率、停留时间、点赞/踩)。

监控本身也是要维护的。监控系统不是一次性配置完就永远正确的。每当你更新了模型、改了特征工程、换了数据源,都需要同步更新监控的参考基线。

LLM 时代的监控新挑战。传统 ML 模型产出一个数字或一个类别——判断”对不对”相对清晰。LLM(大语言模型)产出一段文本——判断”好不好”涉及事实准确性、相关性、安全性、幻觉程度等多个维度。这催生了 LLM 可观测性(LLM Observability)这个专门的子领域(详见 LLM 可观测性 (LLM Observability))。

关联


← 上一节:21.4 小型团队MLOps最低可行方案 | 下一节:21.7 CI/CD →

注释

  1. Evidently AI, “Model monitoring for ML in production: a comprehensive guide”, https://www.evidentlyai.com/ml-in-production/model-monitoring, 2025 ↩

  2. Evidently AI, “What is data drift in ML, and how to detect and handle it”, https://www.evidentlyai.com/ml-in-production/data-drift, 2025 ↩

  3. Evidently AI, “What is data drift in ML, and how to detect and handle it”, https://www.evidentlyai.com/ml-in-production/data-drift, 2025 ↩

  4. Evidently AI, “What is concept drift in ML, and how to detect and address it”, https://www.evidentlyai.com/ml-in-production/concept-drift, 2025 ↩

  5. Evidently AI, “Monitoring NLP models in production: a tutorial on detecting drift in text data”, https://www.evidentlyai.com/blog/tutorial-detecting-drift-in-text-data, 2025 ↩

  6. Evidently AI, “How to start with ML model monitoring. A step-by-step guide”, https://www.evidentlyai.com/blog/mlops-monitoring, 2025 ↩

  7. Evidently AI, “‘My data drifted. What’s next?’ How to handle ML model drift in production”, https://www.evidentlyai.com/blog/ml-monitoring-data-drift-how-to-handle, 2025 ↩

关联9

知识图谱

局部图谱 · 点节点跳转