分享自:

在Arria 10上的OpenCL™深度学习加速器

期刊:FPGA '17DOI:10.1145/3020078.3021738

这篇论文属于类型a:一项原创研究报告。以下是根据您的要求生成的学术报告。

基于Intel Arria 10 FPGA的OpenCL深度学习加速器

第一, 研究主要信息 本研究由Intel公司的研究人员Utku Aydonat, Shane O’Connell, Davor Capalija, Andrew C. Ling 与 Gordon R. Chiu共同完成。该研究作为一篇会议论文发表于2017年2月22日至24日在美国加利福尼亚州蒙特雷举行的FPGA‘17国际会议上(ACM/SIGDA国际现场可编程门阵列研讨会)。论文的完整标题为“An OpenCL™ Deep Learning Accelerator on Arria 10”。

第二, 学术背景与研究目标 本研究的主要科学领域是计算机体系结构,特别是面向深度学习应用的专用硬件加速器设计。具体而言,它聚焦于利用现场可编程门阵列(Field-Programmable Gate Array, FPGA)来高效运行卷积神经网络(Convolutional Neural Network, CNN),尤其是用于图像分类的AlexNet模型。

研究的动因在于,尽管FPGA在执行卷积运算方面具有内在的能效优势,但当时大部分基于FPGA的CNN实现性能有限,未能充分展现其相对于GPU等设备的明显优势。论文指出,先前的方法主要受限于FPGA有限的外部存储器带宽,使得设计成为“内存瓶颈”,无法充分利用FPGA的计算潜力。此外,许多早期工作仅实现了CNN中的卷积层,而忽视了其他类型的层(如全连接层、池化层等)可能成为系统瓶颈的问题。

本研究的核心目标是解决上述两个关键挑战。研究团队旨在提出一种新颖的架构,能够最大限度地减少外部存储器访问、最大化数据复用,并高效利用FPGA的计算资源以达成高性能和高能效。具体目标包括:1)设计一个能够完整运行AlexNet所有层的深度学习加速器(Deep Learning Accelerator, DLA);2)利用Winograd变换等算术优化技术显著提升计算效率;3)开发一个设计空间探索方法,为特定FPGA设备和CNN找到最优的架构配置;最终目标是使FPGA实现的性能(吞吐量)和能效比(每瓦特性能)达到甚至超越同代高端GPU(如Nvidia Titan X)的水平。

第三, 研究流程与方法细节 该研究并非传统的实验科学流程,而是一项硬件架构与系统设计的工程研究。其“研究流程”主要包括架构设计、建模与性能分析、以及最终的硬件实现与评估三个阶段。研究对象是所提出的DLA架构本身以及它在Intel Arria 10 GX 1150 FPGA开发板上的具体实现。

步骤一:深度学习加速器(DLA)架构设计 研究人员设计了一种新颖的、用OpenCL描述的DLA架构。该架构的核心是处理单元(Processing Element, PE)阵列和片上存储系统(Stream Buffer)。其主要设计思想和工作流程如下: 1. 并行化策略:为了最大化吞吐量,DLA从卷积层的四个维度提取并行性:输出特征图列(q)、输出特征图数量(k)、输入特征图数量(c)和输入特征图列(w)。对应的向量化因子分别为qvec, kvec, cvec, wvec。每个时钟周期,kvec个PE并行处理kvec个不同的输出特征图。每个PE则负责计算单个输出特征图中的qvec个水平输出像素,这需要处理一个宽度为wvec、深度为cvec的输入特征区域。 2. 片上缓存与数据复用:为了解决内存带宽瓶颈,DLA采用了创新的片上缓存策略。它使用“流缓冲区”(Stream Buffer)在片上存储所有的中间特征图,并使用PE内部的缓存来存储滤波器权重。通过双缓冲技术,DLA在执行当前卷积层计算的同时,可以预取下一层的数据。这种设计最大限度地利用了数据的时空局部性,将卷积层和全连接层的外部带宽需求降低了一个数量级。 3. Winograd变换优化:为了减少卷积运算所需的乘加操作(MAC)数量,DLA在卷积层中采用了Winograd最小滤波算法。论文中具体应用了F(4,3)变换,它将原本需要12次乘加操作的4个输出点(每个点由3个滤波器系数和3个输入特征点卷积得到)的计算,优化到仅需6次乘加操作。整个变换(输入变换、点乘、输出变换)均在芯片上完成,显著提升了计算吞吐量。 4. 处理单元(PE)设计:每个PE包含多个点积单元、累加器和滤波器权重缓存。点积单元负责执行Winograd变换后的特征数据与滤波器权重的乘积累加。累加器以移位寄存器的形式实现,允许在宽度(w)和高度(h)方向交错处理多个不同输出的部分和,以隐藏流水线延迟并提高DSP利用率。 5. 全连接层处理:DLA使用相同的PE阵列处理全连接层。为了克服全连接层权重复用率低、带宽需求高的问题,研究采用了图像批处理(Batching) 技术。具体而言,在完成单张图像的所有卷积层后,将多张图像的中间特征图批量载入到PE的片上缓存中。在处理全连接层时,滤波器权重从外部存储器流式输入,并与这批缓存中的多个图像特征同时进行计算,从而分摊了权重加载的开销,提高了带宽利用率和计算效率。 6. 整体架构集成:DLA是一个完整的硬件流水线,除了PE阵列和流缓冲区,还包括ReLU激活单元、交叉通道局部响应归一化(Local Response Normalization)单元、最大池化(Max Pooling)单元以及一个中央定序器(Sequencer)。定序器根据CNN的拓扑结构(如AlexNet的特定层序列)生成所有控制信号。所有模块通过Intel FPGA SDK for OpenCL提供的通道(Channel)API以FIFO形式连接,并通过OpenCL内核实现并发执行。

