CN115374232A - 张量分配方法、介质、电子设备和程序产品 - Google Patents
张量分配方法、介质、电子设备和程序产品 Download PDFInfo
- Publication number
- CN115374232A CN115374232A CN202211064256.XA CN202211064256A CN115374232A CN 115374232 A CN115374232 A CN 115374232A CN 202211064256 A CN202211064256 A CN 202211064256A CN 115374232 A CN115374232 A CN 115374232A
- Authority
- CN
- China
- Prior art keywords
- tensor
- memory
- life cycle
- allocated
- current
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/22—Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/774—Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/10—Terrestrial scenes
Abstract
本申请涉及神经网络技术领域,公开了一种张量分配方法、介质、电子设备和程序产品。本申请的张量分配方法包括:确定神经网络中的当前待分配张量;获取当前待分配张量的生命周期;当当前待分配张量的生命周期与电子设备中内存地图中已分配内存的张量的生命周期无重叠时,将当前待分配张量分配至内存地图的第一位置,第一位置是内存地图中的第一预设位置。上述张量分配方法能够实现使生命周期无重叠的张量重复使用同一内存,最大化内存重复使用率。
Description
技术领域
本申请涉及神经网络技术领域,特别涉及一种张量分配方法、介质、电子设备和程序产品。
背景技术
随着深度学习技术的发展,以及数据隐私保护的需要,越来越多通过人工智能(Artificial Intelligence,AI)计算实现的边缘AI计算任务都转移到了移动端设备上。例如,一般会在移动终端设备上部署神经网络,以实现对应边缘AI计算任务。
对于神经网络,特别是用于图像处理和对象识别的卷积神经网络,包括大量的张量数据,其中,张量数据为用来表示一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系包括内积、外积、线性映射以及笛卡尔积。而大量的张量数据将会占用移动端设备较大内存。
发明内容
本申请实施例中提供一种张量分配方法、介质、电子设备和程序产品。
第一方面,本申请实施例提供一种张量分配方法,应用于电子设备,包括:确定神经网络中的当前待分配张量;获取当前待分配张量的生命周期;当当前待分配张量的生命周期与电子设备中内存地图中已分配内存的张量的生命周期无重叠时,将当前待分配张量分配至内存地图的第一位置,第一位置是内存地图中的第一预设位置。
可以理解,张量为用来表示一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系包括内积、外积、线性映射以及笛卡尔积。电子设备的内存可以看作内存轴,内存轴上的张量及内存轴构成内存地图。内存地图用于记录张量的内存分配策略,也就是记录张量在内存轴的偏移位置。第一位置包括靠近内存地图左侧的任意位置。
在本申请实施例中,对于生命周期没有重叠的不同张量,均可以使用同一存放位置(即重复使用内存地图中的第一位置);实现了使生命周期无重叠的张量重复使用同一内存,最大化内存重复使用率,减少了神经网络在移动端设备上的内存占用,提高了神经网络在移动端设备的内存占用利用率。
在一种可能的实现中,第一预设位置包括内存地图中最靠左的位置。
在一种可能的实现中,当当前待分配张量的生命周期与电子设备中内存地图中已分配内存的张量的生命周期有重叠时,确定在内存地图中当前待分配张量对应的存储空隙;将当前待分配张量分配至存储空隙。
可以理解,将当前待分配张量分配至存储空隙实现了有效利用内存地图中的存储空隙,增加了内存地图中的内存利用率。
在一种可能的实现中,确定在内存地图中当前待分配张量对应的存储空隙包括:删除内存地图中与当前待分配张量的生命周期有重叠的张量占用的内存块;确定当前内存地图的所有空隙中,大于当前待分配张量的尺寸的最小空隙,作为当前待分配张量对应的存储空隙。
可以理解,在确定存储空隙时,优先选取大于当前待分配张量的尺寸的最小空隙,为更大尺寸的待分配张量预留存储空隙。
在一种可能的实现中,对应于内存地图中不存在存储空隙的情况下,将当前待分配张量分配至第二位置;其中,第二位置是删除内存地图中与当前待分配张量的生命周期有重叠的张量占用的内存块后,内存地图中的第二预设位置。
可以理解,第二位置包括删除内存地图中与当前待分配张量的生命周期有重叠的张量占用的内存块后,靠近内存地图右侧的任意位置。
在一种可能的实现中,第二预设位置包括内存地图中与当前待分配张量的生命周期有重叠的张量占用内存块的最靠右的位置。
在一种可能的实现中,确定神经网络中的当前待分配张量包括:获取神经网络的张量生命周期记录表;将张量生命周期记录表中当前所有未分配张量中,尺寸最大的张量作为当前待分配张量。
可以理解,在对张量生命周期记录表中待分配的张量进行分配的过程中,首先先对张量尺寸较大的张量进行排序,避免尺寸较小的张量预先占用了零散的内存,导致尺寸较大的张量无处安放的情况发生,提高了电子设备的内存重复使用率。
在一种可能的实现中,将当前待分配张量分配至所述内存地图的第一位置后包括:将当前待分配张量从张量生命周期记录表中删除。
在一种可能的实现中,张量生命周期记录表包括神经网络中待分配张量的尺寸、生命周期和名称。
第二方面,本申请实施例提供了一种可读介质,可读介质上存储有指令,指令在电子设备上执行时使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任一种张量分配方法。
第三方面,本申请实施例提供了一种电子设备,包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及处理器,是电子设备的一个或多个处理器之一,用于实现上述第一方面及上述第一方面的各种可能实现提供的任一种张量分配方法。
第四方面,本申请实施例提供了一种计算机程序产品,其特征在于,包括:执行指令,执行指令存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取执行指令,至少一个处理器执行执行指令使得电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任一种张量分配方法。
附图说明
图1根据本申请实施例,示出了神经网络中张量的生命周期的示意图;
图2根据本申请实施例,示出了一种内存地图中已分配张量的位置的示意图;
图3根据本申请实施例,示出了一种张量分配方法的流程示意图;
图4根据本申请实施例,示出了另一种张量分配方法的流程示意图;
图5根据本申请实施例,示出了一种电子设备的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于一种张量分配方法、介质、电子设备和程序产品。
可以理解,本申请的技术方案适用于任意能够运行神经网络的电子设备,例如,包括但不限于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)或专门的照相机(例如单反相机、卡片式相机)等,本发明实施例对电子设备的具体类型不作任何限制。
为了解决背景技术中的技术问题,即为了降低神经网络占用的移动端设备的内存,本申请提出一种可以张量分配方法,应用于电子设备,该方法包括:
获取神经网络的张量生命周期记录表,基于张量生命周期记录表中各张量的生命周期与电子设备的内存地图中已分配内存的张量的生命周期的重叠关系,确定张量生命周期记录表中各张量的存放位置,并将张量生命周期记录表中各张量分配至对应存放位置。
其中,上述基于张量生命周期记录表中各张量的生命周期与内存地图中已分配内存的张量的生命周期的重叠关系,确定张量生命周期记录表中各张量的存放位置的方式可以为:
首先判断张量生命周期记录表中待分配张量的生命周期和内存地图中已分配内存的张量生命周期是否有重叠,若判断结果为否,则将待分配张量分配至内存地图最靠左的位置,即内存地图中最靠近起始位置的位置;若判断结果为是,则基于生命周期记录表中待分配张量的尺寸与内存地图中空隙的尺寸确定生命周期记录表中待分配张量的存放位置。具体的,当内存地图中存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,将张量生命周期记录表中的待分配张量分配至最小空隙的起始处;当内存地图中不存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,将张量生命周期记录表中的待分配张量分配至内存地图中与当前待分配张量的生命周期有重叠的张量占用内存块的最靠右的空隙位置。
基于上述方案,对于生命周期没有重叠的不同张量,均可以使用同一存放位置(即重复使用内存地图中最靠左的位置);实现了使生命周期无重叠的张量重复使用同一内存,最大化内存重复使用率,减少了神经网络在移动端设备上的内存占用,提高了神经网络在移动端设备的内存占用利用率。
可以理解,本申请提及的张量分配方法,可以用于各种电子设备部署神经网络的场景中。下面以将用于图像识别的神经网络部署于电子设备中为例对本申请实施例中提及的张量分配方法进行说明。
首先获取当前待部署的用于图像识别的神经网络,根据电子设备中神经网络中各待分配张量的尺寸,以及各待分配张量的生命周期与电子设备中已分配内存的张量的生命周期的重叠关系,依次为待分配张量分配内存,当神经网络中最后一个待分配张量内存分配完成后,即神经网络部署完成。
下面首先以图1中所示的神经网络对张量生命周期记录表进行介绍,表1中示出了图1中所示的神经网络对应的张量生命周期记录表,其中张量生命周期记录表中记录了待分配内存的张量的名称、尺寸以及生存周期。
神经网络计算图中的张量如图1所示,神经网络计算图有6个节点,节点与节点之间的张量尺寸在图1中已标出,两个不同的节点构成一个张量,例如节点0-1构成张量t0,节点1-3构成张量t1;如图1所示,节点0-1的张量尺寸为32,节点1-3的张量尺寸为28,节点2-4的张量尺寸为26,节点3-4的张量尺寸为8,节点4-5的张量尺寸为64。
图1中所示的神经网络对应的张量生存周期记录表如表1所示:
表1
张量名称 | 张量尺寸 | 张量生存周期 |
“t0” | 32 | <0,1> |
“t1” | 28 | <1,3> |
“t2” | 26 | <2,4> |
“t3” | 8 | <3.4> |
“t4” | 64 | <4,5> |
其中,张量的生存周期可以表示为<idx0,idx1>,idx0为第一个使用张量作为输入的节点序号,idx1为最后一个使用张量作为输出的节点序号;<1,3>包括<1,2><2,3>。
其中,上述当内存地图中存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,将张量生命周期记录表中的待分配张量分配至最小空隙的起始处的方式可以为:当内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中待分配张量尺寸的最小空隙时,将张量生命周期记录表中的待分配张量分配至最小空隙的起始处。
上述当内存地图中不存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,将张量生命周期记录表中的待分配张量分配至内存地图中与当前待分配张量的生命周期有重叠的张量占用内存块的最靠右的空隙位置的方式可以为:当内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,不存在大于张量生命周期记录表中待分配张量尺寸的最小空隙时,将张量生命周期记录表中的待分配张量分配至内存地图中与待分配张量的生命周期有重叠的张量占用内存块的最靠右的位置。
下面对基于张量生命周期记录表中各张量的生命周期与内存地图中已分配内存的张量的生命周期的重叠关系,确定张量生命周期记录表中各张量的存放位置的方式进行说明。
首先以图2为例对内存地图进行介绍,如图2所示,电子设备的内存可以看作内存轴,内存轴上的张量及内存轴构成内存地图。内存地图用于记录张量的内存分配策略,也就是记录张量在内存轴的偏移位置。内存轴由地址偏移等于零处开始。每个张量的位置为张量在内存轴的偏移位置,根据张量尺寸,就可以计算出内存地图中的空隙。
例如,如图2所示,内存轴上有3个张量,张量周期依次为<1,2>,<3,4>,<5,6>。张量尺寸依次为36、40、16;空隙1的尺寸为64-36=28,空隙2的尺寸为114-(64+40)=10。
若待分配张量的生命周期为<7,8>,待分配张量的尺寸为30,则基于图2中的已分配内存的张量周期,可以确定待分配张量的生命周期和内存地图中已分配内存的张量生命周期没有重叠,则将待分配张量分配至内存轴中最靠左的位置,即图2中尺寸为36的张量的左侧,最靠近内存轴起始位置的位置。
若待分配张量的生命周期为<2,3>,待分配张量的尺寸为18,且确定待分配张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,此时内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,即空隙1,则将待分配张量分配至内存轴中的空隙1的起始处。
若待分配张量的生命周期为<2,5>,待分配张量的尺寸为8,且待分配张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,即空隙2,则将待分配张量分配至内存轴中的空隙2的起始处。
若待分配张量的生命周期为<2,3>,待分配张量的尺寸为8,且待分配张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,即空隙1,则将待分配张量分配至内存轴中的空隙1的起始处。
若待分配张量的生命周期为<2,5>,待分配张量的尺寸为30,且待分配张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,不存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,则将待分配张量分配至内存轴中与当前待分配张量的生命周期有重叠的张量占用内存块的最靠右的位置,即图2中尺寸为16的张量的右侧最靠近内存轴终点位置的位置。
若待分配张量的生命周期为<2,3>,待分配张量的尺寸为30,且待分配张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,不存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,则将待分配张量分配至内存轴中地址偏移=104处。
上述获取张量生命周期记录表的方式可以是:首先,获取神经网络计算图的张量列表,以及每个张量的尺寸;其次,对神经网络计算图进行排序,得到算子节点的时序列表;再次,计算每个张量的生命周期;最后,基于每个张量的生命周期,得到张量生命周期记录表。
其中,可以对神经网络计算图进行拓扑排序,即对神经网络计算图中的算子节点进行拓扑排序,以得到神经网络计算图中算子节点的时序列表。可以理解,对一个有向无环图(Directed Acyclic Graph,DAG)进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。因此,对神经网络计算图中的算子节点进行拓扑排序,可以得到神经网络计算图中算子节点的时序列表。
在对张量生命周期记录表中的待分配张量分配内存时,可以按照张量的尺寸由大到小依次分配内存。具体地,对张量生命周期记录表的待分配张量按照尺寸大小,由大到小进行排序,得到排序后的张量生命周期记录表;基于排序后的张量生命周期记录表,依次分配内存,将分配完成的张量添加至张量分配列表,并将其从张量生命周期记录表中删除,当张量生命周期记录表中没有张量时,分配结束。
可以理解,张量分配列表用于存储张量生命周期记录表中已分配的张量。
由此,在对张量生命周期记录表中待分配的张量进行分配的过程中,首先对张量尺寸较大的张量进行排序,避免尺寸较小的张量预先占用了零散的内存,导致尺寸较大的张量无处安放的情况发生,提高了电子设备的内存重复使用率。
图3根据本申请的一些实施例,示出了一种张量分配方法的流程示意图。如图3所示,该方法包括如下步骤:
301:获取神经网络计算图,对神经网络计算图中的算子节点进行拓扑排序,得到神经网络对应的张量生命周期记录表。
在本申请实施例中,获取神经网络对应的张量生命周期记录表的方式可以如前所述,此处不再赘述。
302:建立张量分配列表。
可以理解,张量分配列表用于存储张量生命周期记录表中已分配的张量。
303:根据张量生命周期记录表判断是否所有张量均已分配内存;若判断结果为是,则结束,若判断结果为否,则转至304。
在本申请实施例中,首先对张量生命周期记录表的张量按照尺寸大小,由大到小进行排序,得到排序后的张量生命周期记录表,其中当张量生命周期记录表中的张量分配了内存时,将该张量从张量生命周期记录表删除,并将其添加至张量分配列表。因此,当排序后的张量生命周期记录表中存在张量时,即张量生命周期记录表中并非所有张量均已分配内存;当排序后的张量生命周期记录表中不存在张量时,即张量生命周期记录表中所有张量均已分配内存。
304:基于张量生命周期记录表确定当前张量及当前张量的生命周期。
在本申请实施例中,将张量生命周期记录表中排名第一的张量作为当前张量,即将当前尺寸最大的张量作为当前张量。
由此,在对张量生命周期记录表中当前的张量进行分配的过程中,首先对张量尺寸较大的张量进行排序,避免尺寸较小的张量预先占用了零散的内存,导致尺寸较大的张量无处安放的情况发生,提高了电子设备的内存重复使用率。
305:基于当前张量的生命周期和内存地图中已分配内存的张量的生命周期,确定当前张量的存放位置,并将当前张量分配至存放位置。
其中,基于当前张量的生命周期和内存地图中已分配内存的张量的生命周期,确定当前张量的存放位置的方式可以为:
首先判断张量生命周期记录表中当前张量的生命周期和内存地图中已分配内存的张量生命周期是否有重叠,若判断结果为否,则将当前张量分配至内存地图最靠左的位置,即内存地图中最靠近起始位置的位置;若判断结果为是,则基于生命周期记录表中当前张量的尺寸与内存地图中空隙的尺寸确定生命周期记录表中当前张量的存放位置。具体的,当内存地图中存在大于张量生命周期记录表中当前张量尺寸的最小空隙,将张量生命周期记录表中的当前张量分配至最小空隙的起始处;当内存地图中不存在大于张量生命周期记录表中当前张量尺寸的最小空隙,将张量生命周期记录表中的当前张量分配至内存地图中与当前张量的生命周期有重叠的张量占用内存块的最靠右的空隙位置。
其中,上述当内存地图中存在大于张量生命周期记录表中当前张量尺寸的最小空隙,将张量生命周期记录表中的当前张量分配至最小空隙的起始处的方式可以为:当内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中当前张量尺寸的最小空隙时,将张量生命周期记录表中的当前张量分配至最小空隙的起始处。
上述当内存地图中不存在大于张量生命周期记录表中当前张量尺寸的最小空隙,将张量生命周期记录表中的当前张量分配至内存地图中与当前张量的生命周期有重叠的张量占用内存块的最靠右的空隙位置的方式可以为:当内存地图中,在剔除与当前张量的生命周期有重叠的张量占用的内存块后,不存在大于张量生命周期记录表中待分配张量尺寸的最小空隙时,将张量生命周期记录表中的当前张量分配至内存地图中与当前张量的生命周期有重叠的张量占用内存块的最靠右的位置。
306:将当前张量添加至张量分配列表,将当前张量从张量生命周期记录表删除。
可以理解,在将当前张量添加至张量分配列表,将当前张量从张量生命周期记录表删除后,可以返回执行303:根据张量生命周期记录表判断是否所有张量均已分配内存。
由此,当张量生命周期记录表内不存在张量时,即代表所有张量均已分配内存。
在本申请实施例中,由于未分配内存的张量的存放位置是基于未分配内存的张量的生命周期和内存地图中已分配内存的张量的生命周期确定的,即对于生命周期没有重叠的不同张量,均可以使用同一存放位置;实现了使生命周期无重叠的张量重复使用同一内存,最大化内存重复使用率,减少了神经网络在移动端设备上的内存占用,提高了神经网络在移动端设备的内存占用利用率。
可以理解,在一些实施例中,本申请实施例提供的张量分配方法中确定当前张量的存放位置的方法可以如图4所示,图4示出了一种张量分配方法的流程示意图。如图4所示,该方法包括如下步骤:
401:判断当前张量的生命周期和内存地图中已分配内存的张量的生命周期是否有重叠,若判断结果为否,则转至402;若判断结果为是,则转至403。
例如:假设当前张量的生命周期为<3,4>,内存地图中已分配内存的张量生命周期为<0,1>,则证明没有重叠。
假设当前张量的生命周期为<3,4>,内存地图中已分配内存的张量生命周期为<2,4>,则证明有重叠。
可以理解,本申请实施例中的内存地图包括内存轴以及内存轴上的张量。内存地图用于记录张量的内存分配策略,也就是记录张量在内存轴的偏移位置。内存轴由地址偏移等于零处开始。每个张量记录在内存轴的偏移位置,根据张量尺寸,就可以计算出内存地图中的空隙。
402:将当前张量分配至内存地图最靠左的位置。
在本申请实施例中,当当前张量的生命周期和内存地图中已分配内存的张量生命周期无重叠时,将当前张量分配至内存地图最靠左的位置,即内存地图中最靠近起始位置的位置;以不占用内存地图右侧的空间,使内存地图右侧有足够的空间放置其他的张量。
例如,如图2所示,内存轴上有3个张量,张量周期依次为<1,2>,<3,4>,<5,6>。张量尺寸依次为36、40、16;空隙1的尺寸为64-36=28,空隙2的尺寸为114-(64+40)=10。
若当前张量的生命周期为<7,8>,当前张量的尺寸为18,但当前张量的生命周期和内存地图中已分配内存的张量生命周期无重叠,则将当前张量分配至内存轴中最靠左的位置,即图2中尺寸为36的张量的左侧,最靠近内存轴起始位置的位置。
可以理解,在本申请实施例中,对于空白的内存地图,张量会在内存轴上从左至右依次排列;对于存在张量的内存地图,当张量的生命周期和内存地图中已分配内存的张量生命周期无重叠时,会直接分配至内存轴的最左侧。
403:判断内存地图中是否存在大于当前张量的最小空隙,若判断结果为是,则转至404;若判断结果为否,则转至405。
在本申请实施例中,当当前张量的生命周期和内存地图中已分配内存的张量生命周期有重叠时,判断内存地图中是否存在大于当前张量的最小空隙。
例如,如图2所示,内存轴上有3个张量,张量周期依次为<1,2>,<3,4>,<5,6>。张量尺寸依次为36、40、16;空隙1的尺寸为64-36=28,空隙2的尺寸为114-(64+40)=10。
404:将当前张量分配至最小空隙的起始处。
例如,如图2所示,若当前张量的生命周期为<2,3>,当前张量的尺寸为18,且确定当前张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,此时内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中当前张量尺寸的最小空隙,即空隙1,则将当前张量分配至内存轴中的空隙1的起始处。
若当前张量的生命周期为<2,5>,当前张量的尺寸为8,且当前张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中当前张量尺寸的最小空隙,即空隙2,则将当前张量分配至内存轴中的空隙2的起始处。
若待分配张量的生命周期为<2,3>,待分配张量的尺寸为8,且待分配张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与待分配张量的生命周期有重叠的张量占用的内存块后,存在大于张量生命周期记录表中待分配张量尺寸的最小空隙,即空隙1,则将待分配张量分配至内存轴中的空隙1的起始处。
由此,当内存地图中存在大于当前张量的最小空隙时,将当前张量分配至最小空隙的起始处,以有效利用空隙。
405:将当前张量分配至内存地图中与当前张量的生命周期有重叠的张量占用内存块的最靠右的位置。
例如,如图2所示,若当前张量的生命周期为<2,5>,当前张量的尺寸为30,且当前张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与当前张量的生命周期有重叠的张量占用的内存块后,不存在大于张量生命周期记录表中当前张量尺寸的最小空隙,则将当前张量分配至内存轴中与当前张量的生命周期有重叠的张量占用内存块的最靠右的位置,即图2中尺寸为16的张量的右侧最靠近内存轴终点位置的位置。
若当前张量的生命周期为<2,3>,当前张量的尺寸为30,且当前张量的生命周期和内存地图中已分配内存的张量生命周期有重叠,内存地图中,在剔除与当前张量的生命周期有重叠的张量占用的内存块后,不存在大于张量生命周期记录表中当前张量尺寸的最小空隙,则将待分配张量分配至内存轴中地址偏移=104处。
由此,当内存地图中不存在大于当前张量的最小空隙时,即当前张量无法占用现有的空隙,将当前张量分配至内存地图中与当前张量的生命周期有重叠的张量占用内存块的最靠右的位置,避免当前张量随意放置,为待分配的张量提供更多可供选择的内存空间。
由于当前张量的存放位置是基于当前张量的生命周期和内存地图中已分配内存的张量的生命周期确定的,即对于生命周期没有重叠的不同张量,可以使用同一存放位置(即重复使用内存地图中最靠左的位置);实现了使生命周期无重叠的张量重复使用内存,最大化内存重复使用率,减少了神经网络在移动端设备上的内存占用,提高了神经网络在移动端设备的内存占用利用率。
可以理解,本申请实施例提供的张量分配方法,可以应用于能够运行神经网络模型的任意电子设备,包括但不限于手机、可穿戴设备(如智能手表等)、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备等,本申请实施例不做限定。为便于理解本申请实施例的技术方案,以电子设备100为例说明本申请实施例提供的张量分配方法的适用的电子设备的结构。
进一步,图5根据本申请的一些实施例,示出了一种电子设备100的结构示意图。如图5所示,电子设备100包括一个或多个处理器101A、系统内存102、非易失性存储器(Non-Volatile Memory,NVM)103、通信接口104、输入/输出(I/O)设备105、以及用于耦接处理器101A、系统内存102、非易失性存储器103、通信接口104和输入/输出(I/O)设备105的系统控制逻辑106。其中:
处理器101A可以用于控制电子设备执行本申请的张量分配方法,其中,处理器101A可以包括一个或多个处理单元,例如,可以包括中央处理器CPU(Central ProcessingUnit)、图像处理器GPU(Graphics Processing Unit)、数字信号处理器DSP(DigitalSignal Processor)、微处理器MCU(Micro-programmed Control Unit)、AI(ArtificialIntelligence,人工智能)处理器或可编程逻辑器件FPGA(Field Programmable GateArray)的处理模块或处理电路可以包括一个或多个单核或多核处理器。系统内存102是易失性存储器,例如随机存取存储器(Random-Access Memory,RAM),双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDRSDRAM)等。系统内存用于临时存储数据和/或指令,例如,在一些实施例中,系统内存102可以用于存储上述除数寄存器、算数逻辑单元、被除数寄存器、余数寄存器、商寄存器和除法控制逻辑器等。
非易失性存储器103可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,非易失性存储器103可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD)、光盘(Compact Disc,CD)、数字通用光盘(Digital Versatile Disc,DVD)、固态硬盘(Solid-State Drive,SSD)等。在一些实施例中,非易失性存储器103也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡等。在另一些实施例中,非易失性存储器103可以用于存储上述除数寄存器、算数逻辑单元、被除数寄存器、余数寄存器、商寄存器和除法控制逻辑器等。
特别地,系统内存102和非易失性存储器103可以分别包括:指令107的临时副本和永久副本。指令107可以包括:由处理器101A执行时使电子设备100实现本申请各实施例提供的张量分配方法。
通信接口104可以包括收发器,用于为电子设备100提供有线或无线通信接口,进而通过一个或多个网络与任意其他合适的设备进行通信。在一些实施例中,通信接口104可以集成于电子设备100的其他组件,例如通信接口104可以集成于处理器101A中。在一些实施例中,电子设备100可以通过通信接口104和其他设备通信,例如,电子设备100可以通过通信接口104从其他电子设备获取待运行的张量分配方法。
输入/输出(I/O)设备105可以包括输入设备如键盘、鼠标等,输出设备如显示器等,用户可以通过输入/输出(I/O)设备105与电子设备100进行交互。
系统控制逻辑106可以包括任意合适的接口控制器,以电子设备100的其他模块提供任意合适的接口。例如在一些实施例中,系统控制逻辑106可以包括一个或多个存储器控制器,以提供连接到系统内存102和非易失性存储器103的接口。
在一些实施例中,处理器101A中的至少一个可以与用于系统控制逻辑106的一个或多个控制器的逻辑封装在一起,以形成系统封装(System in Package,SiP)。在另一些实施例中,处理器101A中的至少一个还可以与用于系统控制逻辑106的一个或多个控制器的逻辑集成在同一芯片上,以形成SoC。
可以理解,电子设备100可以是能够运行DCLS的任意电子设备,包括但不限于手机、可穿戴设备(如智能手表等)、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备等,本申请实施例不做限定。
可以理解,图5所示的电子设备100的结构只是一种示例,在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (12)
1.一种张量分配方法,应用于电子设备,其特征在于,包括:
确定神经网络中的当前待分配张量;
获取所述当前待分配张量的生命周期;
当所述当前待分配张量的生命周期与所述电子设备中内存地图中已分配内存的张量的生命周期无重叠时,将所述当前待分配张量分配至所述内存地图的第一位置,所述第一位置是所述内存地图中的第一预设位置。
2.根据权利要求1所述的张量分配方法,其特征在于,所述第一预设位置包括所述内存地图中最靠左的位置。
3.根据权利要求1所述的张量分配方法,其特征在于,
当所述当前待分配张量的生命周期与所述电子设备中内存地图中已分配内存的张量的生命周期有重叠时,确定在所述内存地图中所述当前待分配张量对应的存储空隙;
将所述当前待分配张量分配至所述存储空隙。
4.根据权利要求3所述的张量分配方法,其特征在于,所述确定在所述内存地图中所述当前待分配张量对应的存储空隙包括:
删除所述内存地图中与所述当前待分配张量的生命周期有重叠的张量占用的内存块;
确定当前所述内存地图的所有空隙中,大于所述当前待分配张量的尺寸的最小空隙,作为所述当前待分配张量对应的存储空隙。
5.根据权利要求4所述的张量分配方法,其特征在于,
对应于所述内存地图中不存在所述存储空隙的情况下,将所述当前待分配张量分配至第二位置;
其中,所述第二位置是删除所述内存地图中与所述当前待分配张量的生命周期有重叠的张量占用的内存块后,所述内存地图中的第二预设位置。
6.根据权利要求5所述的张量分配方法,其特征在于,所述第二预设位置包括所述内存地图中与所述当前待分配张量的生命周期有重叠的张量占用内存块的最靠右的位置。
7.根据权利要求1所述的张量分配方法,其特征在于,所述确定神经网络中的当前待分配张量包括:
获取所述神经网络的张量生命周期记录表;
将所述张量生命周期记录表中当前所有未分配张量中,尺寸最大的张量作为所述当前待分配张量。
8.根据权利要求7所述的张量分配方法,其特征在于,所述将所述当前待分配张量分配至所述内存地图的第一位置后包括:
将所述当前待分配张量从所述张量生命周期记录表中删除。
9.根据权利要求7所述的张量分配方法,其特征在于,所述张量生命周期记录表包括所述神经网络中待分配张量的尺寸、生命周期和名称。
10.一种可读介质,其特征在于,所述可读介质上存储有指令,所述指令在电子设备上执行时使所述电子设备执行权利要求1至9中任一项所述的张量分配方法。
11.一种电子设备,其特征在于,包括:存储器,用于存储由所述电子设备的一个或多个处理器执行的指令,以及所述处理器,是所述电子设备的所述一个或多个处理器之一,用于执行权利要求1至9中任一项所述的张量分配方法。
12.一种计算机程序产品,其特征在于,包括:执行指令,所述执行指令存储在可读存储介质中,电子设备的至少一个处理器可以从所述可读存储介质读取执行指令,至少一个处理器执行所述执行指令使得所述电子设备实现权利要求1至9中任一项所述的张量分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211064256.XA CN115374232A (zh) | 2022-09-01 | 2022-09-01 | 张量分配方法、介质、电子设备和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211064256.XA CN115374232A (zh) | 2022-09-01 | 2022-09-01 | 张量分配方法、介质、电子设备和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115374232A true CN115374232A (zh) | 2022-11-22 |
Family
ID=84070347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211064256.XA Pending CN115374232A (zh) | 2022-09-01 | 2022-09-01 | 张量分配方法、介质、电子设备和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115374232A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878332A (zh) * | 2023-02-14 | 2023-03-31 | 北京燧原智能科技有限公司 | 深度学习网络中的内存资源分配方法、装置、设备及介质 |
-
2022
- 2022-09-01 CN CN202211064256.XA patent/CN115374232A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878332A (zh) * | 2023-02-14 | 2023-03-31 | 北京燧原智能科技有限公司 | 深度学习网络中的内存资源分配方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20200029510A (ko) | 네트워크에서 메모리 요구 사항을 결정하는 방법 및 장치 | |
US11915139B2 (en) | Modifying machine learning models to improve locality | |
US11562214B2 (en) | Methods for improving AI engine MAC utilization | |
CN112506671B (zh) | 区块链中的交易处理方法、装置及电子设备 | |
CN105144120A (zh) | 基于存储器地址将来自高速缓存行的数据存储到主存储器 | |
CN111324427A (zh) | 一种基于dsp的任务调度方法及装置 | |
CN111028360B (zh) | 一种3d图像处理中数据读写方法及系统、存储介质及终端 | |
CN115374232A (zh) | 张量分配方法、介质、电子设备和程序产品 | |
CN111897493B (zh) | 存储空间管理方法、装置及电子设备、存储介质 | |
CN113010099A (zh) | 有效地利用存储器空间的神经网络处理设备及其操作方法 | |
US20100325083A1 (en) | Skip list generation | |
JP2010515128A (ja) | 不揮発性メモリにおけるデータを管理する方法 | |
CN113312182B (zh) | 一种云计算节点、文件处理方法及装置 | |
US8959309B2 (en) | Skip list generation | |
CN112965661A (zh) | 数据存储方法、装置、设备及存储介质 | |
JP2008516320A (ja) | メモリフレームのサイズを決定する方法および装置 | |
CN112596949A (zh) | 一种高效率的ssd删除数据恢复方法及系统 | |
CN116680014A (zh) | 数据处理方法和装置 | |
CN111027688A (zh) | 一种基于fpga的神经网络计算器生成方法及装置 | |
US7487336B2 (en) | Method for register allocation during instruction scheduling | |
CN115934354A (zh) | 在线存储方法和装置 | |
CN111090520B (zh) | 独占资源的用户分配方法、装置、电子设备及存储介质 | |
KR20170037851A (ko) | 매니코어 시스템을 작동하기 위한 방법 및 장치 | |
CN112445521B (zh) | 数据处理方法、相关设备及计算机可读介质 | |
CN115470737B (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 |