TensorFlow Lite Micro 助力 Arm Endpoint AI 落地

发布人:郑亚斌,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 的主要特征有:

1. Helium:新增超过 150 条标量和矢量指令,对 8bit,16bit 和 32bit 定点数据格式高效支持。
2. 浮点支持:支持半精度 (fp16)、单精度 (fp32) 和双精度 (fp64) 数据格式的标量浮点指令。与 Helium 配合可实现对浮点的矢量支持。
**3.**安全保护:支持 TrustZone,实现对数据安全的保护。
**4.**可配置:用户可根据应用场景,对 Cortex-M55 内部的各个部分灵活配置(Cache,TCM,Helium,FPU 等)。
**5.**更灵活高效的内部存储系统,丰富的对外接口等。

感兴趣的朋友可以去 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 的主要特征有:

**1.**可配置:Ethos-U55 支持 32, 64, 128 和 256 MAC/cycle 四种配置 (64-512 GOP/s),方便合作伙伴开发和设计定位于不同应用场景的 AI 芯片。
2. 面积小:相较于传统的 MCU,Ethos-U55 在约 0.1 平方毫米的面积内可将能耗降低 90%,适用于成本敏感且能耗受限的边缘侧 AI 应用。
**3.**工具链统一:通过将 Ethos-U55 与 Cortex-M 的工具链进行整合,研发人员只需一套开发工具即可完成逻辑代码与 AI 运算的联合调试,极大的简化开发流程,减小开发难度,从而加快产品上市时间。
**4.**多网络支持:对包括 CNN 和 RNN 在内的常见 AI 网络均实现了高效的支持,算子添加更灵活易用。
**5.**开源:与 Ethos-U 相关的所有软件均实现了开源,其中包括离线优化工具 Vela,TensorFlow Lite 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 推理速度至少快十倍。由于全球芯片产能紧缺以及产品设计周期等多种原因,目前芯片面世时间还不确定。

TensorFlow Lite Micro

TensorFlow Lite Micro 是 TensorFlow Lite 针对 AIoT 的轻量级 AI 引擎,用于在微控制器和其他资源受限的设备上运行机器学习模型。关于 TensorFlow lite Micro 的具体用法,可参考 官方网站。TensorFlow Lite Micro 作为 Arm Endpoint AI 的重要组成部分,其软件执行策略如下图所示:

图 3.1 Arm Endpoint AI 软件执行策略

在离线端 (Host/Offline),开发者通过 TensorFlow 训练 AI 网络并量化为 TensorFlow Lite 格式的文件后,开源 NN optimizer (Vela) 对量化后的网络进行优化。在设备端 (Target/Device),TensorFlow Lite Micro 解析优化后的文件,并对网络任务进行调度,Ethos-U 支持的算子会被优先调度到 Ethos-U上执行,否则将被调度到 Arm 开源加速库 CMSIS-NN 或者 TensorFlow Lite Micro 的 Reference Kernel 上运算。

Evaluation Kit

Arm 通过开源 Evaluation Kit 工具帮助开发者以及合作伙伴提前体验 M55+U55 软件的易用性和性能优势。Package 中包含了 6 个 AI 用例,方便开发者快速熟悉代码以及环境,合作伙伴也可在其基础上开发自己的 demo。它们分别是:

1. Image Classification - 图像分类
2. Keyword Spotting (KWS) - 关键词唤醒
3. Automated Speech Recognition (ASR) - 自动语言识别
4. KWS and ASR - 关键词唤醒和自动语言识别
5. Anomaly Detection - 异常检测
6. Generic inference runner - 通用推理框架

参考用例描述以及对应的 AI 模型如下图所示:

image

图 3.2 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 平台可得到准确性能数据)。

链接:

接下来再给大家介绍下 Evaluation Kit 的软件架构,如下图所示:

image

图 3.3 Evaluation Kit 软件架构

我们知道,大部分的 AI 用例都包含大量通用代码 (Application common),例如初始化硬件抽象层 (HAL)。借助 HAL,应用程序通用代码可以在 x86 或 Arm Cortex-M 架构上运行。为什么要设计 HAL 层做抽象呢?因为大量的 AI 应用都离不开前后数据处理操作。在端侧设备上,这部分工作可由 Cortex-M 胜任,为了方便大家设计与调试,我们可以将其执行在 x86 平台做效果验证。对于应用程序的 AI 部分,TensorFlow lite Micro 推理引擎用于对神经网络的运算进行调度。

接下来看一下 Evaluation Kit 的目录结构:

image

图 3.4 Evaluation Kit 的目录结构

1. dependencies:包含该项目的所有第三方依赖项。
2. docs:包含 AI 应用程序的文档。
3. scripts:包含构建程序相关的脚本和源代码。
4. source:包含平台和 AI 应用程序的所有源代码。与 Ethos-U55 NPU 软件框架相关的通用代码位于 application 子文件夹中,包含构成 AI 应用程序的所有核心源代码:hal 为硬件抽象层,提供统一的 API 对硬件资源进行访问;main 目录包含 main 函数以及平台初始化函数,它还包含调用所有用例所实现的通用代码;tensorflow-lite-micro 包含 TensorFlow Lite Micro 的 API 封装,用来实现初始化神经网络模型,运行推理并访问推理结果等通用功能。use_case 包含特定 AI 用例的源代码,将其单独列出可以隔离特定的 AI 应用程序逻辑,通用代码也会调用此处的代码对特定用例进行配置,这也使添加新用例变得更加容易。
5. tests:在 x86 平台上的 unit test 集。

要在 Cortex-M 和 Ethos-U55 NPU 上运行 AI 应用程序,请按照以下步骤操作:

1. 安装并配置必要的环境。
2. 使用 Vela 编译器为 Ethos-U 生成优化的神经网络模型。Vela 是 Arm 针对 Ethos U 设计的开源编译器,用于对模型离线优化。
3. 配置构建系统。
4. dependencies:包含该项目的所有第三方依赖项。
5. 在 FVP 或者 FPGA 上执行应用。

具体操作命令可以参考 Evaluation Kit 开源网站。

image

图 3.5 基于 FVP 的 Evaluation Kit 交互界面

将 Evaluation Kit 成功部署在 FVP 后,执行相关的 AI 应用时,会弹出用户交互界面,如图 3.5 所示。左半部分用于模拟 FPGA 开发板上的液晶显示,可以输出图片,打印结果等信息,而右侧窗口可以用来输出程序版本,日志,模型结构等信息,还可用于人机间的交互。

结语

Cortex-M55 和 Ethos-U 是 Arm Endpoint AI 战略中具有跨时代意义的产品,配合 Evaluation Kit 开源工具以及 CMSIS 加速库,给予开发者以及合作伙伴极好的用户体验。今后我们会在越来越多的 IoT 产品中看到 AI 的应用,而 Arm 作为 IP 行业的领导者,将不断结合产业需求与自身生态优势,赋能 AI 的发展。

中文:TensorFlow 公众号