前言:
边缘 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 应用程序。
在 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