从零开始学习 TinyML,建立 TensorFlow 深度学习模型(技术优化篇)

336 阅读3分钟

TinyML是什么?如何从零开始入门学习?本系列上一篇教程中,我们复习了 TinyML 的概念,完成了一个最简单的 ML 模型与微控制器运行。今天,本教程将与你探讨如何在实际的工程应用中对已建立的模型进行技术优化。 5. 优化 TinyML 这本书也详细的向我们介绍了优化的一些方法,以及用这些方法可以达到什么样的效果。通过优化,工程的执行效率会获得很大的提升。 我们先不要急于去看这本书到底介绍了哪些优化方法,我们仔细回顾一下,在之前的项目中,我们接触的工程中包括了优化的哪些方面? 5.1 优化角度 从工程角度来看整个流程,优化涉及到的部分,包括以下几个阶段: 需求分析及产品设计:定位产品的使用范围。产品方向的输入和输出的约定将会极大的影响产品的性能。当产品的需求完全定下来之后,我们便要分析输入和输出的具体内容,这些输入和输出将会造成什么样的影响?数据输入及输出影响着嵌入式硬件选型和 ML 模型选型。在工程设计的前期都必须要充分考虑这些因素。 ML 模型:解决了输入输出的问题之后,接下来便是模型的建立及优化。这一部分的内容是机器学习中老生常谈的问题,但是在每个具体的项目实施中间又是必须考虑的问题。对嵌入式系统中的人工智能模型的优化,已经有了量化,移动优化解释器,硬件加速等方法。这部分内容在手机相关的模型优化中间已经做了很多工作,但是在微控制器的模型优化中又提出了一些新的方法。这一部分方法也是我们讨论的主要方向。 基于低功耗的硬件去开发任何系统,首要考虑的问题是功耗。不同的硬件配置以及片上系统的运行特性,对功耗会产生完全不同的影响。特别需要指出的是,低功耗的设计本身会带来性能的损失,那么我们最优化的一些办法一定是从功耗和性能综合来考虑的,这是工程上面最典型的优化场景,不同的实现会带来完全不同的结果。 由于低功耗微控制器本身的存储容量特别小,不断减小模型的尺寸,也是优化的一个方向。加入了这些限制条件之后,就不得不从系统限制,内存,存储,运行效率等各个方面去评价这个模型是不是最优化的。类似场景的模型优化的评价方法是一直需要不断探讨的。没有最好,只有更好。 通过上面的要素分析,我们会发现工程的优化并不仅仅只是提供一个运行效率最快的模型,还涉及到许多许多其它方面的考虑。那么我们这一次的阅读会重点关注是低功耗的微控制器上如何去做优化