作者:郑亚斌,Arm中国资深生态市场经理
随着 5G 和 AIoT 的快速发展,人们对于网络延迟,隐私保护以及用户体验提出了更高的要求。同时,这些需求也不断地推动端侧计算的转变。我们将 AI 应用与端侧计算的结合称为 Endpoint AI。去年,Arm 宣布推出最新 Cortex-M55 处理器和 Ethos-U AI 加速器,为物联网设备在降低能耗的同时显著提升机器学习 ( ML ) 和信号处理 ( DSP ) 能力。最近 Arm 开源了多种开发工具和评估软件,帮助合作伙伴尽快完成软件评估和软件开发工作。很多朋友可能对 Cortex-M55 和 Ethos-U 并不熟悉,我们将在这篇文章中对其以及相关的评估工具进行简要介绍。
Cortex-M55
Cortex-M55 处理器是第一个支持 Armv8.1-M 架构的 Arm Cortex-M 处理器。 与同系列产品相比,借助 Helium 技术(也称为 M-Profile Vector Extension,MVE),基于 Cortex-M55 的产品在信号处理和 AI 应⽤中体现出了极大的优势,其性能和能效得到了显著提高。 Armv8.1-M 架构是在 Embedded World 2019 期间宣布的,可以在此处下载 Armv8.1-M 白皮书。Cortex-M55 框图如下所示:
图1.1 Cortex-M55 框图
Cortex-M55 的主要特征有:
- Helium:新增超过150条标量和矢量指令,对8bit,16bit和32bit定点数据格式高效支持。
- 浮点支持:支持半精度(fp16)、单精度(fp32)和双精度(fp64)数据格式的标量浮点指令。与 Helium 配合可实现对浮点的矢量支持。
- 安全保护:支持 TrustZone,实现对数据安全的保护。
- 可配置:用户可根据应用场景,对 Cortex-M55 内部的各个部分灵活配置(Cache,TCM,Helium,FPU 等)。
- 更灵活高效的内部存储系统,丰富的对外接口等。
感兴趣的朋友可以去 Arm 官方网站学习相关资料:
Ethos-U
Ethos-U 系列 AI 加速器目前发布两款产品:Ethos-U55 和 Ethos-U65。 Ethos-U55 是 Arm 的第一款 micro NPU IP,是一种全新的 AI 处理器,用于在资源受限的嵌入式 IoT 设备中加速 AI 推理任务。 在进行 AI 计算时,Ethos-U 需要与 Cortex-M 配合,共同完成端侧推理任务。 Ethos-U 框图如下所示:
图2.1 Ethos-U 框图
Ethos-U55 的主要特征有:
- 可配置:Ethos-U55 支持 32, 64, 128和256 MAC/cycle 四种配置,方便合作伙伴开发和设计定位于不同应用场景的 AI 芯片。
- 面积小:相较于传统的 MCU,Ethos-U55 在约0.1平方毫米的面积内可将能耗降低90%,适用于成本敏感且能耗受限的边缘侧 AI 应用。
- 工具链统一:通过将 Ethos-U55 与 Cortex-M 的工具链进行整合,研发人员只需一套开发工具即可完成逻辑代码与 AI 运算的联合调试,极大的简化开发流程,减小开发难度,从而加快产品上市时间。
- 多网络支持:对包括 CNN 和 RNN 在内的最常见 AI 网络均实现了高效的支持,算子添加更灵活易用。
- 开源:与 Ethos-U 相关的所有软件均实现了开源,其中包括离线优化工具 Vela,TensorFlow Lite for Micro, Driver 和 Evaluation Kit 等多种评估工具。
图2.2 Ethos-U 系列产品对比
作为 Ethos-U55 的升级版,Ethos-U65 主要在算力和总线带宽上进行了提升,同时在软件调度及内存优化方面采取了更加灵活的策略,因此适用于对算力要求更大,应用场景更丰富的领域。图2.2主要展示了 Ethos-U55 与 Ethos-U65 的配置区别。
很多朋友问我什么时间可以拿到带有 Cortex-M55 和 Ethos-U 的芯片,好消息是 NXP 作为 Ethos-U 的 lead partner,在不久的将来会量产带有 Ethos-U 的芯片。这篇文章详细描述了 NXP 与 Arm 在 Ethos-U 上的思考与合作。在运行 MobileNet_v2 深度神经网络时,以 1GHz 运行的 Ethos-U65(512GOPS) 芯片能够在不到3ms的时间内完成识别任务,比工作在 2GHz 的四核 Cortex-A53 推理速度至少快十倍。由于全球芯片产能紧缺以及产品设计周期等多种原因,目前芯片面世时间还不确定。那有没有办法提前体验或者评估 M55+U55 的方案呢?
Evaluation Kit
Arm 通过开源 Evaluation Kit 工具帮助开发者以及合作伙伴提前体验 M55+U55 软件的易用性和性能优势。Package 中包含了 6 个 AI 用例,方便开发者快速熟悉代码以及环境,合作伙伴也可在其基础上开发自己的 demo。它们分别是:
- Image Classification - 图像分类
- Keyword Spotting(KWS) - 关键词唤醒
- Automated Speech Recognition(ASR) - 自动语言识别
- KWS and ASR - 关键词唤醒,自动语言识别
- Anomaly Detection - 异常检测
- Generic inference runner - 通用推理框架
参考用例描述以及对应的 AI 模型请参考下图:
图3.1 Evaluation Kit Package
以上所有用例均包括数据预处理,AI 推理和后处理部分,方便大家对整个 AI 数据流有清晰的了解。在执行完成后通过显示不同的性能指标(例如完成一次执行所需的 cycle 数和网络执行结果)方便开发者评估 Cortex-M55+Ethos-U55。
开源链接:
Evaluation Kit
软件及硬件架构
该评估套件硬件平台基于 Arm Corstone-300 参考设计。 Corstone-300 是针对 Cortex-M55 和 Ethos-U55 研发的参考设计,其中实现了包括 TrustZone 在内的多个 feature,可帮助客户在 Cortex-M55 和 Ethos-U55 设计上快速构建 SoC。 Corstone-300 参考设计可以部署在 Arm MPS3 FPGA 平台,或者直接采用基于其设计的 Arm Fixed Virtual Platforms (FVPs)。前者需要 Corstone-300 FPGA image 的文件支持,可以参考 Arm 官网 AN547 package;而后者可以简单理解为软件仿真平台(Functional Model)。将 Evaluation Kit 部署到 FVP 上,可实现对功能的验证。由于 Evaluation Kit 在 FPGA 和 FVP 上的运行机制和代码几乎完全相同,因此建议大家采用 FVP 平台进行评估(这里需要注意的是,由于 FVP 为软仿平台,因此其 cycle 统计数有较大误差,采用 FPGA 可准确输出性能数据)。
链接:
Arm®Corstone™-300
FPGA prototyping boards
Arm Ecosystem FVPs
接下来再给大家介绍下 Evaluation Kit 的软件架构,如下图所示:
图 3.2 Evaluation Kit 软件架构
我们知道,大部分的 AI 用例都包含通用代码(Application common),例如初始化硬件抽象层(HAL)。 借助 HAL,应用程序通用代码可以在 x86 或 Arm Cortex-M 架构上运行。为什么要设计 HAL 层做抽象呢?因为大量的 AI 应用都离不开前后数据处理操作,在端侧设备上,这部分工作可由 Cortex-M 胜任,为了方便大家设计与调试,我们同样可以将其执行在 x86 平台做效果验证。对于应用程序的 AI 部分,TensorFlow lite for Micro 推理引擎用于对神经网络的运算进行调度,NPU 支持的算子交由 Ethos U 执行,NPU 不支持的算子将被调度到 CPU 上由 CMSIS NN 开源加速库或者 Reference Kernel 加速执行。
接下来看一下 Evaluation Kit 的目录结构:
图3.3 Evaluation Kit 的目录结构
- dependencies:包含该项目的所有第三方依赖项。
- docs:包含 AI 应用程序的文档。
- scripts:包含构建程序相关的脚本和源代码。
- source:包含平台和 AI 应用程序的所有源代码。与 Ethos-U55 NPU 软件框架相关的通用代码位于 application 子文件夹中,包含构成 AI 应用程序的所有核心源代码:hal 为硬件抽象层,提供统一的 API 对硬件资源进行访问;main 包含 main 函数以及平台初始化函数,它还包含调用所有用例所实现的通用代码;tensorflow-lite-micro 包含 TensorFlow Lite for Micro 的 API 封装,用来实现初始化神经网络模型,运行推理并访问推理结果等通用功能。use_case 包含 AI 用例特定的源代码,将其单独列出可以隔离特定的 AI 应用程序逻辑,通用代码也会调用此处的代码对特定用例进行配置,这也使添加新用例变得更加容易。
- tests:在 x86 平台上的 unit test 集。
要在 Cortex-M 和 Ethos-U55 NPU 上运行 AI 应用程序,请按照以下步骤操作:
- 安装并配置必要的环境。
- 使用 Vela 编译器为 Ethos-U 生成优化的神经网络模型。Vela 是 Arm 针对 Ethos U 设计的开源编译器,用于对模型离线优化。
- 配置构建系统。
- 使用 make 命令编译项目。
- 在 FVP 或者 FPGA 上执行应用。
具体操作命令可以参考 Evaluation Kit 开源网站。
图3.4 基于 FVP 的 Evaluation Kit 交互界面
将 Evaluation Kit 成功部署在 FVP 后,执行相关的 AI 应用时,会弹出用户交互界面,如图3.4所示。左半部分用于模拟 FPGA 开发板上的液晶显示,可以输出图片,打印结果等信息,而右侧窗口可以用来输出程序版本,日志,模型结构等信息,还可用于人机间的交互。
结语
Cortex-M55 和 Ethos-U 是 Arm Endpoint AI 战略中具有跨时代意义的产品,配合 Evaluation Kit 开源工具以及 CMSIS 加速库,给予开发者以及合作伙伴极好的用户体验。今后我们会在越来越多的 IoT 产品中看到 AI 的应用,而 Arm 作为 IP 行业的领导者,将不断结合产业需求与自身生态优势,赋能 AI 的发展。