2、TinyML基础:TinyML定义、典型应用场景、推理工作负载特点、常见硬件平台(MCU、NPU、DSP)简介

TinyML(微型机器学习)是机器学习与嵌入式物联网系统的交叉领域,核心目标是在功耗受限、计算资源有限的微控制器(MCU)、数字信号处理器(DSP)或微型神经网络处理器(NPU)上部署和运行机器学习推理模型。与云端AI依赖大规模GPU集群不同,TinyML强调在设备本地完成数据采集、特征提取和推理决策,从而避免网络传输延迟、保护数据隐私并显著降低系统功耗。理解TinyML的定义边界、工作负载特征和硬件平台差异,是后续进行DVFS(动态电压频率调节)调优的前提——因为DVFS正是针对这些硬件平台的计算与功耗特性,通过动态调整电压和时钟频率来匹配推理任务的实际需求。

TinyML 推理工作负载与硬件平台映射 传感器数据 IMU/麦克风/摄像头 预处理 滤波/归一化/FFT 推理引擎 CNN/RNN/决策树 量化/剪枝模型 硬件平台 MCU (Cortex-M) DSP (HiFi4) NPU (微神经网络) DVFS 调优 动态电压调节 频率缩放 功耗-延迟权衡 推理结果 分类/检测/预测 功耗随频率上升 延迟随频率下降 图例 数据流 计算核心 调优对象

上图展示了TinyML系统从传感器数据采集到推理结果输出的完整链路,以及DVFS调优在其中的作用位置。可以看到,推理引擎运行在MCU、DSP或NPU之上,而DVFS控制模块则直接作用于硬件平台,通过调节电压和频率来影响推理任务的功耗与延迟。这张图也揭示了TinyML调优的核心矛盾:在电池供电的物联网设备中,我们既希望推理足够快以满足实时性要求,又希望功耗足够低以延长设备续航。

2.1 TinyML的典型应用场景与工作负载特征

核心原理:TinyML的应用场景通常具备三个共同特征:始终在线(Always-On)、事件驱动(Event-Driven)和资源受限(Resource-Constrained)。以智能语音唤醒词检测为例,设备需要7×24小时监听麦克风信号,但只有在检测到特定唤醒词时才启动完整应用。这种工作模式决定了推理负载具有明显的突发性——大部分时间处于低负载监听状态,偶尔出现高负载推理峰值。

从工作负载特征来看,TinyML推理与云端AI推理存在本质差异:

维度 云端AI推理 TinyML推理
模型大小 数百MB至数GB 数十KB至数MB
批量大小 大批量(32/64/128) 单样本或极小批量(1-4)
数据类型 FP32/FP16 INT8/INT16/FP16
内存带宽 高(HBM/GDDR) 极低(Flash/SRAM)
延迟要求 100ms-2s 1ms-100ms
功耗预算 数百瓦 1mW-100mW

判断方法:在实际项目中,我们可以通过三个关键指标来判断一个推理任务是否适合TinyML部署:模型参数量(通常应小于1MB)、峰值内存占用(应小于硬件可用RAM的80%)、单次推理延迟(应在应用可接受范围内)。如果模型过大或计算量过高,则需要考虑模型压缩或硬件升级。

经验提醒:在评估TinyML工作负载时,不要只看模型FLOPs(浮点运算次数),更要关注内存访问模式。在MCU上,一次外部Flash读取的功耗可能相当于数百次MAC(乘加运算)。因此,权重驻留策略(是否常驻SRAM)往往比计算量本身更影响功耗。

2.2 常见硬件平台:MCU、DSP与NPU

核心原理:TinyML的硬件平台选择直接决定了DVFS调优的策略空间。目前主流平台分为三类:

  • MCU(微控制器):如ARM Cortex-M4/M7/M33、RISC-V内核。特点:集成度高、外设丰富、成本低,但算力有限(通常主频在几十MHz到几百MHz)。典型代表:STM32L4系列、ESP32-S3、nRF5340。
  • DSP(数字信号处理器):如Cadence Tensilica HiFi4、CEVA-XM6。特点:针对信号处理优化,支持SIMD指令,擅长FFT、滤波等操作,但通用计算能力较弱。通常作为协处理器与MCU搭配使用。
  • NPU(神经网络处理器):如ARM Ethos-U55/U65、Synopsys DesignWare ARC NPX。特点:专为神经网络推理设计,支持硬件加速卷积、池化等操作,能效比极高(可达10 TOPS/W以上),但灵活性较差,对模型结构有要求。

操作流程:在实际项目中选择硬件平台时,建议按以下步骤评估:

  1. 统计模型的计算量(MACs)和参数量(Bytes);
  2. 估算所需算力:所需GOPS = MACs × 2 / 目标延迟(秒);
  3. 对比各平台的峰值算力和能效比;
  4. 评估内存带宽是否满足要求(特别是NPU需要DMA搬运数据);
  5. 考虑外设接口、开发工具链成熟度、量产成本。

