如果您迟早将模型部署到生产环境,那么您将开始寻找 ML 模型监控工具。
当您的 ML 模型影响业务时,您只需要了解“事物是如何工作的”。
当事物停止工作时,你真正感受到这一点的第一刻。如果没有设置模型监控,您可能不知道哪里出了问题以及从哪里开始寻找问题和解决方案。
人们希望你尽快解决这个问题。但在这种情况下,“事物”和“工作”是什么意思?
有趣的是,依据团队/问题/流水线/设置,人们的意思完全不同。
在 MLOps 公司工作的一个好处是,您可以与许多 ML 团队交谈并获得第一手信息。所以事实证明,当人们说“我想监控 ML 模型”时,他们可能想要:
- 监控生产中的模型性能:查看模型的预测有多准确。看看模型性能是否会随着时间的推移而衰减,你应该重新训练它。
- 监控模型输入/输出分布:查看模型中输入数据和特征的分布是否发生了变化?预测的类分布是否随时间变化?这些东西可能与数据和概念漂移有关。
- 监控模型训练和重新训练:在训练和再训练期间查看学习曲线、训练模型预测分布或混淆矩阵。
- 监控模型评估和测试:为您的自动化评估或测试流水线记录指标、图表、预测和其他元数据。
- 监控硬件指标:查看模型在训练和推理期间使用了多少 CPU/GPU 或内存。
- 监控 ML 的 CI/CD 流水线:查看来自 CI/CD 流水线作业的评估并直观地比较它们。在 ML 中,指标通常只能告诉您这么多,并且需要有人真正看到结果。
另请阅读:
您指的是哪种ML模型监控?
无论哪种方式,我们都将研究有助于处理所有这些场景的工具。
如何比较 ML 模型监控工具
显然,根据您要监控的内容,您的需求会发生变化,但在选择 ML 模型监控工具之前,您绝对应该考虑一些事项:
- 易于集成:将其连接到模型训练和部署工具有多容易
- 灵活性和表现力:您可以记录并查看您想要的内容以及您想要的方式
- 开销:日志记录对模型训练和部署基础架构施加了多少开销
- 监控功能:你能监控数据/特征/概念/模型漂移吗? 您能否比较同时运行的多个模型(A/B 测试)?
- 警报:当性能或输入失控时,它是否提供自动警报?
下面,让我们看看实际的模型监控工具吧!
ML 模型监控工具
首先,我们看看不同工具的监控能力。
工具\监控能力 | 模型评估和测试 | 硬件指标 | 模型输入/输出分布 | 模型训练和重新训练 | 生产中的模型性能 | 用于 ML 的 CI/CD 流水线 |
Neptune.ai | 是 | 是 | 否 | 是 | 否 | 是 |
Arize | 有限的 | 否 | 是 | 有限的 | 是 | 否 |
WhyLabs | 有限的 | 否 | 是 | 有限的 | 是 | 否 |
Grafana + Prometheus | 否 | 是 | 有限的 | 否 | 有限的 | 否 |
Evidently | 否 | 否 | 是 | 否 | 是 | 否 |
Qualdo | 否 | 否 | 是 | 否 | 是 | 否 |
Fiddler | 否 | 否 | 是 | 否 | 是 | 否 |
Amazon SageMaker | 是 | 否 | 是 | 是 | 是 | 是 |
Seldon Core | 否 | 否 | 是 | 否 | 是 | 否 |
Censius | 否 | 否 | 是 | 否 | 是 | 否 |
1. Neptune
Neptune 是为运行大量实验的研究和生产团队构建的 MLOps 元数据平台。
您可以记录和显示几乎任何 ML 元数据,从指标和损失、预测图像、硬件指标到交互式可视化。
在监控 ML 模型时,人们主要将其用于:
- 模型训练、评估、测试、
- 硬件指标显示
- 但是您可以(并且一些团队可以)记录生产作业的性能指标,并查看来自 ML CI/CD 流水线的元数据。
它具有灵活的元数据结构,允许您按照自己的方式组织训练和生产元数据。您可以将其视为您在代码中创建并显示在 UI 中的字典或文件夹结构。
您可以构建仪表板来显示您想要查看的性能和硬件指标,以更好地组织您的模型监控信息。
您可以比较模型和运行之间的指标,以查看模型更新如何改变性能或硬件消耗,以及是否应该中止实时模型训练,因为它不会超过基线。
您可以通过易于使用的 API 和 25+ 种与 ML 生态系统工具的集成来记录您想要监控的元数据。
如果您想知道它是否适合您的工作流程:
2. Arize
2021 年,Arize AI 被福布斯称为最有前途的 AI 工具之一。这是一个 ML 模型监控平台,能够提高项目的可观察性并帮助您解决生产 AI 问题。
如果 ML 团队在没有强大的可观察性和实时分析工具的情况下工作,工程师可能会浪费数天时间试图识别潜在问题。 Arize AI 筹集了 1900 万美元的投资,因为它可以轻松查明问题所在,以便软件工程师立即发现并解决问题。此外,它允许 ML 工程师稳健地更新现有模型。 Arize AI 具有以下特点:
- 简单的集成。 Arize AI 可用于增强任何模型在任何环境中的可观察性。详细的文档和社区支持可让您在几分钟内集成并上线。
- 发布前验证。在部署模型之前检查模型的行为是否符合预期非常重要。发布前验证工具包可以帮助您获得对模型性能的信心,并执行发布前和发布后的验证检查。
- 自动监控。模型监控应该是主动的而不是被动的,以便您可以及早发现性能下降或预测偏差。自动化监控系统可以帮助您做到这一点。它要求零设置,并为易于定制的仪表板提供空间。
3. WhyLabs
WhyLabs 是一个模型监控和可观察性工具,可帮助 ML 团队监控数据流水线和 ML 应用程序。监控已部署模型的性能对于主动解决此问题至关重要。您可以确定重新训练和更新模型的适当时间和频率。它有助于检测数据质量下降、数据漂移和数据偏差。 WhyLabs 很快在开发人员中变得非常流行,因为它可以很容易地用于经验丰富的开发人员与初级员工并肩工作的混合团队中。
该工具使您能够:
- 使用开箱即用或定制的指标自动监控模型性能。
- 检测整体模型性能下降并成功识别导致它的问题。
- 与其他工具轻松集成,同时通过其开源数据记录库(Whylogs)保持高隐私保护标准。
- 使用流行的库和框架,如 MLFlow、Spark、Sagemaker 等,使采用 WhyLabs 更加顺畅。
- 使用内置工具轻松调试数据和模型问题。
- 通过易于使用的零配置设置在几秒钟内设置工具。
- 通过您喜欢的渠道(如:Slack、SMS 等)获得有关当前工作流程的通知。
WhyLabs 用于模型监控的最大优势之一是它消除了手动解决问题的需要,从而节省了金钱和时间。无论规模如何,您都可以使用此工具处理结构和非结构化数据。
WhyLabs 使用 AWS 云。它使用 Amazon ECS 运行容器,并使用 Amazon EMR 进行大规模数据处理。
4. Grafana + Prometheus
Prometheus 是一款流行的开源 ML 模型监控工具,最初由 SoundCloud 开发,用于收集多维数据和查询。
Prometheus 的主要优势是与 Kubernetes 和许多可用的导出器和客户端库的紧密集成,以及快速查询语言。 Prometheus 也与 Docker 兼容,可在 Docker Hub 上使用。
Prometheus 服务器有自己的独立单元,不依赖网络存储或外部服务。因此,部署额外的基础架构或软件不需要大量工作。它的主要任务是存储和监视某些对象。对象可以是任何东西:Linux 服务器、进程之一、数据库服务器或系统的任何其他组件。您要监控的每个元素都称为一个指标。
Prometheus 服务器以您定义的时间间隔读取目标以收集指标并将它们存储在时间序列数据库中。您设置读取指标的目标和时间间隔。您可以使用 PromQL 查询语言查询 Prometheus 时间序列数据库以了解指标的存储位置。
Grafana 允许您可视化监控指标。 Grafana 专注于时间序列分析。它可以以折线图、热力图和直方图的形式将监控工作的结果可视化。
您无需将 PromQL 查询直接写入 Prometheus 服务器,而是使用 Grafana GUI 面板从 Prometheus 服务器请求指标并将它们呈现在 Grafana 仪表板中。
Grafana 的主要特点:
- 警报。您可以通过从信使到 Slack 的各种渠道接收警报。如果您更喜欢其他选项,您可以使用一点代码手动添加自己的警报。
- 仪表板模板。您可以为不同的任务创建自定义仪表板,并在一个界面中管理您需要的一切。
- 自动化。您可以使用脚本在 Grafana 中自动化工作。
- 注释。如果出现问题,您可以对来自不同仪表板和来源的事件进行时间匹配,以分析故障原因。您可以通过向所需点和绘图片段添加评论来手动创建注释。
5. Evidently
Evidently 是一个开源的 ML 模型监控系统。 它有助于在开发、验证或生产监控期间分析机器学习模型。 该工具从 pandas DataFrame 生成交互式报告。
目前,有 6 份报告可用:
- 数据漂移:检测特征分布的变化
- 数值目标漂移:检测数值目标和特征行为的变化
- 分类目标漂移:检测分类目标和特征行为的变化
- 回归模型性能:分析回归模型的性能和模型错误
- 分类模型性能:分析分类模型的性能和错误。适用于二分类和多分类模型
- 概率分类模型性能:分析概率分类模型的性能、模型校准的质量和模型错误。适用于二分类和多分类模型