CN112862085B - 存储空间优化方法及装置 - Google Patents
存储空间优化方法及装置 Download PDFInfo
- Publication number
- CN112862085B CN112862085B CN201911184271.6A CN201911184271A CN112862085B CN 112862085 B CN112862085 B CN 112862085B CN 201911184271 A CN201911184271 A CN 201911184271A CN 112862085 B CN112862085 B CN 112862085B
- Authority
- CN
- China
- Prior art keywords
- network
- network layer
- storage space
- data storage
- training
- 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
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
- 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
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种存储空间优化方法及装置,属于机器学习领域。所述方法包括:获取训练网络和测试网络;确定测试网络的第一网络层,第一网络层为测试网络的任一网络层;如果训练网络存在与第一网络层相同的第二网络层,则将第二网络层的第一数据存储空间分配给第一网络层使用,第一数据存储空间用于存储第二网络层的数据。本申请通过将训练网络的某个网络层的数据存储空间分配给测试网络中的相同网络层使用,实现了测试网络和训练网络的相同网络层对数据存储空间的复用,从而减小了深度学习网络在训练中对数据存储空间的占用,减小了容易出现存储空间不足的风险。
Description
技术领域
本申请涉及机器学习领域,特别涉及一种存储空间优化方法及装置。
背景技术
深度学习是机器学习研究中的新领域,是一种比较有效的人工智能方法,它通过模拟人脑的学习行为,从数据中学习到相关知识以便用于后续的预测。深度学习网络在运算过程中将会产生大量的中间数据,因此需要为深度学习网络分配数据存储空间。
目前,基于训练样本进行训练的深度学习网络称为训练网络,对测试样本进行测试的深度学习网络称为测试网络,训练网络和测试网络是两个相互独立的系统,分别具有独立的数据存储空间。其中,训练网络的数据存储空间用于存储训练网络在训练过程中产生的数据,测试网络的数据存储空间用于存储测试网络在测试过程中产生的数据。而且,由于训练网络和测试网络都是由多个网络层组成,因此,训练网络的数据存储空间包括为训练网络的各个网络层分配的数据存储空间,测试网络的数据存储空间包括为测试网络的各个网络层分配的数据存储空间。
由于需要为训练网络和测试网络的各个网络层分别分配独立的数据存储空间,因此对数据存储空间的占用较大,容易出现存储空间不足的风险。
发明内容
本申请提供了一种存储空间优化方法及装置,可以解决相关技术的训练网络和测试网络对数据存储空间的占用较大,容易出现存储空间不足的风险问题。
所述技术方案如下:
一方面,提供了一种存储空间优化方法,所述方法包括:
获取深度学习网络对应的训练网络和测试网络;
确定所述训练网络的第一网络层,所述第一网络层为所述训练网络的任一网络层;
如果所述训练网络存在与所述第一网络层相同的第二网络层,则将所述第二网络层的第一数据存储空间分配给所述第一网络层使用,所述第一数据存储空间用于存储所述第二网络层的数据。
可选地,所述确定所述训练网络的第一网络层,包括:
对所述测试网络包括的N个网络层进行遍历,所述N为正整数;
将遍历到的当前网络层,确定为所述第一网络层。
可选地,所述方法还包括:
如果所述训练网络不存在所述第一网络层,则为所述第一网络层分配第二数据存储空间。
可选地,所述方法还包括:
对所述训练网络的各个网络层依次进行模拟运算;
在对所述训练网络的各个网络层依次进行模拟运算后,基于模拟运算后的训练网络的网络参数,确定所述测试网络;
对所述测试网络的各个网络层依次进行模拟运算;
在对所述测试网络的各个网络层依次进行模拟运算的过程中,对于所述测试网络的第i层网络层,如果所述训练网络存在与所述第i层网络层相同的第二网络层,则将所述第i层网络层的数据存储在用于存储所述第二网络层的第一数据存储空间中;
如果所述训练网络不存在所述第i层网络层,则将所述第i层网络层的数据存储在为所述第i层网络层分配的第二数据存储空间中。
可选地,所述对所述测试网络的各个网络层依次进行模拟运算之前,还包括:
释放所述训练网络的各个网络层的数据存储空间。
可选地,所述对所述训练网络的各个网络层依次进行模拟运算,包括:
对于所述训练网络的第j层网络层,在对所述第j层网络层进行模拟运算后,将所述第j层网络层的数据存储在为所述第j层网络层分配的数据存储空间中。
可选地,所述对所述训练网络的各个网络层依次进行模拟运算,包括:
对于所述训练网络的第j层网络层,在对所述第j层网络层进行模拟运算后,检测第三数据存储空间是否被占用,所述第三数据存储空间用于存储所述第j层网络层或所述第j层网络层之前的网络层的数据;
如果所述第三数据存储空间被占用,则为所述第j层网络层的数据分配第四数据存储空间,并在满足预设条件时,释放被占用的所述第三数据存储空间。
可选地,所述方法还包括:
如果所述第三数据存储空间未被占用,则将所述第三数据存储空间分配给所述第j层网络层使用。
可选地,所述训练网络和所述测试网络的数据存储空间位于图形处理器GPU的显存中。
第二方面,提供了一种存储空间优化装置,所述装置包括:
获取模块,用于获取深度学习网络对应的训练网络和测试网络;
确定模块,用于确定所述训练网络的第一网络层,所述第一网络层为所述训练网络的任一网络层;
分配模块,用于如果所述训练网络存在与所述第一网络层相同的第二网络层,则将所述第二网络层的第一数据存储空间分配给所述第一网络层使用,所述第一数据存储空间用于存储所述第二网络层的数据。
可选地,所述确定模块用于:
对所述测试网络包括的N个网络层进行遍历,所述N为正整数;
将遍历到的当前网络层,确定为所述第一网络层。
可选地,所述分配模块还用于:
如果所述训练网络不存在所述第一网络层,则为所述第一网络层分配第二数据存储空间。
可选地,所述装置还包括运算模块,所述运算模块用于:
对所述训练网络的各个网络层依次进行模拟运算;
在对所述训练网络的各个网络层依次进行模拟运算后,基于模拟运算后的训练网络的网络参数,确定所述测试网络;
对所述测试网络的各个网络层依次进行模拟运算;
在对所述测试网络的各个网络层依次进行模拟运算的过程中,对于所述测试网络的第i层网络层,如果所述训练网络存在所述第i层网络层相同的第二网络层,则将所述第i层网络层的数据存储在所述第二网络层的第一数据存储空间中;
如果所述训练网络不存在所述第i层网络层,则将所述第i层网络层的数据存储在为所述第i层网络层分配的第二数据存储空间中。
可选地,所述运算模块还用于:
释放所述训练网络的各个网络层的数据存储空间。
可选地,所述运算模块还用于:
对于所述训练网络的第j层网络层,在对所述第j层网络层进行模拟运算后,将所述第j层网络层的数据存储在为所述第j层网络层分配的数据存储空间中。
可选地,所述运算模块还用于:
对于所述训练网络的第j层网络层,在对所述第j层网络层进行模拟运算后,检测第三数据存储空间是否被占用,所述第三数据存储空间用于存储所述第j层网络层或所述第j层网络层之前的网络层的数据;
如果所述第三数据存储空间被占用,则为所述第j层网络层的数据分配第四数据存储空间,并在满足预设条件时,释放被占用的所述第三数据存储空间。
可选地,所述运算模块还用于:
如果所述第三数据存储空间未被占用,则将所述第三数据存储空间分配给所述第j层网络层使用。
可选地,所述训练网络和所述测试网络的数据存储空间位于图形处理器GPU的显存中。
第三方面,提供了一种计算机设备,所述计算机设备包括处理器、通信接口、存储器和通信总线,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,所述存储器用于存放计算机程序,所述处理器用于执行所述存储器上所存放的程序,以实现上述存储空间优化方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述存储空间优化方法的步骤。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的存储空间优化方法的步骤。
本申请提供的技术方案至少可以带来以下有益效果:
通过将训练网络的某个网络层的数据存储空间分配给测试网络中的相同网络层使用,实现了测试网络和训练网络中相同网络层对数据存储空间的复用,从而减小了深度学习网络在训练中对数据存储空间的占用,减小了容易出现存储空间不足的风险。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种深度学习网络的参数空间的逻辑示意图;
图2是本申请实施例提供的一种存储空间优化方法流程图;
图3是本申请实施例提供的一种训练网络和测试网络的运行时序示意图;
图4是本申请实施例提供的一种显存优化方法的流程图;
图5是本申请实施例提供的一种存储空间优化装置的结构示意图;
图6是本申请实施例提供的一种计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的存储空间优化方法进行详细的解释说明之前,先对本申请实施例提供的应用场景和实施环境进行介绍。
在深度学习网络的训练中,数据存储空间占用巨大一直是一个困扰。传统的数据存储空间优化技术仅能对训练网络的数据存储空间进行优化,但是由于训练网络和测试网络对于数据的输入和输出是两套独立的系统,因此仅对训练网络的数据存储空间进行优化,并不会减小测试网络产生的数据对存储空间的占用,导致深度学习网络的训练对数据存储空间的占用仍然巨大,仍然容易出现存储空间不足的风险。如图1所示,对于深度学习网络中的某个网络层,该网络层的参数空间包括训练数据空间和测试数据空间,且训练数据空间和测试数据空间是相互独立的。因此,仅对训练数据空间进行优化,并不会减小测试数据空间对存储空间的占用。
为了减小深度学习网络的训练对数据存储空间的占用,本申请实施例中提供了一种存储空间优化方法,该优化方法不再局限于训练网络的显存优化,而是同时对训练网络和测试网络进行显存优化,使得深度学习领域的显存优化范围更广,优化效果更好,具体过程详见下述实施例。
需要说明的是,本申请实施例所述的数据存储空间包括但不限于CPU(CentralProcessing Unit,中央处理器)的内存、GPU(Graphics Processing Unit,图形处理器)的显存等具有存储功能的载体。本申请实施例中的测试网络和训练网络在运算过程中产生的数据包括但不限于各个网络层的输入数据和输出数据。
还需要说明的是,深度学习网络可以被广泛的应用于各行各业中,比如可以应用于图像识别、语音识别、自然语言处理等。例如,在智能交通领域,可以通过深度学习网络对监控设备采集到的车辆图像进行识别分类。再例如,在安保领域,可以通过深度学习网络对图像采集设备采集到的人脸图像进行识别等等。
接下来,对本申请实施例的实施环境进行介绍。
本申请实施例提供的存储空间优化方法应用于计算机设备中,该计算机设备可以为终端或服务器等电子设备,终端可以为手机、平板电脑或计算机等。作为一个示例,测试网络和训练网络的运算过程由计算机设备的GPU执行,测试网络和训练网络在运算过程中产生的数据存储在GPU的显存中,该方法应用于计算机设备的CPU或GPU中,用于对GPU的显存进行优化。
接下来,对本申请实施例提供的存储空间优化方法进行详细介绍。图2是本申请实施例提供的一种存储空间优化方法流程图,该方法应用于计算机设备中,比如应用于计算机设备的CPU或GPU中,如图2所示,该方法包括如下步骤:
步骤201:获取深度学习网络对应的训练网络和测试网络。
在深度学习训练过程中,通常会有一个训练网络和一个测试网络。训练网络用于基于训练样本进行相关的训练行为,并更新训练网络的网络参数。测试网络用于在训练网络进行了一定次数的训练之后,对测试样本进行测试,以验证训练过程的好坏。
可选地,测试网络的网络参数可以基于训练网络的网络参数确定得到。比如,在训练网络进行了一定次数的训练之后,基于训练网络的网络参数更新测试网络的网络参数,基于更新网络参数后的测试网络对测试样本进行测试。
可选地,该训练网络和测试网络具有基本相同的网络层。比如,该训练网络和该测试网络的中间网络层基本相同,而输入层和输出层不同。训练网络层的输入层用于输入训练样本和样本标签,输出层用于输出训练样本的预测结果与样本标签的比较结果。而测试网络的输入层用于输入测试样本,输出层用于输出测试样本的测试结果。
请参考图3,训练网络和测试网络一般是在不同的时间段运行的。在训练网络运行的时候,测试网络是停止运行的,当测试网络运行的时候,训练网络是停止运行的。比如,在深度学习网络的训练中,一般先运行训练网络,当训练网络运行了一段时间之后,训练网络停止运行,改为测试网络运行。当测试网络完成测试任务之后,测试网络停止运行,训练网络继续运行。如此,周而复始,直到训练任务完成为止。
作为一个示例,训练网络包括N个网络层,测试网络包括M个网络层,N和M均为正整数。N和M可以相同,也可以不同。示例的,训练网络的输入层与测试网络的输入层不同,训练网络的输出层与测试网络的输出层不同。
步骤202:确定测试网络的第一网络层,第一网络层为测试网络的任一网络层。
作为一个示例,可以按照预设规则,从测试网络中选择至少一个网络层作为第一网络层。该预设规则可以预先设置,可以由技术人员设置,也可以由计算机设备默认设置,本申请实施例对此不做限定。示例的,该至少一个网络层可以包括输入层和输出层。
作为另一个示例,可以对测试网络包括的N个网络层依次进行遍历,将遍历到的当前网络层,确定为第一网络层。比如,可以将遍历到的每个网络层作为第一网络层,并按照如下步骤对第一网络层进行处理。
示例的,可以按照网络层的序号,对测试网络包括的N个网络层依次进行遍历。比如,先遍历测试网络的第1个网络层,将第1个网络层作为第一网络层进行处理,再遍历测试网络的第2个网络层,将第2个网络层作为第一网络层进行处理,直至遍历到测试网络的最后一个网络层为止。
步骤203:检测训练网络中是否存在与第一网络层相同的第二网络层。
也即是,检测训练网络中是否存在与第一网络层相同的网络层。
作为一个示例,可以对测试网络包括的N个网络层依次进行遍历,然后对遍历到的每个网络层进行检测,以检测训练网络中是否存在相同的网络层。
步骤204:如果训练网络存在与第一网络层相同的第二网络层,则将第二网络层的第一数据存储空间分配给测试网络的第一网络层使用,第一数据存储空间用于存储训练网络的第二网络层的数据。
也即是,如果训练网络同样存在与第一网络层相同的网络层,则不再为测试网络的第一网络层分配单独的数据存储空间,而是直接与训练网络中的相同网络层共享数据存储空间,使得测试网络和训练网络的相同网络层复用相同的数据存储空间,提高数据存储空间的利用率。
其中,第二网络层的数据包括第一网络层的输入数据和/或输出数据。将第一数据存储空间分配给第一网络层使用是指将第一数据存储空间复用给第一网络层,使其也用于存储第一网络层的输入数据和/或输出数据。
需要说明的是,本申请实施例中的训练网络和测试网络的数据存储空间位于CPU的内存或GPU的显存中。相应地,第一数据存储空间也位于CPU的内存或GPU的显存中。
作为一个示例,训练网络和测试网络的各个网络层的数据存储空间位于GPU的显存中,相应地,第一数据存储空间也位于GPU的显存中,本申请实施例用于在深度学习训练过程中对显存进行优化,避免显存不足的风险。
另外,将第二网络层的第一数据存储空间分配给测试网络的第一网络层使用之后,如果第一网络层产生数据,则可以将第一网络层的数据直接存储在第一数据存储空间中。
作为一个示例,在将第一网络层的数据存储在第一数据存储空间时,如果第一数据存储空间中已存储有数据,则可以用第一网络层的数据覆盖已存储的数据,以将第一网络层的数据存储到第一数据存储空间中。
进一步地,在第一网络层将数据存储到第一数据存储空间之后,如果第二网络层继续产生新的数据,则可以用第二网络层的数据覆盖第一存储空间中已存储的第一网络层的数据,以将第二网络层的数据存储到第一数据存储空间。
通过覆盖存储的方式,不仅可以实现第一网络层和第二网络对第一数据存储空间的共享,还可以降低数据存储空间的存储量,进一步节省对数据存储空间的占用,实现对存储空间的优化。
步骤205:如果训练网络不存在与第一网络层相同的第二网络层,则为第一网络层分配第二数据存储空间。
其中,第二数据存储空间为与训练网络的各个网络层的数据存储空间相互独立的数据存储空间。第二数据存储空间位于CPU的内存或GPU的显存中。也即是,如果训练网络中不存在与第一网络层相同的第二网络层,则为第一网络层分配单独的数据存储空间,以供第一网络层存储第一网络层的输入数据和/输出数据。
需要说明的是,本申请实施例所述的数据存储空间可以为CPU的内存或GPU的显存等具有存储功能的载体。
作为一个示例,假设数据存储空间为GPU的显存,请参考图4,图4是本申请实施例提供的一种显存优化方法的流程图,则如图4所示,在开始对显存进行优化后,可以对测试网络的网络层依次进行遍历,在遍历的过程中,查看测试网络的网络层是否遍历完成;如果未遍历完成,则获取遍历到的网络层,查看训练网络是否存在与遍历到的网络层相同的网络层;如果存在,则将训练网络中与遍历到的网络层相同的网络层的数据存储空间分配给遍历到的网络层,以使测试网络的该网络层复用训练网络的相同网络层的数据存储空间;如果不存在,则为测试网络的该网络层分配独立的数据存储空间。
作为一个示例,在进行存储空间的优化之前,还可以先为训练网络的各个网络层分配数据存储空间,然后采用本申请实施例提供的方法,使得测试网络复用训练网络的数据存储空间,从而达到降低整个深度学习训练过程中对数据存储空间占用的目的。
在对训练网络和测试网络的数据存储空间进行优化之后,即可基于优化后的数据存储空间对训练网络进行训练,以及对测试网络进行测试。
作为一个示例,可以先对训练网络的各个网络层依次进行模拟运算,在对训练网络的各个网络层依次进行模拟运算后,基于模拟运算后的训练网络的网络参数,确定测试网络,然后对测试网络的各个网络层依次进行模拟运算,在对测试网络的各个网络层依次进行模拟运算的过程中,对于测试网络的第i层网络层,如果训练网络存在与第i层网络层相同的第二网络层,则将第i层网络层的数据存储在第二网络层的第一数据存储空间中;如果训练网络不存在与第i层网络层相同的第二网络层,则将第i层网络层的数据存储在为第i层网络层分配的第二数据存储空间中。其中,第i层网络层可以为测试网络中的任一网络层。
作为一个示例,在对测试网络的各个网络层依次进行模拟运算之前,还可以释放训练网络的各个网络层的数据存储空间。
作为一个示例,在将第i层网络层的数据存储在第二网络层的第一数据存储空间中时,如果第一数据存储空间已存储有数据,则可以采用将第i层网络层的数据覆盖已存储的数据的方式,将第i层网络层的数据存储在第二网络层的第一数据存储空间中,如此可以进一步降低对第一数据存储空间占用,实现对存储空间的进一步优化。
本申请实施例中,在对训练网络的各个网络层依次进行模拟运算的过程中,可以将各个网络层的数据存储至预先分配的对应的数据存储空间中,也可以进一步对训练网络的数据存储空间进行优化,以重新分配存储空间。下面将对这两种情况分别进行说明:
在一个实施例中,在对训练网络的各个网络层依次进行模拟运算的过程中,对于训练网络的第j层网络层,在对第j层网络层进行模拟运算后,将第j层网络层的数据存储在为第j层网络层分配的数据存储空间中。其中,第j层网络层可以为训练网络的任一网络层。
在一个实施例中,在对训练网络的各个网络层依次进行模拟运算的过程中,对于训练网络的第j层网络层,在对第j层网络层进行模拟运算后,检测第三数据存储空间是否被占用,第三数据存储空间用于存储第j层网络层或训练网络中第j层网络层之前的网络层的数据;如果第三数据存储空间被占用,则为第j层网络层的数据分配第四数据存储空间,并在满足预设条件时,释放被占用的该第三数据存储空间;如果第三数据存储空间未被占用,则将第三数据存储空间分配给第j层网络层使用。
该实施例中,通过在对训练网络的每一层进行模拟运算后,检测对应的数据存储空间是否被占用,在被占用的情况下,便重新分配数据存储空间,在满足预设条件时,释放被占用的数据存储空间,可以在需要对模拟运算的结果数据分配缓存时,自动识别数据存储空间的使用状态,根据使用状态重新分配数据存储空间,进一步提高了存储空间的优化效果,提高存储空间的利用率。
作为一个示例,在对训练网络的第j层网络层进行模拟运算后,可以检测第三数据存储空间是否被占用,第三数据存储空间用于存储第j层网络层的输入数据或训练网络中第j层网络层之前的网络层的输入数据和/或输出数据;如果第三数据存储空间被占用,则为第j层网络层的输出数据分配第四数据存储空间,并在满足预设条件时,释放被占用的第三数据存储空间;如果第三数据存储空间未被占用,则将第三数据存储空间分配给第j层网络层的输出数据使用。
作为一个示例,数据存储空间具有与其对应的占用或未占用的状态标记存储在数据存储空间状态表中,检测第三数据存储空间是否被占用的操作包括:根据第三数据存储空间的标识在数据存储空间状态表中查询第三数据存储空间对应的状态标记,根据该状态标记确定第三数据存储空间是否被占用。
作为一个示例,可以为训练网络的第j层网络层分配与第三数据存储空间紧邻的第四数据存储空间。
作为一个示例,可以在满足预设条件时,释放被占用的第三数据存储空间的操作包括:在对训练网络的第j+1层网络层进行模拟运算时,释放被占用的第三数据存储空间;或者,在对训练网络的第j层网络层进行模拟运算之后,在对训练网络的第j+1层网络层之前,释放被占用的第三数据存储空间;或者,在没有第四数据存储空间可分配时,释放被占用的所述第三数据存储空间。
综上所述,本申请实施例中,通过将训练网络的某个网络层的数据存储空间分配给测试网络中的相同网络层使用,实现了测试网络和训练网络的相同网络层对数据存储空间的复用,从而减小了深度学习网络在训练中对数据存储空间的占用,减小了容易出现存储空间不足的风险。
图5是本申请实施例提供的一种存储空间优化装置的结构示意图,该装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该装置可以集成于CPU或GPU,用于对CPU的内存或GPU的显存进行优化。请参考图5,该装置包括:获取模块501、确定模块502和分配模块503。
获取模块501,用于获取深度学习网络对应的训练网络和测试网络;
确定模块502,用于确定训练网络的第一网络层,第一网络层为训练网络的任一网络层;
分配模块503,用于如果训练网络存在与第一网络层相同的第二网络层,则将第二网络层的第一数据存储空间分配给第一网络层使用,第一数据存储空间用于存储第二网络层的数据。
可选地,确定模块502用于:
对测试网络包括的N个网络层进行遍历,N为正整数;
将遍历到的当前网络层,确定为第一网络层。
可选地,分配模块503还用于:
如果训练网络不存在与第一网络层相同的第二网络层,则为第一网络层分配第二数据存储空间。
可选地,装置还包括运算模块,运算模块用于:
对训练网络的各个网络层依次进行模拟运算;
在对训练网络的各个网络层依次进行模拟运算后,基于模拟运算后的训练网络的网络参数,确定测试网络;
对测试网络的各个网络层依次进行模拟运算;
在对测试网络的各个网络层依次进行模拟运算的过程中,对于测试网络的第i层网络层,如果训练网络存在与第i层网络层相同的第二网络层,则将第i层网络层的数据存储在第二网络层的第一数据存储空间中;
如果训练网络不存在与第i层网络层相同的第二网络层,则将第i层网络层的数据存储在为第i层网络层分配的第二数据存储空间中。
可选地,运算模块还用于:
释放训练网络的各个网络层的数据存储空间。
可选地,运算模块还用于:
对于训练网络的第j层网络层,在对第j层网络层进行模拟运算后,将第j层网络层的数据存储在为第j层网络层分配的数据存储空间中。
可选地,运算模块还用于:
对于训练网络的第j层网络层,在对第j层网络层进行模拟运算后,检测第三数据存储空间是否被占用,第三数据存储空间用于存储第j层网络层或第j层网络层之前的网络层的数据;
如果第三数据存储空间被占用,则为第j层网络层的数据分配第四数据存储空间,并在满足预设条件时,释放被占用的第三数据存储空间。
可选地,运算模块还用于:
如果第三数据存储空间未被占用,则将第三数据存储空间分配给训练网络的第j层网络层使用。
本申请实施例中,通过将训练网络的某个网络层的数据存储空间分配给测试网络中的相同网络层使用,实现了测试网络和训练网络的相同网络层对数据存储空间的复用,从而减小了深度学习网络在训练中对数据存储空间的占用,减小了容易出现存储空间不足的风险。
需要说明的是:上述实施例提供的存储空间优化装置在对深度学习网络的数据存储空间进行优化时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的存储空间优化装置与存储空间优化方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本申请实施例提供的一种计算机设备600的结构框图。该计算机设备600可以是手机、平板电脑、智能电视、多媒体播放设备、可穿戴设备、台式电脑、服务器等电子设备。该计算机设备600可用于实施上述实施例中提供的存储空间优化方法。
通常,计算机设备600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的存储空间优化方法。
在一些实施例中,计算机设备600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备可以包括:显示屏604、音频电路605、通信接口606和电源607中的至少一种。
在一些实施例中,计算机设备600还包括有:GPU和GPU的存储器(显存)。可选地,GPU可以运行训练网络和测试网络,并可以将训练网络和测试网络产生的中间数据存储至显存中。
本领域技术人员可以理解,图6中示出的结构并不构成对计算机设备600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中存储空间优化方法的步骤。例如,所述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。
也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的存储空间优化方法的步骤。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种存储空间优化方法,其特征在于,所述方法包括:
获取深度学习网络对应的训练网络和测试网络;
确定所述测试网络的第一网络层,所述第一网络层为所述测试网络的任一网络层;
如果所述训练网络存在与所述第一网络层相同的第二网络层,则将所述第二网络层的第一数据存储空间分配给所述第一网络层使用,所述第一数据存储空间用于存储所述第二网络层的数据。
2.根据权利要求1所述的方法,其特征在于,所述确定所述测试网络的第一网络层,包括:
对所述测试网络包括的N个网络层依次进行遍历,所述N为正整数;
将遍历到的当前网络层,确定为所述第一网络层。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述训练网络不存在与所述第一网络层相同的第二网络层,则为所述第一网络层分配第二数据存储空间。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
对所述训练网络的各个网络层依次进行模拟运算;
在对所述训练网络的各个网络层依次进行模拟运算后,基于模拟运算后的训练网络的网络参数,确定所述测试网络;
对所述测试网络的各个网络层依次进行模拟运算;
在对所述测试网络的各个网络层依次进行模拟运算的过程中,对于所述测试网络的第i层网络层,如果所述训练网络存在与所述第i层网络层相同的第二网络层,则将所述第i层网络层的数据存储在所述第二网络层的第一数据存储空间中;
如果所述训练网络不存在与所述第i层网络层相同的第二网络层,则将所述第i层网络层的数据存储在为所述第i层网络层分配的第二数据存储空间中。
5.根据权利要求4所述的方法,其特征在于,所述对所述测试网络的各个网络层依次进行模拟运算之前,还包括:
释放所述训练网络的各个网络层的数据存储空间。
6.根据权利要求4所述的方法,其特征在于,所述对所述训练网络的各个网络层依次进行模拟运算,包括:
对于所述训练网络的第j层网络层,在对所述第j层网络层进行模拟运算后,将所述第j层网络层的数据存储在为所述第j层网络层分配的数据存储空间中。
7.根据权利要求4所述的方法,其特征在于,所述对所述训练网络的各个网络层依次进行模拟运算,包括:
对于所述训练网络的第j层网络层,在对所述第j层网络层进行模拟运算后,检测第三数据存储空间是否被占用,所述第三数据存储空间用于存储所述第j层网络层或所述第j层网络层之前的网络层的数据;
如果所述第三数据存储空间被占用,则为所述第j层网络层的数据分配第四数据存储空间,并在满足预设条件时,释放被占用的所述第三数据存储空间。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
如果所述第三数据存储空间未被占用,则将所述第三数据存储空间分配给所述第j层网络层使用。
9.根据权利要求1-8任一所述的方法,其特征在于,所述训练网络和所述测试网络的数据存储空间位于图形处理器GPU的显存中。
10.一种存储空间优化装置,其特征在于,所述装置包括:
获取模块,用于获取深度学习网络对应的训练网络和测试网络;
确定模块,用于确定所述测试网络的第一网络层,所述第一网络层为所述测试网络的任一网络层;
分配模块,用于如果所述训练网络存在与所述第一网络层相同的第二网络层,则将所述第二网络层的第一数据存储空间分配给所述第一网络层使用,所述第一数据存储空间用于存储所述第二网络层的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911184271.6A CN112862085B (zh) | 2019-11-27 | 2019-11-27 | 存储空间优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911184271.6A CN112862085B (zh) | 2019-11-27 | 2019-11-27 | 存储空间优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112862085A CN112862085A (zh) | 2021-05-28 |
CN112862085B true CN112862085B (zh) | 2023-08-22 |
Family
ID=75985758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911184271.6A Active CN112862085B (zh) | 2019-11-27 | 2019-11-27 | 存储空间优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112862085B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019668B1 (en) * | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
CN108615077A (zh) * | 2016-12-09 | 2018-10-02 | 杭州海康威视数字技术股份有限公司 | 一种应用于深度学习网络的缓存优化方法及装置 |
CN109992404A (zh) * | 2017-12-31 | 2019-07-09 | 中国移动通信集团湖北有限公司 | 集群计算资源调度方法、装置、设备及介质 |
US10459849B1 (en) * | 2018-08-31 | 2019-10-29 | Sas Institute Inc. | Scheduling operations in an access-controlled region of memory |
CN110462640A (zh) * | 2017-04-04 | 2019-11-15 | 海露科技有限公司 | 神经网络处理器中基于可配置且可编程的滑动窗口的存储器访问 |
CN110490295A (zh) * | 2018-05-15 | 2019-11-22 | 华为技术有限公司 | 一种神经网络模型、数据处理方法及处理装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3502975A1 (en) * | 2017-12-20 | 2019-06-26 | Fujitsu Limited | Methods and apparatus for model parallelism in artificial neural networks |
-
2019
- 2019-11-27 CN CN201911184271.6A patent/CN112862085B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108615077A (zh) * | 2016-12-09 | 2018-10-02 | 杭州海康威视数字技术股份有限公司 | 一种应用于深度学习网络的缓存优化方法及装置 |
CN110462640A (zh) * | 2017-04-04 | 2019-11-15 | 海露科技有限公司 | 神经网络处理器中基于可配置且可编程的滑动窗口的存储器访问 |
US10019668B1 (en) * | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
CN109992404A (zh) * | 2017-12-31 | 2019-07-09 | 中国移动通信集团湖北有限公司 | 集群计算资源调度方法、装置、设备及介质 |
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
CN110490295A (zh) * | 2018-05-15 | 2019-11-22 | 华为技术有限公司 | 一种神经网络模型、数据处理方法及处理装置 |
US10459849B1 (en) * | 2018-08-31 | 2019-10-29 | Sas Institute Inc. | Scheduling operations in an access-controlled region of memory |
Non-Patent Citations (1)
Title |
---|
蒋文斌等.基于AVX2指令集的深度学习混合运算策略.清华大学学报(自然科学版).2020,(05),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112862085A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109409513B (zh) | 一种基于神经网络的任务处理方法及相关设备 | |
US20220035544A1 (en) | Memory allocation method and device, and electronic apparatus | |
WO2019031858A1 (en) | METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK | |
CN102023843B (zh) | 函数的调用方法、装置及智能卡 | |
CN112529169A (zh) | 数据处理方法、模型优化装置和模型执行装置 | |
CN104111870B (zh) | 一种中断处理装置及中断处理方法 | |
CN105700956A (zh) | 用于处理分布式作业的方法和系统 | |
US20130207983A1 (en) | Central processing unit, gpu simulation method thereof, and computing system including the same | |
CN111984400A (zh) | 神经网络的内存分配方法及装置 | |
CN112181657A (zh) | 视频处理方法、装置、电子设备及存储介质 | |
CN108615077B (zh) | 一种应用于深度学习网络的缓存优化方法及装置 | |
CN105830160B (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
CN109697083B (zh) | 数据的定点化加速方法、装置、电子设备及存储介质 | |
CN109165554B (zh) | 一种基于cuda技术的人脸特征比对方法 | |
CN112862085B (zh) | 存储空间优化方法及装置 | |
US9606802B2 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
CN115794359A (zh) | 用于联邦学习的异构系统及处理方法 | |
CN112669852A (zh) | 内存分配方法、装置及电子设备 | |
CN110544166A (zh) | 样本生成方法、装置及存储介质 | |
CN114697705B (zh) | 视频流对象处理方法、装置、视频流处理系统、电子设备 | |
CN114331198A (zh) | 工单分配方法、设备及存储介质 | |
CN112130977B (zh) | 一种任务调度方法、装置、设备及介质 | |
CN104750560B (zh) | 一种信息处理方法及电子设备 | |
CN111667411A (zh) | 一种图像传输方法、装置、电子设备及存储介质 | |
CN111831953B (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 |