当前位置:首页 > 新闻资讯 > FPGA之家动态 >

基于FPGA的神经网络优化设计

时间:2024-07-31      来源:网络搜集 关于我们 0

随着短视频行业的兴起以及大数据和物联网时代的到来,近年来人们创造的数据呈井喷式增长,为人工智能的发展提供了坚实的数据基础。加速深度学习的常见平台包括中央处理器 (CPU)、图形处理器 (GPU)、现场可编程门阵列 (FPGA) 和专用集成电路 (ASIC)。

当前,人工智能计算需求主要借助GPU、FPGA等通用芯片来加速,以深度学习为代表。

由于GPU拥有高并行性、高频率和高带宽的特点,可将运算并行化,大大缩短模型计算时间。因其强大的计算能力,GPU广泛用于处理大规模计算任务,加速深度学习算法取得显著成果。

与GPU相比,FPGA不仅具有数据并行的特点,还具有流水线并行的特点,因而对于流水线计算任务,FPGA在时延方面具有天然优势。基于这些优势,FPGA在加速深度学习领域脱颖而出。

首先将介绍一些基于FPGA的神经网络优化技术,并指出其优缺点及应用场景。

基于FPGA的神经网络优化技术

随着人工智能的快速发展,神经网络模型的层数和节点数越来越多,模型的复杂度也越来越高,深度学习和神经网络对硬件的计算能力提出了更加严苛的要求。

基于之前提到的FPGA的优势,越来越多的学者选择使用FPGA来完成神经网络的部署。 根据不同的设计理念和需求,基于FPGA的神经网络优化技术大致可以分为数据和运算优化、带宽优化、内存和访问优化等。

图1 基于FPGA的神经网络优化技术

数据和运算优化:在此方面,学者们进行了很多尝试并取得了一定的成果,主要方法包括以下内容:

定点量化:在FPGA计算中,由于参与运算的位宽是有限且恒定的,因此需要将浮点十进制数限制在FPGA允许的位宽范围内,这样才能进行计算。

为了实现这一点,需要将神经网络中的浮点数权重和激活值转换为定点数表示,即固定它们的位宽。这样可以确保数值在FPGA中进行计算时能够正确表示。重要的是要注意,这种转换需要遵守FPGA的位宽限制。

其主要步骤包括确定定点数的位宽,确定量化范围,量化操作以及最后对量化后的模型进行重训练或者微调。

定点量化可以在可接受的精度损失范围内大大降低每个参数的存储空间和计算复杂度,从而实现神经网络加速。

与其他方法相比,其可以减少数据的储存需求,降低计算复杂度和资源需求,从而可以将深度学习模型部署在资源受限的边缘设备上,如嵌入式系统、移动设备等。

乘法优化:矩阵运算主要出现在神经网络的训练和前向计算中,并占据主导地位, 因此,加速矩阵运算具有重要意义,矩阵乘法的优化可以通过减少乘法计算次数和提高计算速度来实现。

具体可以通过使用数据流架构来并行化矩阵乘法运算,设计合适的数据缓存结构和数据重用策略,减少存储器访问次数,提高数据重用率以及利用FPGA的并行计算能力,将矩阵乘法运算并行化或通过划分矩阵并分配给不同的计算单元,同时执行多个乘法操作实现。

与定点量化相比,这种方法可以减少乘法操作的计算开销,提高计算效率和性能并且不会引入精度损失,在优化过程中保持计算结果的准确性。

卷积优化:学者们为了优化卷积算法,提出了以下两种思路,一是利用Winograd快速卷积算法,通过增加加法操作和减少乘法操作来加速卷积计算;另一种是采用Im2col卷积优化算法,以牺牲存储空间为代价,提高卷积运算速度。

前者是一种将卷积操作转换为矩阵乘法操作的优化方法,它通过对输入、卷积核和输出的变换,将原始卷积操作转化为小规模矩阵乘法操作。

Winograd算法能够减少乘法和加法操作的数量,从而提高计算效率。但与后者相比其缺点在于转换过程需要额外的计算和存储开销,并且对于较小的卷积核和输入尺寸,转换的开销可能会超过算法本身的优势。

后者是一种基于图像重塑的卷积加速方法。它通过将输入图像转换为一个矩阵(通常称为im2col矩阵),并使用矩阵乘法来执行卷积操作。其优点与矩阵乘法的优点相似,与前者相比对于较大的输入图像和卷积核,im2col矩阵可能会非常大,导致存储需求增加。

图2 Im2col卷积优化算法

带宽优化:在神经网络的部署中,各种神经网络都必须依赖特定的计算平台(如CPU/GPU/ASIC/FPGA)才能完成相应的算法和功能,这里的带宽则是指一个计算平台在最佳状态下每秒可以完成的内存交换量(byte/s或GB/s),目前主要利用流水线设计实现带宽优化。

流水线设计方法的主要原理是将复杂的操作分解为多个小操作,并在各个层级之间插入寄存器,用于存储中间数据。这样做的目的是为了提高操作效率。

由于每个小操作所需的时间较短,可以减少信号在一个时钟周期内传输的路径长度,从而增加操作的频率。此外,小操作还可以并行执行,以提高数据处理的吞吐量。通过流水线设计,可以实现高效的操作处理。

通过流水线的设计方法可以显著提高系统的操作速度,这是一种将设计中的"面积"转化为"速度"的常见策略。

在这里,“面积”主要指的是所使用的FPGA逻辑资源数量,使用触发器(FF)和查找表(LUT)的数量来衡量,而"速度"指的是在芯片上稳定运行时能够达到的最高频率。

面积和速度这两个指标贯穿于FPGA设计的全过程,并成为衡量设计质量的最终标准。这种设计方法可以广泛应用于各种设计中,尤其是对速度要求较高的大型系统设计。

虽然流水线可以增加资源的使用,但它可以减少寄存器之间的传播延迟并确保系统保持较高的系统时钟速度。

在深度神经网络的卷积层中,当进行两个相邻的卷积迭代并且没有数据依赖时,流水线允许在当前操作完全完成之前开始下一个卷积操作,从而提高计算能力,目前流水线已成为大多数计算引擎设计的必要操作。

内存和访问优化:数据存储和访问是神经网络的重要组成部分,大量的数据会占用有限的内存空间,同时,大量的内存访问会大大增加网络模型的执行时间,并降低计算效率。在内存和访问优化方面,通常使用乒乓缓存、数据重用、标准数据访问等方式进行优化。

乒乓缓存:乒乓缓存是一种常用的数据流控制技术,用于通过输入数据选择单元将输入数据流同时分配到两个随机存取存储器(RAM)缓冲区,通过切换数据选择单元,实现数据流的传输。

图3 乒乓缓存

数据重用:数据重用简单来说就是数据的重用。

从屋顶线模型看出,当数据复用率较低时,带宽成为影响性能的瓶颈,FPGA的计算资源没有得到充分利用。

因此,通过数据复用,使内存的实际应用带宽大于理论带宽,增加了带宽的上限,也降低了内存的存储压力和数据缓存及数据交换量,从而降低消耗不必要的时间。

图4 数据重用

标准数据访问:大量的数据运算和频繁的数据访问是神经网络在FPGA等便携式系统上部署时必须遇到的问题。

在基于FPGA的神经网络优化设计中,FPGA通常被用作协处理器,即CPU将指令写入内存,然后FPGA从内存单元读取指令并执行,继而将计算结果写入内存。因此,通过规范数据访问,可以提高数据的读写效率,提高实际带宽上限。

下面将对基于FPGA的神经网络加速器和加速框架进行介绍,这些加速器为加速技术的综合应用。

基于FPGA的加速器及加速框架设计

随着深度学习的不断发展,神经网络在图像、语音、视频等各个领域都取得了巨大的成功,神经网络正朝着更深层次、更复杂的网络设计方向发展。

如何在FPGA上部署更复杂的神经网络并满足一定的速度要求成为研究者关注的焦点。在已有的研究中,涌现了大量基于FPGA的神经网络加速器设计。主要有基于FPGA的CNN加速器、基于FPGA的RNN加速器、基于FPGA的GAN加速器。

基于FPGA的CNN加速器:

使用FPGA加速CNN模型的主要优势之一在于其并行计算能力。CNN中的卷积和池化等操作可以以高度并行的方式在FPGA中实现,从而加速计算过程。此外,FPGA还具有较低的功耗和较高的能效,使其成为边缘设备和嵌入式系统中部署深度学习模型的理想选择

为了解决计算量大限制了深度卷积神经网络在嵌入式设备上的部署的问题,设计了如图所示的硬件结构。在这种硬件架构中,所有缓冲区都使用乒乓数据传输机制,用计算时间来屏蔽数据传输时间,以提高性能。

图5 基于FPGA的CNN加速器

虽然这种结构设计取得了更好的性能和更少的资源消耗,但总体而言,这种结构没有考虑全连接层的模型参数优化,处理大量数据时产生的传输开销可能会限制实际性能。另外,这种计算单元数组的“树”结构只能处理常规的卷积运算。

虽然可以配置成三种不同的并行模式以在一定程度上增强卷积层的适应性,但仍然不适用于稀疏处理后的卷积神经网络。因此,随着越来越多的不规则卷积运算的应用,这种硬件结构的使用场景可能会受到限制。

基于FPGA的RNN加速器:

基于FPGA(现场可编程门阵列)的循环神经网络(RNN)加速器是一种专门设计用于加速RNN模型的硬件加速器。RNN是一种具有内部反馈循环结构的神经网络,广泛应用于自然语言处理、语音识别等任务中。

由于RNN模型的序列性质和复杂的计算步骤,使用FPGA加速RNN模型可以提供显著的性能优势。

图6 基于FPGA的RNN加速器

基于FPGA的循环神经网络加速器的设计与卷积神经网络加速器的设计本质上是相同的,都是从提高FPGA的计算性能和资源利用率,降低存储压力的角度进行的,但前者优化了循环结构,并支持动态图,还可以以针对不同的RNN变体进行优化,以提供更好的性能和效率。

基于FPGA的GAN加速器:

GAN是一种由生成器和判别器组成的深度学习模型,广泛应用于图像生成、图像编辑和增强等任务中。使用FPGA加速GAN模型可以提供高效的生成和判别性能。

GAN模型的加速涉及到生成器的前向传播和判别器的前向传播与反向传播等操作。

这些操作可以在FPGA上并行执行,以提高计算效率。FPGA的片上存储器可以用于存储中间状态和权重,以减少与外部存储器的数据传输。此外,FPGA上的定点计算单元可以加速GAN中的浮点计算。

图7 基于FPGA的GAN加速器

该架构能够以更少的 FPGA 资源实现高能效,但其问题在于虽然该架构可以通过将小型并行FIR结构级联到更大的并行FIR结构,有效避免硬件资源的大量消耗,但这种操作大大增加了延迟,尤其是当级联数达到一定限度时,延迟带来的性能损失是无法估量的。

未来展望

深度学习以神经网络为主要模型,随着深度学习的不断发展,加速各种神经网络的研究越来越受到人们的关注。

尽管FPGA以其可重构、低能耗、低延迟等优点在加速各种神经网络方面取得了一些成绩,但也存在硬件编程困难、重构时间长、学习成本高等缺点。因此,FPGA需要一定的时间和技术支持,才能实现更广泛的应用范围,用于更高的应用场景,为人们所熟知。

以神经网络为核心的深度学习技术作为机器学习的革命性实现方式,在未来具有广阔的发展前景。同样,各种深度神经网络也会面临各种应用场景,这对神经网络的性能及其部署平台都有一定的要求。

目前,基于FPGA可重构、低延迟、高并行等优势,利用FPGA加速各种神经网络逐渐成为大多数研究者的选择。

虽然FPGA生态系统还不完善,还有很多问题需要解决,但可以预见,随着时间的推移,基于FPGA的深度神经网络加速技术将逐渐成熟,最终推动整个人工智能领域的改革与发展。


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言