监控生产环境中的模型性能
数据漂移检测、模型退化信号、重新训练触发条件,以及 evidently 库。
监控生产环境中的模型性能 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
为什么要在生产环境中进行监控?
模型在上线时表现良好,但随着现实世界发生变化,其性能可能会悄然下降。监控能够及早检测到这种漂移,避免业务指标在不知不觉中大幅下滑,从而让您知道何时需要重新训练。
数据漂移与概念漂移
- 数据漂移:输入分布发生变化(例如新客户构成发生变化)。
- 概念漂移:输入与目标之间的关系发生变化(例如预测客户流失的因素发生变化)。
两者都会损害准确率,但监控它们的方式不同。
用于检测数据漂移的 PSI
总体稳定性指数(PSI)会比较某个特征当前的分布与基线分布。将两者分箱,然后对所有分箱中的 (now% - base%) * ln(now% / base%) 求和。
解读 PSI 值
经验规则如下:PSI < 0.1 表示没有显著变化,0.1-0.25 表示中等变化(需要调查),> 0.25 表示重大变化(可能需要重新训练)。PSI 按特征分别计算。
import numpy as np
def psi(base, now, bins=10):
edges = np.percentile(base, np.linspace(0, 100, bins + 1))
b_pct = np.histogram(base, edges)[0] / len(base) + 1e-6
n_pct = np.histogram(now, edges)[0] / len(now) + 1e-6
return np.sum((n_pct - b_pct) * np.log(n_pct / b_pct))用于分布比较的 KS 检验
Kolmogorov-Smirnov(KS)检验用于比较两个连续分布。较小的 p 值表示生产环境分布与训练分布存在显著差异,说明可能发生了漂移。
from scipy.stats import ks_2samp
stat, pvalue = ks_2samp(train_feature, prod_feature)
if pvalue < 0.05:
print("Distribution drift detected")PSI 与 KS
- PSI:单个且易于解释的数值,非常适合仪表板和阈值设置。
- KS:带有 p 值的统计假设检验,对于连续特征更加严谨。
许多团队会将两者并列报告。
什么是 Evidently?
Evidently 是一个开源库,可以自动生成漂移和质量报告。您无需手动编写每个指标,只需组合预设检查,就能获得 HTML/JSON 报告。
# pip install evidently
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset构建 DataDriftPreset 报告
DataDriftPreset 会对所有列执行完整的漂移测试套件,将参考(训练)数据集与当前(生产)数据进行比较。
report = Report(metrics=[DataDriftPreset()])
report.run(
reference_data=train_df,
current_data=prod_df
)
report.save_html("drift_report.html")以编程方式提取结果
将报告导出为字典,以便传递给告警逻辑,从而让监控按计划自动运行,无需人工值守。
result = report.as_dict()
drift_share = result["metrics"][0]["result"]["dataset_drift"]
print("Dataset drift flag:", drift_share)对准确率下降发出告警
当您拥有真实标签时,请跟踪线上准确率,并在其低于阈值时触发告警;这是表明应当重新训练的最直接信号。
THRESHOLD = 0.85
if live_accuracy < THRESHOLD:
send_alert(f"Accuracy dropped to {live_accuracy:.2f}")闭环
良好的监控必须与行动相连接:检测到漂移 -> 发出警报 -> 触发重新训练流程(使用前面课程中的 Makefile/注册表)-> 部署新版本。没有响应方案的监控只会制造噪声。
快速检查
请检验您对监控的掌握情况。
回顾
您已经完成了生产模型的监控:PSI 和 KS 检验可以检测数据漂移,Evidently 通过 DataDriftPreset 自动生成报告;当准确率低于阈值时,您会发出警报并触发重新训练。至此,MLOps 课程结束。下一门课程:使用 FastAPI 提供 AI 模型服务。
常见问题解答
「监控生产环境中的模型性能」课时是免费的吗?
是的 — 「监控生产环境中的模型性能」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「监控生产环境中的模型性能」这节课中我会学到什么?
数据漂移检测、模型退化信号、重新训练触发条件,以及 evidently 库。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「监控生产环境中的模型性能」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 MLflow 跟踪实验
- 模型注册与版本管理
- 构建可复现的机器学习 pipeline
- 监控生产环境中的模型性能