CN109491784B - 降低内存占用量的方法、装置、电子设备、可读存储介质 - Google Patents
降低内存占用量的方法、装置、电子设备、可读存储介质 Download PDFInfo
- Publication number
- CN109491784B CN109491784B CN201811220332.5A CN201811220332A CN109491784B CN 109491784 B CN109491784 B CN 109491784B CN 201811220332 A CN201811220332 A CN 201811220332A CN 109491784 B CN109491784 B CN 109491784B
- Authority
- CN
- China
- Prior art keywords
- network model
- memory
- spliced
- network
- splicing
- 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
Images
Classifications
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
Abstract
本发明提供了一种降低内存占用量的方法、装置、电子设备、可读存储介质,在执行该方法时,终端设备先获取多个目标网络模型,然后将满足拼接条件的目标网络模型进行拼接得到至少一个拼接网络模型;针对每个拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,然后将多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。在给该拼接网络模型分配内存时,可以只分配与总内存占用量相同数值的内存,相较于拼接之前,极大地降低了该拼接网络模型运行时所需的内存占用量。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种降低内存占用量的方法、装置、电子设备、可读存储介质。
背景技术
神经网络模型在运行时,往往需要占用大量的内存,但是,目前的智能终端通常有严格的内存限制,因此,当神经网络模型运行在智能终端时,会限制神经网络模型的实现效果。
为了解决这个问题,传统的做法是将单个神经网络模型中的不同层之间实现内存复用,以降低神经网络模型对内存的占用量。但是,当需要在同一个设备中运行多个神经网络模型时,传统的方法所起到的作用甚微。因此,需要一种降低神经网络模型运行时内存占用量的方法,以缓解上述问题。
发明内容
有鉴于此,本发明实施例的目的在于提供一种降低内存占用量的方法、装置、电子设备、可读存储介质,以缓解上述问题。
第一方面,本发明实施例提供了一种降低内存占用量的方法,所述方法包括:获取多个目标网络模型;将所述多个目标网络模型中的满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,得到多个内存用量;将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。
结合第一方面的一种实施方式,在所述拼接条件为:所述多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数,且所述输出参数的数据格式与所述输入参数的数据格式一致,将满足拼接条件的所述多个目标网络模型进行拼接,包括:直接将所述一个网络模型与所述另一个网络模型进行拼接。
结合第一方面的一种实施方式,在所述拼接条件为:所述多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数,且所述输出参数的数据格式与所述输入参数的数据格式不一致,将满足拼接条件的所述多个目标网络模型进行拼接,包括:将所述输出参数的数据格式转换成与所述输入参数的数据格式一致;将所述一个网络模型与所述另一个网络模型进行拼接。
结合第一方面的一种实施方式,将所述一个网络模型与所述另一个网络模型进行拼接,包括:将所述一个网络模型的输出节点与所述另一个网络模型的输入节点连接,使得所述一个网络模型与所述另一个网络模型进行拼接。
结合第一方面的一种实施方式,将所述输出参数的数据格式转换成与所述输入参数的数据格式一致,包括:通过预先保存在内部的算子和/或第三方算子,将所述输出参数的数据格式转换成与所述输入参数的数据格式一致,其中,用于将所述输出参数的数据格式转换成与所述输入参数的数据格式的算子形成一层新的网络。
结合第一方面的一种实施方式,每层网络包括至少一个算子,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,包括:针对该拼接网络模型中的每一层网络,获取所述每一层网络所包括的所有算子在进行运算时所需占用的内存总量,并将所述内存总量确定为所述内存用量。
结合第一方面的一种实施方式,在将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量之后,所述方法还包括:响应所述拼接网络模型的内存加载指令,为所述拼接网络模型分配所述总内存占用量大小的内存,其中,所述拼接网络模型的每一层网络复用所述内存。
结合第一方面的一种实施方式,获取多个目标网络模型,包括:获取保存在终端设备中的所有网络模型作为所述目标网络模型,或者获取当前计算任务所需要用到的所有网络模型作为所述目标网络模型。
第二方面,本发明实施例提供了一种降低内存占用量的装置,所述装置包括:获取模块,用于获取多个目标网络模型;拼接模块,用于将所述多个目标网络模型中的满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;所述获取模块,还用于针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,得到多个内存用量;确定模块,用于将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。
第三方面,本发明实施例提供了一种电子设备,包括相互连接的存储器、处理器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行第一方面中任意一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行第一方面中任意一项所述的方法。
与现有技术相比,本发明各实施例提出的降低内存占用量的方法、装置、电子设备、可读存储介质,在执行该方法时,终端设备先获取多个目标网络模型,然后将满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,然后将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。因为总内存占用量的数值为该拼接网络模型中的每一层网络所需的内存占用量的最大值,所以总内存占用量可以满足该拼接网络模型中的每一层网络所需的内存。因此,在给该拼接网络模型分配内存时,可以只分配与总内存占用量相同数值的内存,相较于拼接之前,极大地降低了该拼接网络模型运行时所需的内存占用量。
本发明实施例公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的电子设备的示意图;
图2为本发明实施例提供的降低内存占用量的方法的流程图之一;
图3为本发明实施例提供的降低内存占用量的方法的流程图之二;
图4为本发明实施例提供的降低内存占用量的装置的结构框图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
神经网络模型在运行时,往往需要占用大量的内存,但是,目前的智能终端通常有严格的内存限制,因此,当神经网络模型运行在智能终端时,会限制神经网络模型的实现效果。
为了改善上述问题,本发明实施例通过将多个满足拼接条件的网络模型拼接成一个拼接网络模型,然后计算该拼接网络模型中每一层网络运行时所需的内存占用量,并把内存占用量最大的值确定为该拼接网络模型的总内存占用量。完成上述操作后,在后续为该拼接网络模型分配内存时,可以只分配与总内存占用量相同数值的内存,降低了拼接网络模型运行时的内存占用量。
为了实现上述效果,本发明实施例提供了一种降低内存占用量的方法、装置、电子设备、可读存储介质,该技术可采用相应的软件、硬件以及软硬结合的方式实现。以下对本发明实施例进行详细介绍。
首先,参照图1来描述用于实现本发明实施例的降低内存占用量的电子设备100。图1中,电子设备100可以包括存储器110、处理器120以及降低内存占用量的装置。
存储器110、处理器120以及降低内存占用量的装置这些组件可以通过总线系统和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备100也可以具有其他组件和结构。所述降低内存占用量的装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中或固化在电子设备100的操作系统(operating system,OS)中的软件功能模块。所述处理器120用于执行存储器110中存储的可执行模块,例如所述降低内存占用量的装置包括的软件功能模块或计算机程序。
所述存储器110可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器120可以运行所述程序指令,以实现下文所述的本发明实施例中期望实现的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如应用程序使用和/或产生的各种数据等。
处理器120可能是一种集成电路芯片,具有信号的处理能力。上述的处理器120可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。处理器120可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。
下面将对为了达到降低内存占用量的目的而进行的降低内存占用量的方法进行介绍:
请参照图2,图2是本发明实施例提供的一种降低内存占用量的方法的流程图,所述方法包括:
步骤S110:获取多个目标网络模型。
可选的,终端设备可以直接获取保存在其内部的所有网络模型作为所述目标网络模型。
作为另一种实施方式,终端设备也可以获取当前计算任务所需要用到的所有网络模型作为所述目标网络模型。例如,在终端设备内一共保存有10个网络模型,但是当前的计算任务只需要用到其中的6个网络模型,则终端设备把这6个网络模型作为目标网络模型。
步骤S120:将所述多个目标网络模型中的满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型。
其中,作为一种可选的实施方式,所述拼接条件可以为:多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数,且所述输出参数的数据格式与所述输入参数的数据格式一致。在这种实施方式下,将满足拼接条件的所述多个目标网络模型进行拼接可以是:直接将所述一个网络模型与所述另一个网络模型进行拼接。
当一个网络模型的输出参数为另一个网络模型的输入参数时,这两个网络模型即具有先后关系,可以通过将输出参数与输入参数进行连接后实现这两个网络模型之间的拼接。例如实现人脸解锁任务所需用到的模型依次为:检测模型—属性模型—识别模型—活体检测模型,那么检测模型和属性模型具有先后关系,属性模型和识别模型也具有先后关系,识别模型和活体检测模型也具有先后关系。因此,可以直接将检测模型的输出参数与属性模型的输入参数进行连接,实现两个模型的拼接,同理,还可以将属性模型、识别模型进行拼接,还可以将识别模型、活体检测模型进行拼接。当检测模型、属性模型进行拼接且属性模型、识别模型进行拼接且识别模型、活体检测模型进行拼接后,最后可以得到一个用于实现人脸解锁任务的拼接模型。
网络模型可以理解为是一个计算图,通过定义具有连接关系的节点,实现一个特定的计算任务,值得指出的是,每个计算图都包括输入节点以及输出节点。当需要将一个网络模型与所述另一个网络模型进行拼接时,可以通过将一个网络模型的输出节点与另一个网络模型的输入节点进行连接,从而实现将一个网络模型的输出参数与另一个网络模型的输入参数进行连接,最后这两个网络模型之间的拼接。例如,将网络模型A的输出节点与网络模型B的输入节点连接在一起,即可实现将网络模型A与网络模型B进行拼接。
当然,值得指出的是,在本实施方式中,前一个网络模型的输出参数的数据格式需要与后一个网络模型的输入参数的数据格式一致,否则会造成两个网络模型之间的数据混乱。
可选的,用于表示数据格式的参数可以包括但不限于张量的维度(shape)、数据类型中的一种或者多种。其中,张量的维度可以包括:一维、二维、三维等;数据类型可以包括:float32、int8等。
可选的,在本发明实施例中,可以直接采用shape以及数据类型两个参数来描述数据格式。也就是说,当前一个网络模型的输出参数的shape以及数据类型与另一个网络模型的输入参数的shape以及数据类型均一致时,即表征前一个网络模型的输出参数的数据格式与后一个网络模型的输入参数的数据格式一致。
作为另一种可选的实施方式,所述拼接条件还可以为:多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数,且所述输出参数的数据格式与所述输入参数的数据格式不一致。在这种实施方式下,将满足拼接条件的所述多个目标网络模型进行拼接可以是:将所述输出参数的数据格式转换成与所述输入参数的数据格式一致后,再将所述一个网络模型与所述另一个网络模型进行拼接。
可选的,在将所述输出参数的数据格式转换成与所述输入参数的数据格式一致时,可以通过预先保存在终端设备内部的算子进行转换,也可以由终端设备调用第三方算子,即外挂算子进行转换,还可以是同时使用这两种类型的算子进行转换。
算子即运算规则,例如在a+b=c中,“+”即为一种算子,用来执行算子的逻辑运算单元以程序的形式保存在网络模型中,网络模型所包括的所有算子的集合被称为该网络模型的计算引擎,例如megbrain。
计算引擎可以按照计算图的规定执行算子(其中,megbrain可以直接支持内部的算子,对于第三方算子,以第三方插件的形式来加载),在将前一个网络模型的输出参数的数据格式经过一系列的运算后,将前一个网络模型的输出参数转换成与后一个网络模型的输入参数的数据格式一致。
其中,用于将所述输出参数的数据格式转换成与所述输入参数的数据格式的算子(此处包括内部的算子和/或第三方算子)也会形成一层新的网络保存在拼接网络模型中,当后续计算拼接网络模型中的每一层网络运行时所需占用的内存用量时,由算子所形成的一层新的网络也会被纳入到计算范围内。
值得指出的是,在将一个网络模型的输入参数的数据格式转换成与另一个网络模型的输入参数的数据格式一致后,当进行将一个网络模型与另一个网络模型进行拼接时,其实现步骤与上文一致,此处不再过多赘述。
步骤S130:针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,得到多个内存用量。
每层网络包括至少一个算子,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量时,可以针对该拼接网络模型中的每一层网络,获取所述每一层网络所包括的所有算子在进行运算时所需占用的内存总量,并将所述内存总量确定为所述内存用量。
其中,每一层网络所包括的所有算子在进行运算时所需占用的内存总量由计算引擎计算后得出。
步骤S140:将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。
当一个网络模型在运行时,只需要申请一次内存,以便该网络模型的各层网络使用该内存,在每一层网络都被加载后,网络模型才会释放该内存。
经过上述步骤S110-S130后,得到了在拼接网络模型的各层网络中,每一层所需的内存占用量。终端设备可以将拼接网络模型认定为一个整体网络模型,将每一层所需的内存占用量的最大值确定为该拼接网络模型的总内存占用量。
由于一个网络模型的各层网络之间也是顺序执行,且可以实现内存的复用,那么当该拼接网络模型在运行时,可以直接在最开始时申请一次总内存占用量,以便该拼接网络模型的各层网络都依次复用该总内存占用量。因为总内存占用量的数值为该拼接网络模型中的每一层网络所需的内存占用量的最大值,所以总内存占用量可以满足该拼接网络模型中的每一层网络所需的内存。相较于拼接之前,极大地降低了该拼接网络模型运行时所需的内存占用量。
作为一种可选的实施方式,请参看图3,所述方法还包括:
步骤S150:响应所述拼接网络模型的内存加载指令,为所述拼接网络模型分配所述总内存占用量大小的内存,其中,所述拼接网络模型的每一层网络复用所述内存。
本发明实施例提供的一种降低内存占用量的方法,终端设备先获取多个目标网络模型,然后将满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,然后将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。因为总内存占用量的数值为该拼接网络模型中的每一层网络所需的内存占用量的最大值,所以总内存占用量可以满足该拼接网络模型中的每一层网络所需的内存。因此,在给该拼接网络模型分配内存时,可以只分配与总内存占用量相同数值的内存,相较于拼接之前,极大地降低了该拼接网络模型运行时所需的内存占用量。
对应于图2提供的降低内存占用量的方法,请参看图4,本发明实施例还提供了一种降低内存占用量的装置400,该降低内存占用量的装置400可以包括:获取模块410、拼接模块420以及确定模块430。其中:
获取模块410,用于获取多个目标网络模型;
拼接模块420,用于将所述多个目标网络模型中的满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;
获取模块410,还用于针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,得到多个内存用量;
确定模块430,用于将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。
可选的,每层网络包括至少一个算子,所述获取模块410,用于针对该拼接网络模型中的每一层网络,获取所述每一层网络所包括的所有算子在进行运算时所需占用的内存总量,并将所述内存总量确定为所述内存用量。
可选的,在所述拼接条件为:所述多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数,且所述输出参数的数据格式与所述输入参数的数据格式一致,所述拼接模块420,用于直接将所述一个网络模型与所述另一个网络模型进行拼接。
可选的,在所述拼接条件为:所述多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数,且所述输出参数的数据格式与所述输入参数的数据格式不一致,所述拼接模块420,用于将所述输出参数的数据格式转换成与所述输入参数的数据格式一致后再将所述一个网络模型与所述另一个网络模型进行拼接。
可选的,所述拼接模块420,用于将所述一个网络模型的输出节点与所述另一个网络模型的输入节点连接,使得所述一个网络模型与所述另一个网络模型进行拼接。
可选的,所述拼接模块420,用于通过预先保存在内部的算子和/或第三方算子,将所述输出参数的数据格式转换成与所述输入参数的数据格式一致,其中,用于将所述输出参数的数据格式转换成与所述输入参数的数据格式的算子形成一层新的网络。
可选的,所述获取模块410,用于获取保存在终端设备中的所有网络模型作为所述目标网络模型,或者获取当前计算任务所需要用到的所有网络模型作为所述目标网络模型。
可选的,所述装置还可以包括响应模块,用于响应所述拼接网络模型的内存加载指令,为所述拼接网络模型分配所述总内存占用量大小的内存,其中,所述拼接网络模型的每一层网络复用所述内存。
本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中图2-图3相应内容。
此外,本发明实施例还提供了一种电子设备,其示意图可以如图1所示,包括相互连接的存储器110、处理器120,所述存储器110内存储计算机程序,当所述计算机程序被所述处理器120执行时,使得所述电子设备100执行本发明任一项实施方式所提供的降低内存占用量的方法。
此外,本发明实施例还提供了一种计算机可读存储介质,在该计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行本发明任一项实施方式所提供的降低内存占用量的方法。
此外,本发明实施例还提供了一种计算机程序,该计算机程序可以存储在云端或者本地的存储介质上,当所述计算机程序在计算机上运行时,使得所述计算机执行本发明任一项实施方式所提供的降低内存占用量的方法。
综上所述,本发明实施例提出的降低内存占用量的方法、装置、电子设备、可读存储介质,在执行该方法时,终端设备先获取多个目标网络模型,然后将满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,然后将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量。因为总内存占用量的数值为该拼接网络模型中的每一层网络所需的内存占用量的最大值,所以总内存占用量可以满足该拼接网络模型中的每一层网络所需的内存。因此,在给该拼接网络模型分配内存时,可以只分配与总内存占用量相同数值的内存,相较于拼接之前,极大地降低了该拼接网络模型运行时所需的内存占用量。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种降低内存占用量的方法,其特征在于,所述方法包括:
获取多个目标网络模型;
将所述多个目标网络模型中的满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;
针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,得到多个内存用量;
将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量;
拼接的方式为:将其中一个网络模型的输出节点与另一个网络模型的输入节点连接;
所述拼接条件为:所述多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数。
2.根据权利要求1所述的方法,其特征在于,在所述拼接条件还包括:所述输出参数的数据格式与所述输入参数的数据格式一致,
将满足拼接条件的所述多个目标网络模型进行拼接,包括:
直接将所述一个网络模型与所述另一个网络模型进行拼接。
3.根据权利要求1所述的方法,其特征在于,在所述拼接条件还包括:所述输出参数的数据格式与所述输入参数的数据格式不一致,
将满足拼接条件的所述多个目标网络模型进行拼接,包括:
将所述输出参数的数据格式转换成与所述输入参数的数据格式一致;
将所述一个网络模型与所述另一个网络模型进行拼接。
4.根据权利要求3所述的方法,其特征在于,将所述输出参数的数据格式转换成与所述输入参数的数据格式一致,包括:
通过预先保存在内部的算子和/或第三方算子,将所述输出参数的数据格式转换成与所述输入参数的数据格式一致,其中,用于将所述输出参数的数据格式转换成与所述输入参数的数据格式的算子形成一层新的网络。
5.根据权利要求1所述的方法,其特征在于,每层网络包括至少一个算子,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,包括:
针对该拼接网络模型中的每一层网络,获取所述每一层网络所包括的所有算子在进行运算时所需占用的内存总量,并将所述内存总量确定为所述内存用量。
6.根据权利要求1所述的方法,其特征在于,在将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量之后,所述方法还包括:
响应所述拼接网络模型的内存加载指令,为所述拼接网络模型分配所述总内存占用量大小的内存,其中,所述拼接网络模型的每一层网络复用所述内存。
7.根据权利要求1所述的方法,其特征在于,获取多个目标网络模型,包括:
获取保存在终端设备中的所有网络模型作为所述目标网络模型,或者
获取当前计算任务所需要用到的所有网络模型作为所述目标网络模型。
8.一种降低内存占用量的装置,其特征在于,所述装置包括:
获取模块,用于获取多个目标网络模型;
拼接模块,用于将所述多个目标网络模型中的满足拼接条件的目标网络模型进行拼接,得到至少一个拼接网络模型;
所述获取模块,还用于针对每个所述拼接网络模型,获取该拼接网络模型中的每一层网络运行时所需占用的内存用量,得到多个内存用量;
确定模块,用于将所述多个内存用量中的最大值确定为该拼接网络模型的总内存占用量;
拼接的方式为:将其中一个网络模型的输出节点与另一个网络模型的输入节点连接;
所述拼接条件为:所述多个目标网络模型中的一个网络模型的输出参数为另一个网络模型的输入参数。
9.一种电子设备,其特征在于,包括相互连接的存储器、处理器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行权利要求1-7中任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811220332.5A CN109491784B (zh) | 2018-10-18 | 2018-10-18 | 降低内存占用量的方法、装置、电子设备、可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811220332.5A CN109491784B (zh) | 2018-10-18 | 2018-10-18 | 降低内存占用量的方法、装置、电子设备、可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109491784A CN109491784A (zh) | 2019-03-19 |
CN109491784B true CN109491784B (zh) | 2021-01-22 |
Family
ID=65692151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811220332.5A Active CN109491784B (zh) | 2018-10-18 | 2018-10-18 | 降低内存占用量的方法、装置、电子设备、可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491784B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111915002B (zh) * | 2019-05-09 | 2023-12-19 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN110162338B (zh) * | 2019-05-31 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN112529169A (zh) * | 2019-09-18 | 2021-03-19 | 华为技术有限公司 | 数据处理方法、模型优化装置和模型执行装置 |
CN112783640B (zh) * | 2019-11-11 | 2023-04-04 | 上海肇观电子科技有限公司 | 预先分配内存的方法与设备、电路、电子设备及介质 |
CN110908667B (zh) * | 2019-11-18 | 2021-11-16 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
CN110750363B (zh) * | 2019-12-26 | 2021-02-05 | 中科寒武纪科技股份有限公司 | 计算机存储管理方法和装置、电子设备和存储介质 |
CN115456161A (zh) * | 2020-03-27 | 2022-12-09 | 华为技术有限公司 | 一种数据处理方法和数据处理系统 |
CN111596972B (zh) * | 2020-05-15 | 2023-09-26 | 北京小米松果电子有限公司 | 神经网络模型存储方法、加载方法、装置、设备及存储介质 |
CN112596811B (zh) * | 2020-12-17 | 2022-08-05 | 杭州艾芯智能科技有限公司 | 动态数据加载减少内存开销的方法、系统、计算机设备及存储介质 |
CN113065665A (zh) * | 2021-03-04 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种模型算子对比方法、系统及存储介质 |
CN113569265B (zh) * | 2021-09-16 | 2021-12-24 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、系统及装置 |
CN113608881B (zh) * | 2021-10-09 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 内存分配方法、装置、设备、可读存储介质及程序产品 |
CN117521737B (zh) * | 2024-01-04 | 2024-04-19 | 浙江大华技术股份有限公司 | 网络模型的转换方法、装置、终端及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937579A (zh) * | 2010-09-20 | 2011-01-05 | 南京大学 | 一种利用透视草图创建三维曲面模型的方法 |
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
CN108665475A (zh) * | 2018-05-15 | 2018-10-16 | 北京市商汤科技开发有限公司 | 神经网络训练、图像处理方法、装置、存储介质和电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8788644B2 (en) * | 2008-05-29 | 2014-07-22 | International Business Machines Corporation | Tracking data processing in an application carried out on a distributed computing system |
US9147156B2 (en) * | 2011-09-21 | 2015-09-29 | Qualcomm Technologies Inc. | Apparatus and methods for synaptic update in a pulse-coded network |
US10289934B2 (en) * | 2016-11-08 | 2019-05-14 | Nec Corporation | Landmark localization on objects in images using convolutional neural networks |
-
2018
- 2018-10-18 CN CN201811220332.5A patent/CN109491784B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937579A (zh) * | 2010-09-20 | 2011-01-05 | 南京大学 | 一种利用透视草图创建三维曲面模型的方法 |
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
CN108665475A (zh) * | 2018-05-15 | 2018-10-16 | 北京市商汤科技开发有限公司 | 神经网络训练、图像处理方法、装置、存储介质和电子设备 |
Non-Patent Citations (3)
Title |
---|
Memory-Efficient Implementation of DenseNets;Geoff Pleiss ET AL;《arXiv.org》;20171231;第1-8页 * |
Training Deep Nets with Sublinear Memory Cost;Tianqi Chen ET AL;《Arxiv.org》;20161231;第1-12页 * |
基于卷积神经网络的目标研究综述;李旭冬等;《计算机应用研究》;20171031;第34卷(第10期);第2881-2889页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109491784A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109491784B (zh) | 降低内存占用量的方法、装置、电子设备、可读存储介质 | |
RU2725760C1 (ru) | Способ и устройство определения состояния базы данных и способ и устройство верификации согласованности | |
US20190324772A1 (en) | Method and device for processing smart contracts | |
CN111427681A (zh) | 边缘计算中基于资源监控的实时任务匹配调度系统和方法 | |
CN108875519B (zh) | 对象检测方法、装置和系统及存储介质 | |
CN110955715A (zh) | Erp系统和目标平台的数据转换方法、装置以及电子设备 | |
CN111596927B (zh) | 服务部署方法、装置及电子设备 | |
CN113885956B (zh) | 服务部署方法及装置、电子设备和存储介质 | |
CN111373436A (zh) | 图像处理方法、终端设备及存储介质 | |
CN111651140A (zh) | 基于工作流的服务方法及装置 | |
CN108470242B (zh) | 风险管控方法、装置、及服务器 | |
CN111325343B (zh) | 神经网络的确定、目标检测、智能行驶控制方法及装置 | |
CN111079390B (zh) | 一种复选框列表的选择状态确定方法以及装置 | |
CN109150993B (zh) | 一种获取网络请求切面的方法、终端装置及存储介质 | |
CN108108472B (zh) | 数据处理方法以及服务器 | |
CN107066247B (zh) | 补丁查询方法以及装置 | |
CN112650787A (zh) | 基于大数据和云计算的数据挖掘方法及人工智能服务器 | |
CN111198689A (zh) | 一种代码执行方法、装置及计算机可读存储介质 | |
US20130290977A1 (en) | Computational Resource Allocation System And A Method For Allocating Computational Resources For Executing A Scene Graph Based Application At Run Time | |
CN110704696A (zh) | 数据标准化方法、装置、电子设备及可读存储介质 | |
CN110569031B (zh) | 编程实现方法和装置 | |
CN114070744B (zh) | 一种网络拓扑的结点坐标生成方法、装置、设备和介质 | |
CN116384452B (zh) | 动态网络模型构建方法、装置、设备及存储介质 | |
CN111007741B (zh) | 智能控制方法和控制系统、车辆 | |
CN111260038B (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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Methods, devices, electronic devices, and readable storage media for reducing memory usage Effective date of registration: 20230404 Granted publication date: 20210122 Pledgee: Shanghai Yunxin Venture Capital Co.,Ltd. Pledgor: BEIJING KUANGSHI TECHNOLOGY Co.,Ltd. Registration number: Y2023990000193 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |