Model Monitoring
探索模型监控在 AI 中的重要性。了解如何跟踪数据漂移和性能指标,并使用 Ultralytics Platform 保持 Ultralytics YOLO26 的鲁棒性。
模型监控是指在机器学习(ML)模型部署到生产环境后,持续跟踪、分析和评估其性能的实践。传统软件通常以确定性方式运行——对于给定输入,始终预期得到相同的输出——而预测模型依赖可能随时间演变的统计模式。随着现实环境发生变化,输入这些模型的数据可能会发生偏移,导致准确性或可靠性下降。监控可以在数据漂移或概念漂移对业务结果或用户体验造成负面影响之前识别这些问题,从而确保人工智能(AI)系统持续创造价值。
部署后的监督为何重要#
在机器学习运维(MLOps)生命周期中,部署并不是终点。基于历史数据训练的模型代表了特定时刻的世界快照。随着时间推移,季节变化、经济波动或新的用户行为等外部因素可能改变底层数据分布。这种现象称为数据漂移,可能导致“静默故障”:模型在不产生错误消息的情况下生成预测,但预测质量低于可接受标准。
有效的监控可以让你了解这些细微变化。通过使用验证数据建立基线,并将其与生产环境中的实时数据流进行比较,工程团队可以及早检测异常。这种主动式方法可以及时进行模型再训练或更新,确保自动驾驶汽车或欺诈检测算法等系统保持安全和有效。
模型监控中的关键指标#
为了维护健康的 ML 系统,实践者会跟踪多种指标,这些指标通常分为三类:
- **服务可靠性指标:**这些指标用于跟踪推理引擎的运行状况。关键指标包括推理延迟(完成一次预测所需的时间)和系统资源利用率,例如GPU内存使用量。实践中通常使用Prometheus等工具抓取并存储这些系统级指标。
- **数据质量指标:**这些指标用于确保输入数据符合预期的架构和统计分布。例如,缺失值突然增加,或某个特征的均值发生偏移,可能表明上游数据管道出现故障。Kolmogorov-Smirnov 检验等统计检验有助于量化训练数据分布与生产数据分布之间的距离。
- **性能指标:**理想情况下,团队会监控准确率、精确率和召回率等真实标签指标。然而在生产环境中,真实标签通常会延迟提供或无法获得。在这种情况下,团队会使用预测置信度分数或输出分布的稳定性等代理指标来评估系统健康状况。
实际应用#
在自动化决策会影响运营和安全的各个行业中,模型监控都至关重要:
- **制造业中的计算机视觉:**在智能制造中,视觉检测模型用于检测装配线上的缺陷。随着时间推移,相机镜头可能积聚灰尘,或工厂照明条件可能发生变化,导致模型将无缺陷部件误分类为有缺陷部件。监控阳性检测率有助于识别这种漂移,并通过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中的监控功能将随时间变化的趋势可视化,从而确保模型在动态环境中保持稳健。









