3. TinyML核心概念
TinyML 的目标不是把云端大模型原封不动搬到单片机上,而是在毫瓦级功耗、几十到几百 KB 内存、几十 MHz 主频的极端约束下,让传感器数据在本地完成推理。理解这一章的关键,是把“边缘计算”看作部署位置,“模型压缩”看作手段集合,而“量化、剪枝、知识蒸馏”是三种最常用的压缩技术,最后再用“部署约束”把技术选择拉回工程现实。
一、边缘计算:把推理推到传感器旁边
在工业场景中,边缘计算指数据不经过网关或云端,直接在 MCU、SoC 或传感器模组上完成特征提取与推理。它的价值不只是“省流量”,更在于确定性时延、数据隐私和断网可用性。例如振动监测需要在 10 ms 内判断轴承是否异常,若把原始 20 kHz 采样上传云端,网络抖动会直接破坏实时性;而在本地做 FFT 加轻量分类器,响应可稳定在毫秒级。
边缘计算并非“越靠近传感器越好”。它需要权衡算力、内存、功耗和模型精度。典型 TinyML 推理链路是:传感器采样 → 预处理(滤波/分帧/FFT)→ 特征输入 → 量化模型推理 → 阈值/类别输出 → 执行器或上报。这条链路中,预处理往往比推理更耗资源,因此模型压缩必须与信号处理协同设计。
二、模型压缩:量化、剪枝与知识蒸馏
量化是把 FP32 权重和激活映射到 INT8、INT4 甚至二值。它直接减少存储和带宽,并让 MCU 使用整数乘加指令加速。常见做法是训练后量化(PTQ)和量化感知训练(QAT)。PTQ 简单,但精度损失可能较大;QAT 在训练中模拟量化误差,通常能保住 1% 以内的精度下降。
# TensorFlow Lite 训练后 INT8 量化示例
converter = tf.lite.TFLiteConverter.from_saved_model(model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_data_gen
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.int8
converter.inference_output_type = tf.int8
tflite_quant_model = converter.convert()
剪枝是移除对输出贡献小的权重或通道。非结构化剪枝把个别权重置零,压缩率高但需要稀疏计算支持;结构化剪枝直接删掉整个卷积核或神经元,能真正减小模型体积并提升 MCU 上的执行效率。工业振动模型中,结构化剪枝常能去掉 30%~50% 通道而精度损失很小。
知识蒸馏是让一个小型“学生模型”模仿大型“教师模型”的输出分布。教师模型可以是云端高精度模型,学生模型部署在 MCU 上。蒸馏的损失函数通常由硬标签损失和软标签损失组成,软标签携带了类别间的相似性信息,能显著提升小模型泛化能力。
三、部署约束:把“能跑”变成“可量产”
部署约束是 TinyML 与普通深度学习最本质的区别。它通常包括四类硬指标:存储(Flash)、内存(RAM)、算力(MCU 主频与指令集)和功耗(电池寿命或能量采集)。此外还有时延、模型更新方式和安全启动等工程要求。
| 约束维度 | 典型指标 | 对模型设计的影响 |
|---|---|---|
| Flash 存储 | 64 KB ~ 1 MB | 限制参数量,优先 INT8 量化与结构化剪枝 |
| RAM 内存 | 16 KB ~ 256 KB | 限制中间激活,需控制输入窗口与层数 |
| 算力 | CMSIS-NN / NPU 加速 | 优先深度可分离卷积、INT8 乘加 |
| 功耗 | μW ~ mW 级 | 降低推理频率,采用事件触发与休眠调度 |
| 时延 | 1 ms ~ 100 ms | 限制模型深度,预处理与推理需并行设计 |
四、案例:轴承振动异常检测的压缩路径
某工业电机轴承监测任务,原始 CNN 模型为 FP32、1.2 MB、推理 45 ms,无法放入 STM32F4 的 192 KB RAM。工程团队按以下顺序压缩:
- 用云端大模型作为教师,蒸馏出通道数减半的学生模型,精度从 97.2% 降到 96.5%;
- 对学生模型做结构化剪枝,去掉 40% 卷积核,Flash 降至 380 KB;
- 再做 INT8 量化感知训练,Flash 降至 95 KB,RAM 峰值 42 KB,推理 8 ms;
- 最后用 CMSIS-NN 加速,功耗从 12 mW 降到 3.8 mW,满足纽扣电池 6 个月续航。
五、常见误区与复盘
- 误区一:只追求压缩率。压缩率再高,若精度跌破业务阈值,模型就是无效的。应先定义可接受精度下限,再反推压缩预算。
- 误区二:忽略预处理开销。FFT、滤波和分帧可能占用比推理更多的 RAM 和 CPU,必须与模型一起做资源预算。
- 误区三:量化后不校准。INT8 量化需要代表性数据集校准,否则激活分布偏移会导致精度骤降。
- 误区四:忽视部署工具链。不同 MCU 对算子支持不同,需提前确认 TFLite Micro、CMSIS-NN 或厂商 NPU 的算子覆盖范围。
总结来看,边缘计算定义了 TinyML 的战场,量化、剪枝和知识蒸馏是三种互补的压缩武器,而部署约束是决定胜负的规则。只有把四者放在同一张资源预算表里协同设计,才能让模型真正跑在工业现场的传感器节点上。