步骤二:设计空间探索与解析建模 为了为特定的FPGA设备(如Arria 10)和CNN网络(如AlexNet)找到最优的DLA配置参数(如cvec, kvec等),研究者建立了一套解析模型。 1. 资源使用模型:他们推导了DSP(数字信号处理器)和片上内存(M20K块)使用量的数学公式。这些公式是向量化参数和网络层尺寸的函数。例如,DSP数量模型考虑了Winograd变换带来的计算量减半效应;片上存储模型则根据特征图尺寸和向量化因子,计算存储输入/输出特征图和滤波器权重所需的存储块数量。 2. 性能吞吐量模型:研究者建立了一个循环级性能模型。该模型考虑了每个卷积层和全连接层的计算量、DSP的并行数量、DSP效率(由向量化因子和图像尺寸量化效应决定),以及外部存储器(DDR)带宽的限制。模型预测了在给定配置下,处理一张图像所需的时钟周期数,进而推算出系统的吞吐量(每秒处理图像数,img/s)。 3. 探索方法:利用上述模型,研究者可以在庞大的设计空间中(不同cvec, kvec组合)进行快速搜索,找到在给定FPGA资源(如DSP总数)和时钟频率约束下,能最大化预测吞吐量的最优架构配置,而无需进行耗时的综合与布局布线。

步骤三:实验评估与结果验证 在确定了最优配置(论文中为cvec=8, kvec=48, qvec=4, wvec=6)后,研究者在Intel Arria 10 GX 1150 FPGA开发板上实现了完整的AlexNet DLA。 1. 实现细节:系统时钟频率达到303MHz。使用共享指数(Shared Exponent)的FP16格式来优化DSP使用,在保证精度(与FP32相比,Top-1/Top-5错误率无影响)的同时,显著减少了逻辑资源消耗。仅使用单通道64位DDR4内存,带宽为17 GB/s,以降低功耗。 2. 评估指标:主要评估了三个关键指标:吞吐量(img/s)、能效比(img/s/W)和计算效率(实际达到的GFLOPS与峰值GFLOPS之比)。吞吐量测量包含了将真实ImageNet数据集中的图像从主机传输到FPGA DDR的完整系统级开销。 3. 对比基准:研究将DLA的性能与当时最先进的FPGA方案(如基于Xilinx UltraScale KU060的Caffeine架构和基于Stratix V的OpenCL方案)以及当时高性能GPU(Nvidia Titan X 和 Tesla M4)的最佳公开结果进行了比较。

第四, 主要研究结果 1. 各层计算效率:表2展示了在最优配置下,DLA运行AlexNet时各卷积层和全连接层的计算性能(GFLOPS)和DSP效率。结果显示,大部分层的DSP效率超过60%,全连接层甚至接近100%(>99%)。这证明了DLA架构能够高效利用FPGA的计算资源,避免了DSP的空闲。较低的效率主要出现在使用5x5滤波器的卷积层(如conv2),这是由于Winograd变换针对3x3滤波器优化,对5x5滤波器存在子优化。 2. 设计空间探索验证:图8展示了不同(cvec, kvec)组合下的预测吞吐量,图9则对比了模型预测的吞吐量与在Arria 10上实际测量的吞吐量。在考虑了主机-FPGA数据传输开销(约16%)后,模型预测与实测数据高度吻合,验证了解析模型的准确性。这证明了设计空间探索方法的有效性,能够可靠地指导最优硬件配置的选择。 3. 资源使用优化:表3对比了使用原生FP16和共享指数FP16时单个PE的资源使用情况。共享指数方案将ALM(自适应逻辑模块)使用量从10.7k降至3.3k,寄存器使用量从26k降至10.6k,降幅显著。这归因于共享指数允许使用DSP块中更高效的18x18整数乘法器,从而大大降低了实现浮点运算的逻辑开销。表4显示了最终8x48配置在Arria 10 1150器件上的总资源占用:使用了58%的ALM, 97%的DSP和92%的M20K内存块,在303MHz时钟下运行。 4. 性能对比结果:这是本研究最核心的成果。 * 与FPGA方案对比:如表5所示,DLA在AlexNet上实现了1382 GFLOPs的有效性能(得益于Winograd变换)。这比当时基于20nm KU060 FPGA的最先进方案(Caffeine, 165 GOPS)高出8.4倍,比基于28nm Stratix V的方案(72.4 GOPS)高出19倍以上。论文指出,即使Caffeine方案能使用100%的DSP资源(其实际只用了约50%),由于其DSP效率较低(仅14.7%),性能差距依然巨大。 * 吞吐量与能效比:如表6所示,DLA在Arria 10上的系统级吞吐量达到1020 img/s。在考虑整个开发板功耗(45W)后,其能效比达到23 img/s/W。这一能效比是当时KU060 FPGA方案(4 img/s/W)的5.8倍,并且与当时Nvidia Titan X GPU(28nm工艺)的最佳公开能效比(23 img/s/W)持平,显著优于Tesla M4 GPU(20 img/s/W)。论文特别强调,DLA的吞吐量测量包含了实际数据搬运开销,而部分对比的GPU结果可能忽略了这些开销,因此DLA的实际相对优势可能更大。

第五, 研究结论与价值 本研究成功设计并实现了一种基于OpenCL的高性能、高能效FPGA深度学习加速器(DLA)。通过采用创新的片上流缓冲区架构最小化外部内存带宽需求,利用Winograd变换显著降低卷积运算复杂度,并辅以针对全连接层的批量处理技术,DLA在Intel Arria 10 FPGA上完整运行AlexNet网络时,实现了超越当时最先进FPGA方案一个数量级的性能提升(10倍更快,8.4倍更高GFLOPS)。尤为重要的是,该工作在能效比(23 img/s/W)上首次证明了FPGA可以与同代顶级GPU(Titan X)竞争,展示了FPGA在深度学习推理任务中作为高能效解决方案的巨大潜力。这项研究为后续基于FPGA的深度学习加速器设计提供了重要的架构思路和优化方法。

第六, 研究亮点 1. 全网络片上缓存架构:提出了一个革命性的设计,通过片上的“流缓冲区”缓存所有中间特征图,将卷积层和全连接层的外部带宽需求降低了一个数量级,从根本上解决了FPGA CNN加速器的内存瓶颈问题。 2. 高计算效率与Winograd应用:在FPGA上高效实现了Winograd最小滤波算法,用于卷积层加速,将特定卷积模式的操作数减半,从而大幅提升了DSP的有效计算吞吐量,使大部分层的DSP利用率超过60%。 3. 统一架构处理全网络:使用同一套处理单元(PE)阵列高效处理了CNN中计算特性迥异的卷积层和全连接层,并通过批处理技术优化了全连接层的带宽问题,实现了资源的充分利用。 4. 系统级性能与能效突破:报告了包含完整数据传输开销的系统级性能(1020 img/s),并首次在能效比指标上使FPGA与高端GPU(Titan X)持平,这是一个里程碑式的成果。 5. 基于解析模型的设计空间探索:建立了一套精确的资源和性能解析模型,能够快速、准确地为给定的FPGA平台和CNN网络找到最优的硬件配置参数,极大提高了设计效率。 6. 工程实现优化:采用了“共享指数”FP16格式,在保持分类精度的同时,极大地减少了DSP外围逻辑的资源占用,使得在有限资源的FPGA上部署大规模网络成为可能。

第七, 其他有价值的内容 论文还详细描述了如何通过“折叠”(Folding)技术处理卷积第一层输入通道数少(C=3)导致的PE利用不足问题,即通过数据重组创建更多的虚拟特征图通道来饱和点积单元的宽度(cvec=8)。这体现了DLA架构在处理非理想数据维度时的灵活性。此外,论文对GPU对比数据中可能存在的简化假设(如忽略通信开销、使用随机数据)进行了讨论,强调了其自身系统级测量方法的严谨性,并暗示其相对于GPU的实际性能优势可能比表格数据更为显著。最后,论文指出该架构同样适用于其他CNN拓扑(如VGG, GoogLeNet),并计划作为未来工作对其进行映射验证。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com