CN111291875B - 用于确定存储器大小的方法和设备 - Google Patents

用于确定存储器大小的方法和设备 Download PDF

Info

Publication number
CN111291875B
CN111291875B CN201911236646.9A CN201911236646A CN111291875B CN 111291875 B CN111291875 B CN 111291875B CN 201911236646 A CN201911236646 A CN 201911236646A CN 111291875 B CN111291875 B CN 111291875B
Authority
CN
China
Prior art keywords
layer
memory size
memory
size
output data
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
Application number
CN201911236646.9A
Other languages
English (en)
Other versions
CN111291875A (zh
Inventor
L·福里奥特
P·德马雅
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.)
STMicroelectronics Rousset SAS
Original Assignee
STMicroelectronics Rousset SAS
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 STMicroelectronics Rousset SAS filed Critical STMicroelectronics Rousset SAS
Publication of CN111291875A publication Critical patent/CN111291875A/zh
Application granted granted Critical
Publication of CN111291875B publication Critical patent/CN111291875B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

本公开涉及用于确定存储器大小的方法和设备。一种方法可以用于确定存储器中的待分配的全局存储器区域的总存储器大小,该存储器旨在存储来自神经网络的每个层的输入数据和输出数据。针对每个层确定旨在存储来自层的输入数据和输出数据的基本存储器区域的基本存储器大小。基本存储器大小在用于来自层的输入数据或输出数据的存储器大小和与用于来自层的输入数据的存储器大小和用于来自层的输出数据的存储器大小的总和相等的大小之间的范围内。基于与层相关联的基本存储器大小确定总存储器大小。全局存储器区域包含全部基本存储器区域。

Description

用于确定存储器大小的方法和设备
相关申请的交叉引用
本申请要求于2018年12月6日提交的法国专利申请号1872443的优先权,上述申请通过引用并入本文。
技术领域
本发明的实施例及其实施方式涉及用于确定存储器大小的方法和设备。
背景技术
神经网络被广泛用于解决各种统计问题,特别是数据分类的问题。
在自动的(通常受监督的)学习阶段之后,换句话说,在已经被分类的参考数据库上,神经网络“学习”并且能够独立地将相同的分类应用于未知的数据。
例如,可以提及卷积神经网络(或CNN),其是一种神经网络,在该神经网络中神经元之间的连接模式受到动物的视觉皮层的启发。它们允许对图像或视频中的对象或人物的有效识别。
卷积神经网络通常包含依次处理信息的四种类型的层:
卷积层,其例如一个接一个地处理图像块;
非线性层,其允许改善结果的相关性;
“池化”层,其允许将多个神经元分组为单个神经元;
“全连接”层,其将层的全部神经元连接到先前层的全部神经元。
每个层接收数据作为输入,并且在由该层处理之后,在输出处传送输出数据(或“特征”)。
卷积层通常对应于先前层的神经元与神经网络的权重之间的标量积。卷积层形成卷积神经网络的第一层。
“权重”是其在神经网络领域中的含义对本领域技术人员而言众所周知的术语,“权重”应理解为是指可配置以便获得良好的输出数据或特征的神经元参数。
卷积层的目的是标识在输入处接收的图像中的一组特定数据的存在。为了此目的,进行卷积滤波。原理是:扫描表示待检测数据的窗口,并且计算窗口与所扫描的图像的每个部分之间的卷积乘积(convolution product)。
针对每个卷积乘积获得指示特定数据在图像上位于何处的输出数据。
池化层常常被放置在两个卷积层之间。池化层在输入处接收从卷积层输出的数据,对该数据应用“池化”操作,该“池化”操作包括在保留数据的重要特征的同时减小数据的大小。池化层允许减少网络中的参数数目和计算数目。因此,网络的效率得到改进。
全连接层形成卷积或非卷积神经网络的最后一层。全连接层允许对神经网络的输入数据分类。
神经网络的典型架构堆叠几对卷积层和非线性层,然后添加池化层并重复该模式,直到获得足够小尺寸的输出数据,然后由两个全连接层终止。
如今,神经网络变得越来越复杂,并且在存储器中需要大量的空间。
几种类型的易失性存储器与神经网络的使用兼容:例如TCM(表示“紧密耦合存储器”)或SRAM(表示“静态随机存取存储器”)或外部存储器。
如果神经网络需要大的存储器,则在其中实现神经网络的系统可以组合几种类型的存储器(例如TCM存储器与外部存储器),这减慢了网络的执行时间。
发明内容
本发明的实施例及其实施方式涉及深度学习,特别是深度神经网络。一些实施例涉及确定存储器中的待分配的全局存储器区域的总存储器大小,该存储器旨在存储来自神经网络的每个层的输入数据和输出数据。
实施例可以帮助尽可能地限制(或优化)执行神经网络所需的存储器大小。存储器大小的优化还导致系统表面积的优化以及在执行神经网络期间的存储器能耗的减小。
根据一个方面,提供了一种方法,该方法用于确定存储器中的待分配的全局存储器区域的总存储器大小,该存储器旨在存储来自神经网络的每个层的输入数据和输出数据。针对每个层,方法包括确定旨在用于来自层的输入数据和输出数据的基本存储器区域的基本存储器大小。基本大小在用于来自层的输入数据或输出数据的存储器大小和与用于来自层的输入数据的存储器大小和用于来自层的输出数据的存储器大小的总和相等的大小之间的范围内。基于与层相关联的基本存储器大小确定总存储器大小,全局存储器区域包括全部基本存储器区域。
针对每个层,输入数据和输出数据被存储在其大小被确定的基本存储器区域中。基本存储器区域有利地在RAM存储器中。
基本存储器的全体表示RAM存储器中的待有利地分配的全局存储器区域。
每个基本存储器区域的大小的优化导致全局存储器区域的大小的优化。
根据一个实施例,针对每个层,基本存储器大小的确定以及输入数据和输出数据的定位至少取决于层的类型。
基本存储器大小的确定以及输入数据和输出数据的定位还可以取决于用于来自层的输出数据的存储器大小以及其在基本存储器区域中的定位。
换句话说,根据层的类型(例如卷积层、稠密层、非线性层或池化层)、输出数据的定位以及用于输出数据的存储器大小,选择需要最少量的存储器的定位。
例如根据层的类型或在两个层之间的现有操作,基本存储器区域可以有利地包括附加存储器区域,该附加存储器区域防止覆写基本存储器区域中的有用的数据。在这种情况下,基本存储器区域的大小小于或等于层的输入数据和输出数据的大小的总和,因为输出数据被覆盖在层的输入数据上。
根据一个实施例,针对至少一种类型的层,输出数据的至少一部分代替输入数据的至少一部分而被存储在基本存储器区域中,基本存储器大小小于与用于来自层的输入数据的存储器大小和用于来自层的输出数据的存储器大小的总和相等的大小。特别地,在该实施例中,层的输入数据不被神经网络的后续的层再次使用。因此,层的输入数据可以被层的输出数据覆写。
根据一个实施例,针对至少另一种类型的层,基本存储器大小等于用于来自层的输入数据的存储器大小和用于来自层的输出数据的存储器大小的总和的大小,输出数据和输入数据被并置在对应的存储器区域中。
根据一个实施例,总存储器大小的确定包括:存储器大小的当前值的连续的更新,该连续的更新基于针对神经网络的连续的层依次确定的基本存储器大小,总存储器大小的值是在全部的连续的更新结束时的最新更新的当前值。
换句话说,在每个层处,在确定基本存储器区域的大小之后,执行表示基本存储器的大小的当前值的更新。一旦确定了全部基本存储器区域的大小,总存储器大小将取当前值的值。
根据一个实施例,存储器大小的第一值是与第一层相关联的基本存储器区域的基本存储器大小,并且针对每个当前层,如果该基本存储器大小大于存储器大小的先前值,则更新后的存储器大小的当前值是与当前层相关联的基本存储器区域的基本存储器大小,或者如果该基本存储器大小小于或等于存储器大小的先前值,则更新后的存储器大小的当前值保持存储器大小的先前值。
根据一个实施例,方法进一步包括:针对每个层,更新与层相关联的基本存储器区域的相对地址。
每个基本存储器区域有利地被存储在包括地址的RAM存储器中。
术语“相对地址”是指存储器中的相对于待被存储的下一基本存储器区域的偏移。
根据一个实施例,方法包括:针对每个层,确定与层相关联的基本存储器区域的绝对地址。
术语“绝对地址”应理解为是指存储器中的基本存储器区域的定位的地址,该存储器旨在用于存储来自神经网络的输入和输出数据的。
因此,例如,根据该方面的方法允许:针对给定的神经网络,优化待分配的存储器大小,以及对于该存储器获得向神经网络的层中的每个层分配的基本存储器中的每个区域的绝对地址和相对地址。
根据另一个方面,设备包括输入,该输入旨在接收限定神经网络的各个连续的层的参数。处理器被耦合到输入并且被设计为确定存储器中的待分配的全局存储器区域的总存储器大小,该存储器旨在存储来自神经网络的每个层的输入数据和输出数据。处理器被配置用于:针对每个层,确定旨在存储来自层的输入数据和输出数据的基本存储器区域的基本存储器大小。基本大小在用于来自层的输入数据或输出数据的存储器大小和与用于来自层的输入数据的存储器大小和用于来自层的输出数据的存储器大小的总和相等的大小之间的范围内。基于与层相关联的基本存储器大小确定总存储器大小。全局存储器区域被配置为包含全部基本存储器区域。
根据一个实施例,针对每个层,处理器被配置用于至少根据层的类型确定基本存储器大小以及输入数据和输出数据的定位。
处理器还可以被配置用于:根据用于来自层的输出数据的存储器大小以及输出数据在基本存储器区域中的定位,确定基本存储器大小以及输入数据和输出数据的定位。
根据一个实施例,针对至少一种类型的层,输出数据的至少一部分旨在代替输入数据的至少一部分而被存储在基本存储器区域中,基本存储器大小小于与用于层的输入数据的存储器大小和用于层的输出数据的存储器大小的总和相等的大小。
根据一个实施例,针对至少另一种类型的层,基本存储器大小等于用于层的输入数据的存储器大小和用于层的输出数据的存储器大小的总和的大小,输出数据和输入数据旨在被并置在对应的基本存储器区域中。
根据一个实施例,处理器被配置用于通过存储器大小的当前值的连续的更新确定总存储器大小,该连续的更新基于由神经网络的连续的层依次确定的基本存储器大小,总存储器大小的值是在全部的连续的更新结束时的最新更新的当前值。
根据一个实施例,存储器大小的第一值是与第一层相关联的基本存储器区域的基本存储器大小,并且针对每个当前层,处理器被配置用于:如果该基本存储器大小大于存储器大小的先前值,则用与当前层相关联的基本存储器区域的基本存储器大小更新存储器大小的当前值;或者如果基本存储器的大小小于或等于存储器大小的该先前值,则用存储器大小的先前值更新存储器大小的当前值。
根据一个实施例,处理器被配置用于:针对每个层,进一步执行与层相关联的基本存储器区域的相对地址的更新。
根据一个实施例,处理器被配置用于:针对每个层,进一步执行与层相关联的基本存储器区域的绝对地址的确定。
根据另一方面,还提供了包括诸如上文所限定的设备的微控制器。
附图说明
一旦阅读实施例及其实施方式的详细描述,并且根据附图,本发明的其他优点和特征将变得显而易见,这些实施例及其实施方式绝不是限制性的,其中:
图1示意性地图示了本发明的一个实施例,
图2示意性地图示了本发明的一个实施例,
图3示意性地图示了本发明的一个实施例,
图4示意性地图示了本发明的一个实施例,
图5示意性地图示了本发明的一个实施例,
图6A示意性地图示了本发明的一个实施例,以及
图6B示意性地图示了本发明的一个实施例,
具体实施方式
在图1中,附图标记DIS表示设备,例如微控制器、代码生成器或可能包含板载软件或硬件架构的任何其他对象。
设备包括易失性存储器MV,例如RAM存储器(表示“随机存取存储器”)。这里,易失性存储器MV包括第一存储器RAM1和第二存储器RAM2。
显然,易失性存储器可以包括多于两个存储器。
设备DIS还包括非易失性存储器MNV,该非易失性存储器MNV包括输入EN,该输入EN旨在接收限定神经网络RN的架构的各种参数,换句话说,神经网络RN的层及其权重的配置。
易失性存储器MV被配置用于将来自每个层的输入数据M1和输出数据M2存储在两个存储器RAM1和RAM2中的一个存储器中,来自所讨论的层的输入数据和输出数据旨在占据一个基本存储器区域ZA。
设备DIS包括模块MO,模块MO被配置用于执行给定的动作。
模块MO包括处理器OP,该处理器OP被配置用于确定待分配的全局存储器区域的大小,该全局存储器区域包括易失性存储器MV中的基本存储器区域ZA中的全部基本存储器区域。为此目的,处理器OP被耦合到两个存储器RAM1和RAM2,并且被配置用于针对神经网络中的每个层来确定与该层相关联的基本存储器区域ZA的基本存储器大小。
处理器OP包括处理单元UC、控制器MC以及分配电路MA。
处理器OP经由输入EN耦合到非易失性存储器MNV,以便使得处理单元UC能够获得与层和与神经网络的操作有关的参数。
例如,处理单元UC包括微处理器,该微处理器被配置用于执行确定基本存储器区域ZA的基本存储器大小所需的计算。
处理单元UC被配置用于向控制器MC发送计算的结果,该控制器MC被配置用于根据层的类型和/或用于输出数据M2的存储器大小和/或输出数据M2在基本存储器区域ZA中的定位来选择来自输入数据M1和来自输出数据M2的数据的定位、基本存储器区域ZA的基本存储器大小以及待分配的全局存储器区域的大小,该待分配的全局存储器区域包括基本存储器区域ZA中的全部基本存储器区域。
控制器MC被耦合到分配电路MA,该分配电路MA被配置用于在控制器MC的授权之后分配全局存储器区域,该全局存储器区域包括基本存储器区域ZA中的全部基本存储器区域。
例如,控制器和分配电路可以由微处理器内的软件模块和/或由特定的逻辑电路来实现。
图2示出了导致确定和分配全局存储器区域的大小的各个步骤的流程图,该全局存储器区域包括基本存储器区域ZA中的全部基本存储器区域。
步骤S0包括:经由输入EN接收神经网络RN的架构以便将架构存储在非易失性存储器MNV中。
控制器MC被配置用于提取架构,换句话说,层的配置、层之间的操作的配置以及神经网络RN的权重的配置。
随后,控制器MC被配置用于向处理单元UC发送每个层的配置,该处理单元UC被配置用于计算与层的类型和/或在步骤S1中在两个层之间执行的操作相关联的值MG。计算将在图3中详细说明。
值MG允许确定来自层的输入数据M1和输出数据M2的可能的定位。
在步骤S2中,如果当前值大于先前的基本存储器区域ZA的基本存储器大小,则控制器MC随后选择需要最小量的存储器空间的定位并更新存储器大小的当前值。
在步骤S2中,控制器MC还更新与层相关联的基本存储器区域ZA的相对地址。
对神经网络RN的全部层重复步骤S1。
一旦步骤S1完成,也对神经网络RN的全部层重复步骤S2。
当前最终值表示待分配的全局存储器区域的总存储器大小。
在步骤S3中,控制器MC授权分配电路MA分配具有等于当前最终值的大小的全局存储器区域。
一旦分配了全局存储器区域的块,处理单元UC被配置用于计算每个基本存储器区域ZA的绝对地址。计算在图4中进行详细说明。
图3图示了步骤S1的详细流程图。
在步骤S11中,向处理单元UC发送神经网络RN的每个层i的配置。
如果层i是稠密层(S15),则在S19中值MG将等于-1。
如果层i是卷积层(S14),则计算值MG。在S16中值MG可以是负数、正数或等于0。例如,值MG根据下面的公式计算:
MG=(CEIL(CONV1_PADX+1,CONV1_STRIDEX)+CONV1_OUT_DIM_XxCEIL(CONV1_PADY+1,CONV1_STRIDEY))xCONV1_OUT_CH).
CEIL是允许将数字取整到下一个更高的整数的函数。
CONV1_PADX+1是表示从左开始水平添加的零的数目的变量。
CONV1_STRIDEX是表示卷积核的水平位移节距(pitch)的变量。
CONV1_OUT_DIM_X是表示输出数据的大小的变量。
CONV1_PADY+1表示从顶部开始垂直添加的零的数目。
CONV1_STRIDEY表示卷积核的垂直位移节距。
CONV1_OUT_CH表示输出通道的数目。
如果层i是非线性层(S13),则在S17中值MG等于0,并且如果层i是池化层(S12),则在S16中值MG也等于0。
层i还可以是本领域技术人员已知的“Soft Max”层。在这种情况下,值MG也等于0。在步骤S111中,控制器MC验证是否仍有神经网络RN的层有待处理。如果是,则在步骤S112中,控制器MC授权处理单元UC提取剩下的层中的一个层的配置。如果否,则方法转到步骤S2。
如果处理单元UC识别出在两个连续的层之间执行的操作,则处理单元UC计算值MG。
例如,如果操作是浮点到定点的转换,则值MG等于0,并且如果操作是定点到浮点的转换,则值MG等于定点模式下输入数据的存储器大小的三倍。
本领域技术人员将能够为被认为由处理单元所识别的其他类型的操作确定MG。
如果操作被认为由处理单元无法识别,则MG的值等于-1。
图4图示了步骤S2的详细流程图。
针对每个层i,如果计算值MG小于0(S21),则控制器MC在步骤S25处为输入数据M1和输出数据M2确定两个可能的定位C3和C4。
在MG的值大于或等于0的情况下,在步骤S22中控制器MC将输入数据M1的大小与输出数据M2的大小进行比较。
如果输出数据M2的大小小于或等于输入数据M1的大小,则在步骤S23中,控制器MC为输入数据M1和输出数据M2确定两个可能的定位C2和C3。
如果输出数据M2的大小大于输入数据M1的大小,则在步骤S24中,控制器MC为输入数据M1和输出数据M2确定两个可能的定位C1和C3。
随后,控制器MC从可能的定位中选择需要最小量的存储器空间的定位。
在步骤S26中,如果当前值大于与先前层关联的当前值,则控制器MC随后执行与基本存储器区域ZA的基本存储器大小或者基本存储器区域ZA的基本存储器大小和附加存储器大小的总和相对应的当前值的更新。
控制器MC还限定基本存储器区域ZA的相对地址。
在步骤S27处,控制器MC验证是否仍有层有待处理。如果是,则控制器MC处理下一层,而如果否,则方法转到下一步骤S3,在步骤S3中,控制器MC授权分配电路MA分配具有等于最新更新的当前值的大小的全局存储器区域。
图5图示了详细说明包括每个基本存储器区域ZA的绝对地址的计算的步骤S4的流程图。
为此目的,在步骤S41中,控制器MC在全部基本存储器区域ZA的相对地址中确定最小相对地址,然后在步骤S42中,从其他基本存储器区域ZA的其他相对地址中减去最小值,以便生成正相对地址。
随后,在步骤S43中,将全局存储器区域的正相对地址和绝对地址考虑在内,处理单元UC为每个层生成绝对地址。
图6A图示了针对神经网络RN的第一层L(i)、第二层L(i+1)和第三层L(i+2)的步骤S2和S3。
神经网络RN的第一层L(i)与第一基本存储器区域ZAi相关联,第一基本存储器区域ZAi具有基本存储器大小Max0以及由界定基本存储器区域ZAi的两个指针OFFB和OFFT所表示的相对地址。
基本存储器区域ZAi包括输出数据M2。
层L(i)的输出数据M2表示第二层L(i+1)的输入数据M1。层L(i+1)的数据M2表示层L(i+1)的输出数据。
例如,第二层L(i+1)是卷积层。这里,第二层L(i+1)的计算得到的值MG大于0。例如,可以存在有在两个连续的层(例如L(i)和L(i+1))之间待执行的操作。在这种情况下,根据如在上文中所解释的操作的本质来计算值MG。
考虑到层L(i+1)的输出数据M2的大小大于层L(i+1)的输入数据M1的大小,输入数据M1和输出数据M2的两个可能的定位是C1和C3。
在定位C1中,层L(i+1)的输出数据M2覆盖层L(i+1)的输入数据M1。特别地,一旦计算得到层L(i+1)的输出数据M2,层L(i+1)的输入数据M1就被层L(i+1)的输出数据M2覆写。特别地,层L(i+1)的输入数据M1可以被覆写,因为层L(i+1)的输入数据M1不会被神经网络RN的后续的层再次使用。还提供具有存储器大小M3的附加存储器区域,以避免覆写层L(i+1)的基本存储器区域中的有用的数据。计算得到的值MG表示附加存储器的大小M3。
在定位C3中,层L(i+1)的输入数据M1和层L(i+1)的输出数据M2被保留。
在该示例中,定位C1的大小Max2小于定位C3的大小Max1。因此,控制器MC选择定位C1,输出数据M2的一部分代替输入数据M1的一部分而被存储在定位C1中。然而,在其他示例中,附加存储器的大小M3可以大于输入数据M1的存储器大小。因此将选择定位C3。
在所说明的示例中,如此放置的层L(i+1)的输入数据M1和输出数据M2占据基本存储器区域ZAi+1,基本存储器区域ZAi+1的基本存储器大小等于输出数据M2的存储器大小。因此,基本存储器区域ZAi+1的大小等于基本存储器大小和附加存储器大小的总和。在这种情况下,基本存储器区域ZAi+1的大小小于或等于层L(i+1)的输入数据M1和输出数据M2的大小的总和。
控制器MC更新基本存储器区域ZAi+1的相对地址OFFB、OFFT以及存储器大小的当前值,该当前值此后具有值Max2,因为值Max2大于值Max0。
例如,第三层L(i+2)是卷积层。在这种情况下,由处理单元UC计算得到的值MG大于0。
层L(i+1)的输出数据M2表示下一层L(i+2)的输入数据M1。层L(i+2)的数据M2表示层L(i+2)的输出数据。
考虑到输出数据M2的大小小于输入数据M1的大小Max2,输入数据M1和输出数据M2的两个可能的定位是C2和C3。
在定位C2中,层L(i+2)的输出数据M2覆盖层L(i+2)的输入数据M1的一部分。特别地,一旦计算得到层L(i+2)的输出数据M2,层L(i+2)的输入数据M1的一部分就被层L(i+2)的输出数据M2覆写。还提供具有存储器大小M3的附加存储器区域,以防止覆写层L(i+1)的基本存储器区域中的有用的数据。计算得到的值MG表示附加存储器大小M3。
在定位C3中,层L(i+2)的输入数据M1和层L(i+2)的输出数据M2被保持。
在该示例中,定位C2的大小Max4小于定位C3的大小Max3。因此,控制器MC选择定位C2,输出数据M2的一部分代替输入数据M1的一部分而被存储在定位C2中。然而,在其他示例中,附加存储器的大小M3可以大于输出数据M2的存储器大小。因此将选择定位C3。
在所说明的示例中,如此放置的输入数据M1和输出数据M2占据基本存储器区域ZAi+2,基本存储器区域ZAi+2的基本存储器大小等于输出数据M1的存储器大小。因此,基本存储器区域ZAi+2的大小等于基本存储器大小和附加存储器大小的总和。
控制器MC更新基本存储器区域ZAi+2的相对地址OFFB、OFFT以及存储器大小的当前值,该当前值此后具有值Max4。
图6B图示了针对神经网络RN的第四层L(i+3)和最后一层L(i+4)的步骤S2和S3。
例如,第四层L(i+3)是稠密层。因此,第四层L(i+3)的计算得到的值MG等于-1。
层L(i+2)的输出数据M2表示下一层L(i+3)的输入数据M1。层L(i+3)的数据M2表示层L(i+3)的输出数据。
因为MG等于-1,所以不可能将层L(i+3)的输出数据M2覆盖在层L(i+3)的输入数据M1上。
输入数据M1和输出数据M2的两个可能的定位是C3和C4。
在定位C3中,层L(i+3)的输出数据M2覆盖层L(i+2)的基本存储器区域中的、不具有层L(i+2)的输出数据M2(换言之,层L(i+3)的输入数据M1)的部分T1。特别地,一旦计算得到层L(i+3)的输出数据M2,层L(i+2)的基本存储器区域的部分T1就被层L(i+3)的输出数据M2覆写。
在定位C4中,层L(i+3)的输入数据M1、层L(i+3)的输出数据M2以及层L(i+2)的基本存储器区域的部分T1被保留。
在该示例中,定位C3的大小Max6小于定位C4的大小Max5,在定位C3中输入数据M1和输出数据M2被并置。
因此,控制器MC选择定位C3。
如此放置的输入数据M1和输出数据M2占据基本存储器区域ZAi+3,基本存储器区域ZAi+3的基本存储器大小等于用于输出数据M2的存储器大小和用于输入数据M1的存储器大小的总和。
控制器MC更新基本存储器区域ZAi+3的相对地址OFFB、OFFT以及存储器大小的当前值,该当前值此后具有值Max6。
例如,最后一层L(i+4)是稠密层。因此,最后一层L(i+4)的计算得到的值MG等于-1。
层L(i+3)的输出数据M2表示下一层L(i+4)的输入数据M1。层L(i+4)的数据M2表示层L(i+4)的输出数据。
因为MG等于-1,所以不可能将层L(i+4)的输出数据M2覆盖在层L(i+4)的输入数据M1上。
输入数据M1和输出数据M2的两个可能的定位是C3和C4。
在定位C3中,层L(i+4)的输出数据M2覆盖层L(i+3)的基本存储器区域中的、包括层L(i+3)的输入数据M1的部分T2。特别地,一旦计算得到层L(i+4)的输出数据M2,层L(i+3)的基本存储器区域的该部分T2至少部分地被层L(i+4)的输出数据M2覆写。
在定位C4中,层L(i+4)的输入数据M1、层L(i+4)的输出数据M2以及层L(i+3)的基本存储器区域的部分T2被保留。
在该示例中,定位C4的大小Max8小于定位C3的大小Max7,在定位C4中输入数据M1和输出数据M2被并置。
因此,控制器MC选择定位C4。
如此放置的输入数据M1和输出数据M2占据基本存储器区域ZAi+4,基本存储器区域ZAi+4的基本存储器大小等于用于输出数据M2的存储器大小和用于输入数据M1的存储器大小的总和。
控制器MC更新基本存储器区域ZAi+4的相对地址OFFB、OFFT以及存储器大小的当前值,该当前值此后具有值Max8。
随后,控制器MC授权分配电路MA分配具有大小Max8的全局存储器区域MF。

Claims (16)

1.一种用于确定存储器中的待分配的全局存储器区域的总存储器大小的方法,所述存储器旨在存储来自神经网络的每个层的输入数据和输出数据,所述方法包括:
针对每个层,确定旨在存储来自所述层的所述输入数据和所述输出数据的基本存储器区域的基本存储器大小,所述基本存储器大小在用于来自所述层的所述输入数据的存储器大小或用于来自所述层的所述输出数据的存储器大小以及与用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的总和相等的大小之间的范围内,所述总存储器大小基于与所述层相关联的所述基本存储器大小被确定,所述全局存储器区域包含全部所述基本存储器区域,
其中针对每个层,确定所述基本存储器大小、以及定位所述输入数据和所述输出数据至少取决于所述层的类型,
其中针对至少一种类型的层,所述输出数据的至少一部分被存储在所述基本存储器区域中代替所述输入数据的至少一部分,使得所述基本存储器大小小于与用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的所述总和相等的所述大小。
2.根据权利要求1所述的方法,其中针对至少另一种类型的层,所述基本存储器大小等于用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的所述总和。
3.根据权利要求2所述的方法,其中所述输出数据和所述输入数据被并置在对应的存储器区域中。
4.根据权利要求1所述的方法,其中确定所述总存储器大小包括:基于针对所述神经网络的连续的层依次确定的基本存储器大小,执行对存储器大小的当前值的连续的更新,所述总存储器大小的值是在全部所述连续的更新结束时的最新更新的当前值。
5.根据权利要求4所述的方法,其中存储器大小的第一值是与第一层相关联的所述基本存储器区域的所述基本存储器大小,并且针对每个当前层,当所述基本存储器大小大于所述存储器大小的先前值时,更新后的存储器大小的所述当前值是与所述当前层相关联的所述基本存储器区域的所述基本存储器大小,或者当所述基本存储器大小小于或等于所述存储器大小的所述先前值时,更新后的存储器大小的所述当前值保持所述存储器大小的所述先前值。
6.根据权利要求4所述的方法,进一步包括:针对每个层,更新与所述层相关联的所述基本存储器区域的相对地址。
7.根据权利要求4所述的方法,包括:针对每个层,确定与所述层相关联的所述基本存储器区域的绝对地址。
8.一种设备,包括:
输入,被配置为接收限定神经网络的各个连续的层的参数;以及
处理器,被耦合到所述输入,并且所述处理器被配置为确定存储器中的待分配的全局存储器区域的总存储器大小,所述存储器旨在存储来自所述神经网络的每个层的输入数据和输出数据,所述处理器被配置为针对每个层,确定旨在存储来自所述层的所述输入数据和所述输出数据的基本存储器区域的基本存储器大小,所述基本大小在用于来自所述层的所述输入数据的存储器大小或用于来自所述层的所述输出数据的存储器大小以及与用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的总和相等的大小之间的范围内,所述总存储器大小基于与所述层相关联的基本存储器大小被确定,所述全局存储器区域被配置以包含全部所述基本存储器区域,
其中针对每个层,所述处理器被配置为至少根据所述层的类型,确定所述基本存储器大小、以及所述输入数据和所述输出数据的定位,
其中针对至少一种类型的层,所述输出数据的至少一部分旨在被存储在所述基本存储器区域中代替所述输入数据的至少一部分,使得所述基本存储器大小小于用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的所述总和。
9.根据权利要求8所述的设备,其中针对至少另一种类型的层,所述基本存储器大小等于用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的所述总和的所述大小,所述输出数据和所述输入数据旨在被并置在对应的基本存储器区域中。
10.根据权利要求8所述的设备,其中所述处理器被配置为通过存储器大小的当前值的连续的更新确定所述总存储器大小,所述连续的更新基于由所述神经网络的连续的层依次确定的基本存储器大小,所述总存储器大小的值是在全部所述连续的更新结束时的最新更新的当前值。
11.根据权利要求10所述的设备,其中存储器大小的第一值是与第一层相关联的所述基本存储器区域的所述基本存储器大小,并且针对每个当前层,所述处理器被配置为:如果所述基本存储器大小大于所述存储器大小的先前值,则用与所述当前层相关联的所述基本存储器区域的所述基本存储器大小更新存储器大小的所述当前值,或者如果所述基本存储器大小小于或等于所述存储器大小的所述先前值,则用所述存储器大小的所述先前值更新存储器大小的所述当前值。
12.根据权利要求10所述的设备,其中所述处理器被进一步配置为:针对每个层,执行与所述层相关联的所述基本存储器区域的相对地址的更新。
13.根据权利要求10所述的设备,其中所述处理器被配置为:针对每个层,进一步执行与所述层相关联的所述基本存储器区域的绝对地址的确定。
14.根据权利要求8所述的设备,其中所述设备是微控制器。
15.一种设备,包括:
神经网络存储器,所述神经网络存储器用于存储神经网络的输入数据和输出数据;
程序存储器,所述程序存储器存储指令;以及
处理器,所述处理器被耦合到所述程序存储器,并且所述处理器被配置为执行所述指令,确定所述神经网络存储器中的待分配的全局存储器区域的总存储器大小,以存储来自所述神经网络的每个层的所述输入数据和所述输出数据;
其中当执行所述指令时,所述处理器将针对每个层,确定旨在存储来自所述层的所述输入数据和所述输出数据的基本存储器区域的基本存储器大小,所述基本存储器大小在用于来自所述层的所述输入数据的存储器大小或用于来自所述层的所述输出数据的存储器大小以及与用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的总和相等的大小之间的范围内,所述总存储器大小基于与所述层相关联的所述基本存储器大小被确定,所述全局存储器区域包含全部所述基本存储器区域,
其中针对每个层,用于所述输入数据和所述输出数据的所述基本存储器大小至少取决于所述层的类型,
其中针对至少一种类型的层,所述输出数据的至少一部分被存储在所述基本存储器区域中代替所述输入数据的至少一部分,使得所述基本存储器大小小于与用于来自所述层的所述输入数据的所述存储器大小和用于来自所述层的所述输出数据的所述存储器大小的所述总和相等的所述大小。
16.根据权利要求15所述的设备,其中通过基于针对所述神经网络的连续的层依次确定的基本存储器大小,执行对存储器大小的当前值的连续的更新,所述总存储器大小被确定,所述总存储器大小的值是在全部所述连续的更新结束时的最新更新的当前值。
CN201911236646.9A 2018-12-06 2019-12-05 用于确定存储器大小的方法和设备 Active CN111291875B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1872443 2018-12-06
FR1872443A FR3089649A1 (fr) 2018-12-06 2018-12-06 Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones

Publications (2)

Publication Number Publication Date
CN111291875A CN111291875A (zh) 2020-06-16
CN111291875B true CN111291875B (zh) 2023-10-24

Family

ID=66641026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911236646.9A Active CN111291875B (zh) 2018-12-06 2019-12-05 用于确定存储器大小的方法和设备

Country Status (4)

Country Link
US (1) US11354238B2 (zh)
EP (1) EP3663987B1 (zh)
CN (1) CN111291875B (zh)
FR (1) FR3089649A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3089649A1 (fr) 2018-12-06 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones
FR3094104A1 (fr) 2019-03-20 2020-09-25 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie
FR3109833B1 (fr) 2020-04-30 2022-05-13 St Microelectronics Rousset Procédé d’allocation de données intermédiaires d’un réseau de neurones artificiel
FR3117626B1 (fr) 2020-12-16 2023-12-01 St Microelectronics Rousset Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones
US20240160891A1 (en) * 2021-03-26 2024-05-16 Allwinner Technology Co., Ltd. Memory allocation method for ai processor, computer apparatus, and computer-readable storage medium
CN113986816B (zh) * 2021-12-09 2023-05-02 北京奕斯伟计算技术股份有限公司 可重构计算芯片

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103282891A (zh) * 2010-08-16 2013-09-04 甲骨文国际公司 用于使用神经网络来进行有效的缓存的系统和方法
CN106529679A (zh) * 2016-10-14 2017-03-22 腾讯科技(上海)有限公司 一种机器学习方法及系统
EP3367310A1 (en) * 2017-02-28 2018-08-29 Fujitsu Limited Method and apparatus for parallelizing layers of deep neural networks onto parallel computing systems
CN108875934A (zh) * 2018-05-28 2018-11-23 北京旷视科技有限公司 一种神经网络的训练方法、装置、系统及存储介质
CN108932548A (zh) * 2018-05-22 2018-12-04 中国科学技术大学苏州研究院 一种基于fpga的稀疏度神经网络加速系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10699186B2 (en) * 2015-12-02 2020-06-30 Google Llc Determining orders of execution of a neural network
WO2017129325A1 (en) 2016-01-29 2017-08-03 Fotonation Limited A convolutional neural network
US11907760B2 (en) 2016-09-23 2024-02-20 Apple Inc. Systems and methods of memory allocation for neural networks
US10157045B2 (en) * 2016-11-17 2018-12-18 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems
KR102415508B1 (ko) * 2017-03-28 2022-07-01 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
WO2019031858A1 (en) * 2017-08-08 2019-02-14 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK
CN107798382B (zh) * 2017-11-21 2020-09-01 南京地平线机器人技术有限公司 用于适配卷积神经网络中的特征数据的方法和装置
US11436143B2 (en) * 2017-12-22 2022-09-06 Alibaba Group Holding Limited Unified memory organization for neural network processors
US11562213B2 (en) 2018-04-17 2023-01-24 Intel Corporation Methods and arrangements to manage memory in cascaded neural networks
FR3089649A1 (fr) 2018-12-06 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103282891A (zh) * 2010-08-16 2013-09-04 甲骨文国际公司 用于使用神经网络来进行有效的缓存的系统和方法
CN106529679A (zh) * 2016-10-14 2017-03-22 腾讯科技(上海)有限公司 一种机器学习方法及系统
EP3367310A1 (en) * 2017-02-28 2018-08-29 Fujitsu Limited Method and apparatus for parallelizing layers of deep neural networks onto parallel computing systems
CN108932548A (zh) * 2018-05-22 2018-12-04 中国科学技术大学苏州研究院 一种基于fpga的稀疏度神经网络加速系统
CN108875934A (zh) * 2018-05-28 2018-11-23 北京旷视科技有限公司 一种神经网络的训练方法、装置、系统及存储介质

Also Published As

Publication number Publication date
FR3089649A1 (fr) 2020-06-12
EP3663987B1 (fr) 2023-06-28
CN111291875A (zh) 2020-06-16
EP3663987A1 (fr) 2020-06-10
US11354238B2 (en) 2022-06-07
US20200183834A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
CN111291875B (zh) 用于确定存储器大小的方法和设备
CN110532897B (zh) 零部件图像识别的方法和装置
US11531888B2 (en) Method, device and computer program for creating a deep neural network
CN111144561A (zh) 一种神经网络模型确定方法及装置
CN112633309A (zh) 基于贝叶斯优化的查询高效的黑盒对抗攻击
CN101842809A (zh) 信息处理装置及信息处理方法
CN109508002B (zh) 一种机器人清扫地面的方法、装置及机器人
US10997528B2 (en) Unsupervised model evaluation method, apparatus, server, and computer-readable storage medium
CN115249315B (zh) 面向异构计算设备的深度学习图像分类方法及装置
CN109685805B (zh) 一种图像分割方法及装置
CN115170565B (zh) 基于自动神经网络架构搜索的图像欺诈检测方法及装置
CN111723923B (zh) 用于确定针对神经网络的全局存储器大小的方法和设备
CN110866484A (zh) 驾驶员人脸检测方法、计算机装置及计算机可读存储介质
CN109190757B (zh) 任务处理方法、装置、设备及计算机可读存储介质
CN113435466A (zh) 电梯门位置和开关状态的检测方法、装置、介质和终端
CN117058235A (zh) 跨多种室内场景的视觉定位方法
CN113822441B (zh) 决策模型训练方法、装置、终端设备及存储介质
US11645519B2 (en) Filtering data in orthogonal directions through a convolutional neural network
CN110533158B (zh) 模型建构方法、系统及非易失性电脑可读取记录介质
CN114970985A (zh) 维修器材需求预测方法、装置及终端
US20170090820A1 (en) Method and device for operating a many-core system
CN110348509B (zh) 数据增广参数的调整方法、装置、设备及存储介质
CN113821471A (zh) 神经网络的处理方法和电子装置
CN111798001A (zh) 基于学习的数据处理系统及模型更新方法
CN111833199A (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
GR01 Patent grant
GR01 Patent grant