Model Monitoring
探索 AI 中模型监控的重要性。学习跟踪数据漂移、性能指标,并使用 Ultralytics Platform 保持 Ultralytics YOLO26 的鲁棒性。
模型监控是在将 Machine Learning (ML) 模型部署到生产环境之后,对其性能进行跟踪、分析和评估的持续实践。传统的软件通常以确定性方式运行——对于给定的输入无限期地期望得到相同的输出——而预测模型则依赖于随时间演变的统计模式。随着现实世界环境的变化,输入这些模型的数据可能会发生偏移,从而导致准确性或可靠性下降。监控通过在 数据漂移 或概念漂移等问题对业务成果或用户体验产生负面影响之前识别它们,确保 Artificial Intelligence (AI) 系统继续交付价值。
部署后监管的重要性#
在 Machine Learning Operations (MLOps) 生命周期中,部署并非终点。在历史数据上训练的模型代表了世界在特定时刻的快照。随着时间的推移,外部因素(例如季节变化、经济转变或新的用户行为)会改变底层数据分布。这种现象被称为 数据漂移,它可能导致“静默失败”,即模型在没有错误消息的情况下产生预测,但这些预测的质量却低于可接受的标准。
有效的监控可以提供对这些微妙变化的可见性。通过使用 验证数据 建立基线并将其与实时生产流进行比较,工程团队可以及早发现异常。这种主动的方法允许进行及时的 模型重新训练 或更新,从而确保诸如 自动驾驶汽车 或欺诈检测算法之类的系统保持安全和有效。
模型监控中的关键指标#
为了保持健康的 ML 系统,从业者会跟踪通常分为三类的各种指标:
- 服务可靠性指标: 这些指标追踪 推理引擎 的运行状况。关键指标包括 推理延迟(预测花费的时间)和系统资源利用率,例如 GPU 内存使用率。诸如 Prometheus 之类的工具通常用于抓取和存储这些系统级指标。
- 数据质量指标: 这些指标确保输入数据与预期的架构和统计分布相匹配。例如,缺失值的突然激增或特征均值的偏移可能表明上游数据管道中断。诸如 柯尔莫哥罗夫-斯米尔诺夫检验 之类的统计检验有助于量化训练分布与生产分布之间的距离。
- 性能指标: 理想情况下,团队会监控诸如 准确率、精确率 和 召回率 等真实标签指标。然而,在生产中,真实标签通常会延迟或不可用。在这种情况下,诸如预测 置信度 得分或输出分布稳定性等代理指标被用于评估健康状况。
实际应用#
模型监控在各种自动化决策影响运营和安全的行业中至关重要:
- 制造业中的计算机视觉: 在 智能制造 中,视觉检测模型可检测装配线上的缺陷。随着时间的推移,相机镜头可能会积聚灰尘,或者工厂照明可能会发生变化,从而导致模型将无缺陷的零件错误分类为有缺陷的零件。监控正面检测率有助于识别这种漂移,从而促使通过 Ultralytics Platform 进行维护或重新校准。
- 金融欺诈检测: 银行使用 ML 来标记可疑交易。犯罪分子不断调整其策略以逃避检测,从而导致概念偏移。通过监控标记交易的比例并调查人工审核员的反馈,数据科学家可以快速更新模型以识别新的欺诈模式。
监控与可观测性#
区分监控和 可观测性 是很有帮助的,因为它们发挥着互补的作用。模型监控通常是反应式的,专注于“已知未知数”,使用仪表板在特定指标突破阈值(例如准确率降至 90% 以下)时向团队发出警报。可观测性更深入地挖掘“未知未知数”,提供详细的 日志 和跟踪,使工程师能够调试特定预测失败的原因,或者模型对特定人群表现出 AI 偏见 的原因。
示例:跟踪预测置信度#
监控计算机视觉模型健康状况的一种简单方法是跟踪其预测的平均置信度。置信度的显著下降可能表明模型遇到了其未经过训练处理的数据。
以下是一个使用 YOLO26 从一批图像中提取置信度分数以进行监控的 Python 示例:
import numpy as np
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Run inference on a source (e.g., a video frame or image list)
results = model(["bus.jpg", "zidane.jpg"])
# Extract confidence scores for monitoring
for i, result in enumerate(results):
# Get the confidence scores for all detected objects
confidences = result.boxes.conf.cpu().numpy()
if len(confidences) > 0:
avg_conf = np.mean(confidences)
print(f"Image {i}: Average Detection Confidence: {avg_conf:.3f}")
else:
print(f"Image {i}: No objects detected.")定期记录这些统计数据使团队能够使用诸如 Grafana 或 Ultralytics Platform 中的监控功能等工具来可视化随时间推移的趋势,从而确保模型在动态环境中保持稳健。






