使用 Seldon Alibi 进行模型监控

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 虽然 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 训练流水线中。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
存储 人工智能 Prometheus
ML 模型监控最佳工具(上)
如果您迟早将模型部署到生产环境,那么您将开始寻找 ML 模型监控工具。 当您的 ML 模型影响业务时,您只需要了解“事物是如何工作的”。 当事物停止工作时,你真正感受到这一点的第一刻。如果没有设置模型监控,您可能不知道哪里出了问题以及从哪里开始寻找问题和解决方案。
|
Prometheus 监控 Cloud Native
【夜莺监控】从日志中提取指标的瑞士军刀
【夜莺监控】从日志中提取指标的瑞士军刀
|
机器学习/深度学习 存储 JSON
什么是模型监控?(Valohai)
型监控是指密切跟踪机器学习模型在生产中的性能的过程。 它使您的 AI 团队能够识别和消除各种问题,包括糟糕的质量预测和糟糕的技术性能。 因此,您的机器学习模型可提供最佳性能。 有效地监控模型对于使您的机器学习服务获得成功非常重要。 它使您能够在现实世界中产生重大影响。 但是在监控模型时应该跟踪什么? 在这篇文章中,您将找到所有详细信息。
|
人工智能 文字识别 API
FastDeploy完成实时扣图模型部署
FastDeploy完成实时扣图模型部署
596 0
FastDeploy完成实时扣图模型部署
|
6月前
|
Prometheus 监控 Cloud Native
统一观测丨如何使用Prometheus 实现性能压测指标可观测
简介:本篇阐述如何使用 Prometheus 实现性能压测 Metrics 的可观测性。
212 0
|
存储 OLAP 调度
数仓模型(模型优化与指标验证)
数仓模型(模型优化与指标验证)
数仓模型(模型优化与指标验证)
|
数据采集 消息中间件 JSON
数据预处理-系统监控-本地监控介绍|学习笔记
快速学习数据预处理-系统监控-本地监控介绍
213 0
数据预处理-系统监控-本地监控介绍|学习笔记
|
数据采集 存储 JSON
数据预处理-系统监控-监控代码下|学习笔记
快速学习数据预处理-系统监控-监控代码下
数据预处理-系统监控-监控代码下|学习笔记
|
机器学习/深度学习 监控 安全
监控模型在监控模型在生产环境的性能(Arize)
随着机器学习基础设施的成熟,对模型监控的需求激增。不幸的是,这种不断增长的需求并没有形成一个万无一失的剧本,向团队解释如何来衡量模型的性能。
|
人工智能 监控 API
MLOps:模型监控
使用模型度量堆栈进行模型监视,对于将已部署的ML模型的反馈回路放回模型构建阶段至关重要,这样ML模型可以在不同的场景下不断改进自己。