使用 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
相关文章
|
存储 缓存 数据可视化
(七)解析Streamlit的数据元素:探索st.dataframe、st.data_editor、st.column_config、st.table、st.metric和st.json的神奇之处(上)
(七)解析Streamlit的数据元素:探索st.dataframe、st.data_editor、st.column_config、st.table、st.metric和st.json的神奇之处
7643 0
|
机器学习/深度学习 搜索推荐 算法
推荐系统的算法与实现:深入解析与实践
【6月更文挑战第14天】本文深入探讨了推荐系统的原理与实现,包括用户和项目建模、协同过滤、内容过滤及混合推荐算法。通过收集用户行为数据,系统预测用户兴趣,提供个性化推荐。实践中,涉及数据处理、建模、算法选择及结果优化。随着技术发展,推荐系统将持续改进,提升性能和用户体验。
2195 3
|
机器学习/深度学习 测试技术 PyTorch
深度学习之测量GPU性能的方式
在深度学习中,测量GPU性能是一个多方面的任务,涉及运行时间、吞吐量、GPU利用率、内存使用情况、计算能力、端到端性能测试、显存带宽、框架自带性能工具和基准测试工具等多种方法。通过综合使用这些方法,可以全面评估和优化GPU的性能,提升深度学习任务的效率和效果。
1467 5
|
传感器 监控 物联网
智慧家居环境监测与控制系统研发与应用的目标分析
- **背景**:随着物联网技术的发展和智能家居市场的快速增长,人们对居住环境的舒适性、安全性及能源使用效率的要求日益提高。 - **目的**:通过研发和应用智慧家居环境监测与控制系统,实现住宅环境中温度、湿度、空气质量等关键参数的有效管理和自动化调节。
903 21
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
1022 1
|
机器学习/深度学习 存储 自然语言处理
如何微调(Fine-tuning)大语言模型?
本文介绍了微调的基本概念,以及如何对语言模型进行微调。
2627 16
|
Kubernetes 安全 网络协议
操作系统的未来之路:探索微内核架构与分布式系统
随着计算需求的不断演变和技术的快速进步,传统的宏内核操作系统正面临性能和安全性的挑战。本文旨在探讨操作系统的未来发展道路,特别是微内核架构和分布式系统在提升性能和安全性方面的潜力。通过分析微内核设计的优势、分布式系统的特性以及两者结合的可能性,文章旨在为读者提供对操作系统未来发展趋势的深入理解。
781 27
|
NoSQL 关系型数据库 MySQL
软件测试之【基于开源商城系统fecmall功能测试项目实例】
软件测试之【基于开源商城系统fecmall功能测试项目实例】
1515 0
软件测试之【基于开源商城系统fecmall功能测试项目实例】
|
监控 Ubuntu Linux
在Linux中,如何在Linux中配置高可用性(HA)?
在Linux中,如何在Linux中配置高可用性(HA)?