机器学习模型性能基线对比监控

HappyNet +0/-0 0 0 正常 2025-12-24T07:01:19 机器学习 · DevOps · 模型监控

机器学习模型性能基线对比监控

在生产环境中,构建有效的模型监控系统需要建立清晰的性能基线并持续跟踪关键指标。以下是一个可复现的监控方案。

基线建立步骤

首先,收集模型在稳定期的性能数据作为基准:

import pandas as pd
import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score

# 假设已有的稳定期预测结果
baseline_metrics = {
    'accuracy': 0.92,
    'precision': 0.89,
    'recall': 0.91,
    'f1_score': 0.90
}

# 计算基线标准差
baseline_std = {
    'accuracy_std': 0.02,
    'precision_std': 0.03,
    'recall_std': 0.025
}

实时监控配置

设置监控指标阈值:

  • 准确率下降超过基线±3σ(即±0.06)
  • 精度下降超过基线±4σ(即±0.12)
  • 召回率下降超过基线±3σ(即±0.075)

告警规则配置

在Prometheus中配置告警规则:

groups:
- name: model_performance
  rules:
  - alert: ModelAccuracyDrop
    expr: abs(model_accuracy - 0.92) > 0.06
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "模型准确率下降超过基线"
      description: "当前准确率为 {{ $value }},超出阈值0.06"

  - alert: ModelPrecisionDrop
    expr: abs(model_precision - 0.89) > 0.12
    for: 3m
    labels:
      severity: warning
    annotations:
      summary: "模型精度异常下降"
      description: "当前精度为 {{ $value }},超出阈值0.12"

数据收集与上报

通过Flask接口收集实时预测数据并上报:

from flask import Flask, request
import prometheus_client

app = Flask(__name__)
accuracy_metric = prometheus_client.Gauge('model_accuracy', '模型准确率')
precision_metric = prometheus_client.Gauge('model_precision', '模型精度')

@app.route('/predict', methods=['POST'])
def predict():
    # 处理预测逻辑
    accuracy = calculate_accuracy(predictions)
    precision = calculate_precision(predictions)
    
    # 上报指标
    accuracy_metric.set(accuracy)
    precision_metric.set(precision)
    return {'result': 'success'}

该方案可有效识别模型性能下降并及时告警,确保模型在生产环境的稳定性。

推广
广告位招租

讨论

0/2000
Xavier463
Xavier463 · 2026-01-08T10:24:58
基线设置要基于真实业务场景,别光看指标好看。我见过不少项目用测试集性能当基线,结果生产一跑就炸,建议至少留30天稳定期数据。
BoldQuincy
BoldQuincy · 2026-01-08T10:24:58
监控阈值别死板地写σ,得结合模型业务含义。比如召回率下降0.05在风控里可能就是灾难,但推荐系统里可能还好,建议做业务敏感度分析。
GoodStone
GoodStone · 2026-01-08T10:24:58
Prometheus告警别只看数值,得加趋势判断。我之前遇到过模型性能缓慢下滑但没触发告警,后来加了个滑动窗口的均值差监控才发现问题。
KindArt
KindArt · 2026-01-08T10:24:58
上报接口要带时间戳和批次信息,不然出问题根本没法回溯。建议用log+metric双通道,日志里记输入特征分布,metric里记输出指标,方便事后分析。