使用 Seldon Alibi 进行模型监控

简介: 虽然 Seldon 使在生产中部署和服务模型变得容易,但一旦部署,我们如何知道该模型是否在做正确的事情?训练期间的良好表现并不一定意味着在生产运行几个月后表现良好。 现实世界中发生的事情是我们无法解释的,例如:输入数据逐渐偏离训练数据,以及异常值和偏差。

模型监控如何工作?

通常,当我们谈论模型监控时,我们对以下一项或多项感兴趣:

  • 数据漂移:现实世界中的数据开始与训练数据不同。它漂移得越远,模型就越有可能以意想不到的方式表现。
  • 异常值:超出我们预期范围的输入。在这种情况下,模型可能会产生毫无意义的输出。
  • 偏见(Bias):该模型以我们在训练期间没有预测的方式显示出对某些预测的偏见。处理偏见本身就是一个复杂的话题,但识别它是解决它的第一步。

我们可以使用这种监控来做出决策,例如:何时重新训练或获取新数据。

您可能已经熟悉在更传统的设置中进行监控,例如:Web 应用程序,其任务是捕获错误和服务器崩溃。对于模型,监控要复杂一些,这主要是因为每个模型都是不同的。因此,需要围绕我们想要使用的特定模型和训练数据构建监控系统。


Alibi Detect 简介

与 Seldon Core 一样,Alibi Detect 运行在 Kubernetes 之上。为了监控模型,您需要创建一个称为检测器的东西。每个模型都需要自己的检测器,专门为该模型部署

与模型一样,检测器在容器内运行。 Seldon 再次利用了 Kubernetes 作为容器编排引擎的优势,因此,您的检测器将以与模型相同的可靠性运行。

开箱即用的 Alibi 可以监控数据漂移异常值,这两个最常见的事情可能会影响您的模型。

它还支持所谓的对抗性检测。围绕此功能的文档有点晦涩,所以请允许我尝试一个简单的解释:假设某个怀有恶意的人试图让您的模型做一些您不打算做的事情,即试图破解您的模型。对抗性检测是一种自动发现攻击者可以利用的输入的技术,它可以帮助您避免此类攻击。因为通常很难预测模型的行为方式,所以在不使用对抗检测的情况下也很难发现安全漏洞。

Alibi 的所有文档都可以在此处获得。现在让我们看看它的实际效果。


监控模型

检测器没有什么太神秘的地方:它确实是一种特殊的模型,与任何模型一样,需要使用一些数据进行训练。 Alibi Detect 包括一个 Python 库来帮助您做到这一点,以及非常好的文档。

但通常你不需要从头开始训练检测器,因为Alibi 还附带了一堆针对各种用例的预训练检测器,这些是最简单的入门方法。为了说明这是如何工作的,让我们看一个例子,使用带有漂移检测器的图像分类器。

您可以在 Seldon 文档中找到此示例的所有代码。与其在这里重复代码,我只给你一个大纲。


部署图像分类器

我们的第一件事是部署图像分类模型。 此示例使用名为 CIFAR-10 数据集的数据集,该数据集包含 60,000 张图像,通常用于演示目的。

该模型在 Seldon 为 Tensorflow 预先构建的 Docker 镜像上运行。 为了部署它,我们首先创建一个 Kubernetes 清单(其内容在上面提到的 Seldon 文档页面上),包含所有模型的配置,然后运行:

kubectl apply -f my_config.yaml
复制代码


完成后,我们就有了一个模型并运行起来。这是一个相对简单的模型:每当您向其展示图像时,它都会以汽车、鸟、飞机、房屋等类作为响应。


部署漂移检测器

我们可以有理由相信该模型在与训练图像相似的图像上表现良好。例如,训练数据中有很多动物的图片;马、牛、羊等。如果这些照片中的大多数都是在光线充足的户外、有很多草的乡村景观中拍摄的,那么类似的照片应该不会有问题。

另一方面,在光线昏暗的游泳池里戴帽子的马可能会从模型中抛出去。虽然这样的一次性事情没什么大不了的,但如果模型看到的图像类型的平均有很大的偏差,那么我们可能会遇到麻烦。

要检测漂移,我们需要查看大量案例。 Seldon 漂移检测器的工作原理是使用指定的批量大小收集一堆观察结果。在此示例中,它被配置为使用最近的 5000 个观测值来查找漂移

要设置它,我们需要做两件事:

首先部署漂移检测器。这就像部署模型一样简单。 Alibi 附带了一个 Docker 镜像(alibi-detect-server),我们从中将检测器部署为 Seldon 上的容器。

其次,我们需要改编它,以便每次模型接收到输入时,检测器都会接收到一个事件。这就是漂移检测器能够观察模型正在做什么的方式。

值得一提的是,Seldon 本身没有流式传输事件的功能,而是依赖另一个名为 Knative 的开源项目来执行此操作。因此,要使用 Alibi,您还需要在 Seldon 实例上设置 Knative。安装 Knative 后,最后的设置是创建一个称为触发器的东西,以确保每次模型接收到推理请求时,检测器都会收到一个事件

上述所有设置步骤都包含在前面提到的 Seldon 文档页面中。


从 Alibi 中获取指标

Alibi detect 会在检测到诸如漂移或异常值之类的东西时将警报记录到其应用程序日志中,并且可以使用 kubectl logs 命令通过 Kubernetes 访问这些日志。

日志本身的用途有限。通常,您需要在此基础上构建仪表板和警报系统。例如,如果检测到模型漂移,您可能希望通过某种方式向团队发送通知。

