CN113592082A - 用于从人工神经网络分配中间数据的设备和方法 - Google Patents
用于从人工神经网络分配中间数据的设备和方法 Download PDFInfo
- Publication number
- CN113592082A CN113592082A CN202110476883.3A CN202110476883A CN113592082A CN 113592082 A CN113592082 A CN 113592082A CN 202110476883 A CN202110476883 A CN 202110476883A CN 113592082 A CN113592082 A CN 113592082A
- Authority
- CN
- China
- Prior art keywords
- placement
- sequence
- intermediate data
- data blocks
- global memory
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 77
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000012986 modification Methods 0.000 claims description 18
- 230000004048 modification Effects 0.000 claims description 18
- 238000011161 development Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 13
- 230000008520 organization Effects 0.000 claims description 3
- 238000013459 approach Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000011144 upstream manufacturing 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/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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations 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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Semiconductor Memories (AREA)
Abstract
本公开提供了用于从人工神经网络分配中间数据的设备和方法。根据一个方面,一种用于为存储器分配确定由神经网络生成的数据块在存储器区域中的放置的方法,包括:开发块的放置的初始序列,从多个可能放置中选择每个放置,初始序列被限定为候选序列;通过存储的未选择放置,根据初始序列的给定放置的取代开发放置的至少一个修改序列;以及如果通过该修改序列获得的存储器区域的计划大小小于候选序列的存储器区域的大小,则该修改序列成为候选序列;一旦开发了每个修改序列,针对分配的块的放置是被限定为候选序列的放置序列的放置。
Description
相关申请的交叉参考
本申请要求于2020年4月30日提交的法国申请第2004337号的权益,该申请通过引用并入本文。
技术领域
实施例和实施方式涉及人工神经网络设备和方法,更具体地,涉及这些神经网络的执行期间的存储器的分配。
背景技术
人工神经网络通常包括神经元层。
人工神经网络将数据集作为第一层的输入,并且输出最终结果作为来自最后一层的输出。
神经网络直到最后一层的每一层都允许在该层的输出处生成中间数据块,代表中间结果。这些中间数据块作为其他层的输入,其他层根据这些中间数据块生成它们自己的中间数据块。
发明内容
人工神经网络可通过诸如微控制器的集成电路来实施。
在神经网络的执行期间,中间数据被临时存储在集成电路存储器的存储器区域(称为全局存储器区域)中。然而,一些集成电路具有有限大小的存储器。
因此,重要的是限制由神经网络的层生成的中间数据的存储所需的大小。
为了限制中间数据的存储所需的大小,应该提供允许根据全局存储器区域中的优化放置来临时存储中间数据块的方法。
已知的分配解决方案并不总是允许获得存储器的最佳分配。具体地,这些分配解决方案并不总是允许获得优化的全局存储器区域大小。
例如,一种已知解决方案包括仅将中间数据块放置在全局存储器区域的自由区域中。
这样的解决方案会导致过多的存储器碎片,从而在存储器的自由区域在神经网络的执行期间变得太小的情况下导致浪费存储器。
另一种已知的解决方案包括叠加分配,其中,对于每一层,由该层生成的中间数据块可在全局存储器区域中覆写作为该层输入的中间数据块的至少一部分。
这种解决方案的缺点在于仅操作用于序列型神经网络。序列型神经网络是由每一层生成的中间数据块仅作为紧随该最后一层的层的输入的神经网络。
因此,这种解决方案不适用于将一些层的输出数据作为多层输入的神经网络。事实上,当其他层需要时,这些输出数据在被后续层使用后不能被覆写。
因此,需要提出一种允许减小存储由神经网络的层生成的中间数据块所需的存储器大小的方法。
根据一个方面,提出了一种用于针对存储器分配确定由人工神经网络的每一层生成的数据块(称为中间数据块)在全局存储器区域中的放置的方法,该方法包括:限定全局存储器区域中的每一层的中间数据块的多个可能放置;开发从神经网络的第一层到最后一层的每一层的中间数据块的放置的初始序列,从将被放置的中间数据块的多个可能放置中选择初始序列的每个放置,初始序列允许限定全局存储器区域的计划大小,初始序列被限定为候选序列;存储每一层的中间数据块的未选择放置;根据初始序列的给定放置,开发与初始序列相比进行修改的至少一个放置序列,该修改序列的开发包括通过存储的未选择放置来修改给定放置;并且如果通过该修改序列获得的全局存储器区域的计划大小小于候选序列的全局存储器区域的计划大小,则该修改序列变为候选序列;用于存储器分配的中间数据块的放置是被称为选择序列的放置序列,一旦开发了每个修改序列,就被限定为候选序列。
中间数据块的一些可能放置会导致全局存储器区域的大小的增加。
这种方法允许尝试中间数据块的多个放置序列,以便确定哪个放置序列允许获得全局存储器区域的计划大小,例如最窄的可能大小。
被测试的序列数(包括初始序列)可大于或等于2。
因此,这种方法允许例如为每个中间数据块找到最佳放置,以便最小化全局存储器区域的大小。
通过最小化全局存储器区域的大小,这种方法允许使用具有小存储器大小的集成电路。由此,这种方法允许例如使用廉价的集成电路。
全局存储器区域的大小根据在放置序列的开发期间选择的放置来动态地限定。具体地,当中间数据块的选择放置需要增加全局存储器区域的大小时,则增加全局存储器区域。
优选地,开发所有可能的修改序列,也就是说,尝试所有可能的放置序列,以便获得允许全局存储器区域的大小的最大优化的放置序列。
然而,也可以限制要被开发的修改序列的数目,以便加速通过处理单元执行这种确定方法。为存储器分配选择的放置序列可能不是最优化的,但是在所开发的放置序列中将仍然是最优化的。
在一个有利的实施例中,为每个中间数据块的每个可能放置指定优先级顺序,根据放置的优先级顺序来执行针对初始序列的开发选择每个中间数据块的放置。
优先级顺序的指定允许减少将被开发的放置序列的数目,以便获得允许最小化全局存储器区域的计划大小的放置序列。
优先级顺序的指定允许减少方法的执行时间。
优选地,根据每个中间数据块的优先级顺序,在堆栈中从下到上存储没有为初始序列选择的放置。
该堆栈可具有有限的大小。小堆栈大小允许加速方法的执行。
有利地,开发每个修改序列,使得每个修改序列保持与初始序列相同的放置,直到与同一中间数据块相关联的放置作为置于堆栈的顶部的放置。初始序列的放置被置于堆栈的顶部处的放置所取代,然后从堆栈中移除。从用于这些中间数据块的可能放置中选择修改序列的后续层的中间数据块的放置。未选择放置被存储在堆栈中。
在有利的实施例中,开发修改序列,直到堆栈为空。
有利地,存储在堆栈中的每个放置与全局存储器区域的大小相关联,如果全局存储器区域是从中间数据块的各种可能放置中选择的,则可通过该放置获得。
优选地,该方法包括:在每次开发修改序列之前,将与堆栈的每个放置相关联的全局存储器区域的大小与针对候选序列获得的全局存储器区域的计划大小进行比较,然后从堆栈中移除与大于计划大小的全局存储器区域的大小相关联的放置。
这种移除允许避免构建不能被选为候选序列的修改序列。因此,这种移除允许加速确定方法,并且如果堆栈具有有限的大小,则释放堆栈中的空间。
优选地,该方法包括:在每次开发修改序列之前,组织与相同中间数据块相关联的堆栈的放置是根据与之相关联的全局存储器区域的大小并且根据这些放置的执行顺序来进行的。
这种组织允许更快地获得最佳放置序列。
有利地,针对中间数据块的放置选择的全局存储器区域的区域被认为被释放,只要选择了所有层的作为置于该区域中的中间数据块的输入的数据块的放置。
在一个有利的实施例中,中间数据块的限定放置包括将中间数据块置于全局存储器区域的自由区域中。
这种放置允许避免增加全局存储器区域的大小。
在一个有利的实施例中,由一层生成的中间数据块的限定放置包括将该中间数据块叠加在作为该层的输入的中间数据块上。
将由一层生成的中间数据块叠加到中间数据块,该中间数据块作为相同层的输入,使得该中间数据块的至少部分覆写作为该层的输入。因此,当在执行神经网络期间不再次使用作为输入的数据块的数据时,使用这种放置。这种放置也可以避免增加全局存储器区域的大小。
在一个有利的实施例中,中间数据块的限定放置包括增加全局存储器区域的存储器大小以插入中间数据块。可以增加全局存储器区域的大小,以便允许将完整中间数据块放置在由于全局存储器区域的大小增加而得到的全局存储器区域的新部分中。备选地,可以增加全局存储器区域,以便通过以下方式来允许数据块的放置:将中间数据块的一部分叠加到已存储在全局存储器区域中的中间数据上,然后这些中间数据被覆写,并且将中间数据块的其余部分存储在由于全局存储器区域的大小的增加而得到的全局存储器区域的新部分中。
根据另一方面,提出了一种用于分配全局存储器大小的方法,其中,全局存储器大小被选择为等于通过上述用于确定放置的方法所限定的选择序列获得的计划大小,然后根据确定的连续放置来分配存储器。
根据另一方面,提供了一种集成电路,其被配置为接收多层人工神经网络,并且包括:
-存储器,被配置为在称为全局存储器区域的区域中存储由神经网络的每一层生成的中间数据块;以及
-处理单元,被配置为实施上述用于确定中间数据块在全局存储器区域中的放置的方法,然后在执行神经网络期间实施上述分配方法。
附图说明
在审查对不受限制的实施方式和实施例的详细描述以及附图时,本发明的其他优点和特征将变得明显,其中:
图1示出了一种集成电路;
图2示出了用于确定和分配全局存储器区域的大小的流程图;
图3a-图3c示出了中间数据块在全局存储器区域中的放置;
图4a-图4d示出了中间数据块在全局存储器区域中的叠加放置;
图5a-图5d示出了中间数据块在全局存储器区域中的强制分配放置;
图6示出了包括三种放置的初始序列的开发和存储;
图7a示出了从初始放置序列开发的多个修改放置序列;以及
图7b示出了在开发修改序列之前对堆栈的修改。
具体实施方式
图1示出了集成电路CI。例如,该集成电路CI可以是微控制器、代码发生器或者可包含板载或软硬件架构的任何其他对象。
集成电路CI被配置为实施神经网络。神经网络包括一系列层。除最后一层之外的每一层都被配置为在该层的输出处根据在该层的输入处接收的数据块生成中间数据块。在输入处接收的该输入块可以是在第一层的输入处接收到的初始数据块,或者是由一系列层中的上游层生成的中间数据块。
具体地,每个中间数据块的数据表示神经网络的中间结果。
向神经网络的每一层指定深度水平。具体地,一系列层的第一层被认为是神经网络的最浅层,而最后一层被认为是网络的最深层。
神经网络可以是或者可以不是序列神经网络。具体地,神经网络可包括生成输出数据的一些层,这些输出数据被作为神经网络中具有不同深度水平的多个层的输入。
集成电路CI包括易失性存储器MV,例如RAM(“随机存取存储器”)存储器。
易失性存储器MV被配置为能够记录神经网络的执行代码以及允许执行神经网络的程序。
易失性存储器MV还包括称为全局存储器区域(图1中未示出)的区域,该区域可被分配用于存储作为输入的数据以及在神经网络的每一层的输出处生成的数据。
集成电路CI还包括非易失性MNV存储器,其被配置为记录限定神经网络的架构的各种参数,即,神经网络的层和权重的配置。
集成电路CI还包括处理单元UT,其被配置为确定将被分配的全局存储器区域的大小,以便能够在执行神经网络期间将所有的中间数据块存储在易失性存储器MV中。为此,处理单元UT耦合到易失性存储器MV,并且被配置为确定与神经网络的层相关联的中间数据块的大小。
例如,处理单元UT包括微处理器。
当执行神经网络时,按照根据神经网络的架构限定的顺序来执行层。因此,每一层在被执行时生成中间数据块。然后,将每个中间数据块放置(即,存储)在全局存储器区域的分配区域中。
为了优化中间数据块在全局存储器区域中的放置以最小化该全局存储器区域的大小,在执行神经网络之前,实施用于确定中间数据块的放置的方法。
处理单元UT被配置为实施用于确定中间数据块的放置的这种方法。
图2示出了导致确定和分配包括所有中间数据块的全局存储器区域的大小的各种步骤的流程图。
步骤20包括接收将被存储在非易失性存储器MNV中的神经网络的架构。
处理单元UT被配置为提取架构,即,层的配置、层之间的操作和神经网络的权重。
该方法包括步骤21,其中计算单元根据神经网络的架构确定在全局存储器区域中由每一层生成的中间数据块的可能放置。
一些放置会导致全局存储器区域的大小的增加。
根据神经网络的配置(特别是每层的执行顺序),从多个预定放置中选择中间数据块的可能放置。
例如,图3a、图3b和图3c所示的放置包括将中间数据块BA放置在全局存储器区域ZG的自由区域ZL中。当在执行神经网络期间用于存储中间数据块的区域可以被解除分配时,可以在全局存储器区域中获得自由区域ZL。更具体地,当以该中间数据块作为输入的每一层已经被执行时,存储该中间数据块的区域可以在神经网络的执行期间被解除分配。
在图3b中,中间数据块BA被置于自由区域ZL的下部,而在图3c中,中间数据块BA被置于自由区域ZL的上部。这些放置在下文中被称为插入放置。
这样的放置允许避免增加全局存储器区域的大小。
图4a、图4b、图4c、图4d示出了“叠加”放置。
在图4a中,尝试在全局存储器区域ZG中放置在一层的输出处生成的中间数据块BA1,该全局存储器区域ZG具有专用于存储在该层的输入处获取的中间数据块BO1的存储器区域ZO1。
该全局存储器区域ZG还具有位于块BO1和另一存储器区域ZO2之间的自由区域ZL1,并且另一存储器区域ZO2专用于存储来自神经网络的另一层的中间数据块BO2。中间数据块BA1具有大小sb。自由区域ZL1具有大小S1,并且从高度Of延伸至高度Of+S1。由于在计算中间数据块BA1的数据之后,中间数据块BO1作为输入的数据不被再使用,因此如图4所示,在执行神经网络期间,可以通过覆写作为该层输入的中间数据块BO1的部分,将中间数据块BA1置于区域ZO1上,并且置于自由区域ZL1上。然后,中间数据块BA1从高度Ob延伸到高度Ob+Sb。
此外,在图4c中,尝试将在神经网络的一层的输出处生成的中间数据块BA2放置在全局存储器区域ZG中,全局存储器区域ZG具有用于存储作为该相同层的输入的中间数据块BO3的区域ZO3。此外,该全局存储器区域ZG还可以在区域ZO3和全局存储器区域的一端(这里为全局存储器区域的下端)之间具有自由区域ZL2。中间数据块BA2具有大小Sb。自由区域ZL具有大小S1,并且从高度Of延伸到高度Of+S1。
这里,在执行神经网络期间,在计算中间数据块BA2的数据之后,作为输入的中间数据块BO3的数据不被再使用。因此,一种可能放置包括:在执行神经网络期间,通过覆写作为输入的中间数据块BO3的一部分,将中间数据块BA2置于区域ZO3上,并且置于自由区域ZL中。然而,全局存储器区域的大小不足以能够包括中间数据块BA2。因此,如图4d所示,需要通过限定全局存储器区域的新端来增加全局存储器区域的大小,以便能够将中间数据块BA2置于全局存储器区域ZG中。将先前在高度Of处限定的下端修改为在高度Ob处限定。然后,中间数据块BA2在高度Ob和高度Ob+Sb之间延伸。
图5a、图5b、图5c、图5d示出了“强制分配”放置。对于这些放置,增加全局存储器区域ZG的存储器大小以插入中间数据块。
具体地,在图5a中,尝试将在神经网络的一层的输出处生成的中间数据块BA3放置在全局存储器区域ZG中,全局存储器区域ZG具有用于存储神经网络的另一层的中间数据块BO1的至少一个区域ZO1。全局存储器区域ZG还可以在区域ZO1和全局存储器区域的上端之间具有自由区域ZL1。中间数据块BA3具有大小Sb。自由区域ZL具有小于Sb的大小。
这里,作为该层输入的中间数据块BO1的数据不能被覆写。此外,自由区域ZL不足以放置整个中间数据块BA3。因此,放置包括增加全局存储器区域ZG的大小,以便能够通过重新限定全局存储器区域的上端来放置中间数据块BA。
具体地,在图5b中,在高度Of+Sb处限定全局存储器区域ZG的上限,以便将中间数据块BA3置于全局存储器区域的顶部处,即,置于高度Of和高度Of+Sb之间。
图5c中必须放置中间数据块BA4的全局存储器区域与图5a的不同之处在于:其包括位于中间数据块ZO2和全局存储器区域ZG的下端之间的自由区域ZL2。
因此,在图5c中,全局存储器区域ZG的下限被限定在高度Of+Sf-Sb处,以便将中间数据块BA4放置在全局存储器区域ZG的底部处,即,置于高度Of+Sf-Sb和高度Of+Sf之间。
此外,在每个中间数据块的各种可能放置之间有利地建立优先级顺序。最高优先级顺序被赋予被任意地认为是最优化的放置。例如,可能有利的是,将插入放置视为相对于叠加放置和强制分配放置是最优化的。对于独立获取的数据块,该放置被认为是最优化的,但是当将放置序列视为整体时,该放置可能不是最优化的。
该方法的以下步骤允许确定中间数据块的放置序列,允许获得最小计划大小的全局存储器区域。放置序列的每个放置对应于神经网络的层的中间数据块的放置。
因此,该方法包括:从神经网络的第一层到倒数第二层,开发由神经网络的每一层生成的中间数据块的放置的初始序列(22)。换句话说,通过逐层确定从神经网络的最浅层到最深层的每一层生成的中间数据块的放置来开发放置的初始序列。
在步骤23中,从将被放置的中间数据块的多个可能放置中选择初始序列的每个放置。具体地,与将被放置的中间数据块的其他可能放置相比,所选择的放置是具有最高优先级顺序的放置。
在初始序列的开发期间,针对每个所选放置,计算并更新全局存储器区域ZG的大小。此外,还计算如果从可能放置中选择了其他放置则可以获得的全局存储器区域ZG的大小。
初始序列允许限定全局存储器区域的计划大小。具体地,全局存储器区域的计划大小是通过最后一个所选放置获得的大小。
该初始序列被限定为用于在执行神经网络期间存储中间数据块的存储器分配的候选序列。
该方法还包括针对每一层的中间数据块的未选择放置的存储(24)。还存储如果从可能放置中选择其他放置则可以获得的全局存储器区域的大小。
更具体地,未选择放置根据它们的优先级顺序和其相关联的层在神经网络中的深度而存储在堆栈PL中。因此,将神经网络的第一层的未选择放置存储在堆栈的底部,而最后一层的放置被存储在堆栈的顶部。
在图6中示出了初始序列SI的开发和存储的示例。在该示例中,初始序列SI包括三个放置。在开发开始时,全局存储器区域具有初始大小zi0。
具体地,对于第一中间数据块,可以有两个放置:d和e。由于放置d的优先级顺序高于放置e,因此为第一中间数据块选择该放置d。对于全局存储器区域,该放置d需要大小zi1。因此,将存储器区域的大小更新为等于zi1。然后,在堆栈PL中存储放置e以及通过选择该放置可获得的全局存储器区域的大小。
然后,该方法确定针对第二中间数据块的放置。对于该中间数据块,可具有四个放置:a、b、d和e。由于放置a的优先级顺序高于放置b、d和e,因此为该第二中间数据块选择放置a。对于全局存储器区域,该放置要求大小zi2。然后,在堆栈PL中根据放置b、d和e的优先级顺序来存储放置b、d和e以及通过选择这些放置可获得的全局存储器区域的大小。
然后,该方法确定针对第三中间数据块的放置。对于该中间数据块,可具有三个放置:b、d和e。由于放置b的优先级顺序高于放置d和e,因此为该第三中间数据块选择放置b。对于全局存储器区域,该放置要求大小zf。然后,在堆栈PL中存储放置d和e以及通过选择这些放置可获得的全局存储器区域的大小。
已经为所有中间数据块选择了放置,然后完成初始序列。因此,将大小zf指定为该初始放置序列的全局存储器区域的计划大小。
初始序列可能不是放置的最优化序列,即,允许全局存储器区域的大小被最小化的放置序列。具体地,可任意选择为最优化的放置可能不是将最终允许尽可能地减小全局存储器区域的大小的放置。
因此,如图2所示,该方法包括:根据(从)初始序列的给定放置,开发相对于初始序列的至少一个修改的放置序列。该修改序列的开发包括通过存储在堆栈中的未选择放置来修改给定放置。该未选择放置和给定放置与同一中间数据块相关联。
优选地,考虑堆栈层中的放置的顺序来开发修改序列。
具体地,堆栈顶部的放置是被选择来修改与相同中间数据块相关联的初始序列放置的放置。然后,从堆栈中移除用于修改初始序列的放置。
修改序列与初始序列相同,直到该放置被堆栈顶部的放置所取代。换言之,与布置已被修改的中间数据块相关联的数据块的初始序列放置相比,与较浅层相关联的数据块的初始序列的放置被保持在修改序列中。
然后,选择后续层的数据块的放置。
一旦处理了所有层并且为每个中间数据块确定了放置,则修改序列完成。
具体地,根据所建立的优先级顺序,从这些中间数据块的可能放置中选择中间数据块的放置。
对于初始序列,存储未选择放置以及如果选择这些放置可获得的全局存储器区域的大小。
然后,该方法可根据初始序列开发其他修改序列。具体地,对于将被开发的每个新修改序列,保持初始序列的放置,直到与中间数据块相关联的放置与置于堆栈顶部的放置相关联为止。该放置被置于堆栈顶部的放置取代。然后,如前所述,为后续层的中间数据块选择放置,并且存储未选择放置以及如果选择这些放置则可获得的全局存储器区域的大小。
优选地,开发修改序列,直到堆栈为空。
因此,该方法允许根据初始放置序列开发多个放置序列。作为说明,在图7a中示出了放置序列的示例。在该示例中,放置序列SI是初始序列。具体地,开发了多个修改放置序列,包括修改序列SM。与初始序列SI相比,该修改序列SM允许获得减小的全局存储器区域大小。因此,该修改序列成为新的候选序列NSC。
多个修改序列的开发允许测试不同的可能放置,以便确定最佳放置序列,即,允许最小化全局存储器区域的计划大小的放置序列。
具体地,如果通过该修改序列获得的全局存储器区域的计划大小小于先前候选序列的全局存储器区域的计划大小,则每个修改序列可被限定为替换先前候选序列的新候选序列。
因此,对于每个完成的修改序列,该方法包括将通过该完成的修改序列获得的全局存储器区域的计划大小与通过候选序列获得的全局存储器区域的计划大小进行比较。如果通过该完成的修改序列获得的全局存储器区域的计划大小小于通过候选序列限定的大小,则完成的修改序列变为新的候选序列。
因此,当堆栈变空时作为候选序列的放置序列是在执行神经网络期间为中间数据块的分配选择的序列。在步骤26中,选择该候选序列作为最优化的放置序列。
优选地,如图7b所示,在开发修改序列之前,从队列中移除暗示将全局存储器区域的大小增加到大于用候选序列获得的全局存储器区域的计划大小的堆栈的放置,以避免从这些放置中开发修改序列。因此,这种移除允许加速方法的执行。
此外,如图7b所示,优选地,在开发修改序列之前,与相同中间数据块相关联的堆栈的放置根据如果先前选择了这些放置则可获得的全局存储器区域的大小进行布置。具体地,允许获得相对于与相同中间数据块相关联的其它放置的最小全局存储器区域的大小的放置在堆栈中置于这些其它放置之上。
堆栈的其他布置也是可能的。具体地,通过考虑放置相对于神经网络的最后一层的执行的接近度,可以在堆栈中布置该放置。这种布置允许获得方法的更快执行。
如前所述,还可以根据已经获得的全局存储器区域的大小以及还通过考虑在堆栈的至少两个放置之间的全局存储器大小相等的情况下放置相对于神经网络的最后一层的执行的接近性来布置该放置。
还可以限制堆栈的大小,以加速该方法。堆栈大小越小,找不到最优化放置序列的风险就越大。因此,优选地,堆栈的大小将被限于放置数量包括在1和100之间,更具体在1和50之间,优选在1和30之间。
一旦确定了被认为是最优化的放置序列,就可以执行神经网络。
在开始执行神经网络时,处理单元UT被配置为在易失性存储器MV中分配全局存储器区域,该全局存储器区域的大小等于通过被认为是最优化的放置序列获得的计划大小。
一旦分配了全局存储器区域,处理单元UT被配置为计算被认为是最优化的放置序列的中间数据块的每个放置的绝对地址,然后根据这些放置来放置中间数据块。
“绝对地址”是指在全局存储区中选择的中间数据块的位置的地址,用于存储神经网络的中间数据块。
用于确定中间数据块的放置的方法允许为每个中间数据块找到最佳放置,以最小化全局存储器区域的大小。
通过最小化全局存储器区域的大小,用于确定放置的方法允许使用具有较小存储器大小的集成电路。因此,这种方法允许使用廉价的集成电路。
虽然本发明已参考示例性实施例进行了描述,但这种描述不打算在限制意义上进行解释。参考说明书,本领域技术人员应理解说明性实施例以及本发明的其他实施例的各种修改和组合。因此,所附权利要求包括任何这种修改或实施例。
Claims (21)
1.一种用于针对全局存储器区域中的存储器分配确定由人工神经网络的层生成的中间数据块的放置的方法,所述方法包括:
限定所述全局存储器区域中的每一层的所述中间数据块的多个可能放置;
开发从所述神经网络的第一层到最后一层的每一层的所述中间数据块的放置的初始序列,从将被放置的所述中间数据块的所述多个可能放置中选择所述初始序列的每个放置,所述初始序列允许限定所述全局存储器区域的计划大小,所述初始序列被设置为候选序列;
存储每一层的所述中间数据块的未选择放置;
从所述初始序列的给定放置开发与所述初始序列相比进行修改的至少一个放置序列,所述开发包括通过存储的未选择放置来修改所述给定放置;
依照通过所述修改序列获得的所述全局存储器区域的计划大小小于所述候选序列的所述全局存储器区域的计划大小,将所述修改序列设置为所述候选序列;以及
使用一旦开发了每个修改序列就被设置为所述候选序列的放置序列作为用于所述存储器分配的所述中间数据块的放置。
2.根据权利要求1所述的方法,还包括:为每个中间数据块的每个可能放置指定优先级顺序,根据放置的所述优先级顺序来执行针对开发所述初始序列而进行的每个中间数据块的放置的选择。
3.根据权利要求2所述的方法,还包括:根据每个中间数据块的优先级顺序,在堆栈中从下到上存储没有为所述初始序列选择的放置。
4.根据权利要求3所述的方法,还包括:
开发每个修改序列,使得每个修改序列保持与所述初始序列相同的放置,直到与同一中间数据块相关联的放置作为置于所述堆栈的顶部的放置,主序列的放置被置于所述堆栈的顶部处的放置所取代然后从所述堆栈中被移除;以及
从用于这些中间数据块的可能放置中选择所述修改序列的后续层的中间数据块的放置,所述未选择放置被存储在所述堆栈中。
5.根据权利要求4所述的方法,还包括:开发所述修改序列,直到所述堆栈为空。
6.根据权利要求4所述的方法,其中存储在所述堆栈中的每个放置与可通过从中间数据块的可能放置中选择该放置所获得的所述全局存储器区域的大小相关联。
7.根据权利要求6所述的方法,还包括:
在每次开发所述修改序列之前,将与所述堆栈的每个放置相关联的所述全局存储器区域的大小与针对所述候选序列获得的所述全局存储器区域的计划大小进行比较;以及
从所述堆栈中移除与大于所述计划大小的所述全局存储器区域的大小相关联的放置。
8.根据权利要求6所述的方法,还包括:在每次开发所述修改序列之前,组织与相同中间数据块相关联的所述堆栈的放置是根据与之相关联的所述全局存储器区域的大小并且根据这些放置的执行顺序来进行的。
9.根据权利要求3所述的方法,其中所述堆栈具有有限大小。
10.根据权利要求1所述的方法,其中针对中间数据块的放置选择的所述全局存储器区域的区域被认为只要选择了所有层的作为置于所述区域中的所述中间数据块的输入的数据块的放置就被释放。
11.根据权利要求10所述的方法,其中中间数据块的限定放置包括将所述中间数据块置于所述全局存储器区域的自由区域中。
12.根据权利要求1所述的方法,其中由一层生成的中间数据块的限定放置包括将该中间数据块叠加在作为同一层的输入的中间数据块上。
13.根据权利要求1所述的方法,其中中间数据块的限定放置包括增加所述全局存储器区域的存储器大小以插入该中间数据块。
14.一种用于分配全局存储器大小的方法,所述方法包括:
在全局存储器区域中限定由人工神经网络的层生成的中间数据块的多个可能放置;
开发从所述神经网络的第一层到最后一层的每一层的所述中间数据块的放置的初始序列,从将被放置的所述中间数据块的所述多个可能放置中选择所述初始序列的每个放置,所述初始序列允许限定所述全局存储器区域的计划大小,所述初始序列被设置为候选序列;
存储每一层的所述中间数据块的未选择放置;
从所述初始序列的给定放置开发与所述初始序列相比进行修改的至少一个放置序列,所述开发包括通过存储的未选择放置来修改所述给定放置;
依照通过所述修改序列获得的所述全局存储器区域的计划大小小于所述候选序列的所述全局存储器区域的计划大小,将所述修改序列设置为所述候选序列;
使用一旦开发了每个修改序列就被设置为所述候选序列的放置序列作为用于存储器分配的所述中间数据块的放置;
将所述全局存储器大小选择为等于通过所述候选序列获得的计划大小;以及
根据确定的连续放置来分配存储器。
15.根据权利要求14所述的方法,还包括:为每个中间数据块的每个可能放置指定优先级顺序,根据放置的所述优先级顺序来执行针对开发所述初始序列而进行的每个中间数据块的放置的选择。
16.根据权利要求15所述的方法,还包括:根据每个中间数据块的优先级顺序,在堆栈中从下到上存储没有为所述初始序列选择的放置。
17.根据权利要求16所述的方法,还包括:
开发每个修改序列,使得每个修改序列保持与所述初始序列相同的放置,直到与同一中间数据块相关联的放置作为置于所述堆栈的顶部的放置,主序列的放置被置于所述堆栈的顶部处的放置所取代然后从所述堆栈中被移除;以及
从用于这些中间数据块的可能放置中选择所述修改序列的后续层的中间数据块的放置,所述未选择放置被存储在所述堆栈中。
18.一种集成电路,被配置为接收多层人工神经网络,所述集成电路包括:
存储器,被配置为在全局存储器区域中存储由所述神经网络的多层中的每一层生成的中间数据块;以及
处理单元,耦合到所述存储器,所述处理单元被配置为:
限定所述全局存储器区域中的每一层的所述中间数据块的多个可能放置;
开发从所述神经网络的第一层到最后一层的每一层的所述中间数据块的放置的初始序列,从将被放置的所述中间数据块的所述多个可能放置中选择所述初始序列的每个放置,所述初始序列允许限定所述全局存储器区域的计划大小,所述初始序列被设置为候选序列;
存储每一层的所述中间数据块的未选择放置;
根据所述初始序列的给定放置,开发与所述初始序列相比进行修改的至少一个放置序列,所述开发包括通过存储的未选择放置来修改所述给定放置;
根据通过所述修改序列获得的所述全局存储器区域的计划大小小于所述候选序列的所述全局存储器区域的计划大小,将所述修改序列设置为所述候选序列;
使用一旦开发了每个修改序列就被设置为所述候选序列的放置序列作为用于所述全局存储器区域中的所述中间数据块的放置;以及
在所述神经网络的执行期间:
选择全局存储器大小等于通过所述候选序列获得的计划大小;并且
根据确定的连续放置分配存储器。
19.根据权利要求18所述的集成电路,其中所述处理单元进一步被配置为:为每个中间数据块的每个可能放置指定优先级顺序,根据放置的所述优先级顺序来执行针对开发所述初始序列而进行的每个中间数据块的放置的选择。
20.根据权利要求19所述的集成电路,其中所述存储器进一步被配置为:根据每个中间数据块的优先级顺序,在堆栈中从下到上存储没有为所述初始序列选择的放置。
21.根据权利要求20所述的集成电路,其中所述处理单元进一步被配置为:
开发每个修改序列,使得每个修改序列保持与所述初始序列相同的放置,直到与同一中间数据块相关联的放置作为置于所述堆栈的顶部的放置,主序列的放置被置于所述堆栈的顶部处的放置所取代然后从所述堆栈中被移除;以及
从用于这些中间数据块的可能放置中选择所述修改序列的后续层的中间数据块的放置,所述未选择放置被存储在所述堆栈中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2004337 | 2020-04-30 | ||
FR2004337A FR3109833B1 (fr) | 2020-04-30 | 2020-04-30 | Procédé d’allocation de données intermédiaires d’un réseau de neurones artificiel |
US17/229,161 | 2021-04-13 | ||
US17/229,161 US11609851B2 (en) | 2020-04-30 | 2021-04-13 | Device and method for allocating intermediate data from an artificial neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113592082A true CN113592082A (zh) | 2021-11-02 |
Family
ID=78243043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110476883.3A Pending CN113592082A (zh) | 2020-04-30 | 2021-04-29 | 用于从人工神经网络分配中间数据的设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113592082A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017095840A1 (en) * | 2015-12-02 | 2017-06-08 | Google Inc. | Determining orders of execution of a neural network |
CN109726811A (zh) * | 2017-10-27 | 2019-05-07 | 谷歌有限责任公司 | 使用优先级队列训练神经网络 |
CN110503181A (zh) * | 2018-05-18 | 2019-11-26 | 百度在线网络技术(北京)有限公司 | 用于生成多层神经网络的方法和装置 |
CN110520846A (zh) * | 2017-04-17 | 2019-11-29 | 微软技术许可有限责任公司 | 对用于优化存储器利用和神经网络的性能的数据分区的动态排序 |
-
2021
- 2021-04-29 CN CN202110476883.3A patent/CN113592082A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017095840A1 (en) * | 2015-12-02 | 2017-06-08 | Google Inc. | Determining orders of execution of a neural network |
CN110520846A (zh) * | 2017-04-17 | 2019-11-29 | 微软技术许可有限责任公司 | 对用于优化存储器利用和神经网络的性能的数据分区的动态排序 |
CN109726811A (zh) * | 2017-10-27 | 2019-05-07 | 谷歌有限责任公司 | 使用优先级队列训练神经网络 |
CN110503181A (zh) * | 2018-05-18 | 2019-11-26 | 百度在线网络技术(北京)有限公司 | 用于生成多层神经网络的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7418568B2 (en) | Memory management technique | |
US7035990B1 (en) | Method for dynamic memory management | |
US8180991B2 (en) | Adaptive memory allocation | |
EP0622732A1 (en) | Microcomputer | |
CN108667938A (zh) | 切换流量的方法、装置及服务器 | |
US11609851B2 (en) | Device and method for allocating intermediate data from an artificial neural network | |
CN110750517B (zh) | 一种本地存储引擎系统的数据处理方法、装置以及设备 | |
CN113592082A (zh) | 用于从人工神经网络分配中间数据的设备和方法 | |
CN113391914A (zh) | 任务调度方法和装置 | |
CN111143063B (zh) | 任务的资源预约方法及装置 | |
WO2021219211A1 (en) | Memory allocation in a neural network | |
US7441093B2 (en) | Segmentation management using a rolling window technique | |
CA2966117C (en) | A method of partitioning a set-associative cache in a computing platform | |
CN110321998B (zh) | 卷积神经网络实现方法、装置、加速设备、存储介质 | |
EP4016311B1 (en) | Method for memory allocation during execution of a neural network | |
US20060230246A1 (en) | Memory allocation technique using memory resource groups | |
CN116360961A (zh) | 基于多线程的内存分配方法及装置 | |
CN106326170B (zh) | 一种设备索引号分配方法、装置及系统 | |
KR20170037851A (ko) | 매니코어 시스템을 작동하기 위한 방법 및 장치 | |
KR100907028B1 (ko) | 플래시 메모리의 멀티뱅크 소거연산 관리방법 | |
JPH06282446A (ja) | ジョブスケジュール作成方法 | |
CN110737533A (zh) | 一种任务调度方法、装置及电子设备和存储介质 | |
CN117435352B (zh) | 一种定长变长数据混合管理的轻量化内存优化分配方法 | |
CN111316249B (zh) | 改进的数据处理方法 | |
KR20220017184A (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 |