使用 TensorFlow Lite for Microcontrollers 和 CMSIS-NN 加速 Arm 微控制器上的推理
2021 年 2 月 10 日

Arm 的 Fredrik Knutsson 撰写


arm logo

微控制器世界

微控制器 (MCU) 是驱动我们科技环境的小型计算机。每年生产超过 300 亿个,嵌入到从家用电器到健身追踪器的一切事物中。如果你现在在家里,周围就有几十个微控制器。如果你开车,每次驾驶时,都会有几十个微控制器与你同行。使用 TensorFlow Lite for Microcontrollers (TFLM),开发者可以将 TensorFlow 模型部署到这些设备中的许多,从而实现全新的设备端智能形式。

虽然无处不在,但微控制器被设计为价格低廉且节能,这意味着它们只有少量的内存和有限的处理能力。典型的微控制器可能只有几百 KB 的 RAM,以及运行速度低于 100 MHz 的 32 位处理器。随着 TFLM 推动机器学习的进步,现在可以在这些设备上运行神经网络。

microcontroller

在计算资源有限的情况下,重要的是微控制器程序要尽可能高效地运行。这意味着充分利用其微处理器硬件的功能,这需要仔细调整应用程序代码。

许多流行产品中使用的微控制器都是围绕 Arm 的 Cortex-M 架构处理器构建的,后者是 32 位微控制器的行业领导者,出货量超过 470 亿。Arm 的开源 CMSIS-NN 库 提供了针对 Cortex-M 处理器性能最大化的常用神经网络函数的优化实现。这包括使用 DSP 和 M-Profile 向量扩展 (MVE) 指令来硬件加速矩阵乘法等操作。

关键用例的基准测试

Arm 的工程师与 TensorFlow 团队密切合作,开发了使用 CMSIS-NN 在 Arm Cortex-M 内核上提供超快性能的 TensorFlow Lite 内核优化版本。使用 TensorFlow Lite 的开发者可以使用这些优化内核,无需任何额外工作,只需使用最新版本的库即可。Arm 已将这些优化开源,现在开发者可以免费轻松地使用它们!

以下基准测试显示了在几种 TFLM 示例应用程序中介绍的关键用例中,使用 CMSIS-NN 优化内核与参考内核相比的性能提升。测试已在基于 Arm Cortex-M4 的 FPGA 平台上执行。

Table showing performance uplift when using CMSIS-NN kernels

Arm Cortex-M4 处理器支持 DSP 扩展,这使得处理器能够执行 DSP 类指令以加快推理速度。为了进一步提高推理性能,新的 Arm Cortex-M55 处理器支持 MVE,也称为 Helium 技术。

使用 CMSIS-NN 提高性能

到目前为止,以下优化过的 CMSIS-NN 内核已集成到 TFLM 中

 Table showing CMSIS-NN kernels integrated with TFLM

CMSIS-NN 库将定期更新以扩展优化内核的支持,其中提高支持的关键驱动因素是,它应该在特定用例中提供显著的性能提升。关于内核优化的讨论,一个好的起点是在 TensorFlowCMSIS Github 存储库中提出描述您用例的工单。

大多数优化都是专门针对 8 位量化 (int8) 操作实施的,这将是未来改进的重点。

您可以通过按照 示例 附带的说明轻松尝试优化过的内核。例如,要为 SparkFun Edge 构建具有 CMSIS-NN 内核的人员检测示例,可以使用以下命令

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge OPTIMIZED_KERNEL_DIR=cmsis_nn person_detection_int8_bin

最新版本的 TensorFlow Lite Arduino 库 包含 CMSIS-NN 优化,并包含所有示例应用程序,这些应用程序与基于 Cortex-M4 的 Arduino Nano 33 BLE Sense 兼容。

神经处理的下一个飞跃

展望 2021 年,我们可以预期随着包括微型 NPU (神经处理单元) 在内的设备的推出,神经处理将大幅度提升,微型 NPU 与微控制器协同工作。这些微型 NPU 被设计为在嵌入式和物联网设备的限制范围内加速 ML 推理,使用 Arm Cortex-M55 MCU 与新的 Ethos-U55 微型 NPU 配合使用,与以前的微控制器相比,性能提升高达 480 倍。

这种前所未有的 ML 处理能力,将在更小、功耗受限的设备中实现,这将释放大量创新,涵盖从智能家居和城市到工业、零售和医疗保健的各种应用。每个领域都有巨大的创新潜力,拥有数百个子领域和数千个潜在的应用程序,将真正改变人们的生活。

下一篇文章
Accelerated inference on Arm microcontrollers with TensorFlow Lite for Microcontrollers and CMSIS-NN

Arm 的 Fredrik Knutsson 撰写
微控制器世界 微控制器 (MCU) 是驱动我们科技环境的小型计算机。每年生产超过 300 亿个,嵌入到从家用电器到健身追踪器的一切事物中。如果你现在在家里,周围就有几十个微控制器。如果你开车,每次驾驶时,都会有几十个微控制器与你同行。使用 TensorFlow Lite for Microcontrollers (TFLM),开发者可以将 TensorFlow 模型部署到这些设备中的许多,从而实现全新的设备端智能形式。