机器学习模型性能指标采集
核心监控指标体系
1. 模型推理指标
- 响应时间:使用
time.time()记录每次推理耗时 - 吞吐量:每秒处理请求数(QPS)
- 错误率:失败请求占比,需捕获所有异常
2. 模型质量指标
- 预测准确率:使用
accuracy_score计算 - AUC值:二分类模型的ROC曲线下面积
- 置信度分布:输出概率分布直方图
采集实现方案
import time
import logging
from sklearn.metrics import accuracy_score, roc_auc_score
class ModelMonitor:
def __init__(self):
self.metrics = {
'response_time': [],
'accuracy': [],
'auc': [],
'error_rate': []
}
def monitor_inference(self, model, X_test, y_true):
start_time = time.time()
try:
predictions = model.predict(X_test)
end_time = time.time()
# 采集响应时间
self.metrics['response_time'].append(end_time - start_time)
# 采集模型质量
accuracy = accuracy_score(y_true, predictions)
auc = roc_auc_score(y_true, model.predict_proba(X_test)[:, 1])
self.metrics['accuracy'].append(accuracy)
self.metrics['auc'].append(auc)
except Exception as e:
logging.error(f'Model inference error: {e}')
self.metrics['error_rate'].append(1.0)
告警配置方案
阈值告警:
- 响应时间 > 2s(告警)
- 准确率 < 0.8(严重告警)
- 错误率 > 5%(紧急告警)
趋势告警:
- 连续5次准确率下降
- 响应时间增长超过30%
配置文件示例:
alerts:
response_time:
threshold: 2.0
severity: warning
accuracy:
threshold: 0.8
severity: critical
数据持久化:使用Prometheus存储指标,通过Grafana可视化展示

讨论