构建端到端 mLOps 管道,用于边缘的视觉质量检测 — 第 3 部分

这是我们系列的第 3 部分,我们在其中设计和实现 mLOps 管道,用于边缘的视觉质量检测。在这篇文章中,我们重点介绍如何自动化端到端 mLOPs 管道的边缘部署部分。我们将向您展示如何使用 亚马逊云科技 IoT Greengrass 来管理边缘的模型推断,以及如何使用 A WS Step Functions 和其他 亚马逊云科技 服务实现流程自动 化。

解决方案概述

在本系列 的 第 1 部分 中,我们为端到端 mLOps 管道制定了一个架构,该架构可自动执行从数据标签到模型训练和边缘部署的整个机器学习 (ML) 流程。在 第 2 部分 中 ,我们展示了如何自动化管道的标签和模型训练部分。

本系列使用的示例用例是视觉质量检测解决方案,可以检测金属标签上的缺陷,您可以将其作为制造过程的一部分进行部署。下图显示了我们在本系列开头定义的 mLOPS 流水线的高级架构。如果你还没有读过,我们建议你看看 第 1 部分

Architecture diagram

自动部署 ML 模型的边缘部署

机器学习模型经过训练和评估后,需要将其部署到生产系统,通过对传入数据进行预测来创造业务价值。在边缘环境中,这个过程很快就会变得复杂,因为模型需要在设备上部署和运行,而这些设备通常远离训练模型的云环境。以下是边缘机器学习所独有的一些挑战:

  • 由于边缘设备的资源限制,机器学习模型通常需要优化
  • 边缘设备无法像云端服务器那样重新部署甚至更换,因此您需要强大的模型部署和设备管理流程
  • 设备与云之间的通信需要高效和安全,因为它经常穿越不可信的低带宽网络

让我们看看除了以 ONNX 格式导出模型外,如何使用 亚马逊云科技 服务应对这些挑战,例如,这使我们能够应用量化等优化来减小约束设备的模型大小。ONNX 还为最常见的边缘硬件平台提供优化的运行时间。

分解边缘部署流程,我们需要两个组件:

  • 模型交付的部署机制,包括模型本身以及一些用于管理和与模型交互的业务逻辑
  • 一个工作流程引擎,可以协调整个流程,使其变得强大且可重复

在此示例中,我们使用不同的 亚马逊云科技 服务来构建自动边缘部署机制,该机制集成了我们讨论的所有必需组件。

首先,我们模拟边缘设备。为了便于您轻松完成端到端工作流程,我们使用 亚马逊弹性计算云 (Amazon EC2) 实例来模拟边缘设备,方法是在该实例上安装 亚马逊云科技 IoT Greengrass Core 软件。在部署到实际的边缘生产设备之前,您还可以使用 EC2 实例在 QA 流程中验证不同的组件。亚马逊云科技 IoT Greengrass 是一项物联网 (IoT) 开源边缘运行时和云服务,可帮助您构建、部署和管理边缘设备软件。亚马逊云科技 IoT Greengrass 以安全和可扩展的方式减少了构建、部署和管理边缘设备软件的工作量。在您的设备上安装 亚马逊云科技 IoT Greengrass Core 软件后,您可以添加或删除功能和组件,并使用 亚马逊云科技 IoT Greengrass 管理您的物联网设备应用程序。它提供了许多内置组件,使您的生活更轻松,例如StreamManager和MQTT代理组件,您可以使用它们与云进行安全通信,支持端到端加密。您可以使用这些功能高效地上传推理结果和图像。

在生产环境中,通常使用工业相机传送图像,机器学习模型应该对这些图像进行预测。在我们的设置中,我们通过将图像预设上传到边缘设备上的特定目录来模拟此图像输入。然后,我们使用这些图像作为模型的推理输入。

我们将整个部署和推理过程分为三个连续步骤,将经过云训练的机器学习模型部署到边缘环境并使用它进行预测:

  1. 准备 — 打包经过训练的边缘部署模型。
  2. 部署 -将模型和推理组件从云端转移到边缘设备。
  3. 推断 -加载模型并运行推理代码进行图像预测。

以下架构图显示了这个三步流程的详细信息以及我们如何使用 亚马逊云科技 服务实施该流程。

Inference Process

在以下部分中,我们将讨论每个步骤的详细信息,并展示如何将此流程嵌入到机器学习模型和相应推理代码的自动化且可重复的编排和 CI/CD 工作流程中。

准备

与强大 CPU 和 GPU 可以轻松运行机器学习模型的云环境相比,边缘设备的计算和内存通常有限。不同的模型优化技术允许您为特定的软件或硬件平台定制模型,以在不损失准确性的情况下提高预测速度。

在此示例中,我们将训练管道中的训练模型导出为 ONNX 格式,以实现可移植性、可能的优化以及优化的边缘运行时间,并将模型注册到 Amazon S ageMaker 模型注册表中。 在此步骤中,我们创建了一个新的 Greengrass 模型组件,其中包括用于后续部署的最新注册模型。

部署

将模型从云端部署到边缘设备时,安全可靠的部署机制是关键。由于 亚马逊云科技 IoT Greengrass 已经集成了强大而安全的边缘部署系统,因此我们将其用于部署目的。在详细了解部署过程之前,让我们简要回顾一下 亚马逊云科技 IoT Greengrass 部署的工作原理。亚马逊云科技 IoT Greengrass 部署 系统的 核心是组件, 这些组件定义了部署到运行 亚马逊云科技 IoT Greengrass Core 的边缘设备的软件模块。这些可以是您构建的私有组件,也可以是由 亚马逊云科技 或更广泛的 Greengr ass 社区提供的公共组件。 作为部署的一部分,可以将多个组件捆绑在一起。部署配置定义部署中包含的组件和部署的目标设备。它可以在部署配置文件 (JSON) 中定义,也可以在创建新部署时通过 亚马逊云科技 IoT Greengrass 控制台进行定义。

