CN112988229B - 基于异构计算的卷积神经网络资源优化配置方法 - Google Patents
基于异构计算的卷积神经网络资源优化配置方法 Download PDFInfo
- Publication number
- CN112988229B CN112988229B CN201911293482.3A CN201911293482A CN112988229B CN 112988229 B CN112988229 B CN 112988229B CN 201911293482 A CN201911293482 A CN 201911293482A CN 112988229 B CN112988229 B CN 112988229B
- Authority
- CN
- China
- Prior art keywords
- layer
- complexity
- computation
- data
- neural network
- 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.)
- Active
Links
Images
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/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Abstract
一种基于异构计算的卷积神经网络资源优化配置方法,针对卷积神经网络的卷积层、偏置层、池化层、relu层和全连接层进行逐层计算复杂度分析和数据复杂度分析,得到计算通信比,基于计算通信比的排序在异构计算平台上以运算速度和效率作为优化目标进行资源配置,即将计算通信比高的部分配置于FPGA上进行计算,其余部分配置于ARM上进行计算。本发明同时兼顾了FPGA的高度并行计算的能力和ARM端的高主频,多级缓存以及单指令多数据等特点,显著加速卷积层等计算密集型部分的运算和数据密集的全连接层运算,从而对整个卷积神经网络达到最有效的加速。
Description
技术领域
本发明涉及的是一种人工智能领域的技术,具体是一种基于异构计算的卷积神经网络资源优化配置方法。
背景技术
近年来卷积神经网络得到了广泛的应用,并在图像分类、语音识别、文本检测等方面取得了很大的成功,但现有的神经网络的模型依赖数百万甚至数十亿参数进行大量的计算,例如典型的vgg16网络,参数量就高达1.38亿个,而乘加运算次数更是高达155亿次。因而传统的CPU已经无法满足计算的需求,目前主流的硬件加速平台是GPU,GPU由上千个流处理器作为运算器,相比于CPU流水线式的串行操作,GPU通过大量线程进行并行计算,在大规模计算时,会取得明显的加速效果。
但是针对移动端嵌入式应用而言,GPU的功耗太高。相比之下,FPGA以其灵活性和高效性特别适合作为移动端的硬件加速器。ARM+FPGA的异构计算架构在移动端实现卷积神经网络是目前常用的一种方法,FPGA弥补了ARM计算能力不足的缺点,可以提供大规模并行计算;而ARM又更好地控制整个网络流程,同时多级缓存机制便于缓存大量数据。
FPGA的优势在于可以提供大规模并行计算的能力,利用并行计算提高大规模计算的速度。但是ARM的主频远远高于FPGA的频率,ARM拥有的多级缓存机制,同时使用ARM NEON实现单指令多数据运算,即可以在一个指令周期内并行处理多个数据。所以如果某一层的速度受限于传输带宽,即由于需要传输大量的数据,使得传输的数据无法提供一个很高的并行度计算时,那么FPGA的大规模并行计算优势将无法发挥出来,此时使用ARM更加有效,即ARM更加适合于数据密集部分的计算。
发明内容
本发明针对现有技术的上述不足,提出一种基于异构计算的卷积神经网络资源优化配置方法。
本发明是通过以下技术方案实现的:
本发明涉及一种基于异构计算的卷积神经网络资源优化配置方法,针对卷积神经网络的卷积层、偏置层、池化层、relu层和全连接层进行逐层计算复杂度分析和数据复杂度分析,得到计算通信比(CTC),基于计算通信比的排序在异构计算平台上以运算速度和效率作为优化目标进行资源配置,即将计算通信比高的部分配置于FPGA上进行计算,其余部分配置于ARM上进行计算。
优选地,将全连接层配置于ARM上进行处理,而其余层在FPGA上进行处理。
所述的计算通信比该指标衡量的是传输单位字节数据时,可以完成多少运算。即当某一层的CTC越高,表明数据复用率越高,该层处于计算密集型部分,需要提供较大算力的硬件平台,那么该层适合在FPGA中实现;而CTC较低时,表明数据复用率较低,该层处于数据密集型部分,需要提供更高的传输带宽,同时对算力要求没有那么高,那么该层适合在ARM上完成。
所述的计算通信比高的部分是指:CTC大于2(op/Byte)时属于计算密集型的部分。
所述的卷积层的总的数据复杂度为:Win*Hin*N+Kw*Kh*N*M+Wout*Hout*M,总的计算复杂度为:(2*Kw*Kh*N-1)*Wout*Hout*M,其中:输入特征图的尺寸是Win*Hin*N,卷积核的尺寸是Kw*Kh*N*M,输出特征图尺寸是Wout*Hout*M;乘法运算复杂度为:Kw*Kh*N*Wout*Hout*M;加法运算复杂度为:(Kw*Kh*N-1)*Wout*Hout*M;特征图数据复杂度:Win*Hin*N+Wout*Hout*M;参数数据复杂度:Kw*Kh*N*M。
所述的全连接层的总的数据复杂度为:总的计算复杂度为:2*N*M-M,总的数据复杂度为:N+M+M*N,其中:输入向量的维度是N,输出向量的维度是M,权值的尺寸N*M,乘法运算复杂度为:N*M;加法运算复杂度为:(N-1)*M;特征图数据复杂度:N+M;参数数据复杂度:M*N。
所述的池化层的总的计算复杂度为:(Kw*Kh-1)*Wout*Hout*N,总的数据复杂度为:Win*Hin*N+Wout*Hout*N,其中:输入特征图的尺寸是Win*Hin*N,滑窗的尺寸是Kw*Kh,输出特征图尺寸是Wout*Hout*N;特征图数据复杂度:Win*Hin*N+Wout*Hout*N;参数数据复杂度:0。
所述的偏置层的总的计算复杂度为:W*H*M,总的数据复杂度为:W*H*(M+N)+M,其中:输入特征图的尺寸是W*H*N,输出特征图尺寸是W*H*M;特征图数据复杂度:W*H*(M+N);参数数据复杂度:M。
所述的Relu层的总的计算复杂度为:W*H*N,总的数据复杂度为:2*N*W*H,其中:输入特征图的尺寸是W*H*N,输出特征图尺寸是W*H*N;特征图数据复杂度:2*N*W*H;参数数据复杂度:0。
所述的池化层和Relu层的计算通信比为:考虑到池化层和Relu层无须额外的参数存储,所以池化层和Relu层可以接在每层卷积层之后直接在片上完成,这样就避免了池化层和Relu层的特征图数据传输,即池化层的数据传输复杂度几乎为0,所以CTC值趋向于无穷。
所述的偏置层的计算通信比为:偏置层虽然需要传输额外的参数数据,但是每一层偏置参数量非常小,不会影响片上的存储,所以偏置层同样可以接在每层卷积层之后直接在片上完成,这样就避免了偏置层的特征图数据传输。那么偏置层的数据复杂度就是参数数据复杂度,那么偏置层的
技术效果
本发明整体解决了如何划分卷积神经网络的各层,使得卷积神经网络的各层在异构计算ARM+FPGA的平台上达到最佳性能,从而高效地完成卷积神经网络,计算速度最快的问题。
与现有技术相比,本发明同时兼顾了FPGA的高度并行计算的能力和ARM端的高主频,多级缓存以及单指令多数据等特点,显著加速卷积层等计算密集型部分的运算和数据密集的全连接层运算,从而对整个卷积神经网络达到最有效的加速。
附图说明
图1为卷积神经网络各层的计算复杂度和数据复杂度示意图。
具体实施方式
本实施例涉及一种针对VIPLFaceNet的卷积神经网络资源优化配置方法。如图1所示,为卷积神经网络各层的计算复杂度和数据复杂度示意图,从图中可以发现,卷积层是计算复杂度最高的部分,而全连接层是数据复杂度最高的部分,由于池化层和Relu层融合在大的卷积层中,所以数据复杂度可以忽略为0,图中的各点的斜率即表示计算通信比CTC。基于上述针对各层的CTC分析,我们总结出来卷积层和偏置层的CTC一般都是在几十甚至几百,而全连接层的CTC一般都小于1,而池化层和Relu层的CTC趋向于无穷。
如表1所示,所述的VIPLFaceNet的网络结构包括:7层卷积层,2层全连接层和3层池化层,每一层卷积层和全连接层之后包含一层Relu层。
表1 VIPLFace网络结构
本实施例针对各个卷积层的计算复杂度、数据复杂度以及计算通信比CTC的计算方法分析了VIPLFaceNet网络,得到表2所示的计算结果。
表2 VIPLFace各层CTC
层数 | 总操作数 | 总数据 | CTC(op/Byte) |
卷积层1 | 70422000 | 312816 | 56.28068897 |
卷积层2 | 80528256 | 183600 | 109.6517647 |
卷积层3 | 214897536 | 334080 | 160.812931 |
卷积层4 | 99636992 | 359808 | 69.22927784 |
卷积层5 | 149487936 | 518080 | 72.13554663 |
卷积层6 | 112107840 | 396672 | 70.65525169 |
卷积层7 | 74738560 | 275264 | 67.87898163 |
全连接层1 | 37744640 | 18883072 | 0.499715301 |
全连接层2 | 16775168 | 8394752 | 0.499573067 |
从表2中可以看出,卷积层的CTC值远高于全连接层的CTC,卷积层更加适合于在FPGA中加速,而全连接层更加适合于在ARM中计算。另外池化层和Relu层由于在硬件设计时包含在大的卷积层中,所以池化层和Relu层的数据复杂度几乎为0,即CTC趋向于无穷,所以池化层和Relu层适合在FPGA上加速。
基于上述CTC的计算分析,将全连接层在ARM上完成,其余层在FPGA上完成,其中:
在ARM上使用ARM NEON完成向量并行乘法运算
在FPGA上设计数据缓冲器,以提高复用数据读取的带宽。同时设计高度并行的乘加单元,并行完成卷积层的卷积运算,大大提高卷积层计算速度。同时为了提高池化层、Relu层和偏置层的计算速度,我们将卷积层的输出结果缓存在输出缓冲器中,可以直接在FPGA上完成池化、Relu等操作,而无需再从片外读取数据。
在Xilinx zcu102上完成各种软硬件划分,实际实验得到的真实延时数据如表3所示,每种方案中会将表中不同的层放在ARM或FPGA上计算,从而对比各种划分方案的延时,延时最短即加速效果最佳。从表3中可以看出,方案三的性能最佳,即将全连接层在ARM上完成,其余层在FPGA上完成计算速度最快。
表3 VIPLFace各软硬件划分延时
方案一 | 方案二 | 方案三 | 方案四 | 方案五 | |
卷积层 | FPGA | FPGA | FPGA | FPGA | ARM |
偏置层 | ARM | FPGA | FPGA | ARM | ARM |
Relu层 | ARM | FPGA | FPGA | ARM | ARM |
池化层 | ARM | ARM | FPGA | ARM | ARM |
全连接层 | ARM | ARM | ARM | FPGA | ARM |
延时(ms) | 81 | 75 | 74 | 612 | 5296 |
本发明对VIPLFaceNet各层进行通信计算比(CTC)的分析,根据分析对VIPLFaceNet进行划分,在Xilinx Zynq UltraScale+MPSoC ZCU102 FPGA开发板上,将VIPLFaceNet中CTC小于2(op/byte)的层在ARM上完成计算,而将VIPLFaceNet中CTC大于2(op/byte)的层在FPGA上完成加速。表3中是在该开发板上得到实际延时,方案三取得最小的延时,即效果最佳。
相比现有技术主要是以计算复杂度为依据划分卷积神经网络,而忽略了卷积神经网络的数据复杂度,这样划分会将池化层、Relu层在ARM上计算,而将全连接层在FPGA上加速,这样无法发挥异构计算平台计算卷积神经网络的最佳加速效果。本发明综合考虑卷积神经网络的计算复杂度和数据复杂度,充分发挥异构计算平台的ARM和FPGA特点,达到最佳加速效果。充分利用FPGA的高度并行计算的能力,大大加速卷积层等计算密集型部分的运算。充分利用ARM端的高主频,多级缓存以及单指令多数据等特点,对数据密集的全连接层,进行最有效的加速。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
Claims (2)
1.一种基于异构计算的卷积神经网络资源优化配置方法,其特征在于,针对卷积神经网络的卷积层、偏置层、池化层、relu层和全连接层进行逐层计算复杂度分析和数据复杂度分析,得到计算通信比,基于计算通信比的排序在异构计算平台上以运算速度和效率作为优化目标进行资源配置,即将计算通信比高的部分,即大于2(op/Byte)时属于计算密集型的部分配置于FPGA上进行计算,其余部分配置于ARM上进行计算;
所述的卷积层的总的数据复杂度为:Win*Hin*N+Kw*Kh*N*M+Wout*Hout*M,总的计算复杂度为:(2*Kw*Kh*N-1)*Wout*Hout*M,其中:输入特征图的尺寸是Win*Hin*N,卷积核的尺寸是Kw*Kh*N*M,输出特征图尺寸是Wout*Hout*M;乘法运算复杂度为:Kw*Kh*N*Wout*Hout*M;加法运算复杂度为:(Kw*Kh*N-1)*Wout*Hout*M;特征图数据复杂度:Win*Hin*N+Wout*Hout*M;参数数据复杂度:Kw*Kh*N*M;
所述的全连接层的总的数据复杂度为:总的计算复杂度为:2*N*M-M,总的数据复杂度为:N+M+M*N,其中:输入向量的维度是N,输出向量的维度是M,权值的尺寸N*M,乘法运算复杂度为:N*M;加法运算复杂度为:(N-1)*M;特征图数据复杂度:N+M;参数数据复杂度:M*N;
所述的池化层的总的计算复杂度为:(Kw*Kh-1)*Wout*Hout*N,总的数据复杂度为:Win*Hin*N+Wout*Hout*N,其中:输入特征图的尺寸是Win*Hin*N,滑窗的尺寸是Kw*Kh,输出特征图尺寸是Wout*Hout*N;特征图数据复杂度:Win*Hin*N+Wout*Hout*N;参数数据复杂度:0;
所述的偏置层的总的计算复杂度为:W*H*M,总的数据复杂度为:W*H*(M+N)+M,其中:输入特征图的尺寸是W*H*N,输出特征图尺寸是W*H*M;特征图数据复杂度:W*H*(M+N);参数数据复杂度:M;
所述的Relu层的总的计算复杂度为:W*H*N,总的数据复杂度为:2*N*W*H,其中:输入特征图的尺寸是W*H*N,输出特征图尺寸是W*H*N;特征图数据复杂度:2*N*W*H;参数数据复杂度:0。
2.根据权利要求1所述的基于异构计算的卷积神经网络资源优化配置方法,其特征是,将全连接层配置于ARM上进行处理,而其余层在FPGA上进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911293482.3A CN112988229B (zh) | 2019-12-12 | 2019-12-12 | 基于异构计算的卷积神经网络资源优化配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911293482.3A CN112988229B (zh) | 2019-12-12 | 2019-12-12 | 基于异构计算的卷积神经网络资源优化配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988229A CN112988229A (zh) | 2021-06-18 |
CN112988229B true CN112988229B (zh) | 2022-08-05 |
Family
ID=76343247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911293482.3A Active CN112988229B (zh) | 2019-12-12 | 2019-12-12 | 基于异构计算的卷积神经网络资源优化配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988229B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116451757B (zh) * | 2023-06-19 | 2023-09-08 | 山东浪潮科学研究院有限公司 | 一种神经网络模型的异构加速方法、装置、设备及介质 |
CN117114055B (zh) * | 2023-10-24 | 2024-04-09 | 北京航空航天大学 | 面向工业应用场景的fpga二值神经网络加速方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007280000A (ja) * | 2006-04-06 | 2007-10-25 | Hitachi Ltd | 人脈分析検索方法及び人脈分析検索システム |
CN103970602B (zh) * | 2014-05-05 | 2017-05-10 | 华中科技大学 | 一种面向x86多核处理器的数据流程序调度方法 |
CN107544794A (zh) * | 2016-06-28 | 2018-01-05 | 华为技术有限公司 | 程序信息的处理方法和装置 |
CN109976809B (zh) * | 2017-12-28 | 2020-08-25 | 中科寒武纪科技股份有限公司 | 调度方法及相关装置 |
US11270201B2 (en) * | 2017-12-29 | 2022-03-08 | Intel Corporation | Communication optimizations for distributed machine learning |
CN108280514B (zh) * | 2018-01-05 | 2020-10-16 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108256636A (zh) * | 2018-03-16 | 2018-07-06 | 成都理工大学 | 一种基于异构计算的卷积神经网络算法设计实现方法 |
CN109474980B (zh) * | 2018-12-14 | 2020-04-28 | 北京科技大学 | 一种基于深度增强学习的无线网络资源分配方法 |
-
2019
- 2019-12-12 CN CN201911293482.3A patent/CN112988229B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112988229A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
JP6796177B2 (ja) | コンパクトな演算処理要素を用いたプロセッシング | |
JP6857286B2 (ja) | ニューラルネットワークアレイの性能の改善 | |
Su et al. | Redundancy-reduced mobilenet acceleration on reconfigurable logic for imagenet classification | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
Fan et al. | A real-time object detection accelerator with compressed SSDLite on FPGA | |
CN107340993B (zh) | 运算装置和方法 | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速系统及其加速方法 | |
CN110895715A (zh) | 存储高效的神经网络 | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN111199273A (zh) | 卷积计算方法、装置、设备及存储介质 | |
EP3686816A1 (en) | Techniques for removing masks from pruned neural networks | |
CN112988229B (zh) | 基于异构计算的卷积神经网络资源优化配置方法 | |
US11775832B2 (en) | Device and method for artificial neural network operation | |
Alawad et al. | Stochastic-based deep convolutional networks with reconfigurable logic fabric | |
CN113435682A (zh) | 分布式训练的梯度压缩 | |
CN110543936B (zh) | 一种cnn全连接层运算的多并行加速方法 | |
Bacis et al. | A pipelined and scalable dataflow implementation of convolutional neural networks on FPGA | |
CN112734020B (zh) | 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法 | |
Shimoda et al. | All binarized convolutional neural network and its implementation on an FPGA | |
Xu et al. | Binary convolutional neural network acceleration framework for rapid system prototyping | |
Fujii et al. | A threshold neuron pruning for a binarized deep neural network on an FPGA | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
Alawad et al. | Memory-efficient probabilistic 2-D finite impulse response (FIR) filter | |
Chang et al. | MSP: an FPGA-specific mixed-scheme, multi-precision deep neural network quantization framework |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |