数据科学

监控生产中的机器学习模型指南

机器学习 模型越来越多地用于做出重要的现实决策,从识别欺诈行为到在汽车中应用自动刹车。

一旦将模型部署到生产中,机器学习从业者的工作就远远没有结束。您必须监控您的模型,以确保它们在面对真实世界活动时继续按预期执行。然而,像使用传统软件那样监控机器学习系统是不够的。

那么,如何有效地监控生产中的机器学习模型?需要监控哪些具体指标?哪些工具最有效?这篇文章将回答机器学习从业者的这些关键问题。

监控机器学习模型的重要性

在机器学习的上下文中,监控是指跟踪已部署模型的行为以分析性能的过程。部署后监控机器学习模型至关重要,因为模型在生产中可能会损坏和降级。部署不是一次性的行动,你会做而忘记。

为了确定在生产中更新模型的正确时间,必须有一个实时视图,使利益相关者能够不断评估模型在实时环境中的性能。这有助于确保模型按预期运行。需要尽可能多地了解已部署的模型,以便在问题和源造成负面业务影响之前发现它们。

提高知名度听起来很简单,但事实并非如此。监控机器学习模型是一项艰巨的任务。下一节将更深入地探讨监控机器学习模型的挑战。

为什么机器学习系统监控很难?

软件开发人员多年来一直在将传统软件投入生产,因此,评估使用机器学习模型进行同样操作的难度是一个很好的起点。

必须承认,在生产中讨论机器学习模型类似于讨论机器学习系统。机器学习系统具有传统软件的挑战和机器学习特有的几个挑战。要了解有关这些挑战的更多信息,请参阅 Hidden Technical Debt in Machine Learning Systems

机器学习系统行为

在构建机器学习系统时,从业者主要热衷于跟踪系统的行为。三个组件决定系统的行为:

  1. 数据(特定于 ML ) :机器学习系统的行为取决于模型所基于的数据集,以及在生产过程中流入系统的数据。
  2. 模型(特定于 ML ) :该模型是基于数据训练的机器学习算法的输出。它代表了算法学习到的内容。最好将模型视为一个管道,因为它通常由协调数据流入模型和从模型输出的所有步骤组成。
  3. The code :需要代码来构建机器学习管道并定义模型配置以训练、测试和评估模型。

正如 Christopher Samiullah 在 Deployment of Machine Learning Models 中所说,“如果没有理解和跟踪这些数据(以及模型)变化的方法,你就无法理解你的系统。”

代码、模型和数据中指定的规则会影响整个系统的行为。回想一下,数据来自一个永不停息的来源——“真实世界”——它是不断变化的,因此它是不可预测的。

机器学习系统面临的挑战

在构建机器学习系统时,这并不像说“我们有两个额外的维度”那么简单。由于以下挑战,代码和配置给机器学习系统带来了更多的复杂性和敏感性:

Entanglements :输入数据分布的任何变化都会影响目标函数的近似值,这可能会影响模型所做的预测。换句话说,改变任何事情都会改变一切。因此,必须仔细测试任何功能工程和选择代码。

Configurations :模型配置中的缺陷(例如,超参数、版本和功能)可以从根本上改变系统的行为,传统的软件测试无法捕捉到。换句话说,机器学习系统可以预测不正确但有效的输出,而不会引发异常。

与传统软件系统相比,这些因素使监控机器学习系统变得极其困难,而传统软件系统受代码中规定的规则控制。另一个需要考虑的因素是参与开发机器学习系统的利益相关者的数量。这被称为 responsibility challenge

责任挑战

通常,让多个利益相关者参与一个项目可能会非常有益。每个利益相关者都可以根据他们的专业知识深入了解需求和约束,使团队能够减少和发现项目风险。

然而,基于业务领域和职责,每个利益相关者可能对“监控”的含义有完全不同的理解。数据科学家和工程师之间的区别就是一个例子。

数据科学家的观点

数据科学家最关心的是实现功能目标,例如输入数据、模型的变化以及模型所做的预测。监控功能目标需要对传递到模型中的数据、模型本身的度量以及对模型所做预测的了解。

数据科学家可能更关心模型在生产环境中的准确性。为了获得这样的洞察力,最好能实时获得真正的标签,这只是有时的情况。因此,数据科学家经常使用代理值来获得其模型的可见性。

工程师的观点

