尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

深入浅出TinyML 20:如何在准确率、延迟、内存和功耗之间选择模型?

深入浅出TinyML 20:如何在准确率、延迟、内存和功耗之间选择模型? TinyML模型很少在所有指标上同时最好。更深网络可能提高少量识别效果却让Arena、推理时间和能量超过系统预算。模型选择应先淘汰不满足硬约束的方案再比较剩余候选的业务收益。Pareto前沿提供一种清晰方法当一个模型在效果不低于另一个模型的同时占用更少资源后者就没有继续保留的理由。先用Flash、RAM、截止时间和最低效果做硬筛选再在可行模型中比较功耗、维护和误报漏报成本。完成本篇后你应该能够区分硬约束、优化目标和测量噪声。用Pareto前沿删除被全面支配的模型。运行候选筛选脚本并输出可追溯的最终决策记录。模型选择没有单一最高分。先淘汰超过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):return (m[flash] limits[flash] andm[ram_peak] limits[ram_peak] andm[p95_ms] limits[deadline_ms] andm[recall] limits[min_recall])survivors [m for m in candidates if feasible(m, limits)]survivors.sort(keylambda m: (-m[f1], m[energy_uj]))先写硬门槛避免训练结果改变验收口径硬门槛来自产品关键类别召回率至少多少、每小时误报不超过多少、最坏推理时间小于多少、Arena与Flash上限是多少。它们应在候选模型出现前确定。准确率、延迟、RAM和能量使用不同单位直接加权求一个总分会隐藏越界。模型即使准确率高1%只要最坏延迟超过采样步长仍不能进入部署。测量要带条件和重复统计。延迟记录预热、主频、Cache、编译优化和中断状态能量记录工作周期模型效果使用固定独立数据。没有统一条件的表格无法比较。候选模型决策字段类别字段用途效果分组recall/FP率满足业务错误成本资源Flash/Arena/栈满足容量与余量实时P50/P95/max满足截止时间维护算子/版本/复杂度降低升级风险Pareto前沿保留真正的权衡方案若模型A准确率更高、延迟更低、RAM更少则模型B被A全面支配可以删除。Pareto前沿上的模型各有至少一个优势需要结合业务优先级选择。前沿不能代替硬门槛。一个RAM超限但准确率很高的模型即使在数学前沿上也应先淘汰。通过门槛后可以偏向更大资源余量避免后续协议栈、日志或模型更新无空间。最终决策应记录未选择方案及原因。未来硬件或需求变化时可以从历史候选重新评估而不必凭记忆重复实验。A支配BA在所有目标上不差于B并至少一项严格更好。效果指标越大越好延迟、RAM、Flash和能量越小越好。动手筛选硬约束并计算Pareto前沿脚本包含6个假设候选模型。它先按召回率、Arena和延迟门槛筛选再找出非支配方案。数值只用于学习决策方法。实验环境与输入Python 3标准库。保存为 pareto_models.py 并运行。将来用统一测试报告替换示例数据。按顺序完成实验运行并查看被硬门槛淘汰的原因。核对Pareto前沿中的模型互有优劣。把延迟门槛从15 ms收紧到10 ms。增加一个全面优于候选B的模型确认B从前沿消失。可直接运行硬门槛与Pareto筛选models [{name:A, recall:0.94, latency:9.5, arena:82, flash:140},{name:B, recall:0.96, latency:13.0, arena:96, flash:155},{name:C, recall:0.91, latency:7.0, arena:64, flash:118},{name:D, recall:0.97, latency:22.0, arena:110, flash:170},{name:E, recall:0.95, latency:11.0, arena:76, flash:135},{name:F, recall:0.88, latency:6.0, arena:58, flash:105},]limits {recall:0.92, latency:15.0, arena:100}eligible []for m in models:fail [k for k, limit in limits.items()if (m[k] limit if k recall else m[k] limit)]print(m[name], PASS if not fail else FAIL str(fail))if not fail:eligible.append(m)def dominates(a, b):no_worse (a[recall] b[recall] and a[latency] b[latency]and a[arena] b[arena] and a[flash] b[flash])better (a[recall] b[recall] or a[latency] b[latency]or a[arena] b[arena] or a[flash] b[flash])return no_worse and betterfront [m for m in eligible if not any(dominates(other, m)for other in eligible if other is not m)]print(eligible:, [m[name] for m in eligible])print(pareto:, [m[name] for m in front])先读懂代码中的关键路径硬门槛先构造eligible集合失败模型不会进入Pareto计算。dominates要求所有目标不差且至少一项更好避免完全相同候选互相删除。效果用越大越好资源用越小越好新增指标时必须明确方向。示例数字是假设候选真实表必须来自同一数据和固件条件。你应该观察到什么D因延迟或Arena失败F因召回率失败。前沿只保留没有被其他合格模型全面压过的候选。收紧门槛会先改变合格集合再改变前沿。成功标准所有候选在同一数据、固件和测量条件下产生。任何硬门槛失败都不能被综合分抵消。决策记录包含选择理由、余量和未选方案。失败时从哪里查起多目标选择偏差现象问题改进每次选择都变测量条件或数据变化固定版本并报告重复统计高分模型仍无法部署硬约束混入加权总分先门禁再排序前沿候选太多目标过多或测量噪声按业务合并指标并设置实质差异候选选择的价值在于让取舍可审计最终模型是满足约束且保留合理余量的方案。把实验迁移到真实MCU项目在自动化测试中每个模型生成一条带哈希的记录效果报告、tflite字节、map、Arena、周期和能量。脚本拒绝缺少字段的候选。前沿上最终选择可偏向资源余量与维护简单度。算子更少、内核更成熟的模型可能比准确率仅高一点但逼近资源上限的模型更稳妥。候选差异小于测量波动时不应宣称某模型更优。保存重复试验分布规定最小实质差异若两个方案效果相当优先选择结构简单、余量更大的方案。把结果再向前推进一步写出你项目不可协商的三项硬门槛。确定每项指标的测量条件和数据来源。为最终选择记录至少一个被拒绝候选及原因。这篇文章的结论模型选择是受约束的多目标决策。先淘汰越过资源和效果底线的方案再在Pareto前沿上根据业务成本选点。参考资料TensorFlow Lite Micro 官方代码仓库Arm CMSIS-NN 官方文档STMicroelectronicsSTM32H743/753 官方资料更新时间2026 年 8 月 5 日
返回列表