好消息是,这些事情都可以通过标准的警报和监控工具来完成。例如,您可能会选择使用您的云提供商拥有的任何东西,例如: Google Cloud Monitoring。

然而,构建仪表板和为模型做警报是一个足够大的话题,值得单独写一篇博文,所以我们现在不会讨论所有这些内容。


Alibi 适合你吗?

首先,如果您还使用 Seldon 来服务模型,那么 Alibi 是一个自然的选择,因为这两个工具的集成度非常好。

单独使用 Alibi 通常是没有意义的,也就是说,如果你的模型使用了 Seldon 以外的东西。那是因为要使用 Alibi,无论如何您都需要设置 Kubernetes 和 Seldon,即使您不打算将其用于服务

Alibi Detect 成熟,具有广泛的功能。我们在上面的示例中只讨论了图像,但它适用于许多不同类型的数据,包括表格、图像、时间序列和文本。

大量的选择使其很容易适用于绝大多数机器学习应用程序。虽然为您选择正确的算法确实需要大量的数据科学专业知识,但 Seldon 已经仔细考虑过使其检测器的配置和重新配置变得容易,这样您就可以专注于数据科学和机器学习,而不会有太多乱七八糟的基础设施。

在本系列的下一部分中,我们将结合 Seldon 与 ZenML,并展示如何将 Seldon 部署集成到您的 ML 训练流水线中。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 人工智能 Prometheus
ML 模型监控最佳工具(上)
如果您迟早将模型部署到生产环境,那么您将开始寻找 ML 模型监控工具。 当您的 ML 模型影响业务时,您只需要了解“事物是如何工作的”。 当事物停止工作时,你真正感受到这一点的第一刻。如果没有设置模型监控,您可能不知道哪里出了问题以及从哪里开始寻找问题和解决方案。
|
存储 Shell Linux
git 大文件记录清除解决方案
git 大文件记录清除解决方案
3301 0
|
5月前
|
人工智能 前端开发 Java
“最近我给有代码洁癖的同事墙裂安利了通义灵码”
通义灵码2.5.0版本现已全面支持Qwen3,采用混合专家架构,参数量仅为DeepSeek-R1的1/3,是国内首个“混合推理模型”。它在性能评测中超越了DeepSeek-R1、OpenAI-o1等国际主流模型,并全面支持MCP能力,集成国内最大MCP中文社区。作为程序员体验后发现,通义灵码可通过简单指令生成完整项目代码,包括前后端、接口调用等,大幅降低开发门槛。文中通过两个Demo展示了其强大功能:一是聚合多平台热榜数据并推送微信通知;二是基于高德和12306 MCP生成旅游攻略HTML页面。整个过程无需手动编写代码,推荐开发者尝试。
260 47
|
5月前
|
数据采集 机器学习/深度学习 自然语言处理
NLP助力非结构化文本抽取:实体关系提取实战
本文介绍了一套基于微博热帖的中文非结构化文本分析系统,通过爬虫代理采集数据,结合NLP技术实现实体识别、关系抽取及情感分析。核心技术包括爬虫模块、请求配置、页面采集和中文NLP处理,最终将数据结构化并保存为CSV文件或生成图谱。代码示例从基础正则规则到高级深度学习模型(如BERT-BiLSTM-CRF)逐步演进,适合初学者与进阶用户调试与扩展,展现了中文NLP在实际场景中的应用价值。
294 3
NLP助力非结构化文本抽取:实体关系提取实战
|
5月前
|
存储 缓存 人工智能
《让内容“活”起来:Flutter社交应用瀑布流布局的破界实践》
瀑布流布局是社交应用中常见的展示方式,如Instagram、Pinterest和小红书等,以其自然韵律的视觉效果深受用户喜爱。在Flutter中实现这一布局需深入理解Box与Sliver体系,Viewport管理不同高度子项,确保布局和谐且富有变化。传统方案基于SliverMultiBoxAdaptor,但存在性能瓶颈;创新方案通过分页加载、懒加载优化内存管理,并结合缓存机制提升效率。未来,结合AI技术的瀑布流布局将更加智能化,为用户提供个性化社交体验。
|
9月前
|
调度
MindIE对接vLLM框架开发指南
vLLM对接MindIE,使能快速迁移到昇腾设备上,当前MindIE 1.0.0发布版本已支持多种三方框架。
|
监控 Ubuntu Linux
在Linux中,如何在Linux中配置高可用性(HA)?
在Linux中,如何在Linux中配置高可用性(HA)?
|
前端开发 小程序 测试技术
前端后端测试接口mork神器,Apifox使用一分钟入门
前端后端测试接口mork神器,Apifox使用一分钟入门
769 0
|
机器学习/深度学习 数据采集 Prometheus
机器学习模型监控工具:Evidently 与 Seldon Alibi 对比
每当我们训练和部署机器学习模型时,我们都希望确保该模型在生产中表现良好。 模型需要监控,因为现实世界中发生了我们在训练期间无法解释的事情。最明显的例子是当现实世界的数据偏离训练数据时,或者当我们遇到异常值时。我们使用监控来做出决策,例如:何时重新训练或何时获取新数据。
|
机器学习/深度学习 人工智能 监控
ML 模型监控最佳工具(下)
如果您迟早将模型部署到生产环境,那么您将开始寻找 ML 模型监控工具。 当您的 ML 模型影响业务时,您只需要了解“事物是如何工作的”。 当事物停止工作时,你真正感受到这一点的第一刻。如果没有设置模型监控,您可能不知道哪里出了问题以及从哪里开始寻找问题和解决方案。