2021年2月10日
Fredrik Knutsson from Arm
MCU世界
微控制器(MCU)是为我们的技术环境提供动力的微型计算机。每年制造的产品超过300亿种,嵌入到从家用电器到健身追踪器的所有产品中。如果您现在在家中,周围有数十个微控制器。如果您在开车,也会有大量的mcu伴随着您。使用TensorFlow Lite for Microcontrollers(TFLM),开发人员可以将TensorFlow模型部署到许多此类设备中,从而实现全新形式的设备上智能。
尽管无处不在,但微控制器被设计为廉价且节能的,这意味着它们具有少量的存储器和有限的处理能力。一个典型的微控制器可能具有数百千字节的RAM,以及一个运行速度低于100 MHz的32位处理器。随着TFLM在机器学习方面的进步,在这些设备上运行神经网络成为可能。
用最少的计算资源,对微控制器程序进行优化以使其尽可能高效地运行很重要。这意味着要充分利用其微处理器硬件的功能,这需要仔细调整应用程序代码。
流行产品中使用的许多微控制器都是基于Arm基于Cortex-M的处理器构建的,该处理器是32位微控制器的行业领导者,出货量超过470亿。Arm的开源CMSIS-NN库提供了常见神经网络功能的优化实现,可最大限度地提高Cortex-M处理器的性能。这包括利用DSP和M-Profile Vector Extension(MVE)指令来实现硬件加速(例如矩阵乘法)的操作。
关键用例的Benchmark
Arm的工程师与TensorFlow团队紧密合作,开发了TensorFlow Lite内核的优化版本,这些内核使用CMSIS-NN在Arm Cortex-M内核上提供了极快的性能。使用TensorFlow Lite的开发人员只需使用库的最新版本即可使用这些优化的内核,而无需进行其他工作。Arm已在开放源代码中进行了这些优化,并且它们对于开发人员而言是免费且易于使用的!
以下基准测试显示了针对TFLM示例应用程序中的几个关键用例,使用CMSIS-NN优化的内核相对于参考内核时的性能提升。测试已在基于Arm Cortex-M4的FPGA平台上执行:
Arm Cortex-M4处理器支持DSP扩展,使处理器能够执行类似DSP的指令以加快推理速度。为了进一步提高推理性能,新型Arm Cortex-M55处理器支持MVE(也称为Helium技术)。
使用CMSIS-NN改善性能
到目前为止,以下优化的CMSIS-NN内核已与TFLM集成:
CMSIS-NN库将定期进行更新,以扩展对优化内核的支持,其中改善支持的关键驱动因素是,对于给定的用例,它应该显着提高性能。对于有关内核优化的讨论,一个很好的起点是在TensorFlow或CMSIS Github存储库上提出一张描述您的用例的凭单。
大多数优化是专门针对8位量化(int8)操作实现的,这将是未来改进的重点。
您可以按照示例随附的说明轻松尝试优化的内核。例如,要使用CMSIS-NN内核为SparkFun Edge构建人员检测示例,可以使用以下命令:
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年,通过引入包括与微控制器一起工作的microNPU(神经处理单元)的设备,我们可以期待神经处理的显着增长。这些microNPU旨在在嵌入式和IoT设备的限制内加速ML推理,与以前的微控制器相比,使用Arm Cortex-M55 MCU和新的Ethos-U55 microNPU的设备可将性能提高多达480倍。
小型,受功率限制的设备中的ML处理能力达到了前所未有的水平,将在从智能家居和城市到工业,零售和医疗保健等一系列应用中释放出大量创新。这些不同领域中每个领域的创新潜力都是巨大的,有数百个细分领域和成千上万的潜在应用将对人们的生活产生真正的影响。