Skip to main content
QUICK REVIEW

[论文解读] CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs

Oliveira, Afonso, Costa, Diogo|arXiv (Cornell University)|Jan 19, 2018
Advanced Neural Network Applications参考文献 6被引用 304
一句话总结

本文提出 CMSIS-NN,一套针对 Arm Cortex-M CPU 优化的神经网络内核,可在资源受限的物联网设备上高效执行量化深度神经网络的推理。通过采用定点量化(8 位和 16 位)、SIMD 优化的矩阵乘法、原地池化以及基于 SWAR 的激活函数,CMSIS-NN 在 CIFAR-10 CNN 上相比基线实现实现了 4.6 倍的吞吐量提升和 4.9 倍的能效提升。

ABSTRACT

Deep Neural Networks are becoming increasingly popular in always-on IoT edge devices performing data analytics right at the source, reducing latency as well as energy consumption for data communication. This paper presents CMSIS-NN, efficient kernels developed to maximize the performance and minimize the memory footprint of neural network (NN) applications on Arm Cortex-M processors targeted for intelligent IoT edge devices. Neural network inference based on CMSIS-NN kernels achieves 4.6X improvement in runtime/throughput and 4.9X improvement in energy efficiency.

研究动机与目标

  • 在用于物联网边缘设备的功耗受限 Arm Cortex-M 微控制器上实现高效的深度神经网络推理。
  • 最小化在无 FPU 支持的 32 位 RISC 处理器上部署神经网络时的内存占用和计算开销。
  • 开发一个支持定点量化和跨多种神经网络层的高效内核执行的软件栈。
  • 在低端嵌入式系统上实现面向实时边缘人工智能工作负载的高性能和高能效。

提出的方法

  • 采用 2 的幂次缩放的 8 位和 16 位定点量化,避免浮点运算并减少内存使用。
  • 使用 CMSIS 优化的数据类型转换(q7_t 到 q15_t),通过符号扩展和最小化重排,加速内层计算。
  • 利用 SMLAD SIMD 指令实现 2×2 分块矩阵乘法,高效处理 q15_t 数据的 MAC 操作。
  • 引入原地分拆 x-y 池化,消除临时内存分配,相比基于窗口的池化实现 4.5 倍速度提升。
  • 应用基于 SWAR 的位操作,通过 QSUB8 指令实现符号位掩码,加速 ReLU 操作。
  • 采用基于查表的 sigmoid 和 tanh 函数,结合区域特定粒度,在纯整数 CPU 上实现精度与性能的平衡。

实验结果

研究问题

  • RQ1如何在内存有限且无 FPU 的 Arm Cortex-M CPU 上高效执行深度神经网络推理?
  • RQ2何种定点量化策略能在纯整数处理器上最大化性能与精度,同时最小化计算成本?
  • RQ3原地池化与优化的矩阵乘法能否减少嵌入式神经网络的内存占用并提升吞吐量?
  • RQ4基于 SWAR 的激活函数实现能在 8 位数据类型上多大程度上提升性能?
  • RQ5整体内核栈与基线实现相比,在吞吐量和能效方面表现如何?

主要发现

  • 与使用标准 CMSIS-DSP 函数的基线实现相比,CMSIS-NN 内核在 CIFAR-10 CNN 上实现 4.6 倍的吞吐量提升和 4.9 倍的能效提升。
  • 在 216 MHz 的 Arm Cortex-M7 上,优化后的 CNN 以每秒 10.1 幅图像的速度运行,准确率达到 79.9%,峰值内存使用量仅为 133 KB。
  • 原地分拆 x-y 池化相比传统基于窗口的池化,实现 4.5 倍速度提升,且无额外内存开销。
  • 通过在 8 位数据上应用 SWAR 技术,ReLU 内核相比传统标量实现实现约 4 倍速度提升。
  • 量化中采用 2 的幂次缩放,消除了对浮点反量化的需求,使无 FPU 支持的 CPU 上实现全整数计算成为可能。
  • 部分 im2col 变换将内存占用从 332 KB 降低至 133 KB,使网络在 NUCLEO-F746ZG 开发板上可行。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。