如何把机器学习这只“大象”,放进MCU的“冰箱”?
2021-05-01
来源:安富利
人工智能(AI)在很多人眼里是,只是一种科幻片中不明觉厉的存在,而与普通人的生活之间隔着很远的距离。但是这样的局面正在被改变,在未来5-10年中,AI将会以超乎我们想象的速度快速渗透到我们生活的方方面面。为什么这么讲?一起随我们往下看。
人工智能物联网的基本范式
之所以我们与AI之间会有“距离感”,主要是因为以前玩AI是一件比较奢侈的事。这种“奢侈”主要体现在,实现AI所依赖的机器学习(ML),在其训练和推理的过程中对算力有非常高的要求。为了应对这样的挑战,通过云计算集中算力做数据处理,也就成为了实现机器学习的一个经典方法。
但是到了物联网时代,这样的模式受到了挑战——集中式云计算带宽和存储资源消耗大、实时数据传输消耗电量多、数据在终端和云端之间传输延迟长、数据传输和云端集中存储过程中安全风险大。这些弊端让人们认识到单纯的云计算不是包打天下的万能药。
因此,边缘计算作为经典云计算的补充,越来越得到大家的重视。按照边缘计算的定义,将大部分计算任务放在边缘设备上直接进行处理,而只在必要的时候将一些经过预处理的数据传输至云端进行“精加工”,这样既能提升边缘端实时响应的速度和智能化水平,又能为网络传输通路和云端数据中心减负,因此这样的混合计算模式显然可以完美地坚决传统云计算的痛点。
这种计算架构的变迁,也对机器学习的模式产生了影响,使其从以计算为中心的模式向以数据为中心的模式转变。这两种模式中,前者是将机器学习的训练和推理都放在云端数据中心中完成,而后者则是由云端完成模型的训练,而将推理放在边缘设备上完成,这也就形成了人工智能物联网(AIoT)实施的基本范式。
向MCU扩展机器学习的疆界
显而易见,边缘计算使得机器学习的疆界大为扩展,使其从数据中心的机房走向了更多样性的网络边缘智能。但对于物联网应用来讲,这似乎还不够。因为在边缘设备上进行推理,仍然需要相对强悍的算力,这通常需要包含ML协处理器在内的较为复杂的异构微处理器来实现加速,如此的配置在嵌入式领域已经算是很“高端”的了。仅此一条,就会将不少对于功耗、成本、实时性敏感的应用关在机器学习的门外。
因此,机器学习想要继续开疆扩土,一个主攻方向就是要让资源更简单、算力更有限的微控制器(MCU)也能够跑得了、玩得起机器学习。IC Insights的研究数据显示,2018年全球MCU的出货量为281亿颗,到2023年将这个数字将增长到382亿颗,而全球的MCU存量将数以千亿计,谁要是能够让如此量级的设备玩转机器学习,其前途和钱途都将是不可限量的!
但对于任何一个梦想来说,现实往往显得比较“骨感”。将机器学习部署到MCU运行,就好像是要将一只大象塞进冰箱,而这个答案绝对不是一句脑筋急转弯的玩笑话,而是需要在技术从两个维度上去仔细考量。
为机器学习模型瘦身
第一个维度,就是要考虑如何为ML模型这只“大象”进行“瘦身”,也就是说要发展出相应的技术,能够在微控制器上部署、运行“小型化”的机器学习推理模型。这种瘦身后的模型,需要满足的条件包括:
运行模型的终端功耗一般在mW级别,甚至更低;占用的内存一般要在几百kB以下;推理时间为ms级别,一般需要在1s内完成。
为了实现这样的目标,TinyML技术应运而生。顾名思义,这就是一种能够让ML模型“变小”的技术。与上文提到的AIoT机器学习的基本范式一样,TinyML也是要在云端收集数据并进行训练,而不同之处则在于训练后模型的优化和部署——为了适应MCU有限的计算资源,TinyML必须对模型进行“深度压缩”,通过模型的蒸馏(Distillation)、量化(Quantization)、编码(Encoding)、编译(Compilation)一系列操作后才能部署到边缘终端上。
图1:嵌入式设备中部署TinyML的示意图(图源:网络)
其中,一些关键的技术包括:
蒸馏:是指在训练后通过剪枝(pruning)和知识蒸馏的技术手段,对模型进行更改,以创建更紧凑的表示形式。
量化:在模型蒸馏后,通过量化实现以更少位数的数据类型近似表示32位浮点型数据,在可接受的精度损失范围之内减少模型尺寸大小、内存消耗并加快模型推理速度。
编码:就是通过更有效的编码方式(如霍夫曼编码)来存储数据,进一步减小模型规模。
编译:通过以上方式压缩好的模型,将被编译为可被大多MCU使用的C或C++代码,通过设备上的轻量级网络解释器(如TF Lite和TF Lite Micro)运行。
在过去的两年中,我们已经明显感觉到TinyML技术在升温,厂商在该领域的投入也在加码。根据Silent Intelligence的预测,未来5年中,TinyML将触发超过700亿美元的经济价值,并且保持超过27.3%的复合年均增长率。
打造机器学习MCU新物种
把“大象装进冰箱”,除了要在“大象”(也就是ML模型)身上下功夫,另一个维度上的努力就是要改造“冰箱”,也就是对我们熟悉的MCU进行优化和改造,令其能够符合运行ML的需要。
比如,为了满足在IoT边缘设备中实现复杂机器学习功能的需要,Maxim Integrated就推出一款专门的低功耗ML微控制器MAX78000。该器件内置Arm Cortex-M4F处理器(100MHz)和32位RISC-V协处理器(60MHz),以及支持64层网络深度的卷积神经网络加速器,可在电池供电应用中执行AI推理,而仅消耗微焦耳能量。与传统的软件方案相比,这种基于硬件加速的方案使得复杂的AI推理能耗降至前者的百分之一,而推理速度则可以快100倍。
预计具有类似ML特性的新物种,将成为未来各家MCU大厂产品路线图中的重要分支。
图2:Maxim Integrated推出的低功耗ML微控制器MAX78000(图源:Maxim)
本文小结
综上所述,与微处理器或者x86等嵌入式计算架构相比,MCU具有功耗很低、成本低、开发周期短、上市快、实时性好、市场体量大等特点,这些特性如果能够和高能的机器学习结合在一起,其想象空间无疑是巨大的。
在促成两者“结合”的过程中,如果能够为开发者提供支持机器学习功能的MCU“新物种”,如果能够提供一个完整的开发工具链,让ML模型的优化和部署更顺手,那么把机器学习这只“大象”放进MCU的“冰箱”,将成为信手拈来的轻松事。
更重要的是,这样的趋势刚刚萌芽,你完全有机会成为一只early bird,在这个全新的领域中自由的飞翔。