机器学习模型监控工具:Evidently 与 Seldon Alibi 对比

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 每当我们训练和部署机器学习模型时,我们都希望确保该模型在生产中表现良好。模型需要监控,因为现实世界中发生了我们在训练期间无法解释的事情。最明显的例子是当现实世界的数据偏离训练数据时,或者当我们遇到异常值时。我们使用监控来做出决策,例如:何时重新训练或何时获取新数据。

介绍

每当我们训练和部署机器学习模型时,我们都希望确保该模型在生产中表现良好。

模型需要监控,因为现实世界中发生了我们在训练期间无法解释的事情。最明显的例子是当现实世界的数据偏离训练数据时,或者当我们遇到异常值时。我们使用监控来做出决策,例如:何时重新训练或何时获取新数据。

有一些具体的事情需要监控

  • 数据漂移:现实世界中的数据开始与训练数据不同,表明需要用新数据重新训练。
  • 异常值(Outliers):超出我们预期范围的输入。结果,该模型可能会产生无意义的输出。
  • 偏见(Bias):模型以我们在训练期间没有意识到的方式偏向某些预测。我们可能需要用更好的数据重新训练。

在高层次上,有两种模型监控:

  • 离线分析:从生产模型中收集输入和输出的快照并执行一次性分析。这是一个手动过程,但如果我们需要回答关于模型的一次性问题(例如:它是否表现出特定的偏见),它可能会很有用。
  • 实时监控:我们有一个监控服务,可以从模型中收集实时数据,实时进行分析,并在出现特定模型性能问题时提醒我们。

在这篇博文中,我们将主要关注实时监控,比较 Evidently 和 Seldon 的 Alibi Detect 两种工具所采用的方法。


比较标准

我们使用一些东西来评估和比较这些工具:

  • 兼容性:哪些模型服务工具,以及它将与哪些 ML 框架一起使用?
  • 集成:它可以集成到现有的应用程序监控基础设施中吗?
  • 能力:模型监控的哪些方面可以很好地处理?支持哪些数据类型,哪些统计检验可用(在这里,统计测试是指用于评估模型监控系统中的漂移或偏差等事物的算法。有很多这样的算法,但在本文中,我们不会深入研究他们的详细信息)。


Evidently

Evidently是一个在 Apache 2.0 许可下可用的 Python 库。这是一个致力于简化模型监控的工具。Evidently与平台无关,因此它适用于任何模型服务设置和任何机器学习框架。

开箱即用,Evidently 带有一些基本仪表板,告诉我们:

  • 输入数据漂移,
  • 模型输出(又名目标漂移),
  • 模型和数据质量。

这些仪表板使您可以轻松地立即开始使用 Evidently,但对于强大的生产监控,我们可以利用另一个功能,即与 Prometheus 和 Grafana 的集成。 Prometheus 和 Grafana 的结合已经是一种广泛采用的应用程序监控和仪表板解决方案,通过将模型指标与应用程序指标相结合,您可以构建仪表板,实时了解整个软件堆栈。


离线分析

使用 Evidently 的最简单方法。 您将需要一些参考数据,这是用于训练模型的数据样本,以及您从生产模型中收集的一些当前数据。 例如,我们可以在 Jupyter Notebook 中执行数据漂移分析:

from evidently.dashboard import Dashboard 
from evidently.dashboard.tabs import DataDriftTab 
drift_dashboard = Dashboard(tabs=[DataDriftTab(verbose_level=1)]) 
drift_dashboard.calculate(reference_data, current_data, column_mapping=None) 
drift_dashboard.show()
复制代码


这会生成一个如下所示的仪表板:

网络异常,图片无法展示
|


数据漂移仪表板:

  • 显示参考数据和真实数据的分布,
  • 告诉我们参考数据和真实世界数据之间的相似性,
  • 通知我们是否检测到漂移。

为了确定数据是否存在偏差,Evidently 使用统计测试比较了参考分布和实际分布。 许多数据科学家可能熟悉这些测试:为了检测漂移,一种名为 Kolmogorov-Smirnov 的测试用于数值特征,而卡方测试用于分类特征。 值得注意的是,这些测试适用于表格数据,但不适用于其他类型的数据,如图像

尽管启动和运行它很容易,但离线分析对于生产监控并不是很有用。 为此,我们需要实时。


实时监控

Evidently 已经为 Github 上的实时监控提供了一个示例设置。本质上,它的工作方式是你有一个监控服务,它位于你部署的模型旁边。监控服务收集模型的输入和输出,并计算漂移等指标(使用可用于离线分析的相同统计测试)。

提供的示例包括:

  • 用作监控服务的 Flask 应用程序。
  • 监控配置文件,用于定义要执行的监控类型以及感兴趣的特征。
  • Prometheus 和 Grafana 的配置。
  • 将所有这些联系在一起的 docker-compose 配置。

通常,您需要为每个模型部署一个监控服务。使用提供的示例,我们能够为 Data Drift 创建一个简单的监控服务,只需要对代码和配置进行少量修改。

最后,提供的示例演示了如何将 Evidently 与 Prometheus 和 Grafana 一起使用。正如我们之前提到的,这是一个非常强大的功能,因为它意味着您可以将模型指标与软件堆栈中其他组件的应用程序指标结合起来,并构建统一的仪表板。

下面显示了一个简单的例子:

网络异常,图片无法展示
|


Alibi Detect

Alibi Detect 是由 Seldon 开发的 Python 库,可在 Apache 2.0 许可下使用。该库旨在成为“Python 中异常值、对抗性和漂移检测的首选库”。

Alibi 是围绕称为检测器(detectors)的东西构建的。检测器解决了一种特定类型的模型监控用例。这些类似于 Evidently 的监控服务理念。 Alibi 包括许多预制检测器:

  • 异常值检测器,
  • 漂移探测器,
  • 对抗检测器。

这些都适用于各种数据类型:

  • 表格(具有数字和分类特征),
  • 图片,
  • 时间序列,
  • 文本,
  • 图表。

与 Evidently 相比,Alibi 提供了更丰富的数据类型和统计测试。但是,重要的是要知道它与平台无关。 Alibi 旨在与 Seldon Core 一起使用。相比之下,Evidently 的目标是在任何地方工作。


离线分析

与 Evidently 类似,Alibi 可以直接用于 Python 脚本或 notebook 中进行离线分析。用法和功能看起来与 Evidently 的非常相似,因此我们没有在此处包含代码示例。

接下来开始实时监控!

实时监控

实时监控是 Alibi Detect 真正大放异彩的地方。实施成熟且相对容易设置。但是,由于它与 Seldon Core 紧密相关,因此只有在您还使用 Seldon 进行模型服务时才使用 Alibi。

如果您不熟悉它,请快速解释一下 Seldon Core:它是一个构建在 Kubernetes 之上的模型服务框架。 Seldon 使部署模型变得非常容易; Alibi 增加的是在模型旁边部署检测器的能力。检测器就像 Evidently 的监控服务一样,它观察模型输入和输出,并计算与模型性能相关的指标。

与 Evidently 不同的是,Alibi 带有一组预训练的检测器,涵盖常见的监控任务。您可以使用这些,也可以自己构建,具体取决于您的需要。


结论

这两种工具都在开发中,我们希望在未来看到很多新功能。

的确,Alibi 在功能方面比 Evidently 更进一步。但 Evidently 旨在提供一种可在任何平台上运行的可靠监控方法,这是一个更雄心勃勃的目标。我们认为 Evidently 会在功能方面迅速赶上。

根据任务,我们可以就哪种工具更合适提供一些建议。

对于离线分析:

  • 如果您还没有将 Seldon 用于其他事情,那么 Alibi 的基础设施开销很难证明离线分析是合理的。
  • 如果您想要仅包含几行代码的特征丰富的报告,并且您使用数字或分类表格数据,那么Evidently可以满足您的需求。
  • 如果您的数据不是表格的,或者您需要使用更广泛的统计测试,还有其他选择,但您可以考虑在 Evidently 中实现您需要的内容并成为贡献者。

对于实时监控:

  • Alibi Detect 与 Seldon Core 结合使用效果最佳。如果您已经使用 Seldon Core,这将是一个不错的选择。否则,它会带来大量的基础架构开销。
  • 如果您有非表格数据、需要异常值检测或某些 Evidently 中不可用的统计测试,Alibi Detect 也是一个更好的选择。我们预计 Evidently 会在这些方面迅速赶上。
  • Evidently,这是一个灵活的通用解决方案,适用于任何地方,使其成为 Seldon 生态系统之外的全面选择。


相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
29天前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
14天前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
1月前
|
机器学习/深度学习 PyTorch API
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
Transformer架构自2017年被Vaswani等人提出以来,凭借其核心的注意力机制,已成为AI领域的重大突破。该机制允许模型根据任务需求灵活聚焦于输入的不同部分,极大地增强了对复杂语言和结构的理解能力。起初主要应用于自然语言处理,Transformer迅速扩展至语音识别、计算机视觉等多领域,展现出强大的跨学科应用潜力。然而,随着模型规模的增长,注意力层的高计算复杂度成为发展瓶颈。为此,本文探讨了在PyTorch生态系统中优化注意力层的各种技术,
65 6
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
|
22天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
41 12
|
29天前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
51 8
|
29天前
|
机器学习/深度学习 Python
机器学习中模型选择和优化的关键技术——交叉验证与网格搜索
本文深入探讨了机器学习中模型选择和优化的关键技术——交叉验证与网格搜索。介绍了K折交叉验证、留一交叉验证等方法,以及网格搜索的原理和步骤,展示了如何结合两者在Python中实现模型参数的优化,并强调了使用时需注意的计算成本、过拟合风险等问题。
51 6
|
1月前
|
机器学习/深度学习 数据采集 算法
从零到一:构建高效机器学习模型的旅程####
在探索技术深度与广度的征途中,我深刻体会到技术创新既在于理论的飞跃,更在于实践的积累。本文将通过一个具体案例,分享我在构建高效机器学习模型过程中的实战经验,包括数据预处理、特征工程、模型选择与优化等关键环节,旨在为读者提供一个从零开始构建并优化机器学习模型的实用指南。 ####
|
1月前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。
|
1月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
1月前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?

热门文章

最新文章