没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
CNN-卷积神经⽹络在卷积神经⽹络在FPGA上的实现(⼀)上的实现(⼀)
CNN - 卷积神经⽹络在FPGA上的实现(⼀)
卷积神经⽹络(CNN)已被证明在复杂的图像识别问题上⾮常有效。本⽂将讨论如何使⽤Nallatech公司基于Altera OpenCL软
件开发套件编程的FPGA加速产品来加速CNN卷积神经⽹络的计算。可以通过调整计算精度来优化图像分类性能。降低计算精
度可使FPGA加速器每秒处理越来越多的图像。
Caffe 深度学习框架
Caffe是⼀个深度学习框架,具有表达⼒强、速度快和模块化的思想,由伯克利视觉学习中⼼(BVLC)和社区贡献者开发。⽹站
http://www.doczj.com/doc/6f2ba54ddf80d4d8d15abe23482fb4daa58d1d9b.html /
Caffe框架使⽤XML接⼝来描述特定CNN卷积神经⽹络所需的不同处理层。通过实施层的不同组合,⽤户能够根据其给定的需
求快速创建新的⽹络拓扑。
Caffe框架最常⽤的处理层主要有:
●卷积层:卷积层将输⼊图像与⼀组可学习的滤波器进⾏卷积,每个滤波器在输出中产⽣⼀
个特征图
●池化层:池化最⼤可以将输⼊图像分割成⼀组⾮重叠的矩形,并且对于每个这样的⼦区域,
输出最⼤值
●线性修正(ReLU)层:给定输⼊值x,如果x> 0,则ReLU层将计算输出为x,如果x <=
0则计算输出为negative_slope * x。
●IP/FC层:将图像视为单个向量,每个点对新输出向量的每个点有贡献
通过将这4层移植到FPGA,绝⼤多数正向处理⽹络可以使⽤Caffe框架在FPGA上实现。要访问加速卡上的FPGA版本的代码,
⽤户只需要更改Caffe XML⽹络描述⽂件
中的CNN - 卷积神经⽹络层的描述,这等同于修改FPGA代码版本。
图1:典型的CNN - 卷积神经⽹络的⽰例图
ImageNet卷积神经⽹络
图2:ImageNet CNN - 卷积神经⽹络
ImageNet是⼀个备受推荐且使⽤最为⼴泛的CNN卷积神经⽹络,具有免费的训练数据集和基准。本⽂讨论了针对ImageNet
CNN - 卷积神经⽹络的FPGA实现,当然这⾥使⽤的⽅法同样适⽤于其他⽹络。
图2显⽰了ImageNet CNN - 卷积神经⽹络所需的不同⽹络层。有5个卷积和3个FC层。这些层占⽤该⽹络处理时间的99%以
上。对于不同的卷积层,有3种不同的滤波器尺⼨,分别为11×11,5×5和3×3。因为每个层的计算时间根据所应⽤的滤波器的数
量和输⼊图像的⼤⼩⽽不同,所以为不同的卷积层优化不同的层将效率是⽐较低的。为了避免这种低效率,使⽤最⼩的滤波器
(3×3)作为较⼤卷积块的基础。由于它们处理的输⼊和输出特征的数量,3×3卷积层是计算量最⼤的
较⼤的滤波器尺⼨可以⽤较⼩的3×3滤波器的多次表达。这虽然会降低内核处理的效率,但允许不同层之间的逻辑重⽤。这种
⽅法的成本如表1所⽰。
表1:卷积核效率
3×3卷积核也可以被FC层使⽤。
表2:使⽤3×3滤镜时的ImageNet层计算要求
FPGA 逻辑器件
FPGA器件具有两种处理资源类型,即DSP和ALU逻辑。DSP逻辑是针对⼤型(18×18位)浮点乘法或乘法运算器优化的专⽤
逻辑。这⽐使⽤ALU逻辑更有效率,因为这样的乘法资源消耗很⼤。鉴于DSP操作中的乘法通⽤性,FPGA供应商为此提供了
专门的逻辑。Altera做的更进⼀步,允许重新配置DSP逻辑来执⾏浮点运算。为了提⾼CNN卷积神经⽹络处理的性能有必要增
加在FPGA中实现的乘法次数。另⼀种⽅法是降低位精度。
Bit 精度
⼤多数CNN实现使⽤浮点精度来进⾏不同的层计算。对于CPU或GPU实现这不是问题,因为浮点IP是芯⽚架构的固定部分。
对于FPGA来说,逻辑元素不是固定的。Altera的Arria 10器件嵌⼊了可以⽤于固定点乘法的浮动DSP模块。实际上,每个DSP
组件可以⽤于两个独⽴
的18×19位乘法。通过使⽤18位固定逻辑执⾏卷积,与单精度浮点相⽐,可⽤运算符的数量加倍。
图4:Arria 10定点DSP配置
根据CNN卷积神经⽹络的应⽤性能要求,可以进⼀步降低位精度。如果乘法的位宽可以减少到10位或更少,则可以仅使⽤
FPGA ALU有效地执⾏乘法。与使⽤FPGA DSP逻辑相⽐,这样可以增加可乘数。
OpenCL库函数
Altera提供了将⽤户定义和优化的IP组件纳⼊其编译器⼯具流程的能⼒。这允许使⽤标准库符号创建和包含这样的优化功能。
库组件允许有经验的HDL程序员以汇编语⾔程序员创建的⽅式创建⾼效的实现,并且包含x86优化的函数。
对于ImageNet使⽤的CNN - 卷积神经⽹络层,简单的定点实现可以采⽤10位系数来获得的最⼩减少量,这相对于单精度浮点
运算保持⼩于1%的误差。因此创建10位3×3卷积的优化库,受FPGA资源的限制,这个库被实现(复制)多次。
图5:Arria 10 GX1150资源
Arria10最⼤的可⽤设备是GX 1150.该设备具有约512个卷积块的资源以及应⽤程序控制逻辑。Nallatech 510T硬件平台
卷积内核的并⾏运算增加的数量加⼤了对输⼊带宽要求。为了避免全局内存成为瓶颈,⼀次计算多个图像时候可以为每个不同
的图像重新使⽤卷积滤镜权重。这对于FC层是特别重要的,其中对于每个点对点连接需要新的⼀组滤波器权重,其中从全局
存储器检索权重的瓶颈是瓶颈。幸运的是,卷积层重⽤了特征图像中每个点的权重数据。最⼩卷积特征图像为13×13像素,因
此卷积权重仅在最坏情况下每169次迭代更新⼀次。
图6:Nallatech 510T加速器
选择硬件平台Nallatech 510T实现CNN - 卷积神经⽹络,Nallatech 510T是与⼤多数服务器平台的GPU相兼容的FPGA加速
卡,旨在兼容英特尔⾄强Phi或GPGPU加速器。Nallatech 510T 具有两个Altera Arria 10 GX 1150 FPGA,具有60 GBytes /
sec的外部存储器带宽⽤于加载权重、输⼊和输出数据。510T的典型功耗仅为150W,不到⾼端GPU功耗的⼀半。使⽤10位系
数数据进⾏FPGA实现的另⼀个好处是可以从全局存储器读取的重量数据量与浮点数据的三倍。
使⽤Nallatech 510T加速器,可以处理16个并⾏图像,每个图像具有并⾏处理的64个内核。这是通过并⾏⽣成8个输出特征和8
个像素来实现的。总共提供了1024个并⾏的3×3内核。
在我们的实现中,我们为1个图像创建了⼀个OpenCL内核系统,并在FPGA资源限制的情况下复制了这个多次。卷积权重对于
每个图像重新使⽤,因此当缩放到多个并⾏图像时,对全局内存要求的增加最⼩。
结果分析
通过应⽤上述FPGA系统,每个图像需要9毫秒才能被FPGA分类。使⽤510T处理的12个并⾏图像,平均每个图像的时间为748
微秒。这是每天超过1.15亿张图⽚。
剩余10页未读,继续阅读
_webkit
- 粉丝: 30
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页