CN117709406A - 一种基于多fpga的大规模卷积神经网络加速与部署器实现方法 - Google Patents

一种基于多fpga的大规模卷积神经网络加速与部署器实现方法 Download PDF

Info

Publication number
CN117709406A
CN117709406A CN202410025778.1A CN202410025778A CN117709406A CN 117709406 A CN117709406 A CN 117709406A CN 202410025778 A CN202410025778 A CN 202410025778A CN 117709406 A CN117709406 A CN 117709406A
Authority
CN
China
Prior art keywords
fpga
data
calculation
convolutional neural
convolution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410025778.1A
Other languages
English (en)
Inventor
马艳华
宋泽睿
徐琪灿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dalian University of Technology
Original Assignee
Dalian University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dalian University of Technology filed Critical Dalian University of Technology
Priority to CN202410025778.1A priority Critical patent/CN117709406A/zh
Publication of CN117709406A publication Critical patent/CN117709406A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明设计属于FPGA硬件加速器技术领域,公开了一种基于多FPGA的大规模卷积神经网络加速与部署器实现方法,步骤如下:步骤1:根据需要部署的卷积神经网络与FPGA的数量进行时间配平;步骤2:将全连接计算视为特殊的卷积计算,为确定的层在FPGA上设计相应的卷积计算结构;步骤3:级联FPGA,完成部署。本发明提出的基于多FPGA的大规模神经网络加速与部署方法,可以将大规模的卷积神经网络部署在由多个FPGA组成的系统上,实现均衡的流水线设计,从而提高加速器的计算效率。

Description

一种基于多FPGA的大规模卷积神经网络加速与部署器实现 方法
技术领域
本发明设计属于FPGA硬件加速器技术领域,提出一种在多FPGA系统上实现卷积神经网络的方法,具体是一种基于多FPGA的大规模卷积神经网络加速与部署器实现方法。
背景技术
近年来,FPGA在神经网络硬件加速领域受到了极大的关注。在硬件上实现卷积神经网络(CNN)时,传统的方法通常是在CPU以及GPU上训练并且推理的,但是FPGA可以提供独特的优势。首先,FPGA可以并行化地处理数据。虽然GPU可以利用多个处理器来加速一批数据,但是其计算模式是串行的,也就是说,在处理一张特征图时,其无法保证低延迟。与之相比,FPGA可以利用可重构的电路特性提供并行的计算方式,同时支持流水线计算,提供可控的、低延迟的输出。其次,CPU与GPU的能量使用效率较低,使其无法部署到能源受限的环境中,而FPGA由于工作的时钟频率较低,具有很低的功耗。综上所述,FPGA被认为是CNN加速器部署的高效平台。
然而,目前使用FPGA加速CNN仍然存在挑战,近年来,CNN被用于处理更多复杂的问题,虽然仍能够保证很高的准确度,但是其网络的复杂性极大程度地增加了。网络规模的增加要求FPGA有更高的资源,如内存,带宽和逻辑单元,以实现低延迟和高吞吐量的计算。然而,即使是非常先进的FPGA,如Intel Stratix 10,每个时钟周期能够实现5000次的乘加操作,依然少于典型的CNN(如VGG-16或ResNet)中单层操作的总数。这导致了哪怕是这种高端的FPGA,在处理大规模的卷积神经网络时,也没有办法实现低延迟(10ms)或高吞吐量(超过60张图片每秒)。而这种要求在当今的各种应用场景下,尤其是视频流的处理中,是较为常见的。因此,提高大规模CNN部署在FPGA上时的性能是十分必要的。
在现有的研究中,在单个FPGA上实现大规模卷积神经网络依然是主流。为了提高计算速度,大部分的研究聚焦在FPGA上对数据进行量化,减少数据的位宽,使得计算效率提高,但是这种做法往往会导致精度的下降(2022年发表于IEEE Transactions OnComputer-aided Design Of Integrated Circuits And Systems的MLogNet:ALogarithmic Quantization-Based Accelerator for Depthwise SeparableConvolution)。此外,有一部分研究尝试将大规模的CNN网络部署到多个FPGA上,但是在处理多个FPGA的计算映射没有正确地平衡FPGA的工作负载,导致推理过程中部分FPGA的闲置,计算效率下降(2021年发表于ACM Journal on Emerging Technologies in ComputingSystems的Toward Multi-FPGA Acceleration of the Neural Networks)。
发明内容
为了解决大规模卷积神经网络在FPGA上部署时,性能有限,速度较慢的问题,本发明提出了一种通用的基于多FPGA的大规模卷积神经网络加速与部署的实现方法。可以将大规模的CNN网络部署在由多个FPGA组成的系统上,并且保证所有的FPGA在工作负载平衡的同时尽可能减少闲置的时间。
本发明的技术方案:
一种基于多FPGA的大规模卷积神经网络加速与部署器实现方法,步骤如下:
步骤1:根据需要部署的卷积神经网络与FPGA的数量进行时间配平
步骤1.1:确定需要部署的卷积神经网络的层数与计算量
确定层数和计算量仅考虑计算密集型的操作,包括卷积层和全连接层,不考虑池化层;确定计算量时只考虑乘法计算,即处理该层时需要多少次乘法;确定需要部署的卷积神经网络为n层,每层计算量分别为a1,a2…an
步骤1.2:确定可使用的FPGA数量与每个FPGA的DSP数量
确定一个FPGA上的DSP数量时,以一个FPGA上可用DSP数量的80%为准;确定可以使用的FPGA数量为m,每个FPGA上的DSP数量分别为b1,b2…bm
步骤1.3:使用步骤1.1与步骤1.2获得的计算量和DSP数量进行时间配平
配平的具体方式:确定若干个分式,分式的分母为b1,b2…bm中任意数量个数据的加法,分式的分子为a1,a2…an中任意数量个数据的加法,使得确定的这些分式的方差最小;需保证每个数据仅可使用一次,并且一个分式的分子、分母之中只能存在一个加法组合;进行加法组合时,如果是代表计算量的数据,数据下标必须是连续的,如果是代表DSP数量的数据则没有限制;
步骤2:将全连接计算视为特殊的卷积计算,为步骤1.1中确定的层在FPGA上设计相应的卷积计算结构
步骤2.1:根据步骤1.3中确定的分式,提取出需要在一个FPGA上实现的计算,为每一个分式单独设计硬件结构;并且根据分式情况的不同,采用步骤2.2到2.4中的不同方法;设计卷积计算结构时,所有的权重保存在FPGA的PL端;
步骤2.2:如果分式的分子和分母都仅有一个数据,则一个FPGA计算一层的卷积;使用如图1所示的脉动阵列进行卷积计算;该脉动阵列根据卷积窗口的大小确定宽度,在此基础上长度尽可能长,确保一次计算能计算尽可能多的输入通道;
步骤2.3:如果分式的分母是多个数据的加法组合,分子是一个数据,则多个FPGA计算一层的卷积;此时根据分母中多个数据的比值划分该层的输出通道数,每个FPGA计算一部分输出通道;在每个FPGA上设计卷积计算结构时,按照步骤2.2的方法设计;
步骤2.4:如果分式的分子是多个数据的加法组合,分母是一个数据,则一个FPGA计算多层的卷积;此时根据分子中的多个数据的比值划分FPGA中的DSP,使用被划分的DSP设计卷积计算结构处理一层的计算,之后按照分子中数据的下标顺序将其级联,形成流水线;单层计算按照步骤2.2的方法设计;
步骤3:级联FPGA,完成部署
步骤3.1:补充非计算密集型的硬件设计:在对应的FPGA中对输出数据增加激活、池化和SoftMax的计算;
步骤3.2:将步骤1.3中得到的分式按照分子的数据下标排序,之后将分母数据的对应的FPGA按照该顺序级联,存在多个FPGA计算一层的情况时,先将输出结果合并到一个FPGA上再级联;
步骤3.3:将级联的第一个FPGA连接到输入数据流,级联的最后一个FPGA连接到接收数据的设备,完成多FPGA的卷积神经网络流水线部署。
本发明的有益效果:
本发明提出的基于多FPGA的大规模神经网络加速与部署方法,可以将大规模的卷积神经网络部署在由多个FPGA组成的系统上,实现均衡的流水线设计,从而提高加速器的计算效率。
附图说明
图1是本发明所使用的脉动阵列方法的硬件结构示意,其中MAC代表乘加结构。
图2是本发明中如何进行多个FPGA级联的示意,以及硬件部署与配平分式的对应情况。
具体实施方式
下面结合附图和具体试试对本发明作进一步的说明,使用本发明提出的方法完成VGG-16卷积神经网络的硬件部署。
步骤1:根据需要部署的卷积神经网络与FPGA的数量进行时间配平:
步骤1.1:确定需要部署的卷积神经网络的层数与计算量。忽略非计算密集型操作,且只考虑乘法计算后,确定需要部署的卷积神经网络层数,计算类型与计算量如表1所示:
表1VGG-16卷积神经网络各层的计算量
步骤1.2:确定可以使用的FPGA数量与每个FPGA的DSP数量。以一个FPGA上可用DSP数量的80%为准,可以使用的FPGA的数量为11,每个FPGA上DSP的数量均为288,编号为1号到11号。
步骤1.3:使用步骤1.1与步骤1.2获得的计算量和DSP数量进行时间配平。在保证每个数据仅可使用一次,一个分式的分子分母之中只能存在一个加法组合并且数据下标有连续性后,配平的结果如表2所示,共有11个分式。
表2使用本发明中的方法部署VGG-16时,各个FPGA负责计算的分配情况
步骤2:将全连接计算视为特殊的卷积计算,为步骤1.1中确定的层在FPGA上设计相应的卷积计算结构:
步骤2.1:根据图2,完成每一个FPGA上卷积计算结构的设计,分为步骤2.2和步骤2.3两种情况。设计卷积计算结构时,所有的权重保存在FPGA的PL端。
步骤2.2:2号到9号FPGA,一个FPGA计算一层的卷积,使用脉动阵列进行卷积计算,由于全部都是3×3的卷积计算,脉动阵列的宽度为9,由于可用的DSP数量均为288,脉动阵列长度为32,即可以同时计算32个输入通道。
步骤2.3:1号,10号,11号FPGA,一个FPGA计算多层的卷积,则根据不同层计算量的比值划分DSP,划分后再使用脉动阵列。针对1号和10号FPGA,计算3×3卷积时,为了保证能够使用脉动阵列,划分的DSP需要为9的倍数。1号FPGA中,层1和层2分别用18个和270个DSP;10号FPGA中,层11,12,13都使用96个DSP;11号FPGA中,层14,15,16分别使用108,175和5个DSP。
步骤3:级联FPGA,完成部署:
步骤3.1:补充非计算密集型的硬件设计。在1号,3号,6号,9号,10号FPGA中对输出数据添加最大池化的计算。在11号FPGA中对输出数据增加SoftMax的计算。
步骤3.2:将FPGA按照编号顺序级联。
步骤3.3:将级联的第一个FPGA连接到输入数据流,级联的最后一个FPGA连接到接收数据的设备,完成多FPGA的卷积神经网络流水线部署。
综上所述,本发明提出的基于多FPGA的大规模神经网络加速与部署方法,可以将大规模的卷积神经网络部署在由多个FPGA组成的系统上,实现均衡的流水线设计,从而提高加速器的计算效率。

