机器学习监控是一组用于观察生产中的 ML 模型并确保其性能可靠性的技术。 ML模型通过观察数据集中的示例进行训练,并将代表模型在训练任务中表现的好坏的错误最小化。
生产 ML 模型在对开发中的静态样例集进行训练后,对来自不断变化的世界的变化数据进行推理。 开发中的静态训练数据与生产中的动态数据之间的这种差异导致生产模型的性能随着时间的推移而下降。
示例:
假设您根据 COVID 之前的用户数据检测信用卡欺诈训练了模型。 在大流行病期间,信用卡使用和购买习惯会发生变化。 此类更改可能会使您的模型暴露于模型未训练的分布中的数据。 这是数据漂移的一个例子,是模型退化的几个来源之一。 如果没有 ML 监控,您的模型将输出不正确的预测而没有警告信号,从长远来看,这将对您的客户和您的组织产生负面影响。
机器学习模型监控旨在使用数据科学和统计技术来持续评估生产中机器学习模型的质量。
监控可以服务于不同的目的:
此外,一些 ML 监控平台,如 Aporia,不仅可用于跟踪和评估模型性能,还可用于审查和调试、解释模型预测并提高生产中的模型性能。
工程师监控软件是因为当今构建的系统在实际部署场景中容易受到不确定性的影响。同样,ML 模型是软件系统,但本质上,ML 模型只与我们提供给它们的数据差不多。因此,传统的软件监控技术在应用于 ML 模型时是无效的。
有效的机器学习监控系统必须检测数据的变化。未能主动查看这些更改可能会导致模型静默失败。此类故障将对最终用户的业务绩效和信誉造成重大负面影响。找出您的 ML 模型在生产中可能表现不佳的 5 个最常见原因。
模型监控可以帮助维护和改进 ML 模型在生产中的性能,确保模型按预期执行。部署的 ML 模型与现实世界进行交互。因此,模型在生产中看到的数据是不断变化的。一旦部署到生产环境中,模型的性能通常会开始下降。
监控性能下降将帮助您快速检测模型何时表现不佳。性能指标特定于模型和学习任务。例如,准确率、精确度和 F1 分数将用于分类任务,而均方根误差将用于预测任务。除了观察真实世界数据的性能指标外,数据科学团队还可以对输入数据进行检查,以进一步了解性能下降。
此外,测量模型漂移是 ML 监控系统的重要组成部分。模型输入、输出和实际值会随时间发生漂移,通过分布变化来衡量。检查您的模型是否存在偏差,以确定它们是否过时、是否存在数据质量问题,或者它们是否包含对抗性输入。您可以通过使用 ML 监控检测漂移来更好地了解如何解决这些问题。
全面的模型监控解决方案应包括:
检查输入数据会建立一个简短的反馈循环,以快速检测生产模型何时开始表现不佳。
除了性能下降之外,生产模型还可能由于数据偏差或异常而表现不佳。
检测模型漂移的一个明显方法是通过 ML 监控技术和 Aporia 等解决方案,它确保模型性能不会下降超过某个点。
由于数据漂移和概念漂移是模型漂移的主要来源,因此需要具备检测数据和概念漂移的能力。
数据漂移是由于输入数据的变化而发生的。因此,要检测数据漂移,您必须在生产中观察模型的输入数据,并将其与训练数据进行比较。注意到生产输入数据和训练数据的格式或分布不同,这表明您正在经历数据漂移。例如,在数据格式发生变化的情况下,假设您训练了一个用于房价预测的模型。在生产中,确保输入矩阵与您在训练期间使用的数据具有相同的列。输入数据相对于训练数据的分布变化需要统计技术来检测。
以下测试可用于检测输入数据分布的变化
您可以通过检测给定输入的预测概率变化来检测概念漂移。
在给定生产输入的情况下检测模型输出的变化可能表明您未操作的分析级别的变化。
例如,如果您的房价分类模型没有考虑通货膨胀,您的模型将开始低估房价。 您还可以通过 ML 监控技术(例如:性能监控)检测概念漂移。 观察模型准确性或分类置信度的变化可能表明概念漂移。
您可以通过 ML 模型监控来防止概念漂移。 ML 监控将揭示模型性能的下降,这可能表明概念漂移,从而促使 ML 开发人员更新模型。
除了这种基于观察的预防方法外,您还可以利用基于时间的方法,其中, ML 模型在给定退化时间范围内定期重新训练。 例如,如果模型的性能每四个月变得不可接受,则每三个月重新训练一次。
最后,您可以通过在线学习防止概念漂移。 在在线学习中,您的模型将在每次有新数据可用时进行训练,而不是等待积累大数据集,然后重新训练模型。
性能监控可帮助我们检测生产 ML 模型表现不佳并了解其表现不佳的原因。监控 ML 性能通常包括监控模型活动、指标变化、模型陈旧(或新鲜)和性能下降。通过 ML 性能监控获得的洞悉将建议进行更改以提高性能,例如:超参数调优、迁移学习、模型再训练、开发新模型等。
监控性能取决于模型的任务。图像分类模型将使用准确性作为性能指标,但均方误差 (MSE) 更适合回归模型。重要的是要了解性能不佳,这并不意味着模型性能正在下降。例如,当使用 MSE 时,我们可以预期对异常值的敏感性会降低模型在给定批次上的性能。然而,观察到这种退化并不表明模型的性能越来越差。它只是在输入数据中有一个离群值,同时使用MSE作为度量的一个制品。评估输入数据是一种很好的 ML 性能监控实践,并将揭示此类性能下降的实例。
在监控 ML 模型的性能时,我们需要清楚地定义什么是不良性能。这通常意味着将准确度分数或错误指定为预期值,并观察随时间推移与预期性能的任何偏差。在实践中,数据科学家明白模型在现实世界数据上的表现可能不如开发期间使用的测试数据。此外,现实世界的数据很可能会随着时间而变化。由于这些原因,一旦部署模型,我们可以预期并容忍一定程度的性能下降。为此,我们对模型的预期性能使用上限和下限。数据科学团队应与主题专家合作,仔细选择定义预期性能的参数。
根据用例,性能衰减会产生非常不同的后果。因此,可接受的性能衰减水平取决于模型的具体应用场景。例如,我们可以容忍动物声音分类应用程序的 3% 准确度下降,但 3% 的准确度下降对于脑肿瘤检测系统来说是不可接受的。
ML 性能监控是一种有价值的工具,可以检测生产模型何时表现不佳以及我们可以做些什么来改进。以下几点对于要修复表现不佳的模型中的问题非常有帮助:
将数据预处理和 ML 模型放在不同的模块中。当预处理流水线的更改足够时,将数据预处理和 ML 模型作为单独的模块可以帮助您更有效地修复退化模型。假设您构建了一个模型,该模型对美国邮局的邮件执行手写分类。在生产中,邮局决定使用低强度灯泡以节省能源。您的模型现在在更暗的图像上执行。在这种情况下,改变数据预处理模块以增加像素强度和增强边界就足以提高模型性能。与重新训练模型相比,它也大大降低了成本和耗时。
使用基线(baseline)。基线模型是一种更简单、更易解释的模型,可以得到很好的结果。您使用基线模型作为大型花式生产模型的健全性检查。例如,时间序列数据的 LSTM 的基线可以是逻辑回归模型。观察到生产模型的性能下降而基线模型具有良好的性能可能表明您的生产模型在训练数据上过拟合。在这种情况下,对正则化超参数的调整将提高模型性能。如果没有基线模型,您可能会得出结论,该模型由于数据或概念漂移而表现不佳,并重新训练或构建新模型。
选择易于重新训练的模型架构。神经网络是强大的 ML 算法,因为它们能够逼近任何复杂的函数。此外,它们特别适合生产,因为它只能训练神经网络的一部分。例如,遇到来自新类别的图像的图像分类模型不需要完整的端到端再训练。相反,我们可以迁移学习(仅重新训练网络的分类部分),使用额外的类并重新部署。
为了从监控模型性能中获得进一步的洞察力,可视化与训练数据相关的生产输入数据并检测异常是很有用的,如“如何监控机器学习?”一节中所述。
即使概念漂移和数据漂移得到控制,随着时间的推移,ML 模型的性能仍然可能会下降。数据科学家需要不断地在新的和更新的数据上训练 ML 模型来对抗这种现象(导致 ML 模型的性能再次下降),除非模型性能得到定期改进。
以下是一些可用于提高模型性能的技术:
模型管理是 MLOps 的一个子集,专注于实验跟踪、模型版本控制、部署和监控。在开发 ML 模型时,数据科学家通常会进行多次实验以找到最优模型。这些实验包括数据预处理、超参数调优和模型架构本身的变化。测试的目的是为特定用例找到最佳模型。在未来对次优配置进行实验之前,数据科学家通常不知道当前配置是否最优。因此,跟踪实验对于开发 ML 模型至关重要。
在典型场景中,模型开发是一项协作工作。数据科学家经常使用同行的现有notebooks作为起点或进行实验。这种合作增加了重现预期结果的难度。
模型管理通过以下方式解决这些挑战:
版本控制系统用于 ML 模型管理,但仅提供部分必要功能。版本控制系统只跟踪系统源代码随时间的变化。一个实用的 ML 模型管理框架还必须利用以下内容:
除了在研究中开发 ML 模型之外,为生产构建机器学习系统是一门手艺。因此,生产 ML 需要自己的一套工具和实践来成功地大规模交付解决方案。从一开始就集成 ML 管理可确保您使用正确的工具来完成工作。
请参阅有关从头开始构建 ML 平台的动手教程。
部署的模型暴露在不断变化的真实数据中。因此,部署模型后的 ML 管理对于确保模型继续按预期运行至关重要。 ML 管理的一个子集是 ML 监控,这是一组用于观察生产中 ML 模型的质量和性能的工具。拥有用于已部署模型的 ML 管理框架有助于团队跟踪性能指标、监控数据变化,并获得关于模型性能不佳原因的宝贵见解,这将为改进性能提供信息。例如,可视化生产中相对于模型训练数据的输入数据可以展示数据漂移,促使您的团队根据更新的数据重新训练部署的模型。
ML 管理还可以帮助您跟踪部署中的所有模型。 ML 管理包括保存所有已部署模型的模型注册表和使用模型版本控制系统。模型注册表和版本控制与性能监控相结合,为生产中的 ML 模型提供了一个方便的全局健康仪表板。借助模型注册和版本控制系统,团队可以更好地查明哪些特性导致给定模型版本在某些设置中表现不佳。这使得改进部署的模型更加有效。
最后,在部署后管理 ML 模型将有助于跟踪生产中的退化模型,并更好地安排诊断测试,以进一步了解不良性能。
使 ML 模型可解释是关于建立理解输入数据中的特征与模型预测之间的关系的能力。 机器学习通常采用具有数千个可学习参数的架构,用于估计一个复杂的函数。 这使得很难描述模型内部发生的事情以轻松产生其输出。 这个问题为 ML 模型赢得了“黑匣子”的称号。
确保 ML 模型可解释在现实世界中很复杂,因为:
我们通过查看几个不同的方面来衡量模型的可解释性:
试图了解机器学习算法出了什么问题需要大量调查,这可能具有挑战性。 特别是,如果用于训练模型的数据中存在偏差,我们无法判断这些偏差是由于训练中的错误造成的,还是仅仅是由于数据中固有的缺陷造成的。
使 ML 模型可解释对于防止生产中的模型漂移至关重要,因为它消除了对性能不佳的模型进行故障排除所涉及的大量猜测。
有关实现可解释 AI 的实践指南,请参阅 Aporia 关于可解释性的文档。
ML 实验跟踪是保存所有实验结果和配置以实现这些实验的可重复性的过程。
ML 研究人员进行了多次实验以找到最佳模型,并且很难跟踪所有实验及其相关结果。为了找到一个最佳模型,ML 研究人员对各种数据集、超参数、模型架构、包版本等进行了多次实验。
实验跟踪很重要,因为它将帮助您和您的团队:
为了有效地跟踪 ML 实验,您需要跟踪:
ML 模型监控和 ML 实验跟踪之间的根本区别在于,模型监控主要是在模型部署到生产环境之后进行的。 相比之下,跟踪在部署之前最为相关。
一旦模型投入生产,我们就会实施 ML 监控来维护和改进模型性能。 一旦模型投入生产,我们就可以对其进行监控,以观察真实世界数据的性能指标,并在它发生时注意到性能下降。
另一方面,ML 实验跟踪涉及在 ML 系统投入生产之前将其研究和开发付诸实施。 ML 跟踪可帮助 ML 研究人员跟踪在 ML 模型开发周期中运行的所有实验的代码、环境配置、数据版本、参数和指标,以找到最佳配置。 ML 跟踪与仅进行 ML 研究而不进行部署的环境相关,例如:为了研究论文的目的。
模型注册表是生产中所有模型的存储库。它提供了一个访问所有经过训练和可用的 ML 模型的中心点。这种方法的目的是通过提供一种访问、搜索和管理每个已部署模型的统一方式来提高模型的可重用性。与 ML 相关的生态系统(例如:OpenML、ModelZoo 和 MODL-Wiki)是社区努力开发此类模型注册表的例子。
模型注册表的一个重要方面是所有模型都存储在一个中心位置,这意味着每个人都查看相同的模型。在一个项目上协作的人对每个模型都有一个引用。模型注册表绕过了本地计算机上版本略有不同的问题。
模型注册表通过以下方式使 ML 项目的协作变得更加容易: