FPGA与神经网络

《深度神经网络 FPGA 设计进展、实现与展望》论文学习

本文内容来源:《深度神经网络 FPGA 设计进展、实现与展望》 焦李成 孙其功 杨育婷 冯雨歆 李秀芳

链接:https://cjc.ict.ac.cn/online/cre/jlc-2021721164800.pdf

神经网络的主流硬件平台

随着硬件技术和深度神经网络的发展,目前形成了以“CPU+GPU”的异构模式服务器为主的深度神经网络的研究平台,如英伟达的 DGX-2,其具有16 块 Tesla V100 GPU,可以提供最高达 2 PFLOPs的计算能力。面对复杂的实际应用需求和不断加深的神经网络结构,多样化的深度神经网络硬件平台也不断发展起来,形成了以通用性芯片(CPU、GPU)半制定化芯片(FPGA)全制定化芯片(ASIC)、集成电路芯片(SoC)和类脑芯片等为主的硬件平台市场。计算性能、灵活性、易用性、成本和功耗等成为评价深度神经网络硬件平台的因素和标准。

FPGA

FPGA(Field Programmable Gate Array)是现场可编程门阵列,它允许无限次的编程,并利用小型查找表来实现组合逻辑。FPGA 可以定制化硬件流水线,可以同时处理多个应用或在不同时刻处理不同应用,具有可编程、高性能、低能耗、高稳定、可并行和安全性的特点,在通信、航空航天、汽车电子、工业控制、测试测量等领域取得了很大应用市场。人工智能产品中往往是针对一些特定应用场景而定制的,定制化芯片的适用性明显比通用芯片的适用性高。FPGA 成本低并且具有较强的可重构性,可进行无限编程。因此,在芯片需求量不大或者算法不稳定的时候,往往使用 FPGA 去实现半定制的人工智能芯片,这样可以大大降低从算法到芯片电路的成本。随着人工智能技术的发展,FPGA在加速数据处理、神经网络推理、并行计算等方面表现突出,并在人脸识别、自然语言处理、网络安全等领域取得了很好的应用。

目前,深度神经网络芯片正在不断研究开发中,每种芯片均是针对一定的问题而设计的,因此,不同的芯片有其独特的优势和不足。通过上述对不同芯片的描述,我们可以了解到相比 GPU,FPGA有更强的计算能力和较低的功耗,相比 ASIC 和SoC,FPGA 具有更低的设计成本和灵活的可编程性,相比类脑芯片,FPGA 的开发设计更简单。综合当前深度神经网络芯片的特性可知,FPGA 的设计性能更适合应用于深度神经网络在普通领域的开发和应用。

FPGA 是基于可编程逻辑器件发展的一种半定制电路,它可以使用硬件描述语言(Verilog 或VHDL)或 C/C++/OpenCL 编程,利用小型查找表来实现组合逻辑,并对 FPGA 上的门电路以及存储器之间的连线进行调整,从而实现程序功能。

随着神经网络的迅速发展,FPGA 做了一系列针对其需求的开发设计,如 Xilinx 推出的 VersalAI Core 系列和 xDNN 处理引擎为深度神经网络推断加速带来突破性的改善。另外,为了促进深度神经网络的发展,不少公司设计提出神经网络编译及框架,如 ALAMO 编译器和 Lattice 公司设计的sensAI 编译器,FP-DNN 框架和 FPGAConvNet 框架。经过 30 多年的发展,FPGA 的制作工艺、逻辑单元和晶体管的封装密度均得到飞速发展。

FPGA 的开发方式及流程

结合 FPGA 自身硬件架构特点,目前其开发主要有两种方式:寄存器传输级(RTL)描述和高层次综合(HLS)描述。

寄存器传输级描述,又称 RTL级描述,是指用寄存器这一级别的描述方式来描述电 路 的 数 据 流 。 开 发 人 员 利 用 硬 件 描 述 语 言(Verilog 和 VHDL)或者 IP 核对硬件结构进行描述。RTL 级开发的主要优势是高稳定性、高资源利用率、高性能等。其劣势也很突出,主要有开发难度大、开发效率低、周期长、成本高等。基于此,利用高级语言实现算法的开发方式应运而生,即HLS 级,开发人员只需要利用高级语言(C、C++)实现算法,而算法程序到 FPGA 硬件结构的映射由编译器自动完成

广义上讲,Xilinx 公司推出了高层次综合 HLS 工具Altera 公司主推的 OpenCL SDK 都属于 HLS 级。HLS 级开发的主要优势是门槛低、开发效率高、周期短,其缺点主要是资源利用率低、性能低、不透明等。

image-20220424140320444

FPGA 的设计流程通常包括设计需求理解、方案评估、芯片理解、详细方案设计、仿真、综合、布局布线、时序优化、芯片编程与调试。神经网络加速设计开始之前,需要先确定神经网络的网络结构和各层级参数,避免因修改而造成的资源浪费和工程延期。在神经网络算法效果符合预期后,需要对神经网络算法进行拆解和分析。通过分析算法所需的计算带宽,存储带宽,存储容量,关键计算瓶颈,计算数据流等,结合 FPGA 芯片的资源特性进行加速效果推算,把适合 FPGA 做加速的算法交给FPGA 来加速,其中需要特别注意的是,FPGA 加速计算推演的数据精度需要和软件验证的数据精度保持一致,否则可能在 FPGA 加速后会有精度损
失而达不到预期的算法效果。

FPGA 深度神经网络相关应用

随着深度神经网络的不断发展,衍生出的智能化产品也越来越多。FPGA 的应用领域已经从原来的通信扩展到消费电子、汽车电子、工业控制、测
试测量等更广泛的领域。在学术界,FPGA 与深度神经网络结合的应用也得到越来越多的关注,成为研究热点。我们以

  • 图像检测与识别
  • 目标跟踪

  • 语音识别

  • 文本处理

  • 网络安全

  • 智能控制

6 个方向来介绍目前 FPGA 与深度神经网络结合的产业应用现状。

图像检测与识别

不管是用于身份核验的人脸识别系统,或是用于植物拍照识别的手机应用系统,这都属于图像检测与识别的过程,是深度神经网络的典型应用场景。而对于商业识别的设备,为了降低产品价格和功耗、提高产品稳定性和速度,大多数企业会选择使用 FPGA 作为图像识别算法的硬件载体。近年来,关于 FPGA 上面部署图像识别的应用越来越多,如人脸识别[118–123]、人手姿态识别[124]、字符识别[125, 126]、车牌识别[127]、交通标志识别[128]、自然场景识别[91] 等等。可以看出,基于图像识别的 FPGA 产品应用场景越来越细化,场景越来越具体化。

目标跟踪

目标跟踪最近几年发展迅速, 不少研究者在研究如何在 FPGA 上实现目标跟踪系统,从而推动产业应用。目标跟踪系统在军事侦察、安防监控等诸多方面均有广泛的应用前景。目前,较多研究主要是将 FPGA 作为协处理器的目标跟踪系统,用于实时视觉跟踪[138–140]。不同的实时视觉跟踪系统设计中使用的方法也不尽相同,如:mean shift 跟踪算法、hausdorff 距离算法、光流法等[138,139,141],计算边缘/角点检测、静止背景和噪声滤波等优化操作也常常在实际中进行应用。近年来,随着深度神经网络模型的不断发展,其跟踪网络性能明显优于传统方法。如:论文[142] 中提出的 MiniTracker,使用的是全卷积的 Siamese 网络,并对其进行了剪枝和量化,使得其在 ZedBoard 上实现并且达到了18.6 帧每秒的跟踪率。

语音识别

目前,深度神经网络除了在图像和视频领域应用越来越广泛以外,基于 FPGA 的语音识别系统也成为研究热点。由于其庞大的市场需求,语音识别发展速度异常迅猛。在智能语音识别产品中,为保证一定的灵活性和移动性,往往在 FPGA 上部署语音识别模型,以满足智能与生产落地的需求。在其相关研究中,语音识别模型主要有连续隐马尔可夫模型,液体状态机以及递归神经网络[144] 等等。

文本处理

自然语言处理主要是研究人与计算机之间通过自然语言的方式进行有效通信的理论和方法。作为人工智能领域的一个重要应用方向,自然处理已经得到了广泛的关注。自然语言处理可以分为文本处理以及语音处理,我们将语音识别应用在上一小节进行了归纳总结。

网络安全

网络安全与入侵检测也是 FPGA 与深度神经网络结合的一个重要应用,主要是对于网络系统中收集的信息进行分析,然后通过某种模型判断是否存在异常的行为。基于 FPGA 的网络安全与入侵检测系统就是为了对于网络进行实时监控,并在网络系统异常时或者对外来攻击进行及时的反应,以保证网络系统的安全性。关于该方面的研究也越来越多[163–166],有降低 FPGA 的计算要求的深度神经网络算法实现在线异常入侵检测系统,也有利用可重构硬件辅助网络入侵检测系统,以及利用 FPGA 搭建了网络传输异常检测体系结构等。这些系统往往都可以被集成在可重构系统中,作为辅助系统使用。

智能控制

将基于 FPGA 的深度神经网络用于实际控制,打破了传统逻辑控制模式,实现了控制系统的自动化和智能化。

FPGA 深度神经网络的加速与优化

深度神经网络往往是在大内存、较强计算力的GPU 上进行训练学习的。但在相关模型进行产品化落地应用时,必须考虑设备资源的尺寸、内存、能耗、带宽和成本等因素。神经网络模型压缩和加速的 提 出 , 让 复 杂 的 深 度 神 经 网 络 在 小 型 设 备(FPGA)上的实现成为了可能。这些实现使得神经网络得以搭载在 FPGA 芯片上,进一步应用到自动驾驶、航天航空以及手机等设备中。本文将从

  • FPGA 神经网络加速器

  • 神经网络压缩与加速技术

  • 计算加速与优化

  • 基于带宽的神经网络加速

  • 基于 FPGA 的神经网络编译器及框架

等五个方面进行总结与归纳。

FPGA 神经网络加速器

随着深度学习的不断发展,神经网络在图像、视频、语音处理等各个领域取得了巨大的成功。
VGGNet、GoogleNet、ResNet 的出现,让我们清楚的看到神经网络正往更深、更复杂的网络设计方向发展。那么,如何将更复杂的神经网络部署到 FPGA
上,并能够满足一定的速度要求,成为研究者们的关注的焦点。

在现有的研究中,涌现出大量的 FPGA深 度 学 习 加 速 器 , 例 如 : DLAU[172], Deep-Burning[173],DeepX[174],BISMO[175],BitFusion[176]与[177]等等。

DLAU[172]

​ 是一种可扩展的加速器架构,主要使用三级流水线处理单元与分片技术去提高吞吐量并对深度学习应用程序的局部性特征进行探索。其中,三级流水线处理单元主要包含分片矩阵乘法单元,部分和累加单元和活化函数加速单元,可以重复使用以实现超大规模的神经网络。分片技术是来分割大规模的输入数据,将输入节点数据转换成更小的集合并重复计算,这样使得 DLAU 加速器可以将处理不同尺寸的分片数据进行灵活配置。经实验验证,与 Intel Core2 处理器相比,DLAU 加速器可以实现 36.1 倍的加速效果。

DeepBurning[173]

​ 是一种自动化神经网络加速器的实现方法。用户只需提供网络拓扑上层描述和硬件资源约束,框架中的神经网络集成器就可以自动分析网络特征,结合硬件约束在由内积单元、累加单元、池化单元等组成的组件库中选出合适组件组成硬件网络,以及对应的控制流、数据流和数据布局方案。

DeepX[174]

​ 是一个用于深度学习执行的软件加速器,可以降低深度学习应用时所需的内存,计算量与功耗。它通过利用移动片上系统的异构处理器(如 GPU,LPU)的混合,降低资源开销。在执行深度模型的不同推理阶段时,每个计算单元提供不同的资源效率。DeepX 在深度学习推理阶段时,通过扩展模型压缩原理,可以扩展单个模型层的复杂度,并以此控制推理过程中层的内存计算和能量消耗。同时,它还可以分解深层模型结构,将各块分配给本地和远程处理器,有效地最大限度地提高资源利用率。实验表明,DeepX 可以让大规模的深度学习模型在移动处理器上高效地执行,其性能显著优于现有的解决方案。

image-20220424144203773

BISMO[175]

是一个可扩展的位串行矩阵乘法覆盖,可以有效地在 FPGA 上实例化。它的核心是一个软件可编程加权二进制矩阵乘法引擎和用于获取数据并存储结果的相关硬件。它的软件可编程性使得可以在任何矩阵大小和任何定点或整数精度上进行操作。

神经网络压缩与加速技术

众所周知,深度神经网络在多个领域上表现出优于传统算法的效果。但在应用过程中,其计算量巨大,占据内存较大。因此,若想真正将神经网络
应用到嵌入式系统中去,就必须对神经网络自身进行处理,以实现神经网络的压缩与加速。FPGA 加速设计中涉及的几种常见的神经网络压缩与加速
方法:包含网络剪枝在内的深度压缩、低秩估计、模型量化以及知识蒸馏方法[178, 179]。

神经网络深度压缩

2015 年,Song Han 等人在论文[180]中提出了,在不损失精度的前提下,深度压缩对于 AlexNet 可以减少 35 倍的内存占用, 对于 VGG-16 的内存占用
可以减少 49 倍,其中网络剪枝就可以实现的模型压缩率就能达到 10 倍以上。2017 年,深鉴科技的语音识别技术成为了在 FPGA 上实现深度压缩应用
的成功典型。

神经网络的深度压缩的过程中包含:模型剪枝、权值量化与共享和霍夫曼编码,它们一起工作大大减少了神经网络的存储需求,在精度几乎无损的情况下,将模型压缩几十倍以上,具体的深度压缩方法的主要流程如图 2 所示。

网络剪枝

的提出可以溯源到 1989 年,由图灵奖获得者 Yann LeCun 在论文[183]中提出来的。其核心思想主要是通过估计每个参数的重要程度,删除不重要的参数,以达到模型压缩的目的,效果示意如图 3 所示。

根据裁剪方式不同,现有的剪枝方法分为阈值裁剪方法动态补救方法Filters 裁剪方法和重要性裁剪方法。在剪枝过程中,可以通过计算损失函数对参数的二阶导数的大小或计算参数的绝对值的大小来衡量网络参数重要程度,数值越小参数越不重要,可以进行删除。

设计者在进行网络裁枝时,需要考虑两个问题:对输出的一个节点进行裁剪是否影响到其他输出节点和如何对于删掉的参数进行彻底清除。针对于以上两个问题,目前提出了 **Filter-level、Group-level 与稀疏卷积方法[185]**。不管使用哪一种剪枝方法,剪枝后的网络需要进行再次参数调优。

image-20220424145704932

模型量化与参数共享

神经网络深度压缩过程的第二阶段是模型量化与参数共享,在这里只介绍参数共享,模型量化将在下一小节进行系统介绍。论文[180, 188]将参数共享归为量化操作中的一小步。不同的研究采用的共享规则也是存在差异的,论文[189]使用了一个低成本的哈希函数将连接权重随机地分配到哈希桶中,然后所有在同一个哈希桶中的连接共享一个参数值,而[190]是对所有权重使用 k-means 聚类操作,聚类完成之后属于同一类的权重将共享一个参数值。它们都是通过共享参数的方法来压缩神经网络模型。其中典型的聚类量化方法是,将训练的每一层的权值参数进行 k-means 聚类,聚类完成之后属于同一类的参数都使用该类聚类中心的数值作为

它们的权值参数数值,然后通过索引矩阵将共享权值一一对应到权值参数的确定位置。通过权值共享,原来的权值矩阵变成了一个查找表与共享权值矩阵,也就是说原来权值矩阵被一个与权值矩阵相同大小的查找表矩阵代替,查找表矩阵上面的索引可以准确找到对应的共享权值,共享权值则只需要存储在一个大小为共享权值总个数的矩阵中即可,如图 4 所述。

image-20220424150141418

哈夫曼编码

神经网络深度压缩过程的第三阶段是哈夫曼编码。哈夫曼编码是 1952 年 David A.Huffman 在论文[191]中提出来的。它是一种可变字长编码的编码方式。哈夫曼编码可以用短的码值来表示更多的数字,提高编码效率,以达到深度压缩的效果。因此,在深度压缩过程中最后保存网络的时候常常使用哈夫曼编码进行进一步的压缩。

低秩估计

低秩估计是利用矩阵分解或者张量分解以及矩阵乘法或者卷积运算这种线性运算的结合律,将原本的参数张量分解成若干个小张量,或将原本的卷积用几个小卷积代替。高维矩阵的运算会采用Tensor 分解方法对神经网络进行加速和压缩,目前的 Tensor 分解方法主要包含了 CP 分解、Tucker 分解、Tensor Train 分解[192] 和 Block Term 分解方法等等。典型的神经网络卷积核是一个四维张量,全连接层可以看作是一个二维矩阵,这些张量中往往存在大量的冗余。我们可以利用低秩估计的方法对于参数矩阵进行分解,减少参数量,达到模型压缩和加速效果。低秩估计是对神经网络的每一层利用低秩滤波器进行逐层逼近,每一层的参数就会被固定后,而对于每一层之前的层会根据重建误差准则进行微调[193–195]。压缩 2D 卷积层的典型低秩方法,如图 5 所示。

image-20220424150643434

模型量化

模型量化可以通过量化函数将全精度的数(激化量,参数,甚至是梯度值)映射到有限的整数空间。模型量化可以减少每个参数的存储空间,降低计算复杂度,因此可以实现神经网络加速。通过量化对神经网络模型进行不同位数的编码,应用少量的乘法与位运算加速了网络模型的运算速度。或者将神经网络中卷积运算中的矩阵乘法变为计算简单的加减法运算,简化了计算量,进而实现神经网络加速。

知识蒸馏

基于 FPGA 的深度神经网络模型的设计一般都趋向于计算复杂度低的小模型,对模型性能有了更高的要求,既要求计算速度快、资源少,又要具有复杂模型的精度性能。因此,对小模型的训练成为一个焦点问题。知识蒸馏[221]是 Hinton 等人在2015 年提出的,它是将训练好的复杂网络模型推广能力“知识”迁移到一个结构简单的网络中。以上提到的网络裁枝、低秩估计以及模型量化,都是对特定网络模型进行压缩和加速。然而知识蒸馏方法直接设计了一个简单结构的小网络,将难点转移成对小网络的训练上。整个思想中最大的难题在于如何有效地表达“知识”,并有效地指导小网络的训练。

知识蒸馏的结构主要由三大部分构成:指导网络、指导损失函数以及学习网络,如图 6 所示。

image-20220424151210338

指导网络又常常被称为“教师网络”,学习网络被常常成为“学生网络”。知识蒸馏的核心思想中使用了软目标辅助硬目标一起训练。其中,软目标指的是教师网络模型输出的预测结果,硬目标指的是样本原始标签,即真实标签。2015 年,Hinton在他的论文[221]中推荐软目标与硬目标经验权重为 9:1。

在现有的神经网络加速的研究中,有一部分工作 是使 用蒸馏 进行 模型优 化训 练的。 相关 研究[222–225]中设计了或者改进了学生模型,在几乎不损失精度的前提下,使用更少的参数,更浅的网络结构提高了网络计算速度。同时,模型蒸馏往往会与模型量化同时进行神经网络的压缩与加速,论文[226,227]中利用知识蒸馏技术,弥补因量化导致的性能下降,提高低精度网络的精度。论文[228]则是使用了在线蒸馏的方法,突破了分布式 SGD 存在的瓶颈,提高了集群上的模型计算效率与精度。

计算加速与优化

矩阵乘法优化矩阵运算在深度神经网络的训练与前向计算中占据主导地位,因此加速矩阵运算具有重大意义。矩阵乘法的优化可以通过减少乘法计算次数和提
高计算速度来实现。矩阵分块技术与 Winograd 转换方法常常作为神经网络中的优化算法。

矩阵分块技术

在深度神经网络中存在大量的矩阵运算,常常会因为矩阵太大而出现高速缓存缺失的情况。循环分块可以将矩阵循环拆分成更小的模块进行计算,这样可以使片上存储数据重复利用,减少访问内存的次数,提高计算的效率。

矩阵 Winograd 转换

Winograd 转换方法的核心思想就是使用更多的加法来代替乘法[229]。因此,我们可以在滤波器的维度较小的情况下使用 Winograd 方法做卷积运算。

因此,我们可以在滤波器的维度较小的情况下使用 Winograd 方法做卷积运算。2016 年,论文[230]是 CVPR 首个将 Winograd 算法引入的研究工作,文中利用 Winograd 算法与傅里叶变换算法分别对卷积神经网络进行剪枝操作,得出 Winograd 算法的剪枝性能优于傅里叶变换算法的结论。

卷积优化

神经网络结构往往是由卷积层,池化层以及全连接层构成的。其中的卷积层和全连接层在硬件结构上,往往是针对于矩阵运算进行设计的。将卷积层和全连接层可以转化为矩阵,然后利用 FPGA 进行计算并加速。如图 7 就是将二维卷积转化为矩阵的示意图:

image-20220424152108290

卷积就是卷积核跟图像矩阵的运算。卷积操作的实现方法主要有滑窗法、傅里叶变换法和 im2col。

频率优化

理论峰值工作频率也是 FPGA 性能指标之一,提高 FPGA 的峰值性能也是目前 FPGA 加速设计中的一个研究方向[85,91,241]。FPGA 能够达到多少工作频率不仅需要考虑 FPGA 芯片自身支持的频率是多少,同时需要考虑如何内部提高时钟频率,即如何对程序优化,来提高多用寄存器工作频率。28nm 的 Altera FPGA 上实现傅里叶变换等简单算法可以达到数百 GFLOPS,QR 与 Cholesky 分解等复杂算法则达到 100 GFLOPS 以上。

基于带宽的神经网络加速

在基于 FPGA 的神经网络加速中,内存带宽也常常是影响计算速度的瓶颈。当模型的计算强度小于计算平台的计算强度上限时,此时模型理论性能的大小完全由计算平台的带宽上限以及模型自身的计算强度所决定。由此可见,在模型处于带宽瓶颈区间的前提下,计算平台的带宽越大,模型的理论性能可呈线性增长。因此,通过提高带宽上限或者减小带宽需求,可以实现对模型的加速。

本节将从三个方面对基于带宽的神经网络加速进行阐述:首先介绍了衡量神经网络模型性能的 Roof-line 模型,其次总结了针对提高带宽上限和减小带宽需求的现有方法。

Roof-line 模型Roof-line 模型就是用来衡量模型在一个计算平台的限制下,所达到的最大浮点计算速度。通常计算平台使用算力π与带宽β这两个指标进行性能衡
算力也称为计算平台的性能上限,指的是一个计算平台倾尽全力每秒钟所能完成的浮点运算数。单位是 FLOP/s。带宽也即计算平台的带宽上限,指的是一个计算平台倾尽全力每秒所能完成的内存交换量。单位是 Byte/s。与此对应的,计算强度上限 Imax 就是算力和带宽相除的结果

基于FPGA的神经网络编译器及框架

FPGA 的价值所在就是高度灵活、快速部署,在这方面涌现出很多针对 FPGA 上的神经网络部署的编译器和框架。例如:sensAI 和 ALAMO 编译器[239],FP-DNN 框架[112], FPGAConvNet 框架[101],Caffeinated FPGAs 框架[231]以及 FINN 框架[110]等等。在论文[87]中,Yufei Ma 等人提出了一个基于库的 RTL 级 CNN 编译器,该编译器可以自动生成用于各种 CNN 推理任务的定制 FPGA 硬件,以便实现 CNN 从软件到 FPGA 的高级快速原型设计。针对 FPGA 部署神经网络,研究者又提出了编译器 ALAMO[239],它使用模块化 RTL 编译器加速深度学习算法,目标是提供一种自动方式,将 CNN推理过程映射到可以使用的高效 RTL 代码。该论文表明,自动编译器解决方案有望实现深度学习的模块化和可扩展硬件加速。

随着神经网络的发展,在 FPGA 上部署神经网络的框架也成为研究热点。针对于神经网络部署在FPGA 上,研究者提出各种不同的框架。例如:Yijin
Guan 等人提出了 FP-DNN 框架[112],该框架可以自动将 DNN 映射到 FPGA 上以加速模型推理。Stylianos I 等人提出了 FPGAConvNet 框架[101],该框架可以将卷积神经网络 CNN 映射到 FPGA 上。Roberto 等人提出了 Caffeinated FPGAs 框架[231],该框架是 CNN 框架 Caffe 的修改版,并带有 FPGA支持,可实现 CNN 模型和专用的 FPGA 实现,并在必要时灵活地对设备进行重新编程。论文[110]中提出了 FINN 框架,主要使用灵活的异构流架构的 FPGA 加速器,通过利用一组新颖的优化可以有效映射二值化神经网络。

大量计算和频繁的内存访问是神经网络在便携式系统上部署的挑战性问题。现有高层适用于FPGA 的综合工具(例如 HLS,OpenCL)大大减少了设计时间,硬件级设计(即 RTL)可以提高效率并实现更大的加速。随着神经网络的不断发展,其在 FPGA 上的部署问题也将成研究者关注的重点。这将进一步促使更多的针对 FPGA 上的神经网络部署的编译器以及框架的出现。

FPGA 深度神经网络的型号选择和性能度量分析

​ 对于基于 FPGA 深度神经网络的研究,器件的选择和实验结果的分析评估是实验过程中不可忽视的两个部分。其中,FPGA 的型号选择是实验顺利进行的先决条件,在此基础上对实验结果进行度量和分析,便可以从多个维度对实验进行分析和把控,从而得到较为全面的实验结果,有助于推进FPGA 深度神经网络的研究进展。

FPGA型号选择

进行 FPGA 选择时,需要根据应用的方向结合 FPGA 器件的特点进行考虑。例如,从器件特色、规模大小、速度需求、功耗、成本、稳定性、安全性等方面进行选择。FPGA 芯片内部资源主要包括 IO 资源、时钟资源、逻辑资源、RAM资源、DSP 资源、高速接口资源、硬核 IP 等,型号选择通常需要平衡各种资源需求并优先考虑关键资源的瓶颈。

例如,在深度神经网络计算加速设计中,通常需要优先考虑 DSP 数量、BRAM 数量以及所支持的外部存储最大带宽等。在选择具体的芯片型号以及封装时,要根据实验的需求与具体情况做出选择。一般来说,可以从芯片特点、规模大小、速度需求、功耗等几个方面做综合的考量。

表 2 FPGA 常用型号

image-20220424162034021

基于网络的 FPGA 型号选择

不同的应用及网络模型常常适合不同的 FPGA型号。目前基于 FPGA 的深度学习实验中,常用的网络模型有 AlexNet、VGG、GoogleNet、ResNet、RNN 等。其中以 AlexNet 为实验模型时常选用Kintex-7、Virtex-7、Stratix-V 系列;以 VGG 为实验模型时常选用 Virtex-7、Stratix-V、Kintex-7、Arria-10 系列;以 GoogleNet 为实验模型时常选用Kintex-7、Arria-10 系列;以 ResNet 为实验模型时常选用 Arria-10、Kintex-7 系列;以 RNN 为实验模型时常选用 Kintex-7、Airtex-7、Arria-10、 Virtex-6系列。具体系列选择如表 3 所示。

表 3 基于网络的 FPGA 型号选择

image-20220424162218037

基于应用的 FPGA 型号选择

对于不同应用领域的深度学习实验,研究者们所选择的 FPGA 型号常常是不同的。深度学习应用中常见的图像识别、目标跟踪、目标检测、语音识别等应用中常常使用 Virtex-5、Virtex-2、Virtex-4系列的 FPGA 芯片,除此之外,在自然语言处理中,研究者们还使用了 Airtex-7 系列;在网络安全与入侵检测和电力应用中,Virtex-2 系列被用的最多。每一种应用所常用的 FPGA 芯片系列具体如表 4 所示。

表 4 基于应用的 FPGA 型号选择

image-20220424162346660

评估指标和度量分析

除了 FPGA 选型之外, 如何衡量基于 FPGA 的深度神经网络的实验效果是另一个需要着重考虑的问题。以实验常用的衡量指标为基础,基于 FPGA 的
深度神经网络的性能衡量指标具体可从速率、能效、资源利用率、深度神经网络的性能和特定应用五个维度进行具体衡量。其中,速率、能效、资源
利用率更侧重于对 FPGA 的性能评估,而后两者则偏向于深度神经网络的性能的衡量。可以看出,对基于 FPGA 的深度神经网络的实验效果进行衡量要
多维度、全方面的考虑,这样才能更加准确的进行性能评估与度量分析。下面将对其进行详细介绍。

基于速度的实验评估指标

在实验的结果评估中,速度是判断实验效果的重要标准之一。论文中常用的速度评估方法有吞吐量和响应时间、CPU 执行时间、MIPS、MFLOPS、GFLOPS 和 TFLOPS 等。

基于能效的实验评估指标

FPGA 具有高性能、低能耗、高并行、较强的灵活性等优点。因此,能源效率是深度 FPGA 实验性 能的 另一个 重要 评估指 标。 论文中 常常 采用GOPS/W 的比值来评价在 1W 功耗的情况下,处理器的运算能力。功率、带宽、能耗等常常作为具体的评估指标。在不同 FPGA 加速平台进行比较时,将功率为比较标准之一。

基于资源利用率的实验评估指标

在 FPGA 的设计中,必须要充分了解各个芯片的内部资源利用情况,包括 FF、DSP、LUT、BRAM等单元,在后续的实验设计中才能使得以上各个单元的利用达到平衡,并最大限度地发挥作用。因此,FPGA 每一个单元的资源使用情况同样可以对实验效果进行评价。论文中常用某一元器件已用资源与可用资源的比值计算资源利用率。因此,FPGA 每一个单元的资源使用情况同样可以成为对实验效果的评估指标。论文中常用某一元器件用的资源与可用的资源的比值作为资源利用率的计算方法。

基于网络结构的实验评价指标

网络结构和数据集是深度学习必不可少的一部分。对于深度 FPGA 实验来说,实验中常用网络结构有 VGG、AlexNet、 GoogleNet、ResNet、NiN、LeNet、PCNN、RNN、 SqueezeNet、SNN、MobileNet等 ; 实 验 常 用 数 据 集 有 MINST 、 CIFAR-10 、ImageNet 、 Kaldi 、 GTSDB 、 Penn Treebank 、TSUKUBA、Venus、Cones、Teddy、 TIMIT、Speaker dependent TI46、INRIA、PPI、 Reddit、Yelp、STL,LIDAR、PTSB、Sports-1M、 Oxford Flowers 102、Birds-200 等。深度神经网络由多层神经网络结构组成,网络层有卷积层、池化层、全连接层等。不同层对实验结果都起着不同的作用。因此,对每一
层进行性能分析,可以得到其对实验性能的影响。

基于应用的实验评价指标

基于 FPGA 的深度神经网络在各个方面均得到了应用。对于不同的应用,其相应的评估指标也应该有所不同。

影响 FPGA 应用于深度神经网络的主要因素

生态环境不完善

编程语言门槛高

数据和模型的复杂化

缺乏专业人才

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信