CN107491809A - 一种fpga实现残差网络中激活函数的方法 - Google Patents

一种fpga实现残差网络中激活函数的方法 Download PDF

Info

Publication number
CN107491809A
CN107491809A CN201710718554.9A CN201710718554A CN107491809A CN 107491809 A CN107491809 A CN 107491809A CN 201710718554 A CN201710718554 A CN 201710718554A CN 107491809 A CN107491809 A CN 107491809A
Authority
CN
China
Prior art keywords
activation primitive
data
read
module
residual error
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.)
Granted
Application number
CN201710718554.9A
Other languages
English (en)
Other versions
CN107491809B (zh
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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
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 Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201710718554.9A priority Critical patent/CN107491809B/zh
Publication of CN107491809A publication Critical patent/CN107491809A/zh
Application granted granted Critical
Publication of CN107491809B publication Critical patent/CN107491809B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

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)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Detection And Correction Of Errors (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种FPGA实现残差网络中激活函数的方法,该方法包括:每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。该方法实现减少不同激活函数间的数据传输I/O损耗。

Description

一种FPGA实现残差网络中激活函数的方法
技术领域
本发明涉及深度学习加速技术领域,特别是涉及一种FPGA实现残差网络中激活函数的方法。
背景技术
目前,大数据技术的快速发展极大的推动了深度学习技术发展的进程,而FPGA则是加速深度学习的有效手段之一。在通常的由CPU实现的卷积神经网络结构中,不同种类的激活函数均处于单独的模块中,以实现搭建不同网络结构的复用与重载。涉及到FPGA实现残差网络中激活函数的使用,但在FPGA中各激活函数的模块没有可复用性,各模块之间数据通过内存通道(channel)进行通信,因此反复的读写芯片缓存(DDR)必然会带来输入与输出上的效率损耗,即不同激活函数间的数据传输I/O损耗较多。
因此如何减少不同激活函数间的数据传输I/O损耗是亟待解决的问题。
发明内容
本发明的目的是提供一种FPGA实现残差网络中激活函数的方法,以实现减少不同激活函数间的数据传输I/O损耗。
为解决上述技术问题,本发明提供一种FPGA实现残差网络中激活函数的方法,包括:
每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;
在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。
优选的,所述将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中,包括:
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入多个浮点数,读入激活函数处理模块中。
优选的,所述批归一化函数、缩放函数和线性激活函数均为由OpenCL语言描述的函数。
优选的,所述残差网络以每一个新的卷积层记数一层。
优选的,所述通过内存通道channel读入激活函数处理模块中之后,还包括:
将数据对应的纬度信息读入激活函数处理模块中。
优选的,所述一个节拍为一个时钟节拍。
优选的,所述浮点数的个数为8个。
本发明所提供的一种FPGA实现残差网络中激活函数的方法,每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。可见,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明所提供的一种FPGA实现残差网络中激活函数的方法的流程图。
具体实施方式
本发明的核心是提供一种FPGA实现残差网络中激活函数的方法,以实现减少不同激活函数间的数据传输I/O损耗。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
术语描述如下:
ResNet(Deep Residual Learning for Image):残差网络;
Recognition OpenCL(Open Computing Language):开放式计算语言;
FPGA(Field-Programmable Gate Array):现场可编程门阵列。
请参考图1,图1为本发明所提供的一种FPGA实现残差网络中激活函数的方法的流程图,该方法包括:
S11:每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;
S12:将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;
S13:在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。
可见,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
基于上述方法,具体的,基于步骤S12,将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中的过程具体包括:将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入多个浮点数,读入激活函数处理模块中。
其中,所述一个节拍为一个时钟节拍。所述浮点数的个数为8个。具体的,将经过FPGA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入8个浮点数读入激活函数处理模块中。
其中,所述批归一化函数、缩放函数和线性激活函数均为由OpenCL语言描述的函数。批归一化函数、缩放函数和线性激活函数都是激活函数,可以采用OpenCL语言描述激活函数,也可以采用FPGA语言描述激活函数。
其中,所述残差网络以每一个新的卷积层记数一层。激活函数紧跟卷积层后。
进一步的,步骤S12中,通过内存通道channel读入激活函数处理模块中之后,还包括:将数据对应的纬度信息读入激活函数处理模块中。
本发明采用OpenCL语言完成激活函数在FPGA在残差网络结构中的实现,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。
基于本方法,具体实施过程主要包括以下步骤:
(1)残差网络以每一个新的卷积层记数一层,激活函数紧跟卷积层后;在每进入一个新的层时,从FPGA芯片缓存DDR中读取激活参数需要的参数;
(2)将经过FPGA卷积模块处理后的数据,通过内存通道channel以一个节拍(cycle)传入8个浮点数读入激活函数处理模块中,同时读入的还包括数据对应的维度信息;
(3)数据依次经过由FPGA语言描述的批归一化(batch_norm)函数、缩放(scale)函数、线性激活(relu)函数;
其中,在每进入一个函数之前,在头文件中都有对应的开关来表示是否需要该函数进行处理;
(4)将处理后的数据通过channel写回DDR中。
本发明采用FPGA硬件平台执行激活函数核心模块,能够通过并行流水的优化方式提高算法的并行度,从而改善算法执行时的吞吐率性能。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率。其中,通过设计合理的OpenCL描述的激活函数,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
具体的,本发明通过OpenCL高级描述语言进行激活函数的描述,采用AlteraSDKfor OpenCL高层次综合工具进行面向FPGA的硬件比特流生成,在FPGA实现残差网络中激活函的硬件加速,可以有效的提高FPGA中残差网络的执行性能。其中,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,符合FPGA的异构加速性能。
综上,本发明所提供的一种FPGA实现残差网络中激活函数的方法,每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。可见,将激活函数置于同一模块中,利用FPGA的异构并行性,使所有激活函数能够在一个时钟节拍中完成数据激活的操作,加速了数据处理效率。与通用的CPU实现方式相比,本发明采用OpenCL语言进行FPGA硬件比特流的生成,能够有效改善算法实现效率,将残差网络所需要的激活函数置于同一模块中,减少不同激活函数间的数据传输I/O损耗,使得可以映射生成高效的FPGA硬件电路结构,进而达到FPGA对激活函数的硬件加速效果。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种FPGA实现残差网络中激活函数的方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (7)

1.一种FPGA实现残差网络中激活函数的方法,其特征在于,包括:
每次进入残差网络的一个新的卷积层时,从FGPA芯片的缓存DDR中读取激活函数所需的参数;
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中;
在激活函数处理模块中将数据依次经过代入批归一化函数、缩放函数和线性激活函数进行处理,将处理后的数据通过内存通道channel写回到缓存DDR中。
2.如权利要求1所述的方法,其特征在于,所述将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel读入激活函数处理模块中,包括:
将经过FGPA芯片的卷积模块处理后的数据,通过内存通道channel以一个节拍传入多个浮点数,读入激活函数处理模块中。
3.如权利要求1所述的方法,其特征在于,所述批归一化函数、缩放函数和线性激活函数均为由OpenCL语言描述的函数。
4.如权利要求1所述的方法,其特征在于,所述残差网络以每一个新的卷积层记数一层。
5.如权利要求1所述的方法,其特征在于,所述通过内存通道channel读入激活函数处理模块中之后,还包括:
将数据对应的纬度信息读入激活函数处理模块中。
6.如权利要求2所述的方法,其特征在于,所述一个节拍为一个时钟节拍。
7.如权利要求2所述的方法,其特征在于,所述浮点数的个数为8个。
CN201710718554.9A 2017-08-21 2017-08-21 一种fpga实现残差网络中激活函数的方法 Active CN107491809B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710718554.9A CN107491809B (zh) 2017-08-21 2017-08-21 一种fpga实现残差网络中激活函数的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710718554.9A CN107491809B (zh) 2017-08-21 2017-08-21 一种fpga实现残差网络中激活函数的方法

Publications (2)

Publication Number Publication Date
CN107491809A true CN107491809A (zh) 2017-12-19
CN107491809B CN107491809B (zh) 2020-10-16

Family

ID=60645641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710718554.9A Active CN107491809B (zh) 2017-08-21 2017-08-21 一种fpga实现残差网络中激活函数的方法

Country Status (1)

Country Link
CN (1) CN107491809B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117940A (zh) * 2018-06-19 2019-01-01 腾讯科技(深圳)有限公司 一种卷积神经网络前向加速方法、装置及系统
CN109961139A (zh) * 2019-01-08 2019-07-02 广东浪潮大数据研究有限公司 一种残差网络的加速方法、装置、设备及存储介质
CN110866595A (zh) * 2018-08-28 2020-03-06 北京嘉楠捷思信息技术有限公司 一种集成电路中激活函数运算方法、装置及电路

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917333B2 (en) * 2008-08-20 2011-03-29 Caterpillar Inc. Virtual sensor network (VSN) based control system and method
CN105678379A (zh) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN106650925A (zh) * 2016-11-29 2017-05-10 郑州云海信息技术有限公司 一种基于MIC集群的深度学习框架Caffe系统及算法
CN106778918A (zh) * 2017-01-22 2017-05-31 北京飞搜科技有限公司 一种应用于手机端的深度学习图像识别系统及实现方法
CN106778910A (zh) * 2017-01-12 2017-05-31 张亮 基于本地训练的深度学习系统和方法
CN106779050A (zh) * 2016-11-24 2017-05-31 厦门中控生物识别信息技术有限公司 一种卷积神经网络的优化方法和装置
CN106897268A (zh) * 2017-02-28 2017-06-27 科大讯飞股份有限公司 文本语义理解方法、装置和系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917333B2 (en) * 2008-08-20 2011-03-29 Caterpillar Inc. Virtual sensor network (VSN) based control system and method
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105678379A (zh) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
CN106779050A (zh) * 2016-11-24 2017-05-31 厦门中控生物识别信息技术有限公司 一种卷积神经网络的优化方法和装置
CN106650925A (zh) * 2016-11-29 2017-05-10 郑州云海信息技术有限公司 一种基于MIC集群的深度学习框架Caffe系统及算法
CN106778910A (zh) * 2017-01-12 2017-05-31 张亮 基于本地训练的深度学习系统和方法
CN106778918A (zh) * 2017-01-22 2017-05-31 北京飞搜科技有限公司 一种应用于手机端的深度学习图像识别系统及实现方法
CN106897268A (zh) * 2017-02-28 2017-06-27 科大讯飞股份有限公司 文本语义理解方法、装置和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHARLES-WAN: "Caffe 议事(二):从零开始搭建ResNet之网络的搭建", 《HTTPS://WWW.CNBLOGS.COM/CHARLES-WAN/P/6535395.HTML》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117940A (zh) * 2018-06-19 2019-01-01 腾讯科技(深圳)有限公司 一种卷积神经网络前向加速方法、装置及系统
CN109117940B (zh) * 2018-06-19 2020-12-15 腾讯科技(深圳)有限公司 基于卷积神经网络的目标检测方法、装置、终端及存储介质
CN110866595A (zh) * 2018-08-28 2020-03-06 北京嘉楠捷思信息技术有限公司 一种集成电路中激活函数运算方法、装置及电路
CN110866595B (zh) * 2018-08-28 2024-04-26 嘉楠明芯(北京)科技有限公司 一种集成电路中激活函数运算方法、装置及电路
CN109961139A (zh) * 2019-01-08 2019-07-02 广东浪潮大数据研究有限公司 一种残差网络的加速方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN107491809B (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
US11977977B2 (en) Methods and systems for data analysis in a state machine
US9817678B2 (en) Methods and systems for detection in a state machine
CN107608750B (zh) 用于型式辨识的装置
JP6126127B2 (ja) ステートマシンにおけるルーティング用の方法およびシステム
TWI489779B (zh) 狀態機晶格中之布林邏輯
US10203878B2 (en) Near memory accelerator
US11829311B2 (en) Custom compute cores in integrated circuit devices
US20180336394A1 (en) Unsupervised land use and land cover detection
CN106648467A (zh) 一种日志生成方法及系统
JP2016515266A (ja) ステートマシンエンジンによって受信されるデータを提供するための方法及び装置
CN111198868B (zh) 一种智能分库实时数据迁移方法和装置
KR20150052110A (ko) 상태 기계 엔진들에 대한 결과들 생성
CN107491809A (zh) 一种fpga实现残差网络中激活函数的方法
US20170193351A1 (en) Methods and systems for vector length management
US20190303740A1 (en) Block transfer of neuron output values through data memory for neurosynaptic processors
US20240078112A1 (en) Techniques for decoupled access-execute near-memory processing
CN106445472B (zh) 一种字符操作加速方法、装置、芯片、处理器
CN109844774B (zh) 一种并行反卷积计算方法、单引擎计算方法及相关产品
CN110324204A (zh) 一种在fpga中实现的高速正则表达式匹配引擎及方法
CN109783032A (zh) 一种基于异构计算的分布式存储加速方法及装置
CN115130675B (zh) 一种量子随机电路的多振幅模拟方法和装置
CN115146780B (zh) 一种量子张量网络转置和收缩协同的方法和装置
CN107749828A (zh) Ip数据包分发采集方法、装置、终端设备及存储介质
Briffa Graphics processing unit implementation and optimisation of a flexible maximum a‐posteriori decoder for synchronisation correction
CN115577067A (zh) 报文检测方法、装置、系统、电子设备及存储介质

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200916

Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province

Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: 450018 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601

Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant