CN110110850A - 基于fpga前向反向可复用的处理单元实现方法 - Google Patents
基于fpga前向反向可复用的处理单元实现方法 Download PDFInfo
- Publication number
- CN110110850A CN110110850A CN201910354707.5A CN201910354707A CN110110850A CN 110110850 A CN110110850 A CN 110110850A CN 201910354707 A CN201910354707 A CN 201910354707A CN 110110850 A CN110110850 A CN 110110850A
- Authority
- CN
- China
- Prior art keywords
- calculating
- output
- data
- processing unit
- layer
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种基于FPGA前向反向可复用的处理单元实现方法,属于涉及智能计算技术领域,本发明针对前向推理和训练中反向传播问题,对处理单元进行复用,通过将所有待计算的参数分别进行缓存,并根据计算状态进行数据片选,满足不同阶段的计算任务,实现基于FPGA前向反向可复用的处理单元。由于此处理单元可同时满足推理与训练的计算需求,因此可提升FPGA的资源使用效率。
Description
技术领域
本发明涉及智能计算技术,尤其涉及一种基于FPGA前向反向可复用的处理单元实现方法。
背景技术
卷积神经网络算法在人工智能领域中应用最为广泛的算法,广泛应用于安防、自动驾驶、计算机视觉等领域。CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接和共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。CNN是神经网络中的一种,它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。
各类应用所需智能算法对计算平台的运算能力要求越来越高。以图像类算法为例,性能较好的模型权重参数规模在65M以上,模型的单次前向推理操作数超过了10G Ops,诸如VGG-19模型,操作数已经达到40G Ops。经过计算,单处理器的理想性能应该满足4-8TOPS。因此,如何提高神经网络的数据传输效率和计算效率,成为AI领域的关键问题。
发明内容
为了解决以上技术问题,本发明提出了一种基于FPGA前向反向可复用的处理单元实现方法,可同时满足推理与训练的计算需求,因此可提升FPGA的资源使用效率。
本发明的技术方案是:
一种基于FPGA前向反向可复用的处理单元实现方法,针对前向推理和训练中反向传播问题,对处理单元进行复用,通过将所有待计算的参数分别进行缓存,并根据计算状态进行数据片选,满足不同阶段的计算任务。
进一步的,
处理单元复用体现在:单元包含对同层单元的输入输出通路,对下层单元的输出通路以及上层单元的输入通路。
进一步的,
待计算参数分别进行缓存体现为:数据缓存、参数缓存、阵列输出缓存、直接输出缓存这4个缓存,分别存储来自于上一层的待计算数据、待使用参数(权重)、乘法阵列计算后的计算数据、跨过本层直接传入下一层计算数据。
进一步的,
根据计算状态进行数据片选体现为:4个缓存通过仲裁单元进行控制,仲裁单元的仲裁原则通过标签缓存获取,而标签缓存由前一层处理单元输入。
进一步的,
处理单元处于整个计算网络的第L层,若输入数据缓存和参数缓存的为第L-1层input和weight,则仲裁单元选通两缓存将数据传送入乘法阵列计算,并将数据通过输出至同层累加单元通路进行下一步计算;其中,L为处理单元处于整个计算网络的层数,weight为权重。
再进一步的,
若输入数据为第L+1层δoutput和output的非线性函数求导结果δbias以及weight,则仲裁单元选通缓存将数据输入乘法阵列,并将数据通过阵列输出缓存,通过输出至上一层计算单元通路输出;
若输入数据为input和δbias,则直接将数据送入乘法阵列计算后于同层内部更新。
进一步的,
计算矩阵过大,同层扩展时通过输出至同层计算单元、同层计算单元输入通路执行。
进一步的,
跨层扩展时通过直接输出至下层计算单元通路执行。
附图说明
图1前向推理计算抽象模式图;
图2反向传播计算抽象模式图;
图3基于FPGA前向反向可复用处理单元架构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
对于复杂的网络模型,如卷积神经网络,模型整体由多个不同类型的计算层组成。常见的计算层包括卷积层、全连接层、池化层、非线性层等。这些层之间的主要区别存在于输入特征图向量与权值向量进行计算的控制流之间的差异。计算角度上来看,卷积、全连接等层以向量的点乘操作为主,而池化、非线性等其它层则以向量的比较与位操作为主。
根据计算所需的硬件资源和重复频次差异,将相对计算比重较重的部分打包为主要的处理单元,而将比重较轻的部分根据模型结构的分布绑定在处理单元内或者放置在通用计算系统中。
本发明针对前向推理和训练中反向传播问题,对处理单元进行复用,通过将所有待计算的参数分别进行缓存,并根据计算状态进行数据片选,满足不同阶段的计算任务,实现基于FPGA前向反向可复用的处理单元。由于此处理单元可同时满足推理与训练的计算需求,因此可提升FPGA的资源使用效率。
其中,
处理单元复用体现在:单元包含对同层单元的输入输出通路、累加单元输出通路,对下层单元的输出通路以及上层单元的输入输出通路。
待计算参数分别进行缓存体现为:数据缓存、参数缓存、阵列输出缓存、直接输出缓存这4个缓存,分别存储来自于上一层的待计算数据、待使用参数(权重)、乘法阵列计算后的计算数据、跨过本层直接传入下一层计算数据。
根据计算状态进行数据片选体现为:4个缓存通过仲裁单元进行控制,仲裁单元的仲裁原则通过标签缓存获取,而标签缓存由前一层处理单元输入。
如图1为推理阶段的抽象模式,而训练阶段则需要添加修正变化量的处理,故图2抽象模式较推理阶段更为复杂。
在图1中,weight和input作为输入的矩阵向量乘部分。
图2中,δBias和weight作为输入的矩阵向量乘部分,δBias和input作为输入的向量乘标量部分,均可以由此处理单元处理。
如图3,例如处理单元处于整个计算网络的第L层,若输入数据缓存和参数缓存的为第L-1层input和weight(权重),则仲裁单元选通两缓存将数据传送入乘法阵列计算,并将数据通过输出至同层累加单元通路进行下一步计算;
若输入数据为第L+1层δoutput和output的非线性函数求导结果δbias以及weight,则仲裁单元选通缓存将数据输入乘法阵列,并将数据通过阵列输出缓存,通过输出至上一层计算单元通路输出;
若输入数据为input和δbias,则直接将数据送入乘法阵列计算后于同层内部更新。
输出至同层计算单元、同层计算单元输入通路用于计算矩阵过大,同层扩展使用;
直接输出至下层计算单元通路用于跨层扩展。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.基于FPGA前向反向可复用的处理单元实现方法,其特征在于,
针对前向推理和训练中反向传播问题,对处理单元进行复用,通过将所有待计算的参数分别进行缓存,并根据计算状态进行数据片选,满足不同阶段的计算任务。
2.根据权利要求1所述的方法,其特征在于,
所述处理单元复用,即单元包含对同层单元的输入输出通路、累加单元输出通路,对下层单元的输出通路以及上层单元的输入输出通路。
3.根据权利要求2所述的方法,其特征在于,
所述待计算参数分别进行缓存,即数据缓存、参数缓存、阵列输出缓存、直接输出缓存这4个缓存,分别存储来自于上一层的待计算数据、待使用参数、乘法阵列计算后的计算数据、跨过本层直接传入下一层计算数据。
4.根据权利要求3所述的方法,其特征在于,
所述根据计算状态进行数据片,即4个缓存通过仲裁单元进行控制,仲裁单元的仲裁原则通过标签缓存获取,而标签缓存由前一层处理单元输入。
5.根据权利要求4所述的方法,其特征在于,
处理单元处于整个计算网络的第L层,若输入数据缓存和参数缓存的为第L-1层input和weight,则仲裁单元选通两缓存将数据传送入乘法阵列计算,并将数据通过输出至同层累加单元通路进行下一步计算;其中,L为处理单元处于整个计算网络的层数,weight为权重。
6.根据权利要求5所述的方法,其特征在于,
若输入数据为第L+1层δoutput和output的非线性函数求导结果δbias以及weight,则仲裁单元选通缓存将数据输入乘法阵列,并将数据通过阵列输出缓存,通过输出至上一层计算单元通路输出。
7.根据权利要求5所述的方法,其特征在于,
若输入数据为input和δbias,则直接将数据送入乘法阵列计算后于同层内部更新。
8.根据权利要求5所述的方法,其特征在于,
计算矩阵过大,同层扩展时通过输出至同层计算单元、同层计算单元输入通路执行。
9.根据权利要求5所述的方法,其特征在于,
跨层扩展时通过直接输出至下层计算单元通路执行。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910354707.5A CN110110850A (zh) | 2019-04-29 | 2019-04-29 | 基于fpga前向反向可复用的处理单元实现方法 |
PCT/CN2019/096747 WO2020220479A1 (zh) | 2019-04-29 | 2019-07-19 | 基于fpga前向反向可复用的处理单元实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910354707.5A CN110110850A (zh) | 2019-04-29 | 2019-04-29 | 基于fpga前向反向可复用的处理单元实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110110850A true CN110110850A (zh) | 2019-08-09 |
Family
ID=67487378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910354707.5A Pending CN110110850A (zh) | 2019-04-29 | 2019-04-29 | 基于fpga前向反向可复用的处理单元实现方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110110850A (zh) |
WO (1) | WO2020220479A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106959937A (zh) * | 2017-03-30 | 2017-07-18 | 中国人民解放军国防科学技术大学 | 一种面向gpdsp的反卷积矩阵的向量化实现方法 |
CN107480782A (zh) * | 2017-08-14 | 2017-12-15 | 电子科技大学 | 一种片上学习神经网络处理器 |
CN107992940A (zh) * | 2017-12-12 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种卷积神经网络在fpga上的实现方法及装置 |
CN108171323A (zh) * | 2016-12-28 | 2018-06-15 | 上海寒武纪信息科技有限公司 | 一种人工神经网络计算装置和方法 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108416422A (zh) * | 2017-12-29 | 2018-08-17 | 国民技术股份有限公司 | 一种基于fpga的卷积神经网络实现方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698657B2 (en) * | 2016-08-12 | 2020-06-30 | Xilinx, Inc. | Hardware accelerator for compressed RNN on FPGA |
CN107301456B (zh) * | 2017-05-26 | 2020-05-12 | 中国人民解放军国防科学技术大学 | 基于向量处理器的深度神经网络多核加速实现方法 |
CN107622305A (zh) * | 2017-08-24 | 2018-01-23 | 中国科学院计算技术研究所 | 用于神经网络的处理器和处理方法 |
CN109564638B (zh) * | 2018-01-15 | 2023-05-26 | 深圳鲲云信息科技有限公司 | 人工智能处理器及其所应用的处理方法 |
CN109302357B (zh) * | 2018-08-03 | 2020-05-22 | 西安交通大学 | 一种面向深度学习可重构处理器的片上互联结构 |
-
2019
- 2019-04-29 CN CN201910354707.5A patent/CN110110850A/zh active Pending
- 2019-07-19 WO PCT/CN2019/096747 patent/WO2020220479A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108171323A (zh) * | 2016-12-28 | 2018-06-15 | 上海寒武纪信息科技有限公司 | 一种人工神经网络计算装置和方法 |
CN106959937A (zh) * | 2017-03-30 | 2017-07-18 | 中国人民解放军国防科学技术大学 | 一种面向gpdsp的反卷积矩阵的向量化实现方法 |
CN107480782A (zh) * | 2017-08-14 | 2017-12-15 | 电子科技大学 | 一种片上学习神经网络处理器 |
CN107992940A (zh) * | 2017-12-12 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种卷积神经网络在fpga上的实现方法及装置 |
CN108416422A (zh) * | 2017-12-29 | 2018-08-17 | 国民技术股份有限公司 | 一种基于fpga的卷积神经网络实现方法及装置 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020220479A1 (zh) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105930902B (zh) | 一种神经网络的处理方法、系统 | |
CN105681628A (zh) | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 | |
CN107451659A (zh) | 用于位宽分区的神经网络加速器及其实现方法 | |
CN107301453A (zh) | 支持离散数据表示的人工神经网络正向运算装置和方法 | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN111758106A (zh) | 大规模并行神经推理计算元件 | |
CN107301454A (zh) | 支持离散数据表示的人工神经网络反向训练装置和方法 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
CN107341542A (zh) | 用于执行循环神经网络和lstm运算的装置和方法 | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
US11537879B2 (en) | Neural network weight discretizing method, system, device, and readable storage medium | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
CN112734020B (zh) | 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法 | |
US20190347072A1 (en) | Block floating point computations using shared exponents | |
CN108320018A (zh) | 一种人工神经网络运算的装置及方法 | |
Bao et al. | LSFQ: A low precision full integer quantization for high-performance FPGA-based CNN acceleration | |
CN113553031B (zh) | 软件定义变结构计算架构及利用其实现的左右脑一体化资源联合分配方法 | |
Li et al. | Research and implementation of parallel artificial fish swarm algorithm based on ternary optical computer | |
CN110110850A (zh) | 基于fpga前向反向可复用的处理单元实现方法 | |
JP7426980B2 (ja) | 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 | |
CN109389210A (zh) | 处理方法和处理装置 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
CN104933110A (zh) | 一种基于MapReduce的数据预取方法 | |
Peng et al. | A Carry-free multiplication implementation method | |
Gorbounov et al. | Optimized FPGA Implementation of an Artificial Neural Network Using a Single Neuron |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190809 |