1. 课程导入
TinyML(Tiny Machine Learning)是指在功耗、存储与算力都极其受限的微控制器(MCU)上,直接运行机器学习推理的一类工程实践。它并不是把云端模型简单“缩小”,而是围绕MCU的SRAM、Flash、主频、功耗预算与实时性约束,重新设计数据采集、特征处理、模型结构、量化压缩、算子实现与部署验证的完整链路。理解这一点,是学习本课程的前提:TinyML的核心不是“模型有多深”,而是“在毫瓦级预算内能否稳定完成一次有效推理”。
一、核心原理:TinyML到底“小”在哪里
传统AI推理通常依赖GPU或云端服务器,模型以FP32为主,内存以GB计,功耗以瓦计。TinyML则把推理下沉到MCU端,典型资源边界如下:
- 算力:主频常见为24MHz~480MHz,无MMU、无操作系统或仅RTOS,缺少大容量缓存。
- 存储:SRAM常为16KB~512KB,Flash常为128KB~2MB,模型权重与中间张量必须精打细算。
- 功耗:常由纽扣电池或能量采集供电,平均功耗需控制在毫瓦甚至微瓦级。
- 实时性:推理必须在毫秒级完成,且不能阻塞采样、控制与通信任务。
因此,TinyML推理系统工程的关键词是“协同”:模型结构要适配MCU算子,量化要匹配指令集,内存布局要匹配SRAM,调度要匹配实时任务。任何单点优化都无法替代系统级权衡。
一句话定义:TinyML是在MCU级资源约束下,以可量化、可部署、可验证为目标,完成“感知—特征—推理—决策”闭环的嵌入式机器学习工程方法。
二、发展背景:为什么现在必须学TinyML
TinyML的兴起由三条曲线交汇推动。第一,物联网设备数量爆发,海量传感器产生连续数据,全部上云既费带宽又费电;第二,MCU厂商在Cortex-M、RISC-V等内核上加入DSP与NPU扩展,使INT8推理成为可能;第三,TensorFlow Lite for Microcontrollers、CMSIS-NN、microTVM等工具链成熟,把“训练—量化—转换—部署”流程标准化。三者叠加,让“在传感器端直接做判断”从实验室走向量产。
典型场景包括:
- 预测性维护:在电机振动传感器节点上识别异常频谱,仅上传告警而非原始波形。
- 关键词唤醒:在低功耗麦克风前端检测“唤醒词”,主控平时休眠。
- 手势与活动识别:在可穿戴IMU上区分步行、跑步、跌倒。
- 视觉质检:在MCU+低分辨率摄像头模组上做缺陷初筛。
这些场景的共同点是:数据隐私敏感、通信成本高、响应必须快、供电受限。TinyML不是替代云端,而是把“第一道判断”放在最靠近物理世界的地方。
三、MCU推理系统工程的整体学习路径
本课程共30章,按“基础—模型—部署—优化—系统—实战”六段推进。下图给出整体学习路径与各阶段目标,便于你建立全局地图。
学习时建议按“先跑通、再优化、后系统”的顺序推进。很多初学者一上来就追求极致压缩,结果模型精度崩塌、调试困难。更稳妥的路径是:先用浮点模型在PC上验证算法可行性,再量化到INT8,最后在目标MCU上做内存与延迟基准。
四、方法流程:从需求到部署的六步法
- 需求定义:明确输入传感器、采样率、窗口长度、输出类别、精度下限与功耗上限。
- 数据与特征:采集现场数据,做归一化、分帧、滤波,确定特征维度。
- 模型训练:选择轻量结构(如DS-CNN、TinyMLP、1D-CNN),控制参数量。
- 量化转换:使用训练后量化或量化感知训练,生成INT8 TFLite模型。
- 部署集成:将模型转为C数组,接入TFLM解释器,配置Tensor Arena。
- 基准与迭代:测量推理时间、SRAM峰值、Flash占用与功耗,回到模型或算子层优化。
下面是一个典型的部署配置片段,用于说明模型与内存参数如何进入工程:
// model_settings.h
#define kTensorArenaSize (64 * 1024) // 64KB SRAM 张量区
#define kNumClasses 4 // 步行/跑步/跌倒/静止
#define kFeatureSize 128 // 每帧特征维度
#define kWindowSize 32 // 时间窗口帧数
// main.cpp
static tflite::MicroInterpreter interpreter(
model, resolver, tensor_arena, kTensorArenaSize);
interpreter.AllocateTensors();
int8_t* input = interpreter.input(0)->data.int8;
// 填充 input 后调用 interpreter.Invoke()
五、案例/场景:一个电机异常检测任务
假设某工厂要在电机端加装振动传感器节点,目标是识别“正常/不平衡/轴承磨损”三类状态。若把原始振动数据全部上传云端,单节点每天产生数百MB数据,电池无法支撑。采用TinyML方案后,节点每2秒采集一次256点振动,计算FFT幅值特征,送入一个约12KB的INT8全连接网络,推理耗时约8ms,仅当置信度超过阈值时才通过LoRa上传告警。这样平均功耗从数十毫安降到几百微安,电池寿命从数天延长到数月。
提示:判断一个任务是否适合TinyML,可以问三个问题:数据是否连续产生?决策是否只需局部信息?延迟是否要求毫秒级?三者满足越多,端侧推理价值越大。
六、常见误区与复盘
| 误区 | 表现 | 正确做法 |
|---|---|---|
| 把PC模型直接搬到MCU | Flash溢出、SRAM不足、推理超时 | 先量化,再按MCU算子集裁剪结构 |
| 只看模型精度 | 精度高但延迟大、功耗高 | 建立精度-延迟-内存-功耗四维指标 |
| 忽略数据分布 | 实验室准确,现场误报多 | 用现场数据做训练与验证,保留回流机制 |
| Tensor Arena设置过小 | AllocateTensors失败或运行崩溃 | 用基准工具测量峰值,留20%余量 |
注意:TinyML不是“越小越好”。过度压缩会带来精度下降与维护成本上升。工程目标是“在约束内达到可接受的业务指标”,而不是追求极限压缩比。
本章建立了TinyML的定义、发展背景与学习路径。接下来你将逐步进入MCU资源模型、模型设计、量化、部署与系统优化等具体环节。请记住:TinyML推理系统工程的本质,是在资源、精度、延迟与功耗之间做可验证的权衡。