我们创建了以下两个 Greengrass 组件,然后通过部署过程将其部署到边缘设备:

  • 打包模型(私有组件) — 此组件包含 ONNX 格式的训练模型和 ML 模型。
  • 推理代码(私有组件) — 除了机器学习模型本身,我们还需要实现一些应用程序逻辑来处理诸如数据准备、与模型进行推理通信以及推理结果的后处理等任务。在我们的示例中,我们开发了一个基于 Python 的私有组件来处理以下任务:
    • 安装所需的运行时组件,例如 Ultralytics YOLOv8 Python 包。
    • 我们不是从摄像机直播中拍摄图像,而是通过从特定目录加载准备好的图像并根据模型输入要求准备图像数据来进行模拟。
    • 使用准备好的图像数据对加载的模型进行推理调用。
    • 检查预测并将推断结果上传回云端。

如果你想更深入地了解我们构建的推理代码,请参阅 GitHub 存储库

推断

上述组件的部署完成后,边缘设备上的模型推断过程会自动启动。自定义推理组件使用本地目录中的图像定期运行 ML 模型。从模型返回的每张图像的推理结果是具有以下内容的张量:

  • 置信度分数 -模型对检测结果的信心程度
  • 物体坐标 — 模型在图像中检测到的划痕对象坐标(x、y、宽度、高度)

在我们的例子中,推理组件负责将推理结果发送到 亚马逊云科技 IoT 上的特定 MQTT 主题,在那里可以读取该结果以进行进一步处理。可以通过 亚马逊云科技 IoT 控制台上的 MQTT 测试客户端查看这些消息以进行调试。在生产设置中,您可以决定自动通知另一个负责从生产线上移除有缺陷的金属标签的系统。

管弦乐编曲

如前几节所示,准备机器学习模型、相应的推理代码以及所需的运行时或代理并将其部署到边缘设备需要多个步骤。Step Functions 是一项完全托管的服务,允许您协调这些专用步骤并以状态机的形式设计工作流程。该服务的无服务器性质和 亚马逊云科技 服务 API 集成等原生步骤函数功能允许您快速设置此工作流程。重试或日志记录等内置功能是构建强大编排的重要组成部分。有关状态机定义本身的更多详细信息,请在账户中部署此示例后,请参阅 GitHub 存储库 或在 Step Functions 控制台上查看状态机图。

基础设施部署和集成到 CI/CD

用于集成和构建所有必需的基础架构组件的 CI/CD 管道遵循本系列第 1 部分 中所示 的相同模式。我们使用 亚马逊云科技 云开发套件 (亚马逊云科技 CDK) 从 AW S CodePipeline 部署所需的管道。

Deployment CDK

学习

有多种方法可以为自动化、强大和安全的机器学习模型边缘部署系统构建架构,这些方法通常在很大程度上取决于用例和其他要求。但是,以下是我们想与您分享的一些经验教训:

  • 提前评估额外 亚马逊云科技 IoT Greengrass 计算 资源要求是否符合您的情况,尤其是在边缘设备 受限的情况下。
  • 在边缘设备上运行之前,建立一种部署机制,该机制集成了已部署工件的验证步骤,以确保在传输过程中不会发生任何篡改。
  • 最好将 亚马逊云科技 IoT Greengrass 上的部署组件尽可能保持模块化和独立性,以便能够独立部署。例如,如果你的推理代码模块相对较小,但机器学习模型的大小较大,那么只要推理代码发生了变化,你并不总是希望同时部署这两个模块。当您的带宽有限或边缘设备连接成本高时,这一点尤其重要。

结论

我们关于构建用于边缘视觉质量检测的端到端 mLOPs 管道的三部分系列到此结束。我们研究了在边缘部署机器学习模型所带来的其他挑战,例如模型打包或复杂的部署协调。我们以全自动化的方式实施了管道,因此我们可以以强大、安全、可重复和可追溯的方式将模型投入生产。您可以随意使用本系列中开发的架构和实现作为下一个支持 ML 的项目的起点。如果您对如何为您的环境架构和构建这样的系统有任何疑问, 请 联系我们 。有关其他主题和用例,请参阅我们的 机器学习 物联网 博客。


作者简介

Michael Roth Michael Roth 是 亚马逊云科技 的高级解决方案架构师,支持德国制造业客户通过 亚马逊云科技 技术解决他们的业务挑战。除了工作和家庭,他还对跑车感兴趣,喜欢意大利咖啡。

Jörg Wöhrle Jörg Wöhrle 是 亚马逊云科技 的解决方案架构师,与德国的制造业客户合作。Joerg 对自动化充满热情,在 亚马逊云科技 之前的生活中曾担任软件开发人员、DevOps 工程师和站点可靠性工程师。除了云外,他还是一位雄心勃勃的跑步者,喜欢与家人共度美好时光。因此,如果你遇到了 DevOps 挑战或想跑步:请告诉他。

Johannes Langer 约翰内斯·兰格 是 亚马逊云科技 的高级解决方案架构师,与德国的企业客户合作。Johannes 热衷于应用机器学习来解决实际的业务问题。在个人生活中,约翰内斯喜欢从事家居装修项目并与家人共度户外时光。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。