使用 NVIDIA Jetson 和 Azure 在边缘运行 AI 的简介
物联网 (IoT) 不仅仅是闪烁的灯和读取传感器。 IoT 也是一种向大众提供 AI 工作负载的机制。 传统上,通常将 IoT 视为具有物理传感器的专用硬件,可将读取的数据报告给云服务进行处理。
随着支持 GPU 和现场可编程门阵列 (FPGA) 的小尺寸设备的出现,任务更密集的 AI 应用程序直接在嵌入式硬件上运行已变得很普遍。 使用这种范式,不仅可以减少数据外流,也可以专注于在边缘处理数据所产生的重要结果。
当从依赖云进行处理转变为利用设备上的加速工作负载时,可以更快地获得结果,即使在离线环境中也是如此。 Microsoft 的 Azure IoT Edge 平台专为此类用例而设计。
Azure IoT Edge 使用容器化模块将代码安全部署到 IoT 设备。 这些模块可包含常用 Azure 服务的容器化形式,包括无服务器函数、流分析、机器学习模块和自定义视觉 AI 服务,甚至使用 SQL Server 进行本地存储。 可以使用 IoT Edge 平台在边缘环境中获得与你已了解和喜爱的云服务相同的强大特性和功能。 可以类似地模块化使用 NVIDIA Graph Composer 开发的容器化工作负载,然后将工作负载部署到支持 IoT Edge 的硬件。
在本模块中,将探索开发面向 NVIDIA 嵌入式硬件的 GPU 加速工作负载,以使用 Azure IoT Edge 和相关的 Azure IoT 服务在边缘部署 AI 工作负载。
NVIDIA Jetson 嵌入式硬件
适用于边缘环境的小型嵌入式设备上的 GPU 加速工作负载可以在 NVIDIA Jetson 平台上运行。 NVIDIA Jetson 硬件是一个完整的模块系统 (SOM),它拥有在现代手机大小的设备上运行计算机视觉工作负载所需的全部 CPU、GPU 和内存。
NVIDIA 在其 Jetson 系列设备产品中提供了各种适合边缘 AI 的设备。 产品包括强大的 512 核 Jetson AGX Xavier 和 Jetson Xavier NX、中端 256 核 Jetson TX2 和入门级 128 核 Jetson Nano。
下表显示了这些硬件产品的规格:
NVIDIA Jetson 系列中的所有设备都使用基于 ARM 的 CPU 硬件进行处理。 Azure IoT Edge 平台可面向此体系结构,因此可以检测 NVIDIA 嵌入式设备以使用 IoT Edge 运行时和相关的 Azure IoT 服务。
要学习本模块,需要以下配备 JetPack 4.6 的 NVIDIA Jetson 嵌入式设备之一:
Azure IoT Edge
Azure IoT Edge 旨在简化在边缘生成分析的过程。 IoT Edge 使用现代方法通过容器化工作负载(已知为模块)分发应用程序。 使用 IoT Edge 运行时检测的设备可以使用高吞吐量、低延迟的消息传送协议将见解发布到 Azure 云。 设备甚至可以在离线场景中继续生成这些见解。 由于这些功能及其他功能,Azure IoT Edge 是在边缘环境中采用实时 AI 工作负载的理想解决方案。
基于 IoT Edge 的解决方案包含三个组件:
- IoT Edge 模块:模块是运行 Azure 服务、第三方服务或自定义代码的容器。 容器使用在 Azure IoT 中心的一个中心中定义的规范进行部署,并且它们在 IoT Edge 检测设备上本地运行。
- IoT Edge 运行时:运行时是在 IoT Edge 设备上运行以管理模块工作负载、提供模块到模块和设备到云/云到设备消息传送机制,以及编排中心中所定义工作负载的服务。
- 基于云的接口:该接口是 Azure 服务的集合,包含在 Azure IoT 中心资源实例中。 这些服务提供了一种用于安全注册设备的机制、一种用于数据引入的高吞吐量机制(通过 AMQP、MQTT 或 HTTPS)、定义和应用部署规范的能力,以及远程监视和管理 IoT Edge 设备的能力。
IoT Edge 解决方案可以选择合并 Azure 容器注册表的实例,以提供容器化模块的安全分发。 建议将此方法用于生产部署场景。 下图显示了三个核心组件如何使用容器注册表来实现端到端的边缘到云解决方案体系结构:
在上图中,(1) Azure IoT 中心分发了一个部署规范,该规范 (2) 定义了要在 yourEdgeDevice 上运行的模块,该设备已使用 IoT Edge 运行时在中心进行检测并安全地注册为 IoT Edge 设备。 然后,(3) IoT Edge 运行时接收此规范,(4) 引用存储在 Azure 容器注册表中的传感器模块。 该模块被安全检索并在边缘设备上本地运行,然后在边缘设备上生成从设备流向中心的遥测数据。
在本模块中,将部署一个类似于此处所示体系结构的解决方案。 主要区别在于将包含一个部署规范,该规范定义基于 DeepStream 的 IoT Edge 模块,以将对象检测结果发布到 IoT 中心。 该部署在 NVIDIA Jetson 嵌入式设备上运行,该设备原生支持 IoT Edge 运行时的 ARM64 分发。
尝试此服务
如果任务是在边缘部署 AI 解决方案,如何通过使用云服务产品节省生产时间? 在实现过程中使用 Azure IoT Edge 等服务可以获得哪些好处?