虽然传统软件监控通常侧重于可用性和延迟,但确保生产机器学习 (machine learning)模型的可靠性需要更细致的方法。仅仅知道预测服务是否正在运行是不够的;我们需要量化 (quantization)它在核心任务上表现得如何:基于当前数据做出准确和有用的预测。在此,服务水平目标 (SLO) 对机器学习系统而言是必需的。
SLO 是为您的服务可靠性和性能设定的具体的、可衡量的目标。它们从“模型应该准确”之类的模糊表述,转变为“高价值客户的95%预测置信度应高于0.8”这样的具体目的。为机器学习模型定义SLO促使我们以可量化的方式明确表达“良好性能”的含义,提供明确的基准以便监控。
为何机器学习 (machine learning)需要特定服务水平目标
标准的设施SLO,如API延迟或服务器正常运行时间,是必要但不足以满足机器学习模型的需要。模型可以快速可靠地提供服务(满足设施SLO),但由于底层数据分布的变化(数据漂移)或特征与目标变量之间关系的变化(概念漂移),它仍然可能生成越来越不准确或有偏向的预测。
机器学习特定的SLO处理机器学习系统特有的失效模式:
- 预测质量下降: 模型在其主要任务上的性能随时间下降。
- 数据问题: 输入数据与模型训练时的数据明显偏离,或存在质量问题。
- 偏向和公平性违规: 模型对某些子群表现出不理想的偏向。
- 操作瓶颈: 尽管模型本身可能正常,但周边设施存在困难(例如,特征生成延迟)。
定义有意义的机器学习 (machine learning)服务水平目标
有效的机器学习服务水平目标基于具体的、可测量的服务水平指标 (SLI)。SLI是实际测量的指标(例如,精确率、预测延迟),而SLO是该指标在确定时间段内的目标阈值(例如,在28天滚动窗口期内,第99百分位预测延迟低于500毫秒)。
以下是SLI的常见类别以及机器学习系统相应的SLO示例:
-
预测质量指标: 这些直接测量模型的效果。选择很大程度上取决于任务(分类、回归等)和业务场景。
- SLI 示例: 准确率、精确率、召回率、F1分数、平均绝对误差 (MAE)、均方根误差 (RMSE)、ROC曲线下面积 (AUC)。对于多类别问题,可以考虑每个类别的指标。
- SLO 示例: 对于流失预测模型: “‘可能流失’类别的精确率在7天滚动窗口期内必须保持 >= 0.85,基于分数 > 0.7 的预测结果进行测量。”
- SLO 示例: 对于销售预测模型: “每周平均绝对百分比误差 (MAPE) 必须 <= 15%。”
-
数据漂移和质量指标: 这些追踪模型接收的输入数据的稳定性和完整性。
- SLI 示例: 训练数据和生产数据分布之间的统计距离测量(例如,群体稳定性指标 (PSI)、科尔莫哥洛夫-斯米尔诺夫统计量、Wasserstein 距离)、每个特征的缺失值百分比、模式验证失败率、超出预期范围的特征值比例。
- SLO 示例: 对于图像分类模型: “图像亮度值分布的PSI在当日数据与训练数据之间必须 < 0.2。”
- SLO 示例: 对于欺诈检测模型: “带有缺失‘user_age’特征的交易百分比在任何1小时周期内必须 <= 1%。”
-
概念漂移指示器: 这些试图捕捉模型学习到的底层模式的变化。这通常通过性能下降或通过专门的漂移检测算法间接推断。
- SLI 示例: 随时间监控的性能指标(作为代理指标)、特定概念漂移检测器(例如,DDM、EDDM——尽管通常有噪声)的输出。
- SLO 示例: “如果模型F1分数在24小时内相较于其基线下降超过10%,触发潜在概念漂移警报。”(注意:此处将性能指标用作一种指示。)
-
公平性和偏向指标: 这些测量模型在不同人口统计或敏感群体间的性能或结果差异。
- SLI 示例: 人口统计均等差异、机会均等差异、统计均等差异、不同影响比率。
- SLO 示例: 对于贷款审批模型: “指定性别群体之间批准率的差异在30天滚动窗口期内必须 <= 5%。”
-
操作指标: 这些涵盖服务健康状况的传统方面,但应用于机器学习预测服务。
- SLI 示例: 预测延迟(例如,p95、p99)、预测请求吞吐量 (throughput)、预测错误率(例如,HTTP 5xx 错误)、每次预测成本。
- SLO 示例: “第95百分位预测延迟在任何5分钟间隔内必须 <= 200毫秒。”
- SLO 示例: “预测服务错误率在任何1小时间隔内必须 <= 0.1%。”
建立和使用服务水平目标
定义SLO并非一次性任务。它需要数据科学家、机器学习 (machine learning)工程师、SREs 和产品负责人之间的协作,以理解模型的目的、其失效模式以及性能下降对业务的影响。
重要步骤包含:
- 明确核心用户流程: 机器学习模型支持的最重要的任务是什么?
- 选择合适的SLI: 选择能准确反映这些流程的性能和可靠性的指标。
- 设定目标 (SLO): 基于历史表现、业务需求和用户期望,定义可达成的阈值。从基线测量开始并迭代。
- 定义测量窗口: 指定在此期间评估SLO的时间段(例如,7天滚动、日历月)。
- 建立错误预算: SLO的倒数(1 - SLO)定义了可接受的失效或性能下降水平。超出错误预算表明可靠性需要关注,可能暂停新功能发布,直到稳定性恢复。
- 监控和警报: 部署监控系统以持续追踪SLI,并在SLO面临风险或被突破时触发警报。
- 审查和迭代: 定期审查SLO表现,并随系统演变、数据变化或业务需求调整目标。
SLI(测量值)、SLO(目标)与当SLO被突破时触发的潜在行动之间的关系。
通过定义和认真监控机器学习特定SLO,团队可以主动管理其生产模型的健康状况和效果,从被动式问题解决转向更具原则性的MLOps可靠性方法。这些目标作为一份约定,设定明确的模型性能预期,并引导维护、再训练和事件响应的决策。