CN111931921A - 一种用于稀疏神经网络的乒乓存储方法及装置 - Google Patents
一种用于稀疏神经网络的乒乓存储方法及装置 Download PDFInfo
- Publication number
- CN111931921A CN111931921A CN202011087095.7A CN202011087095A CN111931921A CN 111931921 A CN111931921 A CN 111931921A CN 202011087095 A CN202011087095 A CN 202011087095A CN 111931921 A CN111931921 A CN 111931921A
- Authority
- CN
- China
- Prior art keywords
- weight data
- weight
- data
- ping
- switching point
- 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
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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Human Computer Interaction (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明示出一种用于稀疏神经网络的乒乓存储方法及装置,解决了稀疏神经网络计算时,一次性加载大量权重数据极大消耗片上存储资源的问题。本发明示出的乒乓存储装置包括稀疏处理单元、权重存储单元M0、权重存储单元M1、计算单元及控制单元;本发明示出一种稀疏神经网络的乒乓存储方法,在稀疏处理的权重数据中加入配置位,M0和M1用以乒乓存储的方式循环存储加入配置位后的权重数据,计算单元计算出每组数据的切换点。当下一组数据上传完毕时,卷积计算每计算到切换点就进行数据切换,控制单元负责控制各单元完成以上工作。本发明解决了稀疏神经网络乒乓存储时切换点的确定问题,进而实现了稀疏神经网络的乒乓存储。
Description
技术领域
本发明涉及本发明涉及硬件加速卷积神经网络领域,尤其涉及一种用于稀疏神经网络的乒乓存储方法及装置。
背景技术
卷积神经网络(Convolutional neural networks, CNN, or Deepconvolutional neural networks, DCNN)和大多数其他网络完全不同。它们主要用于图像处理,但也可用于其他类型的输入,如音频。神经网络的稀疏性实际上指的是权重的稀疏性,将样本转化为合适的稀疏表达形式,从而使学习任务得以简化,模型复杂度得以降低,通常称为稀疏编码(sparse coding)。“稀疏性”定义为:只有很少的几个非零元素或只有很少的几个远大于零的元素。选择使用具有稀疏性的分量来表示我们的输入数据是有原因的,因为绝大多数的感官数据,比如自然图像,可以被表示成少量基本元素的叠加,在图像中这些基本元素可以是面、线或其他元素。同时,比如与初级视觉皮层的类比过程也因此得到了提升。但是目前的CNN网络模型都比较大,需要海量的计算来完成任务。传统的稀疏神经网络处理器在计算单个卷积的过程中,在线存储卷积运算所需权重数据,对于通道数较多的卷积层,需要消耗相当大的片上硬件存储资源。
现有技术中,在针对常规神经网络,一般采用乒乓存储和在线搬运的手段,即在片上配置两块适当规模的乒乓存储器,两块随机存储器RAM一块进行推理运算,一块进行数据的在线搬运,交替进行。该方案为非稀疏网络的权重数据乒乓存储的解决方案。针对稀疏神经网络,一般采用一次加载全部权重的方式解决。
然而,现有技术存在如下问题:稀疏处理后,难以直接找到权重存储单元切换点,因此不能实现稀疏神经网络的乒乓存储。
发明内容
针对现有技术存在的上述技术问题,本发明提供了一种用于稀疏神经网络的乒乓存储方法及装置,解决了稀疏神经网络乒乓存储时切换点的确定问题,进而实现了稀疏神经网络的乒乓存储。
本发明第一方面示出一种用于稀疏神经网络的乒乓存储方法,包括:
加载当前权重数据集合至存储单元M0;
权重数据集合中权重数据数目确定的原则:一是尽量减少神经网络处理器的在存储器在线切换时的等待时间,二是尽量减少片上存储资源消耗。
当前权重数据集合中权重数据的个数由片上存储单元的容量决定,而片上存储单元的容量的决定因素有很多:芯片面积、双倍速率同步动态随机存储器DDR的访存速度、神经网络处理器的可用带宽及神经网络处理器的推理速度等。第S1权重数据集合被控制单元上传到存储单元M0。
对当前权重数据集合中的权重数据进行卷积计算,加载下一权重数据集合至存储单元M1;
计算单元启动卷积计算,对第S1权重数据集合的权重数据进行卷积计算,同时,控制单元加载下一权重数据集合至存储单元M1。这里叙述的“下一权重数据集合”是相对于“当前权重数据集合”来说的,下一权重数据集合中权重数据的个数也是由片上存储单元的容量决定。具体来说,对于第S1权重数据集合来说,“下一权重数据集合”为第S2权重数据集合;对于第S2权重数据集合来说,“下一权重数据集合”为第S3权重数据集合,依此类推。
当当前权重数据集合中的权重数据卷积计算计算到切换点时,判断下一权重数据集合是否完成存储,切换点为一个配置位为1的权重数据;
卷积计算完成是指,卷积计算计算到切换点,切换点的计算在第Si权重数据集合存储完成后,切换点的计算非常快,切换点是一个配置位为1的权重数据。因为,在稀疏神经网络的计算中,进行权重数据切换时需要在两次卷积核的计算间隙进行,即需要在一个卷积核计算结束时切换权重存储单元。在权重稀疏处理的过程中,在权重数据中加入配置位,稀疏编码技术可以实现该操作,用来表示一个权重数据在当前在卷积核中的位置。配置位包括配置位0和配置位1,0表示该卷积核中的普通权重,在该位置不可进行权重存储单元的切换。1表示卷积核的最后一个权重,在该位置可以进行权重存储单元的切换。在稀疏编码中加入标注权重在卷积核中位置的配置位(用0表示卷积核的普通权重,1表示卷积核的最后一个权重),可以根据该配置位确定卷积核的边界,为在切换点计算中准确找到卷积核边界提供基础支撑。
若下一权重数据集合完成存储,对下一权重数据集合的权重数据进行卷积计算。
切换时,有两种情况:一是两个RAM无缝切换;二是当一个存储单元的权重数据计算到切换点时,发现另外一个存储单元的权重数据并没有搬运完成,需要等待搬运完成后继续运算,涉及到等待时间的问题。等待时间和分配的存储器大小,双倍速率同步动态随机存储器DDR的可用带宽,处理器的推理速度等都有关系,总的原则是在资源可以接受的情况下等待时间越小越好。
所以,要判断下一权重数据集合完成存储,若下一权重数据集合完成存储,对下一权重数据集合的权重数据进行卷积计算。
到此,完成一次乒乓存储。
本发明第二方面示出另一种用于稀疏神经网络的乒乓存储方法,包括:权重数据集合包括末尾配置权重数据,末尾配置权重数据用于切换点计算的权重数据,末尾配置权重数据包含数据的数量等于目标卷积核包含数据的数量*并行度,目标为包含数据数量最多的卷积核,当并行度为1时,切换点为末尾配置权重数据中第一个配置位为1的权重数据。
末尾配置权重数据的数目确定原则:一是在所有情况下该区都要包含至少一个配置位为1的权重数据,二是要在权重数据集合的末尾,三是该区要尽可能小。
原则一是为了确实能够在末尾配置权重数据中找到切换点,为实现这一目的,末尾配置权重数据包含数据的数量等于目标卷积核包含数据的数量*并行度,具体来说:并行度为1时,切换点为末尾配置权重数据中第一个配置位为1的权重数据;原则二和三是为了是计算局部化,减小计算量。
进一步,当并行度为2、4及8时,切换点为末尾配置权重数据中每个并行第一个配置位为1的权重数据中最大的权重数据。
进一步,权重数据集合还包括缓冲权重数据,缓冲权重数据为用来缓冲权重存储单元切换后流水线中的数据;
为了避免权重存储单元切换带来的数据空挡,一般两次加载的权重数据应该包含一定的重复部分。为了保证权重存储单元切换前后权重计算的连贯性,需要在两次加载权重数据的时候重复加载末尾配置权重数据和缓冲权重数据。因此,权重数据集合还包括缓冲权重数据,缓冲权重数据为用来缓冲权重存储单元切换后流水线中的数据。
进一步,末尾配置权重数据与缓冲权重数据的数目相同。
末尾配置权重数据与缓冲权重数据的数目相同,可以更保证操作的准确性。
进一步,权重数据集合还包括:普通权重数据,普通权重数据为权重数据除末尾配置权重数据和缓冲权重数据的其他权重数据;
即权重数据集合被分为普通权重数据、末尾配置权重数据和缓冲权重数据,普通权重数据是进行卷积计算的主要数据。
进一步,当前权重数据集合中末尾配置权重数据和缓冲权重数据与下一权重数据集合中普通权重数据重复。
本发明第三方面示出一种用于稀疏神经网络的乒乓存储装置,包括:权重稀疏处理单元、权重存储单元M0、权重存储单元M1、计算单元及控制单元。
权重稀疏处理单元被配置为:在稀疏处理的权重数据中加入配置位;
M0被配置为:存储加入配置位后的权重数据;
M1被配置为:存储加入配置位后的权重数据;
M0和M1以乒乓存储的方式循环存储加入配置位后的权重数据;
计算单元被配置为:计算切换点,切换点作为M0和M1在卷积计算时的切换点;以及,对权重数据进行卷积计算;
控制单元被配置为:控制M0、M1、计算单元工作,加载权重数据集合至存储单元,控制计算单元计算切换点,控制计算单元开始卷积计算。
通用服务器中的稀疏处理单元和稀疏神经网络处理器中的控制单元、两个权重存储单元M0和M1及控制单元,稀疏处理单元作为权重数据的处理单元,除了对权重数据进行稀疏处理,还在处理的过程中,给权重数据添加配置位,添加配置位后的权重数据能够找到两个卷积核的边界,实现稀疏神经网络切换点的计算;控制单元能够加载对应权重数据集合,并且控制计算单元进行计算;两个权重存储单元作为乒乓存储单元进行权重数据集合加载与计算的载体单元,分别是权重存储单元M0和权重存储单元M1。在一次卷积神经网络的计算当中,首先加载第一权重数据集合到M0中,然后启动计算单元利用M0中的权重数据进行卷积运算,同时把第二权重数据集合加载到M1中。等到M0中的第一权重数据集合卷积计算到切换点,并且M1中的第二权重数据集合加载完毕后,切换到M1中的第二权重数据集合进行卷积计算,由此循环往复,直到完成整个卷积网络的计算。
可以看出,本发明解决了稀疏神经网络乒乓存储时切换点的确定问题,进而实现了稀疏神经网络的乒乓存储。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为用于稀疏神经网络的乒乓存储系统的示意图;
图2为用于稀疏神经网络的乒乓存储系统的交互示意图;
图3为权重存储单元的切换点计算流程示意图;
图4为权重数据加载的数据关系示意图;
图5一种稀疏神经网络的乒乓存储流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中的技术方案作进一步详细的说明。
图1为用于稀疏神经网络的乒乓存储系统的示意图。如图1所示,包括通用服务器中的稀疏处理单元和稀疏神经网络处理器中的控制单元、两个权重存储单元M0和M1及控制单元,稀疏处理单元作为权重数据的处理单元,除了对权重数据进行稀疏处理,还在处理的过程中,给权重数据添加配置位,添加配置位后的权重数据能够找到两个卷积核的边界,实现稀疏神经网络切换点的计算;控制单元能够加载对应权重数据集合,并且控制计算单元进行计算;两个权重存储单元作为乒乓存储单元进行权重数据集合加载与计算的载体单元,分别是权重存储单元M0和权重存储单元M1。在一次卷积神经网络的计算当中,首先加载第一权重数据集合到M0中,然后启动计算单元利用M0中的权重数据进行卷积运算,同时把第二权重数据集合加载到M1中。等到M0中的第一权重数据集合卷积计算到切换点,并且M1中的第二权重数据集合加载完毕后,切换到M1中的第二权重数据集合进行卷积计算,由此循环往复,直到完成整个卷积网络的计算。
图2为用于稀疏神经网络的乒乓存储系统的交互示意图。如图2所示,
S1给权重数据集合S中的权重数据添加配置位;
配置位包括配置位0和配置位1,配置位0代表对应权重数据为每个卷积核除最后一个权重数据的其他权重数据,配置位1对应权重数据为每个卷积核最后一个权重数据;这一步骤是在通用服务器上进行预先处理,由服务器的稀疏处理单元完成,经稀疏处理并增加了配置位的权重数据被分组上传至稀疏神经网络处理器。
S2上传第Si权重数据集合,i为上传的次数;
i≥1,且i为整数;上传第Si权重数据集合到存储单元M0,这里为第一权重数据集合,即第S1权重数据集合;
第S1权重数据集合中权重数据的个数由片上存储单元的容量决定,而片上存储单元的容量的决定因素有很多:芯片面积、双倍速率同步动态随机存储器DDR的访存速度、神经网络处理器的可用带宽及神经网络处理器的推理速度等。第S1权重数据集合被上传到存储单元M0。
S3存储第Si权重数据集合,并计算切换点;
存储单元M0存储第S1权重数据集合,计算单元计算切换点。
S401启动卷积计算;
计算单元启动卷积计算,对第S1权重数据集合的权重数据进行卷积计算。
S402上传第Si权重数据集合,i为上传的次数;
同时,上传第Si权重数据集合到存储单元M1,这里为第二权重数据集合。
S5存储第Si权重数据集合,并计算切换点;
存储单元M1存储第Si权重数据集合,这里为第二权重数据集合,同时计算第二权重数据集合的切换点。
S6 M0中权重数据集合的卷积计算完成;
卷积计算完成是指,卷积计算计算到切换点,切换点的计算在权重数据集合存储完成后,计算出第S1权重数据集合的切换点,切换点的计算非常快,切换点是一个配置位为1的权重数据。
S7第Si权重数据集合存储完成;
存储单元M1存储第Si权重数据集合完成,这里为第二权重数据集合存储完成。
S801启动卷积运算;
计算单元切换到M1启动卷积计算,对第二权重数据集合的权重数据进行卷积计算。
S802上传Si权重数据集合,i为上传的次数;
同时,第Si权重数据集合被上传到存储单元M0,这里为第三权重数据集合,并计算切换点。
S9存储Si权重数据集合;
存储单元M0存储第S1权重数据集合,这里为第三权重数据集合。
S10 M1中权重数据集合的卷积计算完成;
卷积计算计算到切换点。
S11第Si权重数据存储完成;
存储单元M0存储第S1权重数据集合完成,这里为第三权重数据集合存储完成。
S12重复S401,直到所有数据计算完成;
需要说明的是,i为上传的次数,是变化的。直到所有的权重数据上传完成,完成稀疏神经网络权重数据的乒乓存储,直到所有的权重数据卷积计算完成,得到卷积计算的结果。
在稀疏神经网络的计算中,进行权重数据切换时需要在两次卷积核的计算间隙进行,即需要在一个卷积核计算结束时切换权重存储单元。在稀疏神经网络的计算中,由于权重数据做过稀疏处理,难以直接找到权重存储单元切换点。因此,在这个计算流程中,准确找到权重存储单元的切换点是关键。本发明通过添加权重数据配置位信息,实现找到两个卷积核的边界的目的,这个边界就是权重存储单元的切换点。
在权重稀疏处理的过程中,在权重数据中加入配置位,稀疏编码技术可以实现该操作,用来表示一个权重数据在当前在卷积核中的位置。如表1所示,表1为权重数据的配置位含义对照表。
配置位 | 含义 |
0 | 卷积核的普通权重 |
1 | 卷积核的最后一个权重 |
表1
如上表所示,0表示该卷积核中的普通权重,在该位置不可进行权重存储单元的切换。1表示卷积核的最后一个权重,在该位置可以进行权重存储单元的切换。
举例说明,一个卷积核的稀疏权重数据有n个,n可以是任意正整数,第1、2、3……、n-1个数据标记的配置位为0,第n个数据标记的配置位为1;具体来说,当一个卷积核的稀疏权重数据有5个,那么前4个数据标记配置位为0,第5个数据标记配置位为1。实际上,每个卷积核的稀疏权重数据可能更少,如:对于3*3卷积,每个卷积核有9个数据,但是经过稀疏后,卷积核的权重数据会不足9个,0-9个都有可能,主流的稀疏水平,平均下来可能是1-2个。当权重数据为1个时,直接标记配置位为1。
这一步骤是在通用服务器上进行预先处理,经稀疏处理并增加了配置位的权重数据被分组上传至稀疏神经网络处理器。每组权重数据的个数由片上存储单元的容量决定,而片上存储单元的容量的决定因素有很多:芯片面积、DDR的访存速度、神经网络处理器的可用带宽及神经网络处理器的推理速度等。
图3为权重存储单元的切换点计算流程示意图。如图3所示,
S301加载添加配置位的权重数据集合;
神经网络处理器加载完毕一权重数据集合,权重数据集合包括普通权重数据、末尾配置权重数据及缓冲权重数据,普通权重数据为进行卷积运算的主要权重数据,末尾配置权重数据用于切换点计算的权重数据,所述缓冲权重数据为用来缓冲权重存储单元切换后流水线中的数据。
S302分离出末尾配置权重数据和缓冲权重数据;
控制单元分离出末尾配置权重数据和缓冲权重数据,并上传给计算单元。末尾配置权重数据及缓冲权重数据的个数确定原则有两个,一是要在每权重数据集合的末尾,二是末尾配置权重数据要包含至少一个配置位为1的权重数据,三是末尾配置权重数据及缓冲权重数据的个数要尽可能小。
根据不同的计算模式,每个权重切换点需要最大可能的权重数量有所不同,可根据以下公式计算:末尾配置权重数据个数=每个卷积核包含的最大权重数目*计算并行度。举例说明:如果神经网络处理器支持的最大卷积为3*3卷积,及每个卷积核中最多包含9个权重,计算并行度支持最大为8,那么末尾配置权重数据个数应该为72。
S303由末尾配置权重数据计算切换点;
控制单元启动切换点计算,具体如下:
神经网络处理器分离出末尾配置权重数据,确定切换点,当计算并行度为1时,切换点为末尾配置权重数据第一个配置位为1的权重数据;当并行度为2、4及8时,则需要根据当前计算并行度对配置区权重进行分组,选择每第一个配置位为1的权重数据进行比较,确定序号最大的权重数据作为切换点。举例说明:计算并行度为8时,将末尾配置权重数据分为8组,分的方式为:第1-8个权重分别分到1-8组,第9-16个权重分别分到1-8组,以此类推。将每第一个配置位为1的权重数据进行比较,第1为第9个权重数据、第2为第18个权重数据、第3为第11个权重数据……第8为第64个权重数据,在第9个、第18个、第11个……第64个中选择序号最大的权重数据作为切换点,即第64个权重数据作为切换点。
在卷积运算到权重存储单元切换点时,进行权重存储单元的切换。需要注意的是,卷积计算单元一般不支持暂停操作,因为暂停操作带来的资源消耗巨大,没有相应的实用价值;但可以在一次卷积计算完毕后暂缓进行下一次卷积运算。利用这个特性,我们可以重复加载切换前后权重计算的一些数据。
图4为权重数据加载的数据关系示意图。如图4所示,切换点对应的权重数据,如图中虚线所示。
为了避免权重存储单元切换带来的数据空挡,一般两次加载的权重数据应该包含一定的重复部分。为了保证权重存储单元切换前后权重计算的连贯性,需要在两次加载权重数据的时候重复加载末尾配置权重数据和缓冲权重数据。
需要说明的是,末尾配置权重数据和缓冲权重数据的个数可以相同。末尾配置权重数据个数=每个卷积核包含的最大权重数目*计算并行度,由此公式计算得到的末尾配置权重数据个数是保证切换时,计算准确的下限设计,实际操作时配置权重数据个数一般大于等于此公式计算得到的个数。
在第一次计算时,按照上述流程找到权重存储切换点并完成权重存储单元切换,同时记录该切换点作为第二次计算的计算启动点。在进行下一次卷积计算时,从上次记录的启动点启动运算,计算到下一次权重数据切换点。如此循环往复,直到计算结束。
本发明示出一种稀疏神经网络的乒乓存储实施例,
假定经过稀疏处理并添加配置位的权重数据共有450个,根据片上存储单元的容量确定每次上传100个权重数据。
首先,上传第0-100个权重数据到M0,这0-100个权重数据我们称为第一权重数据集合,“一”代表第一次上传。
将加载的这100个数据分为普通权重数据、末尾配置权重数据及缓冲权重数据。本数据每个卷积核中最多包含5个权重,计算并行度支持最大为1,则普通权重数据为进行卷积运算的主要权重数据,为第1-90个权重数据;末尾配置权重数据用来计算切换点,为第91-95个权重数据;缓冲权重数据用来缓冲权重存储单元切换后流水线中的数据,为第96-100个权重数据。其中,第91-95个权重数据至少有一个配置位为1。
神经网络处理器分离出末尾配置权重数据,确定切换点,当计算并行度为1时,切换点为末尾配置权重数据第一个配置位为1的权重数据。其中,第95个权重数据的配置位为1,且第91-94位数据的配置位均为0,因此第95位权重数据作为切换点。
神经网络处理器在加载完毕第一权重数据集合后,启动卷积计算,同时上传第90-190个权重数据到M1。
卷积计算计算到第一数据的切换点,即第95个权重数据,完成第95个权重数据的计算后,准备切换;在切换前,判断M1中第90-190个权重数据是否上传完成;若完成,则切换,同时上传180-280到M0;若未完成,等待上传完成。
在进行M1中第90-190个权重数据的卷积计算的时候,是从第96个数据开始计算的。
当卷积计算再次计算到切换点,判断M0中第180-280个权重数据是否上传完成;若完成,则切换,同时上传270-370到M1;若未完成,等待上传完成。
当卷积计算再次计算到切换点,判断M1中第270-370个权重数据是否上传完成;若完成,则切换,同时上传360-450到M0;若未完成,等待上传完成。
当卷积计算再次计算到切换点,判断M0中第360-450个权重数据是否上传完成;若完成,则切换,完成卷积计算,结束本次计算过程。
需要说明的是,切换点计算和卷积计算可以并行。
并且,最后一集合不需要进行切换点计算,直接完成该集合所有数据的计算即可。
图5为一种稀疏神经网络的乒乓存储流程示意图。如图5所示,本发明示出另一种稀疏神经网络的乒乓存储实施例,在本实施例中,处理器在判断当前数据集合切换点计算完成后,再上传下一权重数据集合。
具体来说,假定经过稀疏处理并添加配置位的权重数据共有280个,根据片上存储单元的容量确定每次上传100个权重数据。
首先,上传第0-100个权重数据到M0,这0-100个权重数据我们称为第一权重数据集合,“一”代表第一次上传。
神经网络处理器在加载完毕第一权重数据集合后,启动卷积计算。
同时,将加载的这100个数据分为普通权重数据、末尾配置权重数据及缓冲权重数据。本数据每个卷积核中最多包含5个权重,计算并行度支持最大为1,则普通权重数据为进行卷积运算的主要权重数据,为第1-90个权重数据;末尾配置权重数据用来计算切换点,为第91-95个权重数据;缓冲权重数据用来缓冲权重存储单元切换后流水线中的数据,为第96-100个权重数据。其中,第91-95个权重数据至少有一个配置位为1。
神经网络处理器分离出末尾配置权重数据,确定切换点,当计算并行度为1时,切换点为末尾配置权重数据第一个配置位为1的权重数据。其中,第95个权重数据的配置位为1,且第91-94位数据的配置位均为0,因此第95位权重数据作为切换点。
完成切换点计算后,控制单元上传第90-190个权重数据到M1。
卷积计算计算到第S1权重数据集合的切换点,即第95个权重数据,完成第95个权重数据的计算后,进行切换;
需要说明的是,仅在本实施例中,控制单元上传第90-190个权重数据时也可以切换。
控制单元上传第90-190个权重数据到M1完成后,计算第90-190个权重数据的切换点。完成切换点计算后,上传180-280到M0。
卷积计算计算到第S2权重数据集合的切换点,完成切换点的计算后,进行切换;
需要说明的是,仅在本实施例中,控制单元上传第180-280个权重数据时也可以切换。
控制单元上传第180-280个权重数据到M0完成后,计算第180-280个权重数据的切换点。完成切换点计算后,等待切换。
因为上述实施例中,只有3个权重数据集合,即第180-280个权重数据需要全部计算。也就是说,最后一组可以不计算切换点。
以上显示和描述了本发明的基本原理和主要特征和以及本发明的优点,对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当合,形成本领域技术人员可以理解的其他实施方式。
本发明提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本发明总的构思下的几个示例,并不构成本发明保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本发明方案所扩展出的任何其他实施方式都属于本发明的保护范围。
Claims (8)
1.一种用于稀疏神经网络的乒乓存储方法,其特征在于,包括:
加载当前权重数据集合至存储单元M0;
对所述当前权重数据集合中的权重数据进行卷积计算,加载下一权重数据集合至存储单元M1;
当所述当前权重数据集合中的权重数据卷积计算计算到切换点时,判断所述下一权重数据集合是否完成存储,所述切换点为一个配置位为1的权重数据;
若所述下一权重数据集合完成存储,对所述下一权重数据集合的权重数据进行卷积计算。
2.根据权利要求1所述的乒乓存储方法,其特征在于,所述权重数据集合包括:末尾配置权重数据,所述末尾配置权重数据用于切换点计算的权重数据,所述末尾配置权重数据包含数据的数量等于目标卷积核包含数据的数量*并行度,所述目标为包含数据数量最多的卷积核,当所述并行度为1时,所述切换点为所述末尾配置权重数据中第一个配置位为1的权重数据。
3.根据权利要求2所述的乒乓存储方法,其特征在于,所述权重数据集合包括:末尾配置权重数据,所述末尾配置权重数据用于切换点计算的权重数据,所述末尾配置权重数据包含数据的数量等于目标卷积核包含数据的数量*并行度,所述目标为包含数据数量最多的卷积核,当所述并行度为2、4及8时,所述切换点为所述末尾配置权重数据中每个并行第一个配置位为1的权重数据中最大的权重数据。
4.根据权利要求2所述的乒乓存储方法,其特征在于,权重数据集合还包括:缓冲权重数据,所述缓冲权重数据为用来缓冲权重存储单元切换后流水线中的数据。
5.根据权利要求4所述的乒乓存储方法,其特征在于,所述末尾配置权重数据与所述缓冲权重数据的数目相同。
6.根据权利要求5所述的乒乓存储方法,其特征在于,所述权重数据集合还包括:普通权重数据,所述普通权重数据为所述权重数据除所述末尾配置权重数据和所述缓冲权重数据的其他权重数据。
7.根据权利要求6所述的乒乓存储方法,其特征在于,所述当前权重数据集合中所述末尾配置权重数据和所述缓冲权重数据与所述下一权重数据集合中所述普通权重数据重复。
8.一种用于稀疏神经网络的乒乓存储装置,其特征在于,包括:权重稀疏处理单元、权重存储单元M0、权重存储单元M1、计算单元及控制单元,
所述权重稀疏处理单元被配置为:在稀疏处理的权重数据中加入配置位;
所述M0被配置为:存储加入配置位后的权重数据;
所述M1被配置为:存储加入配置位后的权重数据;
所述M0和所述M1以乒乓存储的方式循环存储加入配置位后的权重数据;
所述计算单元被配置为:计算切换点,所述切换点作为M0和M1在卷积计算时的切换点;以及,对权重数据进行卷积计算;
所述控制单元被配置为:控制所述M0、所述M1、所述计算单元工作,加载权重数据集合至存储单元,控制所述计算单元计算切换点,控制所述计算单元开始卷积计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011087095.7A CN111931921B (zh) | 2020-10-13 | 2020-10-13 | 一种用于稀疏神经网络的乒乓存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011087095.7A CN111931921B (zh) | 2020-10-13 | 2020-10-13 | 一种用于稀疏神经网络的乒乓存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931921A true CN111931921A (zh) | 2020-11-13 |
CN111931921B CN111931921B (zh) | 2021-01-26 |
Family
ID=73334376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011087095.7A Active CN111931921B (zh) | 2020-10-13 | 2020-10-13 | 一种用于稀疏神经网络的乒乓存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931921B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119118A (zh) * | 2007-09-06 | 2008-02-06 | 上海交通大学 | 分层准循环扩展构造的ldpc码的编码器 |
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
CN109086883A (zh) * | 2018-07-20 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于深度学习加速器实现稀疏计算的方法及装置 |
CN110555516A (zh) * | 2019-08-27 | 2019-12-10 | 上海交通大学 | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 |
CN110717583A (zh) * | 2019-09-30 | 2020-01-21 | 上海寒武纪信息科技有限公司 | 卷积电路、处理器、芯片、板卡和电子设备 |
CN111525931A (zh) * | 2019-02-02 | 2020-08-11 | 北京小米松果电子有限公司 | Ldpc译码器、ldpc译码方法、存储介质和电子设备 |
-
2020
- 2020-10-13 CN CN202011087095.7A patent/CN111931921B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119118A (zh) * | 2007-09-06 | 2008-02-06 | 上海交通大学 | 分层准循环扩展构造的ldpc码的编码器 |
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
CN109086883A (zh) * | 2018-07-20 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于深度学习加速器实现稀疏计算的方法及装置 |
CN111525931A (zh) * | 2019-02-02 | 2020-08-11 | 北京小米松果电子有限公司 | Ldpc译码器、ldpc译码方法、存储介质和电子设备 |
CN110555516A (zh) * | 2019-08-27 | 2019-12-10 | 上海交通大学 | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 |
CN110717583A (zh) * | 2019-09-30 | 2020-01-21 | 上海寒武纪信息科技有限公司 | 卷积电路、处理器、芯片、板卡和电子设备 |
Non-Patent Citations (1)
Title |
---|
周理: "高效可重构阵列计算_体系结构_设计方法与程序映射技术研究_周理", 《万方数据知识服务平台》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111931921B (zh) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3098762B1 (en) | Data-optimized neural network traversal | |
CN110546611B (zh) | 通过跳过处理操作来减少神经网络处理器中的功耗 | |
US20220391665A1 (en) | Method for splitting neural network model by using multi-core processor, and related product | |
EP3265907B1 (en) | Data processing using resistive memory arrays | |
US9411726B2 (en) | Low power computation architecture | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
JP2022501678A (ja) | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN110989920B (zh) | 能量高效的存储器系统和方法 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN112668708A (zh) | 一种提高数据利用率的卷积运算装置 | |
CN111310115B (zh) | 数据处理方法、装置及芯片、电子设备、存储介质 | |
CN113261015A (zh) | 神经网络系统及数据处理技术 | |
CN111931921B (zh) | 一种用于稀疏神经网络的乒乓存储方法及装置 | |
CN109582911B (zh) | 用于实行卷积的计算装置及实行卷积的计算方法 | |
CN113989169A (zh) | 一种膨胀卷积加速计算方法及装置 | |
CN114724595B (zh) | 一种卷积运算加速器及卷积运算方法 | |
CN113112009B (zh) | 用于神经网络数据量化的方法、装置和计算机可读存储介质 | |
JP2022501675A (ja) | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 | |
US20230096854A1 (en) | Data processing system, operating method thereof, and computing system using data processing system | |
US20230097363A1 (en) | Data processing system, operating method thereof, and computing system using the same | |
CN110929854A (zh) | 一种数据处理方法、装置及硬件加速器 | |
KR20230033403A (ko) | 데이터 처리 시스템 및 그 동작 방법과, 이를 이용한 컴퓨팅 시스템 |
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 |