另一方面,工程师通常负责实现操作目标,以确保机器学习系统的资源是健康的。这需要监控传统软件应用程序度量,这在传统软件开发中是典型的。示例包括:

  • 延迟
  • IO /内存/磁盘使用
  • 系统可靠性(正常运行时间)
  • 可听性

尽管利益相关者的目标和责任存在差异,但对机器学习系统的充分监控考虑到了这两个角度。然而,仍然需要全方位的良好理解。为了实现这一成就,所有利益相关者聚集在一起,确保条款明确,以便所有团队成员使用相同的语言仍然至关重要。

生产中需要监控哪些内容?

监测分为两个级别:功能性和操作性。

功能级别监控

在功能层面,数据科学家(或/和机器学习工程师)将监控三个不同的类别:输入数据、模型和输出预测。监测每一个类别可以让数据科学家更好地了解模型的性能。

输入数据

模型取决于作为输入接收的数据。如果模型接收到它不期望的输入,则模型可能会崩溃。监控输入数据是检测功能性能问题并在其影响机器学习系统性能之前消除这些问题的第一步。从输入数据角度监控的项目包括:

Data quality :为了维护数据完整性,您必须在生产数据看到机器学习模型之前验证它,使用基于数据财产的度量。换句话说,确保数据类型是等效的。有几个因素可能会影响您的数据完整性;例如源数据模式的改变或数据丢失。这些问题改变了数据管道,使得模型不再接收预期的输入。

Data drift :可以监测训练数据和生产数据之间分布的变化,以检查漂移:这是通过检测特征值的统计财产随时间的变化来实现的。数据来自一个永不停止、不断变化的来源,称为真实世界。随着人们的行为发生变化,您正在解决的业务案例周围的环境和环境可能会发生变化。此时,是时候更新机器学习模型了。

模型

机器学习系统的核心是机器学习模型。为了使系统驱动业务价值,模型必须保持高于阈值的性能水平。为了实现这一目标,必须监控可能影响模型性能的各个方面,例如模型漂移和版本。

Model drift :模型漂移是由于真实环境的变化而导致的模型预测能力的衰减。应使用统计测试来检测漂移,并监测预测性能,以评估模型随时间的性能。

Versions :始终确保正确的型号在生产中运行。应跟踪版本历史和预测。

输出

要了解模型的性能,还必须了解模型在生产环境中输出的预测。机器学习模型被投入生产以解决问题。因此,监控模型的输出是确保其根据用作 KPI 的指标执行的一种有价值的方法。例如:

Ground truth: 对于某些问题,您可以获取地面真相标签。例如,如果使用一个模型向用户推荐个性化广告(您预测用户是否会点击该广告),并且用户点击以暗示该广告是相关的,那么您几乎可以立即获得基本事实。在这种情况下,可以根据实际解决方案评估模型预测的聚合,以确定模型的性能。然而,在大多数机器学习用例中,根据地面真相标签评估模型预测是困难的,需要一种替代方法。

Prediction drift: 当无法获取地面真相标签时,必须监控预测。如果预测的分布发生了剧烈变化,那么就有可能出了问题。例如,如果你正在使用一个模型来预测信用卡欺诈交易,而被认定为欺诈的交易比例突然上升,那么情况就发生了变化。也许输入数据结构已经改变,系统中的其他一些微服务行为不当,或者世界上有更多的欺诈行为。

操作级别监控

在操作层面,操作工程师关心的是确保机器学习系统的资源是健康的。当资源不健康时,工程师负责采取行动。他们还将监控三个类别的机器学习应用程序:系统、管道和成本。

ML 系统性能

其思想是不断了解机器学习模型如何与整个应用程序堆栈一致。这个领域的问题将影响整个系统。能够深入了解模型性能的系统性能指标包括:

  • 内存使用
  • 延迟
  • CPU / GPU 使用

管道

应该监控两个关键管道:数据管道和模型管道。未能监控数据管道可能会引发数据质量问题,导致系统崩溃。关于模型,您希望跟踪和监视可能导致模型在生产中失败的因素,例如模型依赖关系。

成本

从数据存储到模型训练等等,机器学习涉及到财务成本。虽然机器学习系统可以为企业创造大量价值,但也有可能利用机器学习变得极其昂贵。不断监控机器学习应用程序的成本是确保成本保持的一个负责任的步骤。

例如,您可以使用 AWS 或 GCP 等云供应商设置预算,因为他们的服务跟踪您的账单和支出。当预算达到上限时,云提供商将发送警报通知团队。

如果您在本地托管机器学习应用程序,监控系统使用情况和成本可以更好地了解应用程序的哪个组件成本最高,以及您是否可以做出某些妥协以降低成本。

用于监控机器学习模型的工具

现在开始机器学习模型监控比以往任何时候都容易。一些企业已经开发了一些工具来简化生产中监控机器学习系统的过程。无需重新安装车轮。

用于监视系统的工具取决于要监视的特定项目。在最终决定之前,值得浏览一下,以找到最适合您的产品。下面列出了一些您可能希望开始的解决方案。

普罗米修斯和格拉法纳

Prometheus 是一个用于事件监视和警报的开源系统。它的工作原理是从插入指令的作业中抓取实时度量,并将抓取的样本作为时间序列数据存储在本地。

Grafana 是一个开源分析和交互式可视化 web 应用程序,可与 Prometheus 合作使用,以可视化收集的数据。

简单地说,您可以结合普罗米修斯和 Grafana 的力量来创建仪表板,使您能够跟踪生产中的机器学习系统。您还可以使用这些仪表板设置警报,在发生意外事件时通知您。

如果您使用 NVIDIA Triton Inference Server 在生产中部署、运行和扩展 AI 模型,您可以利用 NVIDIA Triton 以 Prometheus 格式导出的运营指标。您可以使用 NVIDIA Triton 从运行推断的系统中收集 GPU / CPU 使用、内存和延迟指标。这些度量对于扩展和负载平衡请求非常有用,从而满足应用程序 SLA 。

了解有关 PrometheusGrafana 的更多信息。

显然人工智能

显然,人工智能是一种开源的 Python 工具,用于在生产环境中分析、监控和调试机器学习模型。联合创始人 Emeli Dral 和 Elena Samuylova 撰写了有关模型监控的信息性文章,包括:

要了解更多信息,请参阅 Evidently AI documentation

Amazon SageMaker 型号监视器

一眼望去, Amazon SageMaker 模型监视器可以提醒您模型质量的任何偏差,以便采取纠正措施,如再培训、审计上游系统或修复质量问题。开发人员可以利用无代码监控功能或通过编码进行自定义分析。有关详细信息,请参阅 Amazon SageMaker documentation

机器学习模型监控的最佳实践

部署模型只是您作为机器学习实践者职责的一部分。您工作的其他部分涉及确保模型在实时环境中按预期运行,这需要监控机器学习系统。监控机器学习时需要遵循的一些常规最佳实践包括:

部署阶段未启动监控

构建机器学习模型通常需要多次迭代才能获得可接受的设计。因此,跟踪和监控度量和日志是模型开发的重要组成部分,一旦开始实验,就应该强制执行。

严重退化是一个危险信号,需要调查

模型的性能应该会降低。然而,突然的大幅度下降是令人担忧的原因,应立即进行调查。

创建故障排除框架

应鼓励团队记录其故障排除框架。从警报到故障排除的系统对模型维护非常有效。

创建行动计划

在不可避免的情况下,你的机器学习系统出现了中断,应该有一个框架来应对。一旦团队收到问题警报,框架应将团队从警报转移到行动,然后最终调试问题,以确保模型得到有效维护。

当地面真相不可用时使用代理

不断了解机器学习模型在生产环境中的性能至关重要。如果无法根据实际情况评估模型,那么预测漂移等代理就足够了。

我还有漏掉什么吗?你可在 NVIDIA Developer Forums 中留下评论。

接下来是什么?

监控机器学习系统是机器学习生命周期中一个困难但重要的部分。在生产中,模型的性能有时与预期不同。因此,需要进行适当的监测,以在问题可能造成重大损害之前发现问题。

一个薄弱的监控系统可能会导致 1 )模型在生产过程中性能不佳而没有监督, 2 )企业拥有的模型不再提供商业价值,或 3 )未发现的错误随着时间的推移而爆发。

如果您有生产中的现有机器学习模型,请提出以下问题:

  • 正在监控哪些指标?
  • 监控的指标是否可以作为成功的良好指标?
  • 多久才能在模型中检测到错误?
  • 开发环境和生产环境中数据之间的差异是否会被发现?

你觉得这篇文章有用吗?在评论中留下您的反馈。

 

Tags