
实现高效MLOps的六个关键原则(下)
5 监控
监控对于任何达到生产环境的机器学习(ML)系统都是至关重要的。传统软件系统是基于规则和确定性的,因此一旦构建完成,它将始终按照预定义的方式运行。不幸的是,机器学习系统并非如此。
在实现机器学习模型时,我们并没有明确描述它们应该如何工作。我们使用数据来编译概率解决方案,这意味着我们的机器学习模型将不断暴露于一定程度的性能退化。这是因为生产环境中的数据可能与模型训练时使用的数据不同,因此模型自然无法处理这些新场景。
我们不应该试图避免这些情况,而应该制定一个策略,以便及时发现并修复这些问题。监控可以帮助我们检测模型的性能下降,并触发警报,以提示我们需要手动、自动或两者结合重新训练模型。
为什么要重新训练模型?
由于训练数据集的漂移以及生产环境中输入数据的变化,模型的性能可能会下降。唯一的解决方案是在捕获生产环境中新场景的数据集上调整或重新训练模型。
由于训练是一项代价高昂的操作,您可以采取一些策略来避免重新训练。在此之前,让我们快速了解可以监控哪些内容,以评估机器学习系统的健康状况。
日志
日志记录的方法很简单,即捕获所有相关信息,例如:
- 记录系统配置。
- 记录查询、结果和任何中间输出。
- 记录组件的启动、结束和崩溃等事件。
- 确保每个日志条目都有明确的标记,以便识别其在系统中的来源。
虽然捕获所有活动会迅速增加日志量,但您可以利用许多工具进行自动日志分析和异常检测,这些工具利用人工智能技术有效扫描所有日志,帮助您更好地管理日志。
指标
要量化应用程序的健康状况,必须定义一组指标。每个指标度量应用程序的不同方面,例如基础设施、数据和模型。
系统指标
系统指标基于监控服务级别指标(如延迟、吞吐量和错误率)以及基础架构运行状况(如 CPU/GPU 和内存)。这些指标在传统软件和机器学习中都很常见,因为它们对于理解基础设施是否正常运作,以及系统是否按预期工作以提供良好的用户体验至关重要。
模型指标
仅监控系统的健康状况不足以识别模型中更深层次的问题。因此,转向关注模型性能的下一个层面是至关重要的。这包括定量评估指标,如准确性、精确度和 F1 分数,以及受模型影响的基本业务指标,例如投资回报率(ROI)和点击率。
在整个部署期间分析累积性能指标通常是无效的。相反,根据与应用程序相关的时间间隔(例如每小时)评估性能是必要的。因此,在实践中,您需要打开一个输入窗口,并在窗口级别计算和聚合度量。这些滑动指标可以更清晰地反映系统的健康状况,使我们能够更迅速地发现问题,而不会被历史数据所掩盖。
我们可能并不总是能够获得真实的结果来评估模型在生产数据上的表现。这在存在明显延迟或实际数据需要标注时尤其具有挑战性。
为了解决这个问题,我们可以开发一个近似信号来估计模型的性能,或者标注一小部分实时数据集以评估性能。在谈论机器学习监控时,近似信号也被称为代理度量,通常通过漂移检测方法来实现,这将在下一节中讨论。
漂移
漂移是一种代理指标,可以帮助我们及时发现生产模式的潜在问题,而无需依赖任何基础事实或标签。表1 显示了三种漂移类型。

监测与可观察性
监测涉及数据的收集和可视化,而可观察性通过检查系统的输入和输出来提供对其健康状况的洞察。例如,监测允许我们跟踪特定的度量来检测潜在问题。
另一方面,如果系统产生关于其内部状态的有意义数据,则被认为是可观察的,这对于诊断根本原因至关重要。
警报
一旦我们定义了监控指标,我们就需要一种获取通知的方法。在以下场景中,最常见的方式是发送警报:
- 当度量通过静态阈值时。例如,当分类器的准确率低于 0.8 时发送警报。
- 调整检查漂移的统计检验的 p 值。p 值越低,表示生产分布与参考分布之间差异的置信度越高。
这些阈值和 p 值取决于您的应用程序。然而,找到正确的值是非常重要的,因为您不想让警报系统充斥着假阳性。如果发生这种情况,您的警报系统将不值得信赖,您可能会对系统中的问题反应过度或根本不作出反应。
向利益相关者发送警报的一些常见渠道包括 Slack、Discord、电子邮件和 PagerDuty。系统的涉众可以是核心工程师、管理人员或任何对系统感兴趣的人。
根据警报的性质,您必须做出不同的反应。但在采取任何行动之前,您应该能够检查警报并了解导致其触发的原因。您应该查看触发警报的度量、值、发生警报的时间,以及对您的应用程序有意义的任何其他信息。
当模型的性能下降时,第一个冲动是重新训练它。但这是一项代价高昂的操作。因此,您首先需要检查数据的有效性、模型的稳定性以及数据点是否是孤立的异常值。如果这些条件不成立,您应该触发训练管道,并在新的移动数据集上训练模型以解决漂移问题。
6 再现性
可再现性意味着在给定相同输入的情况下,机器学习系统中的每个过程都应该产生相同的结果。这主要包括两个方面。
第一个方面是您应该清楚输入是什么。例如,在训练模型时,可能会使用许多超参数。因此,您需要一种方法来始终跟踪用于生成新资产的资产,例如用于训练模型的数据集版本和配置。
第二个方面与机器学习过程中的不确定性有关。例如,当从头开始训练一个模型时,所有的权重最初都是随机初始化的。因此,即使使用相同的数据集和超参数,最终得到的模型可能具有不同的性能。这个问题可以通过在生成随机数之前使用随机种子来解决,因为在现实中,我们不能完全以数字方式创建随机性,只能生成伪随机数。
通过提供随机种子,我们确保始终产生相同的伪随机数。这同样适用于特征工程步骤,如果我们用随机值计算特征或随机删除数据或标签。
根据一般经验法则,尽量让您的过程尽可能具有确定性,并且在必须引入随机性的情况下,始终提供一个可控的随机种子。
结论
本文探讨了作为 MLOps 核心的六个原则,这些原则应在任何生产级 AI 系统中实施,而不论你使用何种工具。
感谢阅读!你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/。
原文作者:Paul Iusztin
翻译作者:过儿
美工编辑:过儿
校对审稿:Jason
原文链接:https://medium.com/decodingml/the-6-mlops-foundational-principles-ac8518506dee