|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
% S+ H- E) Q" {; a8 E8 |: @
$ v5 j8 j D6 l9 X$ _% ]3 M
FPGA 在加速下一代深度学习方面能击败GPU吗? + p3 [7 g) k! E: D+ E0 }) U
$ n+ m, c, ?5 w( z# Z8 t ~
, |/ G" ^4 w; P9 M9 U4 G4 O& U' P4 ?/ h许多图像、视频和语音来自社交媒体和物联网等数据源,这些内容的数字数据继续急剧增长,从而促使企业界需要分析技术让这些数据易于理解、具有实用性。4 ^; t# [& _" w0 G/ _
5 I( w9 k6 N1 B3 J6 ^/ ^
7 o9 m1 |' B- J7 @数据分析常常依赖机器学习算法。在诸多机器学习算法中,深度卷积神经网络(DNN)为重要的图像分类任务提供了最高的准确度,因而得到了广泛采用。
: l6 j7 \' f4 N- u/ t5 y3 X4 c4 F; ?; [9 [( Z. }
L9 T0 V p6 N- W+ c
英特尔可编程解决方案部门的FPGA 架构师兰迪·黄(Randy Huang)博士是这篇论文的合著者之一,他说:“深度学习是人工智能方面最激动人心的领域,因为我们已经看到深度学习带来了最大的进步和最广泛的应用。虽然人工智能和DNN 研究倾向于使用 GPU,但我们发现应用领域与英特尔的下一代FPGA 架构之间是完美契合的。我们考察了即将出现的FPGA 技术进展,以及DNN算法加快步伐的创新,还考虑了对于下一代 DNN而言,未来的高性能FPGA是否比GPU更胜一筹。我们的研究发现,FPGA 在DNN 研究中表现很出色,可以运用于需要分析大量数据的人工智能、大数据或机器学习等研究领域。使用经过精简或紧凑的数据类型vs标准的32位浮点数据(FP32)时,接受测试的英特尔Stratix10 FPGA其性能胜过GPU。除了性能外,FPGA还很强大,就是由于它们具有适应性,很容易实现变化的部分,只需要重复使用现有的芯片,让团队在短短6个月内就可以完成从提出想法到构建原型的过程,而不是花18个月构建专用集成电路(ASIC)。”
6 j: c! [8 [. \6 h8 L6 D; u
4 y, L: u9 r g5 ^# r$ @ |+ B3 J8 u# }6 w6 z
' z- K, T/ q/ ^$ z ~' @* R
测试中使用的神经网络机器学习& R$ R# A# Q6 Y4 d( w% a
& M" f+ b; S* a4 \& c+ k
( }) c; A/ J% F4 I+ H- b
, q. k9 e4 N9 o H+ t神经网络可以用加权边(weighted edge)互连的神经元图形来系统地表述。每个神经元和边分别与激活值和权重关联起来。该图由多层神经元组成。一个例子。
' }! K/ [4 J/ p8 G, k- y% Y) q1 w
. R* `" c' a* Y! K6 @
神经网络计算会通过网络中的每个层。就某个特定的层而言,每个神经元的值通过相乘和累加上一层的神经元值和边权重来计算。计算高度依赖相乘-累加操作。DNN计算包括正向传递(forward pass)和反向传递(backward pass)。正向传递在输入层采样,然后通过所有隐藏层,并在输出层生成预测。至于推理,只需要正向传递来获得某个特定样本的预测。至于训练,来自正向传递的预测错误随后在反向传递过程中被反馈回来,以更新网络权重――这被称为反向传播算法(back-propagation algorithm)。迭代训练进行正向传递和反向传递以调整网络权重,直至达到期望的准确度。, S- L8 q# G; P- w5 J
$ ]& z4 l: C8 A' {1 X& n: |% @, v
4 q Z# N% [7 W3 l# A
几个变化让FPGA成为一种可行的替代方案
# T6 D% R8 n2 e6 Q2 m# |$ J8 x5 B* |* c3 h5 q Y
+ E& p7 I" X& v2 _, ?4 @5 g9 C3 E. n. A6 G& @
硬件:虽然FPGA与高端GPU 相比具有卓越的能效(性能/瓦特),但它们并不以提高极高的峰值浮点性能出名。FPGA技术正在迅速发展。即将推出的英特尔Stratix10 FPGA性能强大:提供5000多个加固的浮点单元(DSP),超过28MB的芯片上内存(M20Ks),与高带宽内存(多达4x250GB/s/stack或1TB/s)集成,并借助新的HypeRFlex技术提高了频率。英特尔FPGA 提供了一个全面的软件生态系统,涵盖范围甚广:有低级的硬件描述(Hardware Description)语言,也有OpenCL、C和C++的较高级软件开发环境。英特尔会进一步将FPGA与英特尔的机器学习生态系统和传统框架(比如近日提供的Caffe),以及很快就会推出的其他框架结合起来,充分利用MKL-DNN库。基于14nm英特尔技术的英特尔Stratix10在FP32吞吐量方面峰值性能达到9.2TFLOP/s。相比之下,最新的Titan X Pascal GPU在FP32吞吐量方面的性能为11TFLOP/s。
) C3 b4 |+ Z9 c; x& @, |/ O
6 c9 m, E" v2 n 新兴的DNN算法:更深层的网络提高了准确度,但大大增加了参数数量和模型大小。这增加了计算带宽、内存带宽和存储要求。正因为如此,使用更高效的DNN已成了趋势。一股新兴的趋势是,采用远低于32位的紧凑型低精度数据类型。16位和8位这两种类型的数据成为新的常态,因为它们得到了DNN软件框架(比如TensorFlow)的支持。此外,研究人员针对精度极低的2位三进制DNN和1位二进制 DNN 继续提高准确度,其中值分别受限于(0,+ 1,-1)或(+ 1,-1)。努维塔蒂博士最近合著的一篇论文首次证明:三进制DNN可以为知名的ImageNet数据集获得最先进的(即ResNet)准确度。另一个新兴趋势是,通过精简、ReLU 和三进制化(ternarization)等技术,在DNN神经元和权重中引入稀疏性(一个个零的存在),这可以让DNN拥有50%左右至90%左右的零。由于没必要针对这类零值进行计算,如果执行这类稀疏DNN 的硬件可以有效地略过零计算,那样可以提升性能。 y& f5 ?. I, \$ }
1 X7 A: `+ I6 I2 u- A l
4 ]9 m5 d; I2 O$ `/ ?, B9 f新兴的低精度、稀疏DNN算法在算法效率上比传统的密集FP32 DNN高出几个数量级,但它们引入了GPU难以处理的不规则并行性(irregularparallelism)和自定义数据类型。相比之下,FPGA是为极高的可定制性设计的,它在运行不规则并行性和自定义数据类型时表现出色。这类趋势使未来的FPGA成为一种切实可行的平台,可用于运行DNN、人工智能和机器学习等应用。黄说:“专门针对FPGA的机器学习算法有更大的预留空间。”图2表明了FPGA极高的可定制性(2A),因而能够有效地实施新兴的DNN(2B)。 E* B& f: V+ c( z+ q# B
![]()
& z: H9 L6 c; K7 v7 b" g. _
. N+ W" S8 S' ^FPGA很适合新兴的DDN
2 s. g! W- q/ U$ y( E/ y8 Y/ D
/ t# V& M1 K' N! |% {) w7 N" t. X; w9 T6 O- C
" c* M0 y3 E: Y6 {9 r1 b0 A
研究所用的硬件和方法
" ~0 _9 ^" o8 ]![]()
; w( N9 {0 U# k% C# j( ]' {' B" g5 l
2 R/ \7 x* y4 I0 W# b: H
% L; C9 y; ^; yGPU:使用已知的库(cuBLAS)或框架(Torch with cuDNN), Y C. N. |1 x: N5 w
- n7 r Y/ u8 H$ w
FPGA:使用Quartus Early Beta版本和PowerPlay来估计; Y+ B0 C- E" I: Y5 E) R4 r9 ?6 H
1 W7 l1 d' B9 ^; ?/ |9 P( c' R! ?5 D3 g' l' U2 h" R
$ \ L& ~; T% t7 i! c! ^4 i短阵相乘(GEMM)测试的结果。GEMM是DNN中的关键操作。(图片来源:英特尔)
* c; r; S4 n4 w: [% h7 y
& U }! }& W1 }% x# ]2 [' D, }2 k
% \% ?, o g6 A) o+ M# _研究1:矩阵相乘(GEMM)测试8 a" d2 T' U9 A: ]
6 Y0 v, z# c7 E: g. b) u& q; Y5 r
DNN 高度依赖矩阵相乘运算(GEMM)。常规DNN依赖FP32密集GEMM。然而,较低精度、稀疏的新兴DNN 依赖低精度及/或稀疏的GEMM。英特尔团队评估了这些不同的GEMM。' x. S! s7 z% `+ y/ N& w
1 X1 P) l7 _8 }# B7 H
: h1 Z; S1 c G9 p" p
FP32 密集GEMM:由于FP32密集GEMM已得到充分的研究,英特尔团队比较了FPGA和GPU数据表上的峰值数字。TitanX Pascal 的峰值理论性能对Stratix 10而言分别是11 TFLOP和9.2 TFLOP。图3A显示,相比英特尔Arria10,DSP 数量多得多的英特尔Stratix 10 提供了大大提升的FP32性能,让Stratix10的性能足够接近Titan X 的性能。
# h, n% v/ }% [' U" T0 j5 o0 S- k. Z
低精度INT6 GEMM:为了表明FPGA在可定制性方面的优点,该团队将四个int6封装到一个DSP模块中,以研究FPGA的6位(Int6)GEMM。至于本身不支持Int6 的GPU,他们使用了峰值Int8GPU性能来进行比较。图3B显示,英特尔Stratix 10 的性能优于GPU。FPGA的性能/瓦特比GPU还要来得吸引人。
1 W" @# A* z4 V) j* N3 b
4 Z6 H. C/ I8 \9 N0 c5 G8 O' B 精度非常低的1位二值化GEMM:最近的二值化DNN 提议使用极其紧凑的1位数据类型,因而可以用非常适合FPGA的同或(xnor)和位计数(bitcounting)操作取代相乘操作。图3C显示了团队的二进制GEMM测试结果,其中FPGA 的性能比GPU高得多(即针对不同的频率目标,性能高出2倍左右到10倍左右)。
8 U, X! g. r0 ]- j4 [$ V. b
. f# z4 { p/ C: C: z! P% f 稀疏GEMM:新兴的稀疏DNN包含许多零。该团队针对85%零值的矩阵测试了稀疏的GEMM(基于经过精简的AlexNet而选择)。该团队测试的一种GEMM设计利用FPGA的灵活性,以一种细粒度的方式跳过零计算。该团队还在 GPU上测试了稀疏的 GEMM,但发现性能不如在GPU上执行密集的GEMM(矩阵一样大小)。该团队的稀疏GEMM测试(图3D)显示,FPGA的性能比GPU更胜一筹,具体取决于FPGA的目标频率。
7 m3 ~$ a' p- R6 l3 s* N
. }/ \. Z' d8 s! ]3 Y0 {7 F! @- b( a0 F; D# n- o
, U' a5 B- W9 B( s+ Y
DNN准确度的趋势以及FPGA和GPU在三进制ResNet DNN上的测试结果。(图片来源:英特尔)9 `, n9 {# @* n! b
. P6 G2 q8 x k# i
9 J& Q7 r+ `5 ~; m0 w研究2:使用三进制ResNet DNN测试$ X# k# h8 S( ]! u' m( g" l4 H
& y7 [6 ]& |: s; e' x9 Q
/ ^5 Z, l x: `# U$ K5 s, z
三进制DNN最近提议将神经网络权重限制于+1、0或-1。这允许稀疏的2位权重,并用符号位操作取代相乘。在这个测试中,该团队使用了一种为零跳跃、2位权重定制的FPGA设计,没有以最佳方式运行Ternary-ResNetDNN的乘法器。
, Z- l6 A# l" L- p& O d( @: }$ u( Y/ U" j9 v0 P! \
8 ]+ c7 i- c! z' F不像其他许多低精度、稀疏的DNN,三进制DNN提供了与最先进的DNN(即ResNet)相当的准确度,如图4A所示。努维塔蒂说:“许多现有的GPU和FPGA研究仅针对基于AlexNet(2012年提议)的ImageNet方面‘足够好’的准确度。最先进的Resnet(2015年提议)提供了比AlexNet高出10%以上的准确度。2016年年底,在另一篇论文中,我们率先表明,Resnet上低精度、稀疏的三进制版本DNN 算法获得的准确度与全精度ResNet只相差1%左右。这个三进制ResNet是我们在FPGA研究中的目标。因此,我们率先表明,FPGA可提供同类中最佳的(ResNet)ImageNet准确度,它能够比GPU更好地实现这一点。” 图4B显示了英特尔Stratix 10 FPGA和Titan X GPU在 ResNet-50上的性能和性能/瓦特比。即使性能方面保守估计,英特尔Stratix 10 FPGA也已经比TitanX GPU的性能高出60%左右。如果是适中的估计和大胆的估计,结果更显著(即提升2.1倍和3.5倍)。值得关注的是,按大胆估计,英特尔Stratix 10 750MHz的性能可以比TitanX的理论峰值性能高出35%。就性能/瓦特而言,无论保守估计还是大胆估计,英特尔Stratix 10的性能都要比Titan X高出2.3倍到4.3倍。
i' t& k- L* i1 E. Y4 ]1 V7 X: K
+ A* y( v) ?6 ^. d- j. E; |; |/ {* H |+ ~& C/ G5 ^1 V5 D, e4 x
f" b2 z# ~/ c( E
FPGA在研究测试中表现如何
5 _0 e: q7 V; b7 R% w/ M# j1 Q) Q: s$ v
0 f3 ~3 _" N3 N
7 D+ b+ P- m# |) [0 x% k# @结果表明,就稀疏的DDN、Int6 DDN和二值化DDN而言,英特尔Stratix10 FPGA的性能(TOP /秒)比Titan X Pascal GPU分别高出10%、50%和5.4倍。在三进制ResNet上,Stratix 10 FPGA的性能比Titan X Pascal GPU高出60%,而性能/瓦特高出2.3倍。结果表明,FPGA有望成为加速下一代DNN 的首选平台。
% @; [# y9 D, {( _, c6 V m) _" V
U& H4 a5 @" D4 {/ o3 d0 b
2 r( B) o0 u6 k0 V: G# J; v( T C
FPGA在深层神经网络中的未来
1 ]& x: A4 R, k: Y1 E
' \( r N9 n8 R3 z- Q' V% y `% d5 }1 N8 D
" H7 S4 s: F& Y, z% q$ W/ A1 {FPGA能否在下一代 DNN的性能上击败GPU?英特尔在两代FPGA(英特尔Arria10和英特尔Stratix 10)以及最新的Titan X GPU上评估了各种新兴的DNN,结果表明,目前DNN算法方面的趋势可能有利于FPGA,FPGA甚至有望提供卓越的性能。虽然本文描述的结果来自2016年完成的研究工作,但英特尔团队继续针对现代DNN算法和优化(比如FFT / winograd 数学变换、大胆的量化和压缩)来测试英特尔FPGA。该团队还指出,除了DNN外,FPGA在其他不规则应用以及对延迟敏感的应用(比如ADAS和工业用途)等领域也有机会。7 N g' e/ X& \
|
|