CN109976903B - 一种基于层宽内存分配的深度学习异构计算方法和系统 - Google Patents
一种基于层宽内存分配的深度学习异构计算方法和系统 Download PDFInfo
- Publication number
- CN109976903B CN109976903B CN201910136545.8A CN201910136545A CN109976903B CN 109976903 B CN109976903 B CN 109976903B CN 201910136545 A CN201910136545 A CN 201910136545A CN 109976903 B CN109976903 B CN 109976903B
- Authority
- CN
- China
- Prior art keywords
- layer
- data
- memory space
- neural network
- gpu
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 153
- 238000004364 calculation method Methods 0.000 title claims abstract description 62
- 238000013135 deep learning Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 114
- 238000013528 artificial neural network Methods 0.000 claims abstract description 84
- 238000012549 training Methods 0.000 claims abstract description 81
- 238000003062 neural network model Methods 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 59
- 238000010586 diagram Methods 0.000 claims description 24
- 238000011176 pooling Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 15
- 230000004913 activation Effects 0.000 claims description 7
- 230000011218 segmentation Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 abstract description 15
- 239000010410 layer Substances 0.000 description 240
- 238000013527 convolutional neural network Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- RRLHMJHRFMHVNM-BQVXCWBNSA-N [(2s,3r,6r)-6-[5-[5-hydroxy-3-(4-hydroxyphenyl)-4-oxochromen-7-yl]oxypentoxy]-2-methyl-3,6-dihydro-2h-pyran-3-yl] acetate Chemical compound C1=C[C@@H](OC(C)=O)[C@H](C)O[C@H]1OCCCCCOC1=CC(O)=C2C(=O)C(C=3C=CC(O)=CC=3)=COC2=C1 RRLHMJHRFMHVNM-BQVXCWBNSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
一种基于层宽内存分配的深度学习异构计算方法,包括步骤:遍历神经网络模型以获取其训练操作序列及层数L;计算神经网络模型中第i层操作所涉及的数据在双缓冲配置下所需的内存空间R1;在第i层操作所需的内存空间R1大于GPU的内存空间的情况下,改变第i层的层结构并更新所述训练操作序列;在神经网络模型的所有层涉及的所有数据所需的内存空间R2大于GPU的内存空间的情况下,将所述所有数据按照数据放置方法转移至所述存储介质中进行存储;基于所述训练操作序列按照逐层的方式完成每一层的迭代计算以完成对神经网络的训练。本发明的方法使GPU内存空间不再成为神经网络训练的限制因素,降低了CPU和GPU之间的通信开销,加快神经网络的训练速度。
Description
技术领域
本发明属于数据处理技术领域,尤其涉及一种基于层宽内存分配的深度学习异构计算方法和系统。
背景技术
卷积神经网络是深度学习中的典型代表,目前在计算机视觉,自然语言处理,语音识别等领域一枝独秀,其效果远远优于其他方法。由于深度学习的训练过程需要强大的计算能力,所以通常采用GPU来加速训练过程,而且目前主流的深度学习系统都提供了大量的GPU计算支持。由于物理限制,GPU memory容量远远小于Host memory容量,但是随着深度学习的研究不断深入,神经网络朝着更宽更深的方向不断演进,那么在GPU卡上训练神经网络也需要更多的GPU memory支持。所以为了在单块GPU卡上训练神经网络,只能选择更小规模的网络,或者使用多块GPU卡并行计算。
因为神经网络在反向传播的过程中需要使用到前向传播过程产生的中间数据,所以目前流行的深度学习系统都是采用network-wide的内存分配策略,将前向传播过程中产生的中间数据都保存在GPU memory中,以便在反向传播过程中能够及时的利用中间数据计算参数的更新梯度。当神经网络不能被完全装进GPU时,GPU memory就成为了主要的限制因素。神经网络的训练涉及到多个层的执行过程,但是在任意一个时刻,GPU只能执行单个层的计算任务,所以最近的研究提出了layer-wide的内存分配策略,把当前计算不需要的数据offload到Host memory中,为了隐藏通信开销,通常采用Double buffer的内存配置。训练神经网络的内存需求随之大大降低,只需要满足GPU memory的容量大于神经网络中最大层所需内存的两倍。神经网络求解时,常采用批处理的随机梯度下降法。批处理的方法虽然能够帮助神经网路更快的收敛到最优解,但是在训练的过程中需要为其分配更大的内存空间。当批处理的批次大小变大或模型变得更宽时,神经网络中最大层所需要的内存空间也会变得更大,甚至会大于GPU memory的容量,此时layer-wide的内存分配策略也失去了功效。在有限的GPU memory下,神经网络的训练不能得以进行。
发明内容
如本文所用的词语“模块”描述任一种硬件、软件或软硬件组合,其能够执行与“模块”相关联的功能。
针对现有技术之不足,本发明提供一种基于层宽内存分配策略的深度学习异构计算方法,基于CPU和GPU共同执行所述深度学习异构计算方法,基于至少一个存储介质存储CPU和GPU共同执行过程中涉及的数据,所述深度学习异构计算方法至少包括步骤:遍历神经网路模型以获取其训练操作序列及层数L。计算神经网络模型中第i层操作所涉及的数据在双缓冲配置下所需的内存空间R1,其中,1≤i≤L。在第i层操作所需的内存空间R1大于GPU的内存空间的情况下,改变第i层的层结构并更新所述训练操作序列。在神经网络模型的所有层涉及的所有数据所需的内存空间R2大于GPU的内存空间的情况下,将所述所有数据按照数据放置方法分配至CPU的内存空间和GPU的内存空间中。基于所述训练操作序列按照逐层的方式完成每一层的迭代计算以完成对神经网络的训练。
根据一种优选实施方式,改变第i层的层结构的方法至少包括步骤:基于所述训练操作序列获取神经网络模型的每一层对应的操作类型。在第i层是卷积层并进行卷积操作情况下,在该卷积层之前按照插入分割层的方式将其进行卷积操作所需的输入特征图按照高或宽的维度进行分割得到若干个局部输入特征图。基于所述局部输入特征图分别进行卷积操作以获取若干个对应的局部输出特征图。在该卷积层之后按照插入合并层的方式对若干个所述局部输出特征图进行合并操作以形成该卷积层对应的完整的输出特征图。更新所述训练操作序列。
根据一种优选实施方式,改变第i层的层结构的方法还包括步骤:在第i层是池化层、激活层或批处理规范层的情况下,在所述第i层之前按照插入分割层的方式将其操作所需的输入特征图按照通道维度进行分割得到若干个局部输入特征图。基于所述局部输入特征图分别进行对应操作以获取若干个对应的局部输出特征图。在所述第i层之后按照插入合并层的方式对若干个所述局部输出特征图进行合并操作以形成该层对应的完整的输出特征图。更新所述训练操作序列。
根据一种优选实施方式,所述数据放置方法至少包括步骤:遍历所述训练操作序列。将所述分割层和所述合并层所涉及的数据标记为第一数据,其余层所涉及的数据标记为第二数据,初始化GPU的可用内存空间M1等于其总容量。遍历所述第二数据以获得所需内存最大的层L1、次最大的层L2、L1层计算过程中所涉及的所有数据所需的内存空间RL1、L2层计算过程中所涉及的所有数据所需的内存空间RL2以及L1层计算过程中所涉及的最大数据块所需的内存空间R3。在满足关系式(RL1-R3)*2+R3<M1且RL2*2+R3<M1的情况下,更新所述最大数据块的标记为第三数据。更新所述可用内存空间M1的容量大小为M1-R3。
根据一种优选实施方式,所述数据放置方法还包括步骤:在满足关系式(RL1-R3)*2+R3≥M1或RL2*2+R3≥M1的情况下,遍历所有第二数据并计算获得其所需的内存空间R4,其中,在满足关系式R4<M1的情况下,更新所述第二数据的标记为第三数据。更新所述可用空间的M1容量大小为M1-R4。
根据一种优选实施方式,所述数据放置方法还包括步骤:遍历所述第二数据以获得所需内存最大的层L1、次最大的层L2、L1层计算过程中所涉及的所有数据所需的内存空间RL1、L2层计算过程中所涉及的所有数据所需的内存空间RL2以及L1层计算过程中所涉及的最大数据块所需的内存空间R3。在满足关系式(RL1-R3)*2+R3<M1且RL2*2+R3<M1的情况下,更新所述最大数据块的标记为第三数据。更新所述可用内存空间M1的容量大小为M1-R3。重复上述步骤直至满足关系式(RL1-R3)*2+R3≥M1或RL2*2+R3≥M1。在满足关系式(RL1-R3)*2+R3≥M1或RL2*2+R3≥M1的情况下,遍历所有第二数据并计算获得其所需的内存空间R4,其中,在满足关系式R4<M1的情况下,更新所述第二数据的标记为第三数据。更新所述可用空间的M1容量大小为M1-R4。
根据一种优选实施方式,所述数据放置方法还包括步骤:所述第一数据存储至CPU的内存空间中,所述剩余的第二数据存储至CPU的内存空间中,所述第三数据存储至GPU的内存空间中。
根据一种优选实施方式,计算所述内存空间R1的方法至少包括步骤:统计神经网络模型中每一层操作所需的输入数据与输出数据的张量形状确定内存空间R1。
本发明还提供一种基于层宽内存分配策略的深度学习异构计算系统,至少包括CPU和GPU。所述深度学习异构计算系统还包括神经网络调整模块、数据放置模块、任务调度模块和执行引擎模块,其中,所述神经网络调整模块被配置为在第i层操作所需的内存空间R1大于GPU的内存空间的情况下,基于所述改变第i层的层结构的方法对神经网络模型的层结构进行动态调整的工作模式。所述数据放置模块被配置为在神经网络模型的所有层涉及的所有数据所需的内存空间R2大于GPU的内存空间的情况下,基于所述数据放置方法对神经网络模型训练所需的数据进行动态调整的工作模式。所述任务调度模块被配置为将所述分割层和所述合并层的计算任务分配至所述CPU的工作模式。所述执行引擎模块被配置为在神经网络训练过程中控制各层的计算按照所述训练操作序列进行执行的工作模式。
根据一种优选实施方式,所述深度异构计算系统还包括主存储器,其中,所述CPU被配置为在其执行分割层或合并层的计算任务时,计算获得的局部输入特征图预存至GPU的内存空间中的工作模式。所述GPU被配置为在计算当前局部输入特征图的过程中将上一个局部输入特征图预存至所述主存储器的工作模式,其中,在GPU基于局部输入特征图不断计算获得局部输出特征图的同时,所述CPU将所述局部输出特征图进行合并以得到完整的输出特征图。
本发明的有益技术效果:
(1)通过神经网络调整策略对神经网络结构的调整,使GPU内存空间不再成为神经网络训练的限制因素。
(2)当GPU内存空间满足训练需求时,本发明采用一种更有效的数据放置方法,使更多更有效的数据被放置在GPU内存空间中,减少通信开销,加快神经网络的训练速度。
(3)利用闲置的CPU计算资源处理因神经网络调整而插入的拆分与合并操作,充分发挥硬件资源的效率。
附图说明
图1是本发明优选的深度学习异构计算方法的流程示意图;
图2是本发明优选的卷积神经网络的架构示意图;
图3是本发明优选的基于图2所示的卷积神经网络架构下的神经网络结构调整的流程示意图;
图4是本发明优选的基于图2所示的卷积神经网络架构下的数据放置方法;
图5是本发明优选的任务调度流程图;和
图6是本发明优选的深度学习异构计算系统的模块化示意图。
附图标记列表
1:CPU 2:GPU 3:ROM
4:RAM 5:总线 6:输入/输出接口
7:神经网络调整模块 8:数据放置模块 9:任务调度模块
10:执行引擎模块 11:通信模块 12:存储模块
13:驱动器 14:可拆卸介质
具体实施方式
下面结合附图进行详细说明。
为了便于理解,在可能的情况下,使用相同附图标记来表示各附图中共同的相似元件。
如在整篇本申请中所使用的那样,词语“可以”系容许含义(即,意味着有可能的)而不是强制性含义(即,意味着必须的)。类似地,词语“包括”意味着包括但不限于。
短语“至少一个”、“一个或多个”以及“和/或”系开放式表达,它们涵盖操作中的关联与分离两者。例如,表述“A、B和C中的至少一个”、“A、B或C中的至少一个”、“A、B和C中的一个或更多个”、“A、B或C”和“A、B和/或C”中的每个分别指单独A、单独B、单独C、A和B一起、A和C一起、B和C一起或A、B和C一起。
术语“一种”或“一个”实体指的是该实体中的一个或多个。这样,术语“一”(或“一”)、“一个或多个”以及“至少一个”在本文中可以交换地使用。还应该注意,术语“包括”、“包含”和“具有”可以交换地使用。
如本文中所使用的那样,术语“自动的”及其变型是指当执行过程或操作时在没有实质性人工输入的情况下完成的任何过程或操作。然而,如果在执行该过程或操作之前接收到该输入,则该过程或操作可以是自动的,即使该过程或操作的执行使用了实质性或非实质性的人工输入。如果这样的输入影响该过程或操作的执行方式,则该人工输入被认为是实质性的。准予执行该过程或操作的人工输入不被视为“实质性的”。
实施例1
如图1所示,本发明提供一种神经网络结构调整方法以改变神经网络选定层的层结构。具体包括以下步骤:
S1:在layer[i]是卷积层,且layer[i+1]不是激活层或池化层的情况下,插入segment层对该卷积层的输入特征图按照高或宽的维度进行分割,把卷积层替换成许多小卷积层,小卷积层以局部输入特征图为输入,输出对应的局部输出特征图,最后插入merge层将局部输出特征图进行合并,产生完整的输出特征图,流程结束,否则转步骤S2;其中,layer[i]表示神经网络的第i层;
S2:在layer[i]是卷积层,且layer[i+1]是激活层或池化层的情况下,插入segment层对该卷积层的输入特征图按照高或宽的维度进行分割,把卷积层替换成许多小卷积层,然后直接对小卷积层的局部输出特征图进行激活或池化,最后插入merge层将局部输出特征图进行合并,流程结束,否则转步骤S3;
S3:在layer[i]是卷积层,layer[i+1]是激活层,且layer[i+2]是池化层的情况下,插入segment层对该卷积层的输入特征图按照高或宽的维度进行分割,把卷积层替换成许多小卷积层,然后直接对小卷积层的局部输出特征图进行激活和池化,最后插入merge层将局部输出特征图进行合并,产生完整的输出特征图,流程结束,否则转步骤S4;
S4:在layer[i]是激活层、池化层或batchnorm层的情况下,插入segment层对该层的输入特征图按照通道维度进行分割,对分割后的局部输入特征图分别进行激活、池化或batchnorm,最后插入merge层将局部输出特征图进行合并,流程结束。
为了便于理解,下面以卷积神经网络对上述步骤进行详细论述。
卷积神经网络由三部分组成,第一部分为输入层,第二部分由若干个卷基层、池化层和激活层组成,第三部分由一个全连接的多层感知分类器构成。按照不同的方式可以构建出各种不同的卷积神经网络架构模式,通常按照如下方式进行表示:
INPUT->[[CONV]*N->[POOLING]*M->[FC]*K
其中,上述表达式所表示的卷积神经网络结构为:N个卷积层叠加后,按照可选的方式叠加一个池化层,重复该结构M次后,最后再叠加K个全连接层。
优选的,图2示出了当N=1,M=2,K=2时的卷积神经网络的层结构示意图。输入层的宽度和高度分别对应于输入图像的宽度和高度,输入图像的深度为1。优选的,第一个卷积层包含有三个卷积核,基于三个卷积核对输入图像同时进行卷积操作从而得到三个第一输出特征图。三个第一输出特征图作为第一卷积层的第一池化层的输入特征图,基于第一池化层对三个第一输出特征图的池化处理得到三个第二输出特征图。
再次参见图2,基于M=2,需要将按照上述结构进行循环以再次对三个第二输出特征图进行再次卷积处理和池化处理,其中,第二卷积层可以与第一卷积层具有不同数量的卷积核。第二卷积层的卷积核的数量可以是五个,其中,第二卷积层的每一个卷积核均将三个第二输出特征图同时卷积在一起以得到一个新的第三输出特征图,从而经第二卷积层的五个卷积核对三个第二输出特征图的卷积处理可以得到五个第三输出特征图。随即五个第三输出特征图经第二池化层的池化处理得到五个第四输出特征图。
再次参见图2,基于K=2,卷积神经网络具有第一全连接层和第二全连接层,其中,第一全连接层的每一个神经元和上一层的五个第四输出特征图中的每一个神经元彼此相连。第二全连接层和第一全连接层的每一神经元相连,第二全连接层即是神经网络的输出层,从而按照此方式得到了整个神经网络完整的输入和输出。
神经网络在进行训练的过程中,按照逐层进行计算的方式由输入层开始对输入特征图进行例如是卷积、池化和激活等处理。S1~S4的本质是在进行每一层的计算之前,对该层的类型或对每层的输入特征图的计算处理类型进行识别后,按照不同的方式对当前计算层的输入特征图进行对应处理。具体的,当前计算层为卷积层或者需要对输入特征图进行卷积操作,则在当前层之前插入segment层以实现在对该卷积层的输入特征图进行卷积操作之前对其输入特征图按照高或宽的维度进行分割以得到若干个局部输入特征图。当前计算层为池化层、激活层和batchnorm层中的任意一种时,则在当前层之前插入segment层对其输入特征图按照通道维度进行分割以得到若干个局部输入特征图。其中,在对上述若干个局部输入特征图按照神经网络的层结构进行相应计算处理得到若干个局部输出特征图后,按照插入merge层的方式随即对若干个局部输出特征图进行合并以得到一个完整的输出特征图。
再次参见图2,图2所示的卷积神经网络按照从左向右分布的方式一共具有7层结构。其中,遍历神经网络以获得卷积神经网络的层结构,例如,针对一个具有N层的卷积神经网络,自动设定第一层为输入层,第N层为输出层,故而设定i为2≤i<N的整数。优选的,如图3所示,在进行卷积操作时,输入特征图的尺寸为[6*6*3],表示输入特征图具有6像素的宽度,6像素的高度和RGB三个颜色通道,输入特征图可以是一个RGB的Cifar-10图片。当i=2时,当前计算层为第一卷积层,不对其对应的输入特征图进行分割的情况,第一卷积层中的三个卷积核的尺寸为[2*2],卷积操作采用的步长Stride=1,Padding=1,输入特征图经过第一卷积层卷积处理后能够得到三个大小均为[6*6*1]的输出特征图。在对第一卷积层对应的输入特征图按照长或宽的维度进行分割的情况下,可以得到不同尺寸大小的若干个局部输入特征图,例如,按照在宽度方向进行分割的方式,可以将大小为[6*6*1]的输入特征图分割为两个大小为[6*4*1]的局部输入特征图(一定的数据冗余保证结果正确性),其中,三个卷积核同时对上述两个局部输入特征图进行卷积处理,可以得到六个大小为[6*4*1]的输出特征图。上述六个输出特征图可以直接按照在卷积层的插入merge层的方式进行合并,也可以在其经过激活处理、池化处理后得到若干个新输出特征图的情况下再按照插入merge层的方式对新输出特征图进行合并。优选的,输出特征图的合并方式与其输入特征图的分割方式是彼此相互对应的。即如果输入特征图是按照在宽度的方向上进行分割,则输出特征图也按照在宽度的方向上进行合并。
优选的,再次参见图3,当i=3时,当前计算层为池化层,需要对经过第一卷积层卷积处理得到的三个大小为[6*6*1]的输出特征图进行分割处理,其中,输出特征图按照通道维度进行分割。具体的,很多特征图的通道数都是大于1的,所以以[6*6*64]的输入特征图为例,按照在通道方向进行分割的方式,可以将大小为[6*6*64]的输入特征图分割成两个大小为[6*6*32]的局部输入特征图,对两个局部输入特征图进行池化处理,池化的步长Stride=2,得到两个大小为[3*3*32]的局部输出特征图,然后对局部输出特征图进行合并。
实施例2
本实施例是对实施例1的进一步改进,重复的内容不再进行赘述。
本发明还提供一种数据放置的方法,如图4所示,具体包括以下步骤:
S5:设定第一存储空间和第二存储空间,遍历神经网络的操作序列,将神经网络的segment层和merge层计算所涉及的数据标记为第一数据,其他层计算所涉及的数据标记为第二数据,其中,第一数据由第二存储空间存储并初始化第一存储空间的可用空间Ravailable等于其总容量。优选的,由于将segment层和merge层的训练计算需要较大的内存空间,将其训练转移到CPU上进行能够有效地降低GPU的内存开销,减缓神经网络调整所带来的性能影响。
S6:统计神经网络中所有第二数据,据此找到所需内存空间最大的层L1和次最大层L2,L1层计算过程所涉及到的所有数据占用的内存空间为RL1,其中最大的数据块大小为Rbiggest,L2层计算过程所涉及到的所有数据占用的内存空间为RL2;
S7:在(RL1–Rbiggest)*2+Rbiggest<Ravailable且RL2*2+Rbiggest<Ravailable的情况下,则将L1层中最大数据块标记为第三数据并将其存储至第一存储空间,同时动态调整第一存储空间的可用空间为Ravailable=Ravailable-Rbiggest,并返回至步骤S6;在(RL1–Rbiggest)*2+Rbiggest>Ravailable或RL2*2+Rbiggest>Ravailable的情况下,进入步骤S8进行下一步处理;
S8:遍历所有由第二数据构成的数据块,在数据块大小为Rdata<Ravailable的情况下,将该数据块存储至第一存储空间中,且动态调整第一存储空间的可用空间为Ravailable=Ravailable–Rdata。优选的,为了减少训练过程中需要卸载和预取的总的数据量,将segment层与merge层需要的数据放置到主存储器中,在满足最大层进行双缓冲配置的内存需求之外,将剩余的数据尽可能多的放置到GPU内存中,以此减少通信开销。
优选的,第一存储空间是GPU的内存空间,第二存储空间是CPU的内存空间。segment层计算所涉及的所有数据至少包括进行分割处理前的输入特征图及产生的输出特征图。merge层计算所涉及的所有数据至少包括进行合并处理前的输入特征图及产生的输出特征图。
优选的,如图4所示,卷积神经网络在训练的前向传播计算过程中,针对每一层,其涉及的数据至少包括输入特征图、中间数据、输出特征图。在卷积神经网络训练的反向传播计算过程中,基于中间数据重新计算误差并修改权重,该过程中涉及的数据至少包括中间数据和参数数据。其中,CPU的内存空间和GPU的内存空间均基于多个并行的缓冲池(bufferpool)对其内存进行管理以实现对其内存空间的并行读写。CPU的内存空间分为至少三个公共池(common pool)以分别用于存储训练样本数据、segment层和merge层涉及的中间数据以及segment层和merge层涉及的参数数据。GPU的内存空间分为一个双缓冲池(doublebuffer pool)和两个公共池,其中,公共池分别用于存储第三数据中的中间数据和参数数据。CPU内存空间中的中间数据(intermediate data)和参数数据(parameter data)不是仅用于存储segment层和merge层的中间数据和参数。当整个网络模型涉及到的数据总量R大于GPU的容量时,在执行完步骤S8后,仍然有一部分数据是不能被固定于GPU中,所以这部分数据被固定于CPU中,这部分数据中既包含中间数据,又包含参数数据。以中间数据为例,部分数据在前向传播过程中产生,然后被转移到主存储器中,在反向传播过程中又被提前加载到双缓冲池中,所以中间数据和参数数据彼此之间会产生交互。
实施例3
本实施例是对实施例1和实施例2的进一步改进,重复的内容不再赘述。
本发明还提供一种基于层宽内存分配的深度学习异构计算方法,如图1所示,具体包括如下步骤:
S9:通过一次虚拟化迭代收集神经网络的训练操作序列,并统计神经网络中每层操作需要输入和输出的数据的张量形状,其中,基于张量形状计算每层满足双缓冲配置所需的内存空间;
S10:在第一存储空间的容量大于每层所需的内存空间的情况下,神经网络的结构保持原状并进入步骤S12,在神经网络存在一个及以上的层所需的内存空间大于第一存储空间的容量的情况下,进入步骤S11进行下一步处理;
S11:根据实施例1所述的神经网络结构调整方法对所需内存空间大于第一存储空间容量的层进行结构调整,且对调整后的神经网络进行虚拟化迭代以重新收集其训练操作序列;
S12:在神经网络所有层的计算所涉及的数据的总量小于第一存储空间的容量的情况下,神经网络在训练过程中所涉及的所有数据均存储至第一存储空间;在神经网络的所有层的计算所涉及的数据的总量大于第一存储空间的容量的情况下,神经网络在训练过程中将所有层计算所涉及的数据中的部分数据卸载至主存储空间中,其中,基于实施例2所述的数据放置的方法判断是否需要将数据卸载至主存储空间中;
S13:根据神经网络的训练操作序列调度CPU和GPU的计算资源以完成神经网络的训练。
为了便于理解,对步骤S9、S12和S13进行如下详细论述。
S9:通过一次虚拟化迭代收集神经网络的训练操作序列,并统计神经网络中每层操作需要输入和输出的数据的张量形状,其中,基于张量形状计算每层满足双缓冲配置所需的内存空间。
优选的,第一存储空间可以是GPU的内存空间,第二存储空间可以是CPU的内存空间,主存储空间可以是高速缓冲存储器。数据均以张量的形式进行表示,张量形状表示张量的维数和每一维的长度,例如shape[2,3]表示数组时,其代表数组的第一维有两个元素,第二维有三个元素,数组的具体表现形式可以是[[1,2,3],[4,5,6]]。假设张量形状表示为[N,C,H,W],那么张量所需要的内存空间R=S*(N*C*H*W),其中,S为张量中每个数据占用的字节数。N、C、H和W分别代表张量的批大小(batch size)、通道数、高和宽。
优选的,虚拟化迭代仅发生在对神经网络进行训练开始之前,其中,虚拟化迭代仅统计神经网络的训练操作序列,并不执行每个层操作的计算任务。
S12:在神经网络所有层的计算所涉及的数据的总量小于第一存储空间的容量的情况下,神经网络在训练过程中所涉及的所有数据均存储至第一存储空间;在神经网络的所有层的计算所涉及的数据的总量大于第一存储空间的容量的情况下,神经网络在训练过程中将所有层计算所涉及的数据中的部分数据卸载至主存储空间中,其中,基于实施例2所述的数据放置的方法判断是否需要将数据卸载至主存储空间中。
优选的,神经网络按照数据双缓冲的方式进行配置可以隐藏通信开销并加快神经网络的训练速度,其中,在神经网络完成一次迭代训练所需的所有数据所需占用的存储空间大于GPU的内存空间的情况下,神经网络的前向传播过程中,将当前层计算不需要的数据卸载至主存储空间中。神经网络的反向传播过程中,将当前层计算所需的数据预存至GPU的内存空间中。利用神经网络训练过程中的计算开销可以隐藏卸载和预存数据所产生的通信开销。
S13:根据神经网络的训练操作序列调度CPU和GPU的计算资源以完成神经网络的训练。
优选的,利用CPU的计算资源完成segment层和merge层的计算任务。在前向传播中,CPU在执行segment层的计算任务时会不断产生局部输入特征图,并把这些局部输入特征图预取到GPU的内存空间中。随后利用GPU的计算资源得到局部输出特征图,GPU在计算当前局部特征图的过程中把上一个局部输出特征图卸载到CPU的内存空间中,GPU执行计算任务的同时,CPU将不断产生的局部输出特征图合并为完整的输出特征图,从而使得GPU的计算开销隐藏大部分的通信开销和CPU计算开销,减少拆分与合并对整体训练速度的影响。为了减少训练过程中需要卸载和预取的总的数据量,将segment层与merge层需要的数据放置到CPU的内存空间中。在满足最大层进行双缓冲配置的内存需求之外,将剩余的数据尽可能多的放置到GPU的内存空间中,以此减少通信开销。segment层和merge层的训练仍需要较大的内存空间,因此将其计算操作调度到CPU。
优选的,图5示出了计算任务调度的流程图。图5的横坐标表示时间,纵坐标表示3个执行流,明显的看到CPU端执行segment层和merge层的计算任务,而且CPU_computer执行流执行SEG(2)会在CPU端连续的产生多个局部输入特征图,然后memory执行流执行(P0,P1…Pm)将多个局部输入特征图连续的传输到GPU memory中,然后GPU_computer执行流在GPU端进行卷积操作,卷积产生的局部输入特征图紧接着被memory执行流卸载到主存中,然后被CPU_computer执行流的MER(2)任务使用以产生完整的输出特征图。这三个执行流是完全并行的,所以在时间轴上是完全重叠的。
实施例4
本实施例是对前述实施例的进一步改进,重复的部分不再赘述。
本发明还提供一种基于层宽内存分配的深度学习异构计算系统,至少包括神经网络调整模块、数据放置模块、任务调度模块、执行引擎模块、CPU、GPU和主存储器,其中,神经网络调整模块用于调整网络结构,在保证训练正确的前提下,使神经网络能够采用层宽内存分配方法在有限的GPU内存上进行训练。数据放置策略将GPU内存作为主存储器的缓存,尽可能的将更多的数据放置在GPU内存中,减少通信开销。任务调度模块统筹CPU和GPU的计算资源,将segment层和merge层的计算任务分配给CPU,充分利用更多的计算资源,减缓神经网络调整所带来的性能影响。执行引擎模块控制神经网络训练中各个层的执行顺序,其依据为虚拟化迭代过程所产生的训练操作序列。
优选的,若神经网络中存在某一层,其训练所需的内存空间大于GPU内存容量,则神经网络调整模块发挥作用。神经网络调整模块将某一层的计算转换成多个小层的计算,以此突破GPU的内存限制。数据放置策略关系到训练过程中的通信开销,为了减少训练过程中需要卸载和预取的总的数据量,将segment层与merge层需要的数据放置到主存储器中,在满足最大层进行双缓冲配置的内存需求之外,将剩余的数据尽可能多的放置到GPU内存中,以此减少通信开销。将segment层和merge层的训练计算操作转移到CPU上进行以满足其仍需要较大的内存空间。任务调度模块统筹CPU和GPU的计算资源,使其计算相互配合,加速训练。执行引擎负责实际的训练任务,并根据虚拟化迭代得到的训练操作序列控制训练流程。神经网络的训练需要多次迭代,每次迭代的操作序列完全相同,训练结束之后得到可以用于预测的网络模型。
优选的,神经网络调整模块被配置为在第i层操作所需的内存空间R1大于GPU的内存空间的情况下,基于改变第i层的层结构的方法对神经网络模型的层结构进行动态调整的工作模式。数据放置模块被配置为在神经网络模型的所有层涉及的所有数据所需的内存空间R2大于GPU的内存空间的情况下,基于数据放置方法对神经网络模型训练所需的数据进行动态调整的工作模式。任务调度模块被配置为将分割层和合并层的计算任务分配至CPU的工作模式。执行引擎模块被配置为在神经网络训练过程中控制各层的计算按照训练操作序列进行执行的工作模式。
优选的,深度异构计算系统还包括主存储器,其中,CPU被配置为在其执行分割层或合并层的计算任务时,计算获得的局部输入特征图预存至GPU的内存空间中的工作模式。GPU被配置为在计算当前局部输入特征图的过程中将上一个局部输入特征图预存至所述主存储器的工作模式,其中,在GPU基于局部输入特征图不断计算获得局部输出特征图的同时,CPU将局部输出特征图进行合并以得到完整的输出特征图。
为了便于理解,结合图6对本发明的深度学习异构计算系统的模块化连接关系进行论述。
如图6所示,中央处理器(CPU 1)和图像处理器(GPU 2)共同根据只读存储器(ROM3)中存储的程序或从存储模块12加载到随机存取存储器(RAM 4)的程序对数据执行各种处理。CPU 1、GPU 2、ROM 3、RAM4和输入/输出接口6经由总线5彼此连接。神经网络调整模块7、数据放置模块8、任务调度模块9、执行引擎模块10、通信模块11、存储模块12和驱动器13均连接至输入/输出接口6,其中,通信模块11包括例如是LAN卡、调制解调器的网络接口卡。通信模块11可以基于互联网执行数据的传输处理。存储模块12可以是硬盘、存储卡、高速缓冲存储器等。例如是移动硬盘、U盘等的可拆卸介质14中存储的计算机程序可以经由驱动器13被安装至存储模块12中。优选的,本发明的异构计算方法按照编制形成计算机程序的方式通过可拆卸介质14植入到存储模块12中以供RAM 4执行调用,使得CPU 1和GPU 2按照植入的计算机程序对数据进行处理。
实施例5
优选的,实验配置:ubuntu16.04,Intel(R)Xeon(R)CPU E5-2680,nvidia K80显卡,网络模型采用ZFnet,VGG,siftflow-fcn32,WRN-37-4。通过如上配置获取如下表所示的实验数据。网络模型后面的数据表示batchsize的大小,比如vgg(32)表示vgg网络的batch_size=32。选择caffe作为对比系统,my_system表示本发明的系统。表格中的数据为10次迭代训练的时间开销单位为秒,空格表示caffe系统不能训练该模型。通过试验数据表明本发明的系统能够打破层宽的限制,具有更好的模型扩展性,能够训练更大更宽的网络模型。
虽然已经详细描述了本发明,但是在本发明的精神和范围内的修改对于本领域技术人员将是显而易见的。这样的修改也被认为是本公开的一部分。鉴于前面的讨论、本领域的相关知识以及上面结合背景讨论的参考或信息(均通过引用并入本文),进一步的描述被认为是不必要的。此外,应该理解,本发明的各个方面和各个实施例的各部分均可以整体或部分地组合或互换。而且,本领域的普通技术人员将会理解,前面的描述仅仅是作为示例,并不意图限制本发明。
已经出于示例和描述的目的给出了本公开的前述讨论。这并不意图将本公开限制于本文公开的形式。在前述的具体实施方式中,例如,为了简化本公开的目的,本公开的各种特征在一个或多个实施例、配置或方面中被组合在一起。实施例、配置或方面的特征可以以除上面讨论的那些之外的替代实施例、配置或方面组合。本公开的该方法不应被解释为反映本公开需要比每个权利要求中明确记载的更多特征的意图。相反,如以下权利要求所反映的,创造性方面在于少于单个前述公开的实施例、配置或方面的所有特征。因此,以下权利要求由此被并入本具体实施方式中,其中每个权利要求其自身作为本公开的单独实施例。
而且,虽然本公开的描述已经包括对一个或多个实施例、配置或方面以及某些变型和修改的描述,但是其他变型、组合和修改也在本公开的范围内,例如在本领域技术人员的技能和知识范围内,在理解了本公开之后。旨在获得在允许的程度上包括替代实施例、配置或方面的权利,所述权利包括那些要求保护的替代的、可互换的和/或等效的结构、功能、范围或步骤的权利,无论这种替代的、可互换的和/或等效的结构、功能、范围或步骤是否在本文中公开,并且无意公开奉献任何可专利的主题。
Claims (10)
1.一种基于层宽内存分配的深度学习异构计算方法,基于CPU和GPU共同执行所述深度学习异构计算方法,其特征在于,所述深度学习异构计算方法至少包括步骤:
遍历神经网络模型以获取其训练操作序列及层数L;
计算神经网络模型中第i层操作所涉及的数据在双缓冲配置下所需的内存空间R1,其中,1≤i≤L;
在第i层操作所需的内存空间R1大于GPU的内存空间的情况下,改变第i层的层结构并更新所述训练操作序列;
在神经网络模型的所有层涉及的所有数据所需的内存空间R2大于GPU的内存空间的情况下,将所述所有数据按照数据放置方法分配至CPU的内存空间和GPU的内存空间中;
基于所述训练操作序列按照逐层的方式完成每一层的迭代计算以完成对神经网络的训练。
2.如权利要求1所述的深度学习异构计算方法,其特征在于,改变第i层的层结构的方法至少包括步骤:
基于所述训练操作序列获取神经网络模型的每一层对应的操作类型;
在第i层是卷积层并进行卷积操作情况下,在该卷积层之前按照插入分割层的方式将其进行卷积操作所需的输入特征图按照高或宽的维度进行分割得到若干个局部输入特征图;
基于所述局部输入特征图分别进行卷积操作以获取若干个对应的局部输出特征图;
在该卷积层之后按照插入合并层的方式对若干个所述局部输出特征图进行合并操作以形成该卷积层对应的完整的输出特征图;
更新所述训练操作序列。
3.如权利要求2所述的深度学习异构计算方法,其特征在于,改变第i层的层结构的方法还包括步骤:
在第i层是池化层、激活层或批处理规范层的情况下,在所述第i层之前按照插入分割层的方式将其操作所需的输入特征图按照通道维度进行分割得到若干个局部输入特征图;
基于所述局部输入特征图分别进行对应操作以获取若干个对应的局部输出特征图;
在所述第i层之后按照插入合并层的方式对若干个所述局部输出特征图进行合并操作以形成该层对应的完整的输出特征图;
更新所述训练操作序列。
4.如权利要求2或3所述的深度学习异构计算方法,其特征在于,所述数据放置方法至少包括步骤:
遍历所述训练操作序列;
将所述分割层和所述合并层所涉及的数据标记为第一数据,其余层所涉及的数据标记为第二数据,初始化GPU的可用内存空间M1等于其总容量;
遍历所述第二数据以获得所需内存最大的层L1、次最大的层L2、L1层计算过程中所涉及的所有数据所需的内存空间RL1、L2层计算过程中所涉及的所有数据所需的内存空间RL2以及L1层计算过程中所涉及的最大数据块所需的内存空间R3;
在满足关系式(RL1-R3)*2+R3<M1且RL2*2+R3<M1的情况下,更新所述最大数据块的标记为第三数据;
更新所述可用内存空间M1的容量大小为M1-R3。
5.如权利要求4所述的深度学习异构计算方法,其特征在于,所述数据放置方法还包括步骤:
在满足关系式(RL1-R3)*2+R3≥M1或RL2*2+R3≥M1的情况下,更新所述可用内存空间的M1容量大小为M1-RL1*2,并遍历所有第二数据并计算获得其所需的内存空间R4,其中:
在满足关系式R4<M1的情况下,更新所述第二数据的标记为第三数据;
更新所述可用内存空间的M1容量大小为M1-R4。
6.如权利要求5所述的深度学习异构计算方法,其特征在于,所述数据放置方法还包括步骤:
遍历所述第二数据以获得所需内存最大的层L1、次最大的层L2、L1层计算过程中所涉及的所有数据所需的内存空间RL1、L2层计算过程中所涉及的所有数据所需的内存空间RL2以及L1层计算过程中所涉及的最大数据块所需的内存空间R3;
在满足关系式(RL1-R3)*2+R3<M1且RL2*2+R3<M1的情况下,更新所述最大数据块的标记为第三数据;
更新所述可用内存空间M1的容量大小为M1-R3;
重复上述步骤直至满足关系式(RL1-R3)*2+R3≥M1或RL2*2+R3≥M1;
在满足关系式(RL1-R3)*2+R3≥M1或RL2*2+R3≥M1的情况下,遍历所有第二数据并计算获得其所需的内存空间R4,其中,
在满足关系式R4<M1的情况下,更新所述第二数据的标记为第三数据;
更新所述可用内存空间的M1容量大小为M1-R4。
7.如权利要求6所述的深度学习异构计算方法,其特征在于,所述数据放置方法还包括步骤:
所述第一数据存储至CPU的内存空间中,剩余的所述第二数据存储至CPU的内存空间中,所述第三数据存储至GPU的内存空间中。
8.如权利要求4所述的深度学习异构计算方法,其特征在于,计算所述内存空间R1的方法至少包括步骤:
统计神经网络模型中每一层操作所需的输入数据与输出数据的张量形状确定内存空间R1。
9.一种基于层宽内存分配的深度学习异构计算系统,至少包括CPU和GPU,其特征在于,所述深度学习异构计算系统还包括神经网络调整模块、数据放置模块、任务调度模块和执行引擎模块,其中,
所述神经网络调整模块被配置为在第i层操作所需的内存空间R1大于GPU的内存空间的情况下,基于改变第i层的层结构的方法对神经网络模型的层结构进行动态调整的工作模式;
所述数据放置模块被配置为在神经网络模型的所有层涉及的所有数据所需的内存空间R2大于GPU的内存空间的情况下,基于数据放置方法对神经网络模型训练所需的数据进行动态调整的工作模式;
所述任务调度模块被配置为将分割层和合并层的计算任务分配至所述CPU的工作模式;
所述执行引擎模块被配置为在神经网络训练过程中控制各层的计算按照训练操作序列进行执行的工作模式。
10.如权利要求9所述的深度学习异构计算系统,其特征在于,所述深度学习异构计算系统还包括主存储器,其中,
所述CPU被配置为在其执行分割层或合并层的计算任务时,计算获得的局部输入特征图预存至GPU的内存空间中的工作模式;
所述GPU被配置为在计算当前局部输入特征图的过程中将上一个局部输入特征图预存至所述主存储器的工作模式;其中,
在GPU基于局部输入特征图不断计算获得局部输出特征图的同时,所述CPU将所述局部输出特征图进行合并以得到完整的输出特征图。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910136545.8A CN109976903B (zh) | 2019-02-22 | 2019-02-22 | 一种基于层宽内存分配的深度学习异构计算方法和系统 |
US16/748,284 US11568268B2 (en) | 2019-02-22 | 2020-01-21 | Deep learning heterogeneous computing method based on layer-wide memory allocation and system thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910136545.8A CN109976903B (zh) | 2019-02-22 | 2019-02-22 | 一种基于层宽内存分配的深度学习异构计算方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109976903A CN109976903A (zh) | 2019-07-05 |
CN109976903B true CN109976903B (zh) | 2021-06-29 |
Family
ID=67077278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910136545.8A Active CN109976903B (zh) | 2019-02-22 | 2019-02-22 | 一种基于层宽内存分配的深度学习异构计算方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11568268B2 (zh) |
CN (1) | CN109976903B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058936B (zh) * | 2018-01-18 | 2023-04-18 | 伊姆西Ip控股有限责任公司 | 用于确定专用处理资源的资源量的方法、设备和计算机程序产品 |
CN109976903B (zh) | 2019-02-22 | 2021-06-29 | 华中科技大学 | 一种基于层宽内存分配的深度学习异构计算方法和系统 |
CN111078395B (zh) * | 2019-11-12 | 2023-06-20 | 华中科技大学 | 一种基于张量的深度学习gpu内存管理优化方法及系统 |
CN110929623A (zh) * | 2019-11-15 | 2020-03-27 | 北京达佳互联信息技术有限公司 | 多媒体文件的识别方法、装置、服务器和存储介质 |
KR102702130B1 (ko) * | 2019-11-25 | 2024-09-02 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 딥러닝 모델을 트레이닝하는 방법 및 장치 |
CN110889492B (zh) * | 2019-11-25 | 2022-03-08 | 北京百度网讯科技有限公司 | 用于训练深度学习模型的方法和装置 |
CN113496267A (zh) * | 2020-03-18 | 2021-10-12 | 华为技术有限公司 | 神经网络的训练方法及装置 |
JP7459287B2 (ja) * | 2020-03-23 | 2024-04-01 | メンティアム テクノロジーズ インコーポレイテッド | ニューラルネットワーク高速化のためのデジタル-imcハイブリッドシステムアーキテクチャ |
CN113537444A (zh) * | 2020-04-13 | 2021-10-22 | 杭州英歌智达科技有限公司 | 一种基于深度学习网络的内存管理方法 |
CN111488987B (zh) * | 2020-04-16 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 一种深度学习大模型训练的方法、系统、设备及介质 |
CN111666150B (zh) * | 2020-05-09 | 2022-01-11 | 深圳云天励飞技术股份有限公司 | 存储空间的分配方法、装置、终端及计算机可读存储介质 |
CN111562988B (zh) * | 2020-05-19 | 2022-11-25 | 苏州浪潮智能科技有限公司 | 一种神经网络训练计算的迁移方法和装置 |
US20220012635A1 (en) * | 2020-06-18 | 2022-01-13 | Texas Instruments Incorporated | Analytic techniques for improved super tiling machine learning processing |
CN111814971B (zh) * | 2020-06-30 | 2022-08-05 | 杭州国芯科技股份有限公司 | 一种神经网络的内存分配方法 |
CN112084017B (zh) * | 2020-07-30 | 2024-04-19 | 北京聚云科技有限公司 | 一种内存管理方法、装置、电子设备及存储介质 |
CN112099943B (zh) * | 2020-08-13 | 2024-05-03 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
US20220067525A1 (en) * | 2020-08-25 | 2022-03-03 | Nvidia Corporation | Techniques for pruning neural networks |
CN112084038B (zh) * | 2020-09-23 | 2021-10-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
CN112381211B (zh) * | 2020-11-20 | 2023-04-28 | 西安电子科技大学 | 基于异构平台执行深度神经网络的系统及方法 |
CN112527395B (zh) * | 2020-11-20 | 2023-03-07 | 海光信息技术股份有限公司 | 数据预取方法和数据处理装置 |
US12124939B1 (en) * | 2020-11-24 | 2024-10-22 | Perceive Corporation | Generation of machine-trained network instructions |
CN112506436B (zh) * | 2020-12-11 | 2023-01-31 | 西北工业大学 | 用于卷积神经网络加速器的高效率数据动态存储分配方法 |
CN112286694B (zh) * | 2020-12-24 | 2021-04-02 | 瀚博半导体(上海)有限公司 | 基于深度学习计算网络的硬件加速器内存分配方法及系统 |
CN112836801A (zh) * | 2021-02-03 | 2021-05-25 | 上海商汤智能科技有限公司 | 深度学习网络确定方法、装置、电子设备及存储介质 |
US12159214B1 (en) | 2021-04-23 | 2024-12-03 | Perceive Corporation | Buffering of neural network inputs and outputs |
KR20230043565A (ko) * | 2021-09-24 | 2023-03-31 | 삼성전자주식회사 | 모델들을 공동 배치하는 전자 장치 및 그 동작 방법 |
CN113608881B (zh) * | 2021-10-09 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 内存分配方法、装置、设备、可读存储介质及程序产品 |
CN114816758B (zh) * | 2022-05-10 | 2023-01-06 | 北京百度网讯科技有限公司 | 资源分配方法和装置 |
CN116451757B (zh) * | 2023-06-19 | 2023-09-08 | 山东浪潮科学研究院有限公司 | 一种神经网络模型的异构加速方法、装置、设备及介质 |
CN116737605B (zh) * | 2023-08-11 | 2023-11-14 | 上海燧原科技有限公司 | 基于芯片多级存储的数据预取方法、装置、设备及介质 |
CN117687802B (zh) * | 2024-02-02 | 2024-04-30 | 湖南马栏山视频先进技术研究院有限公司 | 一种基于云平台的深度学习并行调度方法、装置和云平台 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104835110B (zh) * | 2015-04-15 | 2017-12-22 | 华中科技大学 | 一种基于gpu的异步图数据处理系统 |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
CN106991474B (zh) * | 2017-03-28 | 2019-09-24 | 华中科技大学 | 深度神经网络模型并行的全连接层数据交换方法及系统 |
CN107122244B (zh) * | 2017-04-25 | 2020-02-14 | 华中科技大学 | 一种基于多gpu的图数据处理系统及方法 |
US11144828B2 (en) * | 2017-06-09 | 2021-10-12 | Htc Corporation | Training task optimization system, training task optimization method and non-transitory computer readable medium for operating the same |
CN107437110B (zh) * | 2017-07-11 | 2021-04-02 | 中国科学院自动化研究所 | 卷积神经网络的分块卷积优化方法及装置 |
WO2019029785A1 (en) * | 2017-08-07 | 2019-02-14 | Renesas Electronics Corporation | MATERIAL CIRCUIT |
CN107844828B (zh) * | 2017-12-18 | 2021-07-30 | 南京地平线机器人技术有限公司 | 神经网络中的卷积计算方法和电子设备 |
AU2017279610A1 (en) * | 2017-12-19 | 2019-07-04 | Canon Kabushiki Kaisha | Memory access optimisation using per-layer computational mapping and memory allocation for CNN application |
CN108197075B (zh) * | 2017-12-29 | 2021-05-14 | 中国人民解放军国防科技大学 | 一种Inception结构的多核实现方法 |
US12099912B2 (en) * | 2018-06-22 | 2024-09-24 | Samsung Electronics Co., Ltd. | Neural processor |
CN109086867B (zh) * | 2018-07-02 | 2021-06-08 | 武汉魅瞳科技有限公司 | 一种基于fpga的卷积神经网络加速系统 |
US10572225B1 (en) * | 2018-09-26 | 2020-02-25 | Xilinx, Inc. | Circuit arrangements and methods for performing multiply-and-accumulate operations |
US11023360B2 (en) * | 2018-11-14 | 2021-06-01 | The Mathworks, Inc. | Systems and methods for configuring programmable logic devices for deep learning networks |
CN109976903B (zh) | 2019-02-22 | 2021-06-29 | 华中科技大学 | 一种基于层宽内存分配的深度学习异构计算方法和系统 |
-
2019
- 2019-02-22 CN CN201910136545.8A patent/CN109976903B/zh active Active
-
2020
- 2020-01-21 US US16/748,284 patent/US11568268B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200272907A1 (en) | 2020-08-27 |
US11568268B2 (en) | 2023-01-31 |
CN109976903A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976903B (zh) | 一种基于层宽内存分配的深度学习异构计算方法和系统 | |
US20230076850A1 (en) | Computation of neural network node with large input values | |
JP7329533B2 (ja) | 演算を加速するための方法および加速器装置 | |
US11049013B1 (en) | Encoding of weight values stored on neural network inference circuit | |
US20240062054A1 (en) | Storage of input values across multiple cores of neural network inference circuit | |
CN108073981B (zh) | 处理卷积神经网络的方法和设备 | |
US20230351187A1 (en) | Accelerating neural networks with one shot skip layer pruning | |
US12118463B1 (en) | Weight value decoder of neural network inference circuit | |
TWI836405B (zh) | 用於平衡權重稀疏卷積處理之方法、系統及非暫時性電腦可讀儲存媒體 | |
US11568227B1 (en) | Neural network inference circuit read controller with multiple operational modes | |
CN113222102B (zh) | 用于神经网络模型量化的优化方法 | |
US11556757B1 (en) | System and method of executing deep tensor columns in neural networks | |
US12165043B2 (en) | Data transfer for non-dot product computations on neural network inference circuit | |
US20210304010A1 (en) | Neural network training under memory restraint | |
US11521007B2 (en) | Accelerator resource utilization by neural networks | |
EP3355275B1 (en) | Out of order pixel shader exports | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
US20210271976A1 (en) | Method, apparatus and device for updating convolutional neural network using gpu cluster | |
US12033053B1 (en) | System and method of determining and executing deep tensor columns in neural networks | |
US20240004718A1 (en) | Compiling tensor operators for neural network models based on tensor tile configurations | |
US12093806B1 (en) | Static memory allocation for neural network inference | |
US20220222174A1 (en) | Storing tensors in memory based on depth | |
TWI813414B (zh) | 用於最佳化神經網路訓練之電腦實施之方法、系統及非暫時性電腦可讀取儲存媒體 | |
US20240428046A1 (en) | Methods And Apparatus For Managing Weight Data Accesses For Neural Network Processors | |
US12093696B1 (en) | Bus for transporting output values of a neural network layer to cores specified by configuration data |
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 |