0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的神经网络加速硬件和网络设计的协同

电子设计 来源:AI加速 作者:AI加速 2020-11-21 10:36 次阅读

引言

很久没有看基于FPGA神经网络实现的文章了,因为神经网络加速设计做的久了就会发现,其实架构都差不多。大家都主要集中于去提高以下几种性能:FPGA算力,网络精度,网络模型大小。FPGA架构也差不多这几个模块:片上缓存,卷积加速模块,pool模块,load,save,指令控制模块。硬件架构上并不是太难,难的反而是软件编译这块。因为其要去适应不同的网络模型,还要能兼容FPGA硬件的变化,同时要为客户提供一个容易操作的接口。这些在目前情景下还比较困难。首先是FPGA硬件的变化太多,各个模块可配参数的变化(比如卷积模块并行数的变化),另外一个是网络模型多种多样以及开源的网络模型平台也很多(tensorflow,pytorch等)。网络压缩也有很多种算法,这些算法基本上都会导致网络模型精度的降低。一般基于FPGA的网络加速设计都会强调模型被压缩了多少以及FPGA上可以跑得多快,却很少集中于去改善精度。

这篇文献从概念上提出了硬件和网络的协同设计,是很好的一个思路。因为之前神经网络加速硬件设计和网络压缩是分开的,只是在网络压缩的时候尽可能考虑到硬件的特点,让网络模型更加适合硬件架构。这篇论文其实也是在做这样类似的工作,我并不认为它真正的实现了硬件和网络设计的协同(虽然其标榜自己如此)。但是它确实给我们提供了一个新的研究思路:如何从一开始就设计一个能够适用于硬件的网络。好的,废话不多说,来看论文。

1. 来自作者的批判

发表论文,总是要先去总结以往论文的优缺点,然后指出其中不足,凸显自己的优势。这篇文章也花费了很大篇幅来批判了过去研究的不足。总结起来有以下几点:

1) 过去的研究都是用一些老的网络,比如VGG,resnet,alexnet等,这些网络已经落伍了,市场上已经不怎么用了;

2) 过去用的数据集也小,比如CIFAR10这类,包含的图片种类和数量都太少,不太适合商业应用;

3) 压缩老的网络的技术手段不再适用于最新的网络,比如像squeezeNet网络,它就比alexnet网络小50倍,但是能达到和alexnet一样的精度;

4) 以往的类似resnet的网络,有skip连接的,并不适合在FPGA上部署,因为增加了数据迁移;

5) 以往网络的卷积核较大,如3x3,5x5等,也不适合硬件加速;

6) 以前网络压缩集中于老的那些网络,这些网络本身就有很大的冗余,所以压缩起来很容易,而最新的网络比如ShuffleNet等压缩起来就没有那么容易了,但是这样的报道很少;

总之,意思就是之前的文章都捡软柿子捏,而且比较落后了。那么我们来看看在这样狂妄口气之下的成果如何。

2. shuffleNetV2到DiracDeltNet

shuffleNetV2是新发展出来的一个神经网络,它的网络模型中参数更小(比VGG16小60倍),但是精度只比VGG16低2%。shuffleNet不再像resnet将skip连接的数据求和,而是skip连接的数据进行concat,这样的操作降低了加法操作。Skip连接可以扩展网络的深度和提高深层网络精度。但是加法skip不利于FPGA实现,一个是加法消耗资源和时间,另外一个是skip数据增加了迁移时间。Concat连接也和加法skip有相同的功能,增加网络深度和精度。

作者对shuffleNetV2网络结构进行了更有利于FPGA部署的微调。有以下三个方面:

1) 将所有3x3卷积(包括3x3depth-wise卷积)都替换为shift和1x1卷积。这样替换是能够降低feature map数据的迁移,比如3x3的卷积每个图像数据要使用3次,而1x1只需要搬移一次,降低了逻辑复杂性,也提高了运算速度。Shift操作是将某个范围的pixel移动到中间作为结果,这样的操作减少了乘法运算次数。这种替换会导致精度降低,但是可以减少FPGA运算次数。

2) 将3x3的maxpooling操作降低为2x2的。

3) 调整了channel的顺序来适应FPGA。




3. 量化

为了进一步降低网络参数量,作者采用了DoReFa-Net网络的量化方式,对全精度权重进行了量化。同时作者还对activation进行了量化。量化结果如下:


精度损失很小。

文献中使用了很多对网络修改的微调技术,细节很多,可以看出对这样一个已经很少参数的网络来说,要进一步压缩确实要花费很大功夫。这可能不太具有普遍性。这些微调应该会花费很多时间和精力。

4. 硬件架构

硬件主要实现的操作很少,只有一下几种:
1)1x1卷积
2)2x2的ma-pooling
3)shift
4)shuffle和concat

所以硬件架构上也变得很简洁,文章中说两个人用HLS只做了一个月。


使用资源很少。


看以下和其他人的结果对比:


结论

这篇论文在shuffleNet网络的基础上,基于FPGA的特点进行了网络修改。包括网络结构和量化,最终的精度都高于以往的几个网络。结果还是不错的,只是这样手动微调网络并不是很具有普遍性,而且涉及到很多微调技术,也不一定适合每个网络。但是作者确实提供了一个思路:如何去设计一个能够用于FPGA的网络,而且还可以保证很好的精度。

文献

1. Yifan Yang, Q.H., Bichen Wu, Tianjun Zhang, Liang Ma, Giulio Gambardella, Michaela Blott, Luciano Lavagno, Kees Vissers, John Wawrzynek, Kurt Keutzer, Synetgy Algorithm-hardware Co-design for ConvNet Accelerators on Embedded FPGAs. arXiv preprint, 2019.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1601

    文章

    21296

    浏览量

    593081
  • 神经网络
    +关注

    关注

    42

    文章

    4570

    浏览量

    98706
收藏 人收藏

    评论

    相关推荐

    如何用FPGA加速神经网络

    到底纯FPGA适不适合这种大型神经网络的设计?这个问题其实我们不适合回答,但是FPGA厂商是的实际操作是很有权威性的,现在不论是Intel还是Xilinx都没有在自己传统的FPGA上推
    的头像 发表于 01-24 09:51 513次阅读
    如何用<b class='flag-5'>FPGA</b><b class='flag-5'>加速</b><b class='flag-5'>神经网络</b>

    基于FPGA的RBF神经网络硬件实现

    电子发烧友网站提供《基于FPGA的RBF神经网络硬件实现.pdf》资料免费下载
    发表于 10-23 10:21 0次下载
    基于<b class='flag-5'>FPGA</b>的RBF<b class='flag-5'>神经网络</b>的<b class='flag-5'>硬件</b>实现

    浅析深度神经网络压缩与加速技术

    深度神经网络是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似
    的头像 发表于 10-11 09:14 392次阅读
    浅析深度<b class='flag-5'>神经网络</b>压缩与<b class='flag-5'>加速</b>技术

    FPGA加速神经网络的矩阵乘法

    电子发烧友网站提供《FPGA加速神经网络的矩阵乘法.pdf》资料免费下载
    发表于 09-15 14:50 0次下载
    <b class='flag-5'>FPGA</b><b class='flag-5'>加速</b><b class='flag-5'>神经网络</b>的矩阵乘法

    《 AI加速器架构设计与实现》+第一章卷积神经网络观后感

    对应的神经网络有哪些,也看到了自己在k210中用到的FAST RCNN和RestNet18分类网络,需要保证硬件实现和算法一致,这样才事半功倍,否则,可能会差别比较大。对于神经网络算法
    发表于 09-11 20:34

    人工神经网络和bp神经网络的区别

    人工神经网络和bp神经网络的区别  人工神经网络(Artificial Neural Network, ANN)是一种模仿人脑神经元网络结构和功能的计算模型,也被称为
    的头像 发表于 08-22 16:45 3417次阅读

    卷积神经网络和深度神经网络的优缺点 卷积神经网络和深度神经网络的区别

    深度神经网络是一种基于神经网络的机器学习算法,其主要特点是由多层神经元构成,可以根据数据自动调整神经元之间的权重,从而实现对大规模数据进行预测和分类。卷积
    发表于 08-21 17:07 2293次阅读

    卷积神经网络的介绍 什么是卷积神经网络算法

    卷积神经网络的介绍 什么是卷积神经网络算法 卷积神经网络涉及的关键技术 卷积神经网络(Convolutional Neural Network,CNN)是一种用于图像分类、物体识别、语
    的头像 发表于 08-21 16:49 1421次阅读

    卷积神经网络的基本原理 卷积神经网络发展 卷积神经网络三大特点

    卷积神经网络的基本原理 卷积神经网络发展历程 卷积神经网络三大特点  卷积神经网络的基本原理 卷积神经网络(Convolutional Ne
    的头像 发表于 08-21 16:49 1433次阅读

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点  卷积神经网络(Convolutional neural network,CNN)是一种基于深度学习技术的
    的头像 发表于 08-21 16:41 1926次阅读

    卷积神经网络的应用 卷积神经网络通常用来处理什么

    卷积神经网络的应用 卷积神经网络通常用来处理什么 卷积神经网络(Convolutional Neural Network,简称CNN)是一种在神经网络领域内广泛应用的
    的头像 发表于 08-21 16:41 3969次阅读

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法

    一。其主要应用领域在计算机视觉和自然语言处理中,最初是由Yann LeCun等人在20世纪80年代末和90年代初提出的。随着近年来计算机硬件性能的提升和深度学习技术的发展,CNN在很多领域取得了重大的进展和应用。 一、卷积神经网络模型 (一)卷积层(Convolution
    的头像 发表于 08-17 16:30 902次阅读

    什么是神经网络?为什么说神经网络很重要?神经网络如何工作?

    神经网络是一个具有相连节点层的计算模型,其分层结构与大脑中的神经元网络结构相似。神经网络可通过数据进行学习,因此,可训练其识别模式、对数据分类和预测未来事件。
    的头像 发表于 07-26 18:28 1929次阅读
    什么是<b class='flag-5'>神经网络</b>?为什么说<b class='flag-5'>神经网络</b>很重要?<b class='flag-5'>神经网络</b>如何工作?

    基于 FPGA 的目标检测网络加速电路设计

    了对 HLS 的理解,开始初步掌握使用 HLS 进行并行性编程的方法。我们学习了 PYNQ 框架,在 PYNQ-Z2 上实现神经网络加速 电路,有了软硬件协同开发的经历。除此之外,我们
    发表于 06-20 19:45

    三个最流行神经网络

    在本文中,我们将了解深度神经网络的基础知识和三个最流行神经网络:多层神经网络(MLP),卷积神经网络(CNN)和递归神经网络(RNN)。
    发表于 05-15 14:19 1173次阅读
    三个最流行<b class='flag-5'>神经网络</b>