案例拆解:以智能门锁中的人脸识别模块为例。某产品原方案采用Cortex-M7 MCU(主频400MHz)运行MobileNetV2模型(输入96×96,INT8量化),单次推理耗时约850ms,功耗约120mW。由于门锁由4节AA电池供电,用户对解锁速度(<500ms)和续航(>1年)都有明确要求。

分析过程:通过profiling发现,推理耗时主要集中在卷积层(占78%),而MCU的SIMD指令利用率仅35%。进一步测试发现,当主频从400MHz降至300MHz时,推理耗时增加到1.2s,但功耗降至65mW——功耗下降46%,延迟却只增加了41%。这说明该工作负载对频率不敏感,存在DVFS调优空间。

最终方案:在MCU旁增加一颗Ethos-U55 NPU(主频200MHz),将卷积层卸载到NPU执行。优化后单次推理耗时降至280ms,系统总功耗降至45mW(MCU@200MHz + NPU@200MHz)。同时,利用DVFS在待机时将MCU降至32MHz(低功耗模式),NPU完全断电,待机功耗降至0.3mW。电池续航从原来的8个月延长至14个月。

风险提示:NPU并非万能方案。对于模型结构不规则(如大量分支、动态shape)或算子类型超出NPU支持范围的情况,可能导致部分层回退到CPU执行,反而增加数据搬运开销。在引入NPU前,务必使用厂商提供的工具链进行算子兼容性分析。

2.3 推理工作负载的功耗特征与DVFS切入点

核心原理:TinyML推理的功耗由三部分组成:计算功耗(与频率成正比,与电压平方成正比)、内存访问功耗(与访问次数和位宽相关)、静态功耗(与工艺和温度相关)。DVFS主要影响计算功耗,而内存访问功耗则需要通过数据复用、缓存优化等手段降低。

对于典型的TinyML推理任务,其功耗-频率关系并非线性。当频率较低时,内存访问时间占比增大,计算单元利用率下降,此时提升频率对延迟改善明显;当频率较高时,内存带宽成为瓶颈,继续提升频率只会增加功耗而延迟改善有限。这个拐点就是DVFS调优的最佳工作点。

判断方法:我们可以通过一个简单的实验找到拐点:

// 伪代码:扫描频率-延迟-功耗关系
for (freq = 50MHz; freq <= 400MHz; freq += 25MHz) {
    set_cpu_freq(freq);
    set_cpu_voltage(voltage_table[freq]);
    delay_ms(10);  // 等待电压稳定
    start_time = get_timer();
    run_inference();
    end_time = get_timer();
    latency = end_time - start_time;
    power = read_power_meter();
    printf("freq=%dMHz latency=%dus power=%dmW\n", freq, latency, power);
}

运行上述扫描后,绘制延迟-功耗曲线,找到边际收益递减点——即频率每提升10%带来的延迟改善小于5%的频率点。该点即为DVFS的上限频率。

案例拆解:某可穿戴设备上的活动识别模型(输入为6轴IMU数据,1D-CNN结构,模型大小48KB)在Cortex-M33(最高主频160MHz)上运行。初始配置固定160MHz,单次推理功耗为8.2mW,延迟为35ms。通过频率扫描发现:

频率(MHz) 延迟(ms) 功耗(mW) 能效比(mJ/次)
160 35 8.2 0.287
120 42 5.1 0.214
96 51 3.4 0.173
80 63 2.5 0.158
64 82 1.8 0.148
48 115 1.3 0.150

从表中可以看出,当频率从160MHz降至80MHz时,能效比持续改善(从0.287降至0.158 mJ/次),但继续降至48MHz时能效比反而恶化(0.150 mJ/次)。这是因为频率过低时,外设和内存的固定开销占比增大。因此,该应用的最佳DVFS工作点为80MHz,相比固定160MHz,能效提升45%。

调优要点:DVFS调优不是简单地降低频率,而是找到能效最优频率点。对于事件驱动的TinyML应用,建议采用两级DVFS策略:空闲态使用最低频率(仅保持外设监听),推理态使用能效最优频率(而非最高频率)。如果推理有硬实时要求,则需在能效和延迟之间做权衡。

2.4 常见误区与总结复盘

误区一:认为最高频率一定带来最佳性能。在内存带宽受限的系统中,过高的频率会导致CPU等待内存,反而增加功耗。应通过实测找到计算与内存的平衡点。

误区二:忽略电压调节的延迟。DVFS切换电压时,需要等待电源管理单元(PMU)稳定,通常需要数十微秒。如果推理任务本身只有几百微秒,频繁切换电压可能得不偿失。此时应考虑预测性DVFS——根据历史推理间隔提前调整频率。

误区三:将所有计算都放在NPU上。NPU虽然能效高,但数据搬运(DMA传输)的功耗不可忽视。对于小模型(<100KB),MCU直接计算可能比NPU更省电,因为省去了数据搬运开销。

误区四:忽视编译优化对DVFS的影响。同样的模型,使用不同编译器(如CMSIS-NN vs 普通C编译)产生的指令序列差异巨大,直接影响计算密度和内存访问模式,进而影响最优DVFS点。建议在调优前先确保编译器已开启最高优化等级。