TinyML模型很少在所有指标上同时最好。更深网络可能提高少量识别效果,却让Arena、推理时间和能量超过系统预算。模型选择应先淘汰不满足硬约束的方案,再比较剩余候选的业务收益。
Pareto前沿提供一种清晰方法:当一个模型在效果不低于另一个模型的同时占用更少资源,后者就没有继续保留的理由。
| 先用Flash、RAM、截止时间和最低效果做硬筛选,再在可行模型中比较功耗、维护和误报漏报成本。 |
完成本篇后,你应该能够
模型选择没有单一最高分。先淘汰超过Flash、RAM或截止时间的方案,再在合格方案中比较效果和余量。 |
一、把硬约束与优化目标分开
Flash上限、RAM上限、最坏执行时间和最低召回率通常属于硬约束,任何一项不满足都不能进入候选。平均功耗、模型大小和宏平均F1可以作为进一步优化目标。
约束需要留有余量。Arena刚好不报错、推理平均值刚好低于步长,都无法覆盖异常路径和时间抖动。
图1:效果提升趋缓时,资源更大的候选可能被Pareto前沿淘汰
二、统一实验条件才能公平比较
所有候选使用相同训练集、验证集、测试集和预处理。量化方式、运行时、编译优化、主频和Cache状态也要固定。
如果一个模型使用更长窗口或额外频谱特征,预处理成本必须计入总时间和能量。模型推理时间单独比较会低估系统成本。
表1:候选模型评审表应同时包含效果与资源
| 类别 | 至少记录 | 判定方式 |
|---|---|---|
| 效果 | 每类Precision/Recall/F1、未知拒识 | 独立测试集 |
| 内存 | 固件Flash、静态RAM、Arena峰值 | 构建报告与运行时记录 |
| 实时 | 预处理、推理、后处理、P95/WCET | 目标板测量 |
| 能量 | 单次能量与每秒推理次数 | 电流波形积分 |
三、Pareto前沿删除被全面支配的模型
模型A效果更高、资源更少时,模型B被全面支配。保留前沿上的候选,再根据错误成本选择偏向效果或偏向资源的点。
独立测试效果差异很小时,还要考虑统计波动。多次训练或置信区间能够避免把随机差异当成稳定提升。
四、最终选择写成决策记录
决策记录应列出候选、淘汰原因、测试环境和已知限制。这样后续硬件变化或新增类别时,可以重新判断哪些模型值得恢复评估。
选择较小模型不意味着停止优化数据。很多项目继续改善标签、设备覆盖和未知类别,收益高于增加网络深度。
Python:按硬约束筛选候选模型
def feasible(m, limits): |
先写硬门槛,避免训练结果改变验收口径
硬门槛来自产品:关键类别召回率至少多少、每小时误报不超过多少、最坏推理时间小于多少、Arena与Flash上限是多少。它们应在候选模型出现前确定。
准确率、延迟、RAM和能量使用不同单位,直接加权求一个总分会隐藏越界。模型即使准确率高1%,只要最坏延迟超过采样步长,仍不能进入部署。
测量要带条件和重复统计。延迟记录预热、主频、Cache、编译优化和中断状态;能量记录工作周期;模型效果使用固定独立数据。没有统一条件的表格无法比较。
候选模型决策字段
| 类别 | 字段 | 用途 |
|---|---|---|
| 效果 | 分组recall/FP率 | 满足业务错误成本 |
| 资源 | Flash/Arena/栈 | 满足容量与余量 |
| 实时 | P50/P95/max | 满足截止时间 |
| 维护 | 算子/版本/复杂度 | 降低升级风险 |
Pareto前沿保留真正的权衡方案
若模型A准确率更高、延迟更低、RAM更少,则模型B被A全面支配,可以删除。Pareto前沿上的模型各有至少一个优势,需要结合业务优先级选择。
前沿不能代替硬门槛。一个RAM超限但准确率很高的模型即使在数学前沿上,也应先淘汰。通过门槛后,可以偏向更大资源余量,避免后续协议栈、日志或模型更新无空间。
最终决策应记录未选择方案及原因。未来硬件或需求变化时,可以从历史候选重新评估,而不必凭记忆重复实验。
| A支配B:A在所有目标上不差于B,并至少一项严格更好。 效果指标越大越好;延迟、RAM、Flash和能量越小越好。 |
动手:筛选硬约束并计算Pareto前沿
脚本包含6个假设候选模型。它先按召回率、Arena和延迟门槛筛选,再找出非支配方案。数值只用于学习决策方法。
实验环境与输入
- Python 3标准库。
- 保存为 `pareto_models.py` 并运行。
- 将来用统一测试报告替换示例数据。
按顺序完成实验
- 运行并查看被硬门槛淘汰的原因。
- 核对Pareto前沿中的模型互有优劣。
- 把延迟门槛从15 ms收紧到10 ms。
- 增加一个全面优于候选B的模型,确认B从前沿消失。
可直接运行:硬门槛与Pareto筛选
models = [ |
先读懂代码中的关键路径
- 硬门槛先构造eligible集合,失败模型不会进入Pareto计算。
- dominates要求所有目标不差且至少一项更好,避免完全相同候选互相删除。
- 效果用越大越好,资源用越小越好;新增指标时必须明确方向。
- 示例数字是假设候选,真实表必须来自同一数据和固件条件。
你应该观察到什么
- D因延迟或Arena失败,F因召回率失败。
- 前沿只保留没有被其他合格模型全面压过的候选。
- 收紧门槛会先改变合格集合,再改变前沿。
成功标准
- 所有候选在同一数据、固件和测量条件下产生。
- 任何硬门槛失败都不能被综合分抵消。
- 决策记录包含选择理由、余量和未选方案。
失败时从哪里查起
多目标选择偏差
| 现象 | 问题 | 改进 |
|---|---|---|
| 每次选择都变 | 测量条件或数据变化 | 固定版本并报告重复统计 |
| 高分模型仍无法部署 | 硬约束混入加权总分 | 先门禁再排序 |
| 前沿候选太多 | 目标过多或测量噪声 | 按业务合并指标并设置实质差异 |
候选选择的价值在于让取舍可审计;最终模型是满足约束且保留合理余量的方案。
把实验迁移到真实MCU项目
在自动化测试中,每个模型生成一条带哈希的记录:效果报告、tflite字节、map、Arena、周期和能量。脚本拒绝缺少字段的候选。
前沿上最终选择可偏向资源余量与维护简单度。算子更少、内核更成熟的模型可能比准确率仅高一点但逼近资源上限的模型更稳妥。
候选差异小于测量波动时,不应宣称某模型更优。保存重复试验分布,规定最小实质差异;若两个方案效果相当,优先选择结构简单、余量更大的方案。
把结果再向前推进一步
- 写出你项目不可协商的三项硬门槛。
- 确定每项指标的测量条件和数据来源。
- 为最终选择记录至少一个被拒绝候选及原因。
| 这篇文章的结论模型选择是受约束的多目标决策。先淘汰越过资源和效果底线的方案,再在Pareto前沿上根据业务成本选点。 |
参考资料:
TensorFlow Lite Micro 官方代码仓库
Arm CMSIS-NN 官方文档
STMicroelectronics:STM32H743/753 官方资料
更新时间:2026 年 8 月 5 日