随着深度学习的发展,神经网络模型也越来越复杂,那么移动/嵌入式端该怎么深度学习呢?怎么样的模型才能算深度学习呢?粤嵌嵌入式培训为你解答。
常用的模型中VGG系列网络的计算量可以达到30-40 GOP(1GOP=109运算)。这些神经网络通常运行在GPU上,但是如果我们要在移动/嵌入式端也实现深度学习,那么这样巨大的模型是跑不动的。移动/嵌入式端的计算能力往往只有桌面级GPU的1/100到1/1000,换句话说在GPU上一秒40帧的深度学习CV算法在移动/嵌入式端一秒只有0.04-0.4帧,这样的性能会极大影响用户体验。
在移动/嵌入式端跑深度学习模型,除了运行速度之外,能效比也是关键指标。能效比指的是一次运算所需消耗的能量,它决定了移动/嵌入式端运行深度学习算法时电池能用多久。能效比与深度学习模型息息相关,我们下面将会看到深度学习模型的大小会决定运行算法时的片外内存访问频率,从而决定了能效比。
怎样的模型才能算深度学习呢?为了深度学习模型时不仅要看模型计算量还要看模型大小。模型计算量是衡量深度学习是否适合在移动或嵌入式端计算的重要指标,通常用GOP单位来表示。例如,流行的ResNet-18的计算量大约是4 GOP,而VGG-16则为大约31 GOP。移动和嵌入式端的硬件计算能力有限,因此模型所需的计算量越大,则模型在移动端运行所需要的时间就越长。
为了能让使用深度学习的应用顺畅运行,模型运算量当然是越小越好。除此之外,深度学习每次运算都是需要花费能量的,模型运算量越大则完成一次inference需要的能量也就越大,换句话说就是越费电。在电池量有限的移动和嵌入式端,模型一次inference所花费的能量必须精打细算,因此深度学习模型计算量不能太大。
深度学习模型大小主要决定的是该模型做一次 inference 所需要的能量。那么模型大小与inference所消耗的能量有什么关系呢?首先,我们知道,深度学习模型必须储存在内存里面,而内存其实还分为片上内存和片外内存两种。
因此,我们为了减小能量消耗,必须减少片外内存访问,或者说我们需要尽可能把模型的权重数据和每层的中间运算结果存储在片上内存而非片外内存。这也是为什么Google TPU使用了高达28MB片上内存的原因。
然而,移动端和嵌入式系统使用的芯片不能成本太高,因此片上内存容量很有限。这样的话我们就必须从深度学习模型大小方面想办法,尽量减小模型尺寸,让模型尽可能地能存储在片上内存,或者至少一层网络的权重数据可以存在片上内存。
对于移动/嵌入式端的深度学习,相信大家已经了解了。选择一个好的平台,可以改变人生,来粤嵌嵌入式培训学习,这里会让你的在嵌入式之路走得越来越宽。