本帖最后由 lvroubaozi 于 2018-3-9 10:24 编辑
深度学习中的FPGA
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。 深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。 深度学习是机器学习中一种基于对数据进行表征学习的算法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。 由于其算法的复杂性,深度学习对于计算能力的需求越来越大,尤其是数据训练的阶段。因此深度学习领域的发展瓶颈从算法逐渐变成了计算能力。
和机器学习相似,深度学习通常也分为训练和推断两个阶段。 在训练阶段,设备使用历史数据训练一个适合解决目标任务的一个或多个机器学习模型,并对模型进行验证,目前业界在训练阶段一般采用的是CPU+GPU这种方式,因为对于训练阶段,我们对于功耗和延迟的要求并没有很迫切。 推断阶段就是利用之前训练中所获得的特征值去对新的输入数据进行判断或者预测。从应用上来说,推断可以分为两大类:服务器端的推断和移动端的推断。 在服务器端,目前GPU依然是主流的选择,但是现在随着各种新技术的发展,我们也有了更多的选择,比如谷歌专门为TensorFlow打造的TPU,而其他很多公司开始尝试FPGA,百度大脑项目就采用了FPGA来提升性能,微软数据中心也使用了大量的FPGA,因为FPGA的低延迟特性无可比拟,这对于需要快速响应的应用来说是迫切需求的。 在移动端,很显然不太可能大规模部署GPU,因为移动端对低功耗、实时性要求更加的苛刻。于是ASIC和FPGA就成为了更好的选择。 同时我们根据深度学习原理可以推断出来,随着学习样本逐渐的增大,训练结果也是可以不断地优化的,这样在推测阶段,FPGA又可以发挥自己灵活性的优势,可以动态的优化自己的模型。
|