模型监控如何工作?
通常,当我们谈论模型监控时,我们对以下一项或多项感兴趣:
- 数据漂移:现实世界中的数据开始与训练数据不同。它漂移得越远,模型就越有可能以意想不到的方式表现。
- 异常值:超出我们预期范围的输入。在这种情况下,模型可能会产生毫无意义的输出。
- 偏见(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 训练流水线中。