|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; o6 n# O" b1 M/ K8 ?! s4 T ` ~2 I7 `- u0 W
FPGA 在加速下一代深度学习方面能击败GPU吗?
T+ D0 Z$ |+ ]0 D4 s% {4 r% [( B: m0 P% L: Y5 ~6 O! y8 {
8 A5 }& o. n6 L7 }4 [6 Z- d许多图像、视频和语音来自社交媒体和物联网等数据源,这些内容的数字数据继续急剧增长,从而促使企业界需要分析技术让这些数据易于理解、具有实用性。
; R- p2 g# `5 v% r8 T6 s+ H: A! n# ~" @1 [* a
$ ?/ K, r' x: D/ h$ ^2 N, J: }
数据分析常常依赖机器学习算法。在诸多机器学习算法中,深度卷积神经网络(DNN)为重要的图像分类任务提供了最高的准确度,因而得到了广泛采用。
, A' D1 h# q( U5 a6 y
4 N/ A& t s* `& G# x; G
# g3 \3 V1 p2 I' J0 u9 `; U英特尔可编程解决方案部门的FPGA 架构师兰迪·黄(Randy Huang)博士是这篇论文的合著者之一,他说:“深度学习是人工智能方面最激动人心的领域,因为我们已经看到深度学习带来了最大的进步和最广泛的应用。虽然人工智能和DNN 研究倾向于使用 GPU,但我们发现应用领域与英特尔的下一代FPGA 架构之间是完美契合的。我们考察了即将出现的FPGA 技术进展,以及DNN算法加快步伐的创新,还考虑了对于下一代 DNN而言,未来的高性能FPGA是否比GPU更胜一筹。我们的研究发现,FPGA 在DNN 研究中表现很出色,可以运用于需要分析大量数据的人工智能、大数据或机器学习等研究领域。使用经过精简或紧凑的数据类型vs标准的32位浮点数据(FP32)时,接受测试的英特尔Stratix10 FPGA其性能胜过GPU。除了性能外,FPGA还很强大,就是由于它们具有适应性,很容易实现变化的部分,只需要重复使用现有的芯片,让团队在短短6个月内就可以完成从提出想法到构建原型的过程,而不是花18个月构建专用集成电路(ASIC)。”& Q& {0 A! X: G8 |: Q7 X8 ^
/ I( l% F/ ?; b% L% b: J- ^
; |% L' S( l0 q5 I7 a2 `/ y3 a; s. d+ H( ], D( w, }/ w" C2 S) k+ e
测试中使用的神经网络机器学习7 s1 x3 V, s) K- |9 M! N) ]' j W
* b5 Q5 |$ l5 [: T6 W @
1 y0 U$ S+ y' V$ g% j# @
, i- h8 x z* q! p8 h
神经网络可以用加权边(weighted edge)互连的神经元图形来系统地表述。每个神经元和边分别与激活值和权重关联起来。该图由多层神经元组成。一个例子。
- @/ a7 U, a# k4 I# d& _7 ?/ |
9 n2 Z" O2 c4 m9 H, d- j3 J! r, Z4 g2 y- J4 F- u0 }; Q7 V1 B
神经网络计算会通过网络中的每个层。就某个特定的层而言,每个神经元的值通过相乘和累加上一层的神经元值和边权重来计算。计算高度依赖相乘-累加操作。DNN计算包括正向传递(forward pass)和反向传递(backward pass)。正向传递在输入层采样,然后通过所有隐藏层,并在输出层生成预测。至于推理,只需要正向传递来获得某个特定样本的预测。至于训练,来自正向传递的预测错误随后在反向传递过程中被反馈回来,以更新网络权重――这被称为反向传播算法(back-propagation algorithm)。迭代训练进行正向传递和反向传递以调整网络权重,直至达到期望的准确度。
, ^. V; S* i' G7 m2 I5 D, }! ~) n. l7 \. r z; U Y
. X. }& ]& [ F( {2 k1 L: b2 K
& _& M4 o( }/ }9 b6 k1 A- A
几个变化让FPGA成为一种可行的替代方案
9 R2 w, E2 k+ y: z: {( A; K* t/ ~$ P) ]5 Q2 s
% U/ z" c3 G. @* Q5 [
! L1 \: U3 F) f- o. b) s 硬件:虽然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。8 ]) }! g) M3 p# N% x. h( N* x9 L
+ q0 ]3 B( }: M0 n9 s# M" t 新兴的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 的硬件可以有效地略过零计算,那样可以提升性能。: m% R* e0 n- [0 T9 b% K# y
* |0 M$ b9 z; P: N' _ ~
; f/ O1 j0 r' z* k0 S新兴的低精度、稀疏DNN算法在算法效率上比传统的密集FP32 DNN高出几个数量级,但它们引入了GPU难以处理的不规则并行性(irregularparallelism)和自定义数据类型。相比之下,FPGA是为极高的可定制性设计的,它在运行不规则并行性和自定义数据类型时表现出色。这类趋势使未来的FPGA成为一种切实可行的平台,可用于运行DNN、人工智能和机器学习等应用。黄说:“专门针对FPGA的机器学习算法有更大的预留空间。”图2表明了FPGA极高的可定制性(2A),因而能够有效地实施新兴的DNN(2B)。
2 _) X& x4 N2 ?( o' A * p9 W% o1 s! A4 q% N1 u
' b: m4 q/ Y. [; e) nFPGA很适合新兴的DDN( L0 j5 Z8 d/ P
7 `6 u$ j, P# N3 s$ u: x4 l. P/ X4 l5 `% l0 T' D/ Q
) \. O- l" j: P5 }5 g4 K D
研究所用的硬件和方法
" r! [# _" ]3 |( ^9 b![]()
! W$ E+ g; @$ J4 q1 n" N2 {) O. S
: f% w" Z1 t4 j* }3 S& z4 f
2 D: {& y, p: C8 ]; p1 N# E7 S* tGPU:使用已知的库(cuBLAS)或框架(Torch with cuDNN)
7 u/ B7 W, @8 u) p; N
* t( K8 G- J) q( iFPGA:使用Quartus Early Beta版本和PowerPlay来估计, S4 F4 k# a2 E& S1 H
# H: L9 r7 h" j# y
3 C- Z1 ]. `& k! A `" E
& A J5 n1 M3 _: I( N& f% [短阵相乘(GEMM)测试的结果。GEMM是DNN中的关键操作。(图片来源:英特尔)
9 U7 w& u- ^ O3 o6 M/ m, L
; G) `; q4 @& s8 K1 }% c3 q
& u4 k. m$ v* Y研究1:矩阵相乘(GEMM)测试
8 |+ Q! u; e+ w* X: ?8 R6 \! g! M/ M0 }: A% B9 y
3 W$ x; P7 S+ o7 ^
DNN 高度依赖矩阵相乘运算(GEMM)。常规DNN依赖FP32密集GEMM。然而,较低精度、稀疏的新兴DNN 依赖低精度及/或稀疏的GEMM。英特尔团队评估了这些不同的GEMM。3 L! w& ~2 O @2 I
9 C5 ^7 x& j6 t
, R3 K" T5 K' G) D' e FP32 密集GEMM:由于FP32密集GEMM已得到充分的研究,英特尔团队比较了FPGA和GPU数据表上的峰值数字。TitanX Pascal 的峰值理论性能对Stratix 10而言分别是11 TFLOP和9.2 TFLOP。图3A显示,相比英特尔Arria10,DSP 数量多得多的英特尔Stratix 10 提供了大大提升的FP32性能,让Stratix10的性能足够接近Titan X 的性能。$ |3 c1 Z% D* I; w3 d# j& W) G
( d y4 ~. o: w- r( M! [" t 低精度INT6 GEMM:为了表明FPGA在可定制性方面的优点,该团队将四个int6封装到一个DSP模块中,以研究FPGA的6位(Int6)GEMM。至于本身不支持Int6 的GPU,他们使用了峰值Int8GPU性能来进行比较。图3B显示,英特尔Stratix 10 的性能优于GPU。FPGA的性能/瓦特比GPU还要来得吸引人。" C+ H' E/ Y/ k* j/ L
/ ~. o# C4 d' V+ M D 精度非常低的1位二值化GEMM:最近的二值化DNN 提议使用极其紧凑的1位数据类型,因而可以用非常适合FPGA的同或(xnor)和位计数(bitcounting)操作取代相乘操作。图3C显示了团队的二进制GEMM测试结果,其中FPGA 的性能比GPU高得多(即针对不同的频率目标,性能高出2倍左右到10倍左右)。) z7 o: \; e; G4 u/ g
8 ]4 C0 G8 G+ o( s% i: j; |% C 稀疏GEMM:新兴的稀疏DNN包含许多零。该团队针对85%零值的矩阵测试了稀疏的GEMM(基于经过精简的AlexNet而选择)。该团队测试的一种GEMM设计利用FPGA的灵活性,以一种细粒度的方式跳过零计算。该团队还在 GPU上测试了稀疏的 GEMM,但发现性能不如在GPU上执行密集的GEMM(矩阵一样大小)。该团队的稀疏GEMM测试(图3D)显示,FPGA的性能比GPU更胜一筹,具体取决于FPGA的目标频率。; O h1 y4 O5 \& z
8 ^- d' x- V, [
+ F1 h- i( }. J1 u* h' h' d- r! E) x0 ]' }
DNN准确度的趋势以及FPGA和GPU在三进制ResNet DNN上的测试结果。(图片来源:英特尔)) @( {. |3 q& ~- @% ?* d/ p9 }- b- g
- K& h" B2 h, S3 q; N# Y
- k- w/ ?5 r, j' Y% j P, c1 W研究2:使用三进制ResNet DNN测试
. Y I1 [1 l, L2 Q
% F% Z5 C7 j4 x3 u) g9 m: t- G8 y5 S7 v, m& e, Z* M+ X
三进制DNN最近提议将神经网络权重限制于+1、0或-1。这允许稀疏的2位权重,并用符号位操作取代相乘。在这个测试中,该团队使用了一种为零跳跃、2位权重定制的FPGA设计,没有以最佳方式运行Ternary-ResNetDNN的乘法器。
0 @8 T. v+ s+ C* V- h$ f0 I) } C! U+ p' l& b; _
$ W# x* \3 r; G6 G不像其他许多低精度、稀疏的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倍。6 A+ M, ]; D# W% z \9 Z
: R6 E% `( `1 I+ G
0 a8 ^) u( L% c {6 G+ F3 y
+ D) j$ W& Y, t: ^, g" `5 yFPGA在研究测试中表现如何
, Q& c0 \0 I3 Z, Z
" E$ {8 B0 k1 U, J' n
- \ K/ B) |# l( E4 @! K
9 H1 B1 c o6 N" h4 v结果表明,就稀疏的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 的首选平台。5 b; o+ X, }4 c0 o/ J L) W
) k |: N% Y/ r" T8 j/ X2 h1 Y
! a4 S$ n- ]& S3 L0 o1 Q- S. ~& d; m! T R7 b& R8 \1 H* Y y4 ?0 p+ f3 \( X
FPGA在深层神经网络中的未来
4 D6 ^/ G( D/ m. F
% X$ D* U0 k8 G) F2 \+ Z) j. B+ F7 d
9 F# Z. e# ^% w! ~6 _# s/ E; u
FPGA能否在下一代 DNN的性能上击败GPU?英特尔在两代FPGA(英特尔Arria10和英特尔Stratix 10)以及最新的Titan X GPU上评估了各种新兴的DNN,结果表明,目前DNN算法方面的趋势可能有利于FPGA,FPGA甚至有望提供卓越的性能。虽然本文描述的结果来自2016年完成的研究工作,但英特尔团队继续针对现代DNN算法和优化(比如FFT / winograd 数学变换、大胆的量化和压缩)来测试英特尔FPGA。该团队还指出,除了DNN外,FPGA在其他不规则应用以及对延迟敏感的应用(比如ADAS和工业用途)等领域也有机会。' u% G/ Z* ^8 _2 |/ h: f" Z
|
|