2. TinyML基础回顾

TinyML(微型机器学习)是指在极低功耗、极小体积的嵌入式设备上运行机器学习模型的技术体系。它并非简单地将模型“压缩”后塞入单片机,而是涉及模型设计、量化压缩、运行时优化、硬件适配与系统级功耗管理的综合工程。在编写评估报告之前,必须对TinyML的边界条件有清晰认知:评估的对象不是“一个模型”,而是“模型+运行时+硬件+电源+应用场景”的完整系统。本章将围绕TinyML的定义、典型应用场景以及边缘设备的三大约束(内存、算力、功耗)展开,重点分析这些约束如何直接决定评估指标的选取、测量方法和阈值设定。

TinyML评估约束传导链路 TinyML定义 模型+运行时+硬件+场景 内存约束 Flash / RAM / 缓存 算力约束 MACs / 指令集 / 频率 功耗约束 峰值 / 平均 / 待机 模型指标 准确率 / 召回率 / F1 资源指标 模型大小 / 峰值RAM / 延迟 部署风险 数值溢出 / 掉电 / 温漂 评估报告编写 指标量化 → 阈值判定 → 风险分级 → 结论建议 约束决定评估维度,评估维度决定报告结构

上图展示了TinyML评估的核心逻辑:边缘设备的内存、算力、功耗三大约束,决定了评估报告必须覆盖模型指标、资源指标和部署风险三个维度。下面逐一展开。

2.1 TinyML定义与评估边界

核心原理:TinyML不是单一技术,而是嵌入式机器学习(Embedded ML)的工程化落地。其典型特征包括:模型参数量通常在几十KB到几MB之间;推理过程在MCU(微控制器)或极低功耗MPU上完成;系统总功耗预算往往在毫瓦级甚至微瓦级;设备通常依赖电池或能量采集供电,无法依赖云端算力。因此,TinyML评估报告必须明确“评估边界”——是评估模型本身(如准确率)、评估模型在特定硬件上的运行表现(如延迟、内存占用),还是评估整个系统的长期可靠性(如电池寿命、热稳定性)。边界不同,指标体系和测量方法完全不同。

评估边界判断方法:在报告开篇必须回答三个问题:① 评估对象是“裸模型”还是“部署后的系统”?② 评估目标是“选型对比”还是“验收交付”?③ 评估环境是“实验室理想条件”还是“现场真实工况”?这三个答案决定了后续所有指标的选择和权重分配。

2.2 典型应用场景及其评估侧重

TinyML的典型应用场景包括:关键词唤醒(KWS)、异常声音检测、振动故障诊断、人体活动识别(HAR)、视觉唤醒(如人脸检测)、工业预测性维护、可穿戴健康监测、智能家居传感器融合等。不同场景对评估指标的侧重差异极大。

应用场景典型硬件核心评估指标关键约束
关键词唤醒Cortex-M4F @ 64MHz唤醒率、误唤醒率、响应延迟RAM < 16KB,持续监听功耗 < 1mW
振动故障诊断Cortex-M7 @ 400MHz分类准确率、频谱计算延迟需FFT缓冲,Flash < 512KB
人体活动识别Cortex-M33 @ 100MHzF1分数、推理频率(Hz)6轴IMU数据,RAM < 32KB
视觉唤醒带有NPU的SoCmAP、帧率(FPS)、检测精度需图像帧缓冲,功耗 < 100mW
工业预测性维护多核MCU + 无线模块剩余寿命预测误差、通信开销需长期运行,平均功耗 < 5mW

判断方法:在编写评估报告时,应先明确应用场景的“实时性等级”和“误判代价”。例如,关键词唤醒的误唤醒率直接影响用户体验,而工业故障诊断的漏报率可能造成设备损坏。评估报告中应针对场景设定不同的指标权重和合格阈值,而非使用统一的“准确率>90%”这类笼统标准。

2.3 内存约束对评估的影响

核心原理:边缘设备的内存分为Flash(存储模型权重和代码)和RAM(运行时数据、中间特征图、激活值)。评估时必须区分“模型静态大小”和“运行时峰值RAM”。许多模型在PC上运行良好,但部署到MCU后因RAM不足而无法启动,或因Flash不足而无法烧录。

操作流程:评估内存指标时,应使用以下步骤:① 使用工具(如TensorFlow Lite Micro的arena大小计算)获取模型推理所需的峰值RAM;② 测量模型权重经量化后的实际Flash占用(注意:Flash还包含运行时库、调度代码和应用程序);③ 检查是否存在内存碎片问题——频繁的Tensor分配可能导致堆碎片化,尤其在FreeRTOS等实时系统中;④ 验证内存对齐要求(如CMSIS-NN需要4字节对齐)。

常见误区:只报告“模型大小=200KB”而不说明Flash剩余空间和RAM峰值。实际上,一个200KB的模型可能需要额外的50KB RAM用于中间特征图,如果目标MCU只有64KB RAM,则部署必然失败。评估报告必须同时给出Flash占用、RAM峰值和系统剩余余量。

2.4 算力约束对评估的影响

核心原理:算力约束体现在MCU的MACs(乘加运算)吞吐量、指令集支持(如是否支持SIMD、FPU、DSP扩展)以及时钟频率。评估延迟时,不能仅看模型的总MACs,还要考虑算子是否被硬件加速。例如,Cortex-M4F的FPU可以加速浮点运算,但若模型已量化为int8,则FPU反而闲置,此时CMSIS-NN的SIMD指令才是关键。

案例拆解:某振动故障诊断项目,目标硬件为STM32F767(Cortex-M7 @ 216MHz,支持双精度FPU)。初始模型为1D-CNN,总MACs为2.3M,在PC上推理延迟为3ms。部署后实测延迟为45ms,远超预期的10ms。分析发现:模型使用float32计算,但CMSIS-NN的优化库主要针对int8;且卷积核大小为5,无法充分利用M7的SIMD宽度。后将模型量化为int8,并改用ARM的优化算子,延迟降至12ms。此案例说明:评估算力时,必须结合具体硬件指令集和算子优化情况,而非仅看MACs理论值。

经验提醒:在评估报告中,建议同时给出“理论计算量(MACs)”和“实测延迟(ms)”,并注明使用的推理框架版本和算子优化选项。如果实测延迟与理论估算差距超过2倍,应分析是内存带宽瓶颈、算子未优化还是时钟频率限制。

2.5 功耗约束对评估的影响

核心原理:功耗是TinyML最独特的约束。评估功耗不能只看“推理时的峰值电流”,还要考虑“待机功耗”“唤醒功耗”和“平均功耗”。对于电池供电设备,平均功耗决定了电池寿命;对于能量采集设备,峰值功耗不能超过采集电路的输出能力。

操作流程:功耗评估应包含以下测量:① 待机模式电流(通常为µA级);② 推理模式平均电流(使用电流探头或功耗分析仪,采样率至少1kHz);③ 峰值电流(用于评估电源稳压器容量);④ 唤醒-推理-睡眠周期的总能量(单位µJ)。评估报告中应给出“单次推理能耗”和“每日总能耗”两个关键值。

实战场景:某可穿戴健康监测设备,使用MAX78000(带CNN加速器),电池容量为100mAh。模型为3层CNN,单次推理能耗为0.8mJ。若设备每10分钟推理一次,每日推理144次,总能耗为115.2mJ。加上传感器采样(每日约50mJ)和无线传输(每日约200mJ),总日均能耗约365mJ。电池可用能量为100mAh × 3.7V = 370mWh = 1332J,理论续航约3.6年。但若考虑电池自放电和电源转换效率(约85%),实际续航约2.8年。此案例说明:功耗评估必须从“单次推理”扩展到“系统级每日能耗预算”。

2.6 三大约束的耦合效应与评估报告策略

内存、算力、功耗并非独立约束,而是相互耦合。例如:增加RAM缓冲可以缓存中间特征图,减少重复计算,从而降低算力需求,但会增加RAM占用和待机功耗;提高时钟频率可以缩短推理时间,从而降低“活跃时间”的能耗,但会增加峰值功耗和发热。评估报告必须识别这种耦合关系,避免“单指标优化”导致系统失衡。

耦合关系典型表现评估报告应对策略
内存 ↔ 算力增大特征图缓存可减少重复卷积计算报告应给出“RAM-延迟”权衡曲线
算力 ↔ 功耗降低频率可减少功耗但增加延迟报告应给出“延迟-功耗”帕累托前沿
内存 ↔ 功耗更大的RAM需要更频繁的刷新,增加待机功耗报告应区分“运行功耗”和“待机功耗”

总结复盘:编写TinyML评估报告时,应遵循“约束驱动指标”的原则。首先明确目标硬件的Flash/RAM上限、算力上限和功耗预算;然后根据应用场景确定关键模型指标;最后在报告中同时呈现模型指标、资源指标和部署风险,并说明三者的权衡关系。避免只报告“准确率”而忽略“该准确率下需要多少RAM和功耗”的常见错误。

风险提示:在评估报告中,如果发现模型在目标硬件上无法满足内存或功耗约束,应明确给出“不可部署”的结论,而不是通过降低精度要求来强行通过。建议在报告末尾附上“约束违反清单”,逐项列出未满足的指标及其影响,供决策者参考。