Claims (1)

1.一种基于多FPGA的大规模卷积神经网络加速与部署器实现方法,其特征在于,步骤如下:
步骤1:根据需要部署的卷积神经网络与FPGA的数量进行时间配平
步骤1.1:确定需要部署的卷积神经网络的层数与计算量
确定层数和计算量仅考虑计算密集型的操作,包括卷积层和全连接层,不考虑池化层;确定计算量时只考虑乘法计算,即处理该层时需要多少次乘法;确定需要部署的卷积神经网络为n层,每层计算量分别为a1,a2…an
步骤1.2:确定可使用的FPGA数量与每个FPGA的DSP数量
确定一个FPGA上的DSP数量时,以一个FPGA上可用DSP数量的80%为准;确定可以使用的FPGA数量为m,每个FPGA上的DSP数量分别为b1,b2…bm
步骤1.3:使用步骤1.1与步骤1.2获得的计算量和DSP数量进行时间配平
配平的具体方式:确定若干个分式,分式的分母为b1,b2…bm中任意数量个数据的加法,分式的分子为a1,a2…an中任意数量个数据的加法,使得确定的这些分式的方差最小;需保证每个数据仅可使用一次,并且一个分式的分子、分母之中只能存在一个加法组合;进行加法组合时,如果是代表计算量的数据,数据下标必须是连续的,如果是代表DSP数量的数据则没有限制;
步骤2:将全连接计算视为特殊的卷积计算,为步骤1.1中确定的层在FPGA上设计相应的卷积计算结构
步骤2.1:根据步骤1.3中确定的分式,提取出需要在一个FPGA上实现的计算,为每一个分式单独设计硬件结构;并且根据分式情况的不同,采用步骤2.2到2.4中的不同方法;设计卷积计算结构时,所有的权重保存在FPGA的PL端;
步骤2.2:如果分式的分子和分母都仅有一个数据,则一个FPGA计算一层的卷积;使用脉动阵列进行卷积计算;该脉动阵列根据卷积窗口的大小确定宽度,在此基础上长度尽可能长,确保一次计算能计算尽可能多的输入通道;
步骤2.3:如果分式的分母是多个数据的加法组合,分子是一个数据,则多个FPGA计算一层的卷积;此时根据分母中多个数据的比值划分该层的输出通道数,每个FPGA计算一部分输出通道;在每个FPGA上设计卷积计算结构时,按照步骤2.2的方法设计;
步骤2.4:如果分式的分子是多个数据的加法组合,分母是一个数据,则一个FPGA计算多层的卷积;此时根据分子中的多个数据的比值划分FPGA中的DSP,使用被划分的DSP设计卷积计算结构处理一层的计算,之后按照分子中数据的下标顺序将其级联,形成流水线;单层计算按照步骤2.2的方法设计;
步骤3:级联FPGA,完成部署
步骤3.1:补充非计算密集型的硬件设计:在对应的FPGA中对输出数据增加激活、池化和SoftMax的计算;
步骤3.2:将步骤1.3中得到的分式按照分子的数据下标排序,之后将分母数据的对应的FPGA按照该顺序级联,存在多个FPGA计算一层的情况时,先将输出结果合并到一个FPGA上再级联;
步骤3.3:将级联的第一个FPGA连接到输入数据流,级联的最后一个FPGA连接到接收数据的设备,完成多FPGA的卷积神经网络流水线部署。
CN202410025778.1A 2024-01-08 2024-01-08 一种基于多fpga的大规模卷积神经网络加速与部署器实现方法 Pending CN117709406A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410025778.1A CN117709406A (zh) 2024-01-08 2024-01-08 一种基于多fpga的大规模卷积神经网络加速与部署器实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410025778.1A CN117709406A (zh) 2024-01-08 2024-01-08 一种基于多fpga的大规模卷积神经网络加速与部署器实现方法

Publications (1)

Publication Number Publication Date
CN117709406A true CN117709406A (zh) 2024-03-15

Family

ID=90157138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410025778.1A Pending CN117709406A (zh) 2024-01-08 2024-01-08 一种基于多fpga的大规模卷积神经网络加速与部署器实现方法

Country Status (1)

Country Link
CN (1) CN117709406A (zh)

Similar Documents

Publication Publication Date Title
CN111459877B (zh) 基于FPGA加速的Winograd YOLOv2目标检测模型方法
CN108647773B (zh) 一种可重构卷积神经网络的硬件互连系统
CN111858465B (zh) 大规模矩阵qr分解并行计算系统
CN102945224A (zh) 基于fpga的高速可变点fft处理器及其处理方法
CN110647309B (zh) 一种高速大位宽乘法器
CN110688086A (zh) 一种可重构的整型-浮点加法器
Huang et al. A high performance multi-bit-width booth vector systolic accelerator for NAS optimized deep learning neural networks
Li et al. A precision-scalable energy-efficient bit-split-and-combination vector systolic accelerator for NAS-optimized DNNs on edge
An et al. 29.3 an 8.09 tops/w neural engine leveraging bit-sparsified sign-magnitude multiplications and dual adder trees
CN111275180B (zh) 一种降低深度神经网络数据迁移及功耗的卷积运算结构
CN117709406A (zh) 一种基于多fpga的大规模卷积神经网络加速与部署器实现方法
CN100378719C (zh) 基2单路深度延时反馈的流水线构成fft处理器的实现方法
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN116822616A (zh) 一种用于大语言模型中Softmax函数训练的装置
CN111401533A (zh) 一种神经网络专用计算阵列及其计算方法
Spagnolo et al. Designing fast convolutional engines for deep learning applications
CN110705196A (zh) 一种基于随机计算的无误差加法器
CN116187407A (zh) 一种基于脉动阵列自注意力机制的实现系统及方法
CN112346704B (zh) 一种用于卷积神经网络的全流水线型乘加单元阵列电路
CN115344526A (zh) 一种数据流架构的硬件加速方法及装置
CN211577939U (zh) 一种神经网络专用计算阵列
CN112528224A (zh) 一种矩阵特征值分解分组循环迭代流水实现方法及系统
WO2020008642A1 (ja) 学習装置、学習回路、学習方法および学習プログラム
CN116796816B (zh) 处理器、计算芯片和计算设备
Kuo et al. Configurable Multi-Precision Floating-Point Multiplier Architecture Design for Computation in Deep Learning

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination