172、TinyML模型部署最佳实践:硬件加速器集成
TinyML模型部署最佳实践:硬件加速器集成昨晚调试一块STM32U5的板子,跑一个MobileNetV2量化模型,推理时间死活卡在380ms下不来。翻来覆去查了一整夜,最后发现是DMA传输配置里一个对齐位没设对——硬件加速器就在那儿闲着,CPU在那边吭哧吭哧搬数据。这种坑,踩一次记一辈子。硬件加速器不是万能药,是双刃剑很多刚入坑TinyML的朋友,一听说板子上有NPU或者DSP,眼睛就亮了,觉得模型部署上去就能起飞。现实往往很骨感:加速器用不好,反而比纯CPU跑还慢。我见过最离谱的案例,有人在Cortex-M7上挂了个外部NPU,结果每次推理前要花200ms做数据格式转换,推理本身才50ms。这还不如直接在M7上跑纯CPU推理,至少省了那200ms的转换开销。硬件加速器集成的核心矛盾在于:加速器擅长的是特定模式的密集计算,而TinyML模型往往需要频繁的数据搬运和格式转换。这两者之间的鸿沟,才是真正需要填的坑。先搞清楚你的加速器是什么脾气不同加速器的性格差异巨大。CMSIS-NN这种软件库级别的“加速器”,本质上是把卷积运算拆成矩阵乘,利用SIMD指令并行计算。它不需要额外配置,但加速比有限,一般在2-4倍。真正的硬件加速器,比如STM32的MCE(数学协处理器)、NXP的eIQ NPU、或者GAP8的硬件卷积引擎,各有各的脾气。以STM32U5的MCE为例,它只支持特定尺寸的卷积核(3x3、5x5),而且输入输出通道数必须是4的倍数。如果你的模型里混了个1x