边缘 AI 是当今一个非常令人兴奋的领域,有很多发展和创新即将到来。多年来,机器学习预测有一个明显的趋势,即向下移动到更接近用户、不需要网络连接并且可以实时解决复杂问题(例如自动驾驶)的嵌入式硬件。有许多新框架和引擎的模型占用空间要小得多,专门设计用于在 Edge 设备上运行。此外,当用户的个人数据不离开边缘设备时,解决用户隐私和安全的非常重要的问题要容易得多。分析推理结果的复杂算法可以在边缘设备上执行,只将最终混淆的信息发送到云端(例如,某些异常情况的警报)。
本文基于我们在 Darwin Edge 的工作,在那里我们专注于应用于医疗保健和制造的边缘 AI 应用程序。对于板卡的性能演示,我们使用了著名的开源 NCNN 高性能神经网络推理计算框架,针对移动和嵌入式平台进行了优化(https://github.com/Tencent/ncnn)。本文针对平台的交叉编译不需要太多工作(标准 cmake 配置和使用交叉编译工具构建并配置 sysroot),并且为了简单的板性能比较,NCNN 默认推理基准已经执行 (benchncnn)。NCNN 基准测试是静态构建的,它的大部分依赖项都是静态构建的,所以一般来说,让它在标准的嵌入式 Linux 系统中运行并不难。
在我们的开发中,我们经常使用 Bonseyes 开发者平台 (https://www.bonseyes.com/),它可以使用相同的工具轻松交叉编译各种机器学习应用程序。Bonseyes 平台带有工具和 docker 镜像,可用于许多嵌入式平台的交叉编译环境。它支持平台映像的构建、目标板的设置和自定义应用程序的交叉编译,这是通过在容器内构建应用程序以与平台无关的方式执行的。
Raspberry PI 4B 型
使嵌入式爱好应用程序易于访问和流行的著名平台也可用于中等复杂的机器学习应用程序。以实惠的价格约 50 美元,对于进入边缘计算的爱好者来说,它是一个不错的工具。
Raspberry PI 4
有 2 种基于 Linux 的操作系统发行版可用 - 官方 Raspberry Pi 发行版 Raspberry Pi OS (Raspbian) 和 Ubuntu Raspberry Pi 端口。
Raspbian 在配置和管理目标板方面更加用户友好(对新手来说更容易),但 Ubuntu 对外部应用程序和库有更广泛的支持,可以访问标准的 Ubuntu ARM 包存储库。AI应用移植和交叉编译可能更方便。两个发行版都有 32 位和 64 位版本。
根据我们的经验,64 位系统在机器学习应用程序基准测试中比 32 位系统快 50%。
Raspberry PI 4 硬件规格
通过在 Vulkan 1.0 的 Khronos 一致性测试套件中通过 100,000 次测试,为 Raspberry Pi 4 GPU 开发 Vulkan 驱动程序的开源计划已正式发布。不幸的是,Vulkan 驱动程序开发专注于 32 位平台,对 64 位操作系统的支持非常少。
一般来说,Ubuntu(或其他支持良好的 Linux 发行版)是 Raspberry Pi 4 的良好交叉编译环境。GNU 交叉编译工具链可以从官方存储库(g++-aarch64-linux-gnu 和 gcc-aarch64-)轻松安装linux-gnu)。
实现交叉编译环境的一种好方法是创建Docker镜像,在那里安装所有主机开发工具,并使用Ubuntu多平台存储库支持创建目标系统root,并让Ubuntu apt工具解析并下载目标板库的所有依赖项需要该 sysroot 才能完全发挥作用(在以后的文章中将详细介绍此主题)。
下表给出了 Raspberry Pi 4B 板的 NCNN 基准测试结果:
Jetson AGX Xavier
主要针对边缘机器学习应用程序的 NVIDIA 旗舰产品基于 NVIDIA® Jetson AGX Xavier 模块。它是一个功能强大的平台,带有丰富的 NVIDIA 工具和库生态系统,用于开发 AI 应用程序。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
在 PC 工作站上运行的易于使用的 NVIDIA SDK 管理器支持下载和安装最新的可用操作系统(当前为 Ubuntu 18.04)以及与板载硬件相关的附加库和驱动程序。许多预装的库都额外支持 NVIDIA 硬件(例如 gstreamer 硬件编码/解码)。
Jetson AGX Xavier 硬件规格
具有 512 个 CUDA 核心的 Volta GPU 提供了不错的计算和处理能力。它支持 CUDA 计算能力 7.0。相比之下,著名的 NVIDIA GTX 1060 PC GPU 具有 Compute Capability 6.0 支持和 1280 个 CUDA 核心。
此外,由于 CUDA 是第一个通用 GPU 编程平台,并且在过去十年中主要用于机器学习领域,因此该平台具有独特的优势,只需简单的交叉编译即可直接在板上轻松使用现有的 AI 框架和库。在目标上运行的 Ubuntu 系统支持使用 Ubuntu ARM 存储库中提供的许多软件包的 apt 工具轻松安装。
一般而言,由于其功能强大、易于设置和封装可用,目标板本身可用于编译本机自定义应用程序,而无需在 PC 工作站上设置交叉编译环境。过程通常包括直接在板上克隆 github 存储库,运行 cmake 以检查缺少的依赖项,使用 apt-get 工具安装这些依赖项并执行重新配置,然后执行 make 以构建应用程序。在 AGX Xavier 上编译比在高端现代 PC 工作站上慢一个数量级,但对于中等规模的项目,这是一种测试和尝试新事物的简单方法。
AGX Xavier 还支持 TensorRT,NVIDIA 引擎,用于运行优化的 AI 推理。它将标准模型格式(例如 ONNX)编译为可以在 GPU 或深度学习加速器上执行的高度优化的代码。更多关于 TensorRT 的信息可以在 NVIDIA 网站上找到。
AGX Xavier 开发人员套件的价格约为 850 美元,这几乎使它成为 Edge AI 的第一个业余爱好套件。它更便宜(100 美元)的表亲 NVIDIA Jetson Nano 缺乏如此出色的 GPU(它基于 Maxvell 架构——128 核的 CUDA 计算能力 5.2)和支持 TensorRT 的深度学习加速器,但开发环境和工具/操作系统是相同的,所以这是一个很好的策略,从 Nano 板开始简单,然后当机器学习应用程序复杂性开始损害性能时,轻松切换到 AGX Xavier 平台。
下表给出了 AGX Xavier 开发人员套件的 NCNN 基准测试结果:
NXP i.MX 8 Multisensory Enablement Kit (MEK)
恩智浦拥有一系列 i.MX 8 应用处理器,用于高级图形、成像、机器视觉和安全关键应用,以及一系列演示/目标平台,带有基于这些 CPU 的各种外设。NXP i.MX 8 Multisensory Enablement Kit (MEK) 是一个方便的机器学习应用平台。
它非常强大,具有许多包含的硬件/扩展功能:
以 1000+$ 的价格,它旨在用作专业平台。
在恩智浦网站上有关于该板的大量文档,还有可用的 Linux 映像,可以使用 Etcher 等工具轻松将其刻录到 PC 上的 SD 卡。船上使用的操作系统是基于默认 Poky Linux 发行版的 Yocto Linux 的恩智浦定制。此自定义添加了许多 Edge AI 应用程序中常见的库(opencv、gstreamer、QT、工作 Vulkan 驱动程序)。
从预烧的 SD 卡拆箱和启动 MEK 板很容易,但将工作站 PC 设置为交叉编译环境则需要更多的工作。它需要使用 Yocto 构建系统根和 SDK,可以交叉编译自定义应用程序以在该板上运行。
Yocto 是一个非常复杂的构建系统,它在自定义电路板图像和系统库的各个方面的能力方面提供了强大的功能,但学习曲线陡峭,需要大量时间来理解和练习。自定义默认的 NXP iMX8 构建(例如,如果缺少某些额外的开源库)非常乏味。Yocto 下载源代码并从头开始构建所有内容(包括为构建计算机环境量身定制的 GNU 交叉编译工具链),在高端现代个人计算机上,这个初始构建工作需要一整天才能完成。
在平台上执行的 NCNN 基准测试给出以下结果:
Conclusion
对于那些想要跳入令人兴奋的 Edge AI 领域的人来说,有许多易于使用的目标平台可供选择。我们比较了几个平台。出于爱好/演示目的,有便宜但支持机器学习的 Raspberry PI 4 和 NVIDIA Jetson Nano。Nvidia AGX Xavier 是 NVIDIA 的旗舰产品,具有便捷的工具和 Ubuntu 操作系统、良好的 GPU 和 CUDA 支持。NXP i.MX 8 是一个处理起来更复杂的平台,它针对专业的工业和商业应用。