CN114003306B - 一种显存优化方法、装置、设备及存储介质 - Google Patents

一种显存优化方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114003306B
CN114003306B CN202111254294.7A CN202111254294A CN114003306B CN 114003306 B CN114003306 B CN 114003306B CN 202111254294 A CN202111254294 A CN 202111254294A CN 114003306 B CN114003306 B CN 114003306B
Authority
CN
China
Prior art keywords
graph
calculation
video memory
determining
time
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
CN202111254294.7A
Other languages
English (en)
Other versions
CN114003306A (zh
Inventor
赵成钢
颜子杰
张宇帆
张行程
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.)
Shanghai Sensetime Technology Development Co Ltd
Original Assignee
Shanghai Sensetime Technology Development Co Ltd
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 Shanghai Sensetime Technology Development Co Ltd filed Critical Shanghai Sensetime Technology Development Co Ltd
Priority to CN202111254294.7A priority Critical patent/CN114003306B/zh
Publication of CN114003306A publication Critical patent/CN114003306A/zh
Priority to PCT/CN2022/093101 priority patent/WO2023071149A1/zh
Application granted granted Critical
Publication of CN114003306B publication Critical patent/CN114003306B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请实施例提供一种显存优化方法、装置、设备及存储介质,其中,所述方法包括:基于预设网络模型,生成第一计算图;确定所述第一计算图的显存峰值与运行数据之间的关联关系;基于所述关联关系,对所述第一计算图进行调整,生成至少一个第二计算图;基于所述至少一个第二计算图的显存峰值和运行时长,在所述至少一个第二计算图中确定目标计算图;基于所述目标计算图,确定所述预设网络模型所需的显存空间。

Description

一种显存优化方法、装置、设备及存储介质
技术领域
本申请实施例涉及数据处理技术领域,涉及但不限于一种显存优化方法、装置、设备及存储介质。
背景技术
随着深度学习领域的快速发展,训练拥有超多参数的大模型甚至超大模型逐渐步入人们的视野。训练模型逐渐变大变深的同时必然会使显存的开销加剧增长,当模型进一步加大,或者加大批大小(Batch size)后,模型训练的显存占用也会随之增长,最后高于显卡的显存容量,使得模型无法训练。
发明内容
本申请实施例提供一种显存优化技术方案。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种显存优化方法,所述方法包括:
基于预设网络模型,生成第一计算图;
确定所述第一计算图的显存峰值与运行数据之间的关联关系;
基于所述关联关系,对所述第一计算图进行调整,生成至少一个第二计算图;
基于所述至少一个第二计算图的显存峰值和运行时长,在所述至少一个第二计算图中确定目标计算图;
基于所述目标计算图,确定所述预设网络模型所需的显存空间。
在一些实施例中,所述基于预设网络模型,生成第一计算图,包括:基于所述预设网络模型,生成数据交换格式的计算图信息;基于所述计算图信息中的算子队列,生成所述计算图信息匹配的第一计算图。如此,通过采用深度学习框架将需要训练的模型生成JSON格式的计算图,能够得到第一计算图,进而通过多种优化方案对第一计算图进行调整生成多个第二计算图,便于从中筛选显存花销最优的计算图。
在一些实施例中,所述确定所述第一计算图的显存峰值与运行数据之间的关联关系,包括:确定所述第一计算图中显存峰值的出现时刻;确定所述第一计算图中算子的运行数据;确定所述运行数据的生成时刻和所述运行数据在所述第一计算图中的应用时刻;确定所述生成时刻和所述应用时刻,与所述显存峰值的出现时刻之间的时序关系,为所述关联关系。如此,通过分析算子生成的运行数据的时刻和应用该运行数据的时刻,与达到显存峰值的时刻之间的时序关系,能够进一步确定是否需要移动该算子以降低峰值。
在一些实施例中,基于所述关联关系,对所述第一计算图进行调整,生成至少一个第二计算图,包括:在所述第一计算图中,确定所述关联关系满足预设条件的目标运行数据;基于所述目标运行数据,对所述第一计算图进行调整,生成所述至少一个第二计算图。如此,通过在第一计算图中,移动目标运行数据对应的算子,得到第二计算图,从而能够降低第二计算图的峰值。
在一些实施例中,所述在所述第一计算图中,确定所述关联关系满足预设条件的目标运行数据,包括:在所述第一计算图中的算子的运行数据中,确定生成时刻在所述显存峰值的出现时间之前且应用时刻在所述显存峰值的出现时刻之后的运行数据,为满足所述预设条件的目标运行数据。
在一些实施例中,所述基于所述目标运行数据,对所述第一计算图进行调整,生成所述至少一个第二计算图,包括:在所述第一计算图中,确定所述目标运行数据对应的目标算子;基于所述第一计算图中所述显存峰值的出现时刻,调整所述第一计算图中的所述目标算子,生成所述至少一个第二计算图。如此,针对第一计算图,通过按照该第一计算图中显存峰值的出现时刻,移动目标算子,从而能够生成多个第二计算图。
在一些实施例中,所述基于所述第一计算图中所述显存峰值的出现时刻,调整所述第一计算图中的所述目标算子,生成所述至少一个第二计算图,包括:在所述第一计算图中,将所述目标算子的执行时刻调整至所述显存峰值的出现时刻之后,生成所述第二计算图。如此,通过移动目标算子至显存峰值之后,能够降低新生成的第一计算图的峰值,从而优化第二计算图所需的显存空间。
在一些实施例中,所述基于所述至少一个第二计算图的显存峰值和运行时长,在所述至少一个第二计算图中确定目标计算图,包括:获取预设显存开销和预设权衡比值;其中,所述预设权衡比值用于权衡计算图的运行时长和所需显存之间的比重;基于所述预设显存开销和预设权衡比值,对所述每一第二计算图的显存峰值、运行时长和所述对应的第一计算图的运行时长进行评分,得到所述每一第二计算图的评分结果;基于所述每一第二计算图的评分结果,对所述至少一个第二计算图中的第二计算图进行排序,得到排序队列;基于所述排序队列,确定所述目标计算图。如此,能够通过队列搜索查找到显存开销最优的目标计算图。
在一些实施例中,所述基于所述预设显存开销和预设权衡比值,对所述每一第二计算图的显存峰值、运行时长和所述对应的第一计算图的运行时长进行评分,得到所述每一第二计算图的评分结果,包括:基于所述每一第二计算图的显存峰值、所述预设显存开销和预设权衡比值,确定所述每一第二计算图的显存评分;基于所述预设权衡比值、所述每一第二计算图的运行时长和所述对应的第一计算图的运行时长,确定所述每一第二计算图的运行时长评分;基于所述每一第二计算图的显存评分和所述运行时长评分,确定所述每一第二计算图像的评分结果。如此,在对第二计算图进行评分的阶段,综合考虑第二计算图的运行时长和显存峰值,使最后的计算图在优化显存空间的同时不会牺牲大量时间成本。
在一些实施例中,所述基于所述排序队列,确定所述目标计算图,包括:在所述排列队列中,搜索评分结果最优的第一候选计算图;响应于搜索到的所述第一候选计算图所需的显存空间满足所述预设显存开销,确定所述第一候选计算图为所述目标计算图。如此,既能够尽可能地减少搜索次数,还能够使得搜索到的目标计算图的显存开销较小。
在一些实施例中,所述基于所述排序队列,确定所述目标计算图,包括:响应于所述第一候选计算图所需的显存空间不满足所述预设显存开销,基于所述第一候选计算图的目标运行数据,对所述第一候选计算图进行调整,得到至少一个第三计算图;基于所述至少一个第三计算图的评分结果更新所述排列队列,得到已更新的排列队列;在所述已更新的排列队列中,搜索评分结果最优的第二候选计算图所需的显存空间是否满足所述预设显存开销;响应于所述第二候选计算图所需的显存空间不满足所述预设显存开销,且搜索次数达到预设次数阈值,确定末次搜索对应的排列队列中评分结果最优的计算图为所述目标计算图。如此,在搜索不到满足预设显存开销的计算图的情况下,将最新的排列队列中评分最优的计算图作为目标计算图,从而使得搜索到的目标计算图是空间开销最优的计算图。
在一些实施例中,所述基于所述目标计算图,确定所述预设网络模型所需的显存空间,包括:将所述目标计算图所需的显存空间,确定为训练所述预设网络模型所需的显存空间。如此,能够优化训练该网络模型所需的显存空间,并且不会牺牲训练该网络模型所需的运行时长。
本申请实施例提供一种显存优化装置,所述装置包括:
第一生成模块,用于基于预设网络模型,生成第一计算图;
第一确定模块,用于确定所述第一计算图的显存峰值与运行数据之间的关联关系;
第二生成模块,用于基于所述关联关系,对所述第一计算图进行调整,生成至少一个第二计算图;
第二确定模块,用于基于所述至少一个第二计算图的显存峰值和运行时长,在所述至少一个第二计算图中确定目标计算图;
第三确定模块,用于基于所述目标计算图,确定所述预设网络模型所需的显存空间。
在一些实施例中,所述第一生成模块,包括:
第一生成子模块,用于基于所述预设网络模型,生成数据交换格式的计算图信息;
第二生成子模块,用于基于所述计算图信息中的算子队列,生成所述计算图信息匹配的第一计算图。
在一些实施例中,所述第一确定模块,包括:
第一确定子模块,用于确定所述第一计算图中显存峰值的出现时刻;
第二确定子模块,用于确定所述第一计算图中算子的运行数据;
第三确定子模块,用于确定所述运行数据的生成时刻和所述运行数据在所述第一计算图中的应用时刻;确定所述生成时刻和所述应用时刻,与所述显存峰值的出现时刻之间的时序关系,为所述关联关系。
在一些实施例中,所述第二生成模块,包括:
第四确定子模块,用于在所述第一计算图中,确定所述关联关系满足预设条件的目标运行数据;
第一调整子模块,用于基于所述目标运行数据,对所述第一计算图进行调整,生成所述至少一个第二计算图。
在一些实施例中,所述第四确定子模块,包括:
第一确定单元,用于在所述第一计算图中的算子的运行数据中,确定生成时刻在所述显存峰值的出现时间之前且应用时刻在所述显存峰值的出现时刻之后的运行数据,为满足所述预设条件的目标运行数据。
在一些实施例中,所述第一调整子模块,包括:
第二确定单元,用于在所述第一计算图中,确定所述目标运行数据对应的目标算子;
第一调整单元,用于基于所述第一计算图中所述显存峰值的出现时刻,调整所述第一计算图中的所述目标算子,生成所述至少一个第二计算图。
在一些实施例中,所述第一调整单元,还用于:
在所述第一计算图中,将所述目标算子的执行时刻调整至所述显存峰值的出现时刻之后,生成所述第二计算图。
在一些实施例中,所述第二确定模块,包括:
第一获取子模块,用于获取预设显存开销和预设权衡比值;其中,所述预设权衡比值用于权衡计算图的运行时长和所需显存之间的比重;
第一评分子模块,用于基于所述预设显存开销和预设权衡比值,对所述每一第二计算图的显存峰值、运行时长和所述对应的第一计算图的运行时长进行评分,得到所述每一第二计算图的评分结果;
第一排序子模块,用于基于所述每一第二计算图的评分结果,对所述至少一个第二计算图中的第二计算图进行排序,得到排序队列;
第五确定子模块,用于基于所述排序队列,确定所述目标计算图。
在一些实施例中,所述第一评分子模块,包括:
第三确定单元,用于基于所述每一第二计算图的显存峰值、所述预设显存开销和预设权衡比值,确定所述每一第二计算图的显存评分;
第一评分单元,用于基于所述预设权衡比值、所述每一第二计算图的运行时长和所述对应的第一计算图的运行时长,确定所述每一第二计算图的运行时长评分;
第四确定单元,用于基于所述每一第二计算图的显存评分和所述运行时长评分,确定所述每一第二计算图像的评分结果。
在一些实施例中,所述第五确定子模块,包括:
第一搜索单元,用于在所述排列队列中,搜索评分结果最优的第一候选计算图;
第五确定单元,用于响应于搜索到的所述第一候选计算图所需的显存空间满足所述预设显存开销,确定所述第一候选计算图为所述目标计算图。
在一些实施例中,所述第五确定子模块,包括:
第二调整单元,用于响应于所述第一候选计算图所需的显存空间不满足所述预设显存开销,基于所述第一候选计算图的目标运行数据,对所述第一候选计算图进行调整,得到至少一个第三计算图;
第一更新单元,用于基于所述至少一个第三计算图的评分结果更新所述排列队列,得到已更新的排列队列;
第二搜索单元,用于在所述已更新的排列队列中,搜索评分结果最优的第二候选计算图所需的显存空间是否满足所述预设显存开销;
第六确定单元,用于响应于所述第二候选计算图所需的显存空间不满足所述预设显存开销,且搜索次数达到预设次数阈值,确定末次搜索对应的排列队列中评分结果最优的计算图为所述目标计算图。
在一些实施例中,所述第三确定模块,还用于:
将所述目标计算图所需的显存空间,确定为训练所述预设网络模型所需的显存空间。
本申请实施例提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令被执行后,能够实现上述的显存优化方法。
本申请实施例提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时能够实现上述的显存优化方法。
本申请实施例提供一种显存优化方法、装置、设备及存储介质,对于获取的预设网络模型,对于获取的预设网络模型,首先,通过生成表示该网络模型运行过程的第一计算图,并分析该第一计算图中运行所需的显存峰值与各算子的运行数据之间的关联关系,从而能够通过对第一计算图进行优化生成至少一个第二计算图;然后,综合考虑该第二计算图的显存峰值以及运行该第二计算图所需的运行时长,在多个第二计算图中查找目标计算图;这样,搜索到的目标计算图既能够优化显存空间,还能够兼顾运行时长。最后,通过该目标计算图,实现对预设网络模型所需的显存空间的优化。如此,通过在生成的多个第二计算图中搜索显存花销最优的目标计算图,而且在搜索目标计算图的过程中,将计算图的时间开销也综合加入到计算图的考量之中,使得最终的目标计算图同时满足空间预算和时间预算,从而在不牺牲大量时间成本的基础上,优化了显存空间。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开实施例的实施例,并与说明书一起用于说明本公开实施例的技术方案。应当理解,以下附图仅示出了本公开实施例的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的显存优化方法的实现流程示意图;
图2为本申请实施例提供的显存优化方法的另一实现流程示意图;
图3A为本申请实施例提供的显存优化方法的另一实现流程示意图;
图3B为本申请实施例提供的显存优化方法的应用场景示意图;
图4A为本申请实施例提供的显存优化方法的再一实现流程示意图;
图4B为本申请实施例提供的显存优化方法的另一应用场景示意图;
图5为本申请实施例提供的计算图占据显存的曲线变化示意图;
图6为本申请实施例提供的显存优化方法的实现流程示意图;
图7为本申请实施例显存优化装置的结构组成示意图;
图8为本申请实施例计算机设备的组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
(1)计算图,将计算过程图形化表示出来;是一种描述方程的“语言”,既然是图,则有节点(变量),边(操作(简单函数))。在深度学习领域,神经网络模型本质上都可以用一个计算图来表示,其训练过程可以分为三个部分:前向传播,反向传播,参数更新。
(2)显存,也被叫做帧缓存,用于存储显卡芯片处理过的数据或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。
下面说明本申请实施例提供的显存优化的设备的示例性应用,本申请实施例提供的设备可以实施为具有图像采集功能的笔记本电脑,平板电脑,台式计算机,相机,移动设备(例如,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明设备实施为终端或服务器时示例性应用。
该方法可以应用于计算机设备,该方法所实现的功能可以通过计算机设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算机设备至少包括处理器和存储介质。
本申请实施例提供一种显存优化方法,如图1所示,结合如图1所示步骤进行说明:
步骤S101,基于预设网络模型,生成第一计算图。
在一些实施例中,预设网络模型可以是任意类型的待训练网络模型,比如,待训练的深度神经网络模型、待训练的残差网络模型或者任一大规模的待训练神经网络模型等。第一计算图为该预设网络模型的计算过程的图形化表示,包括相连接的节点和边。其中,节点表示该计算图中的执行任务的各个算子,边用于将各个算子按照该网络模型中各任务的执行顺序进行连接。
在一些可能的实现方式中,将该预设网络模型输入到规深度学习框架(比如,tensorflow、pytorch或parrots等),将该网络模型生成JS对象简谱格式(JavaScriptObject Notation,JSON)的计算图信息;通过读入JSON格式的计算图信息编排算子队列,将每一算子的输入数据和输出数据依次与操作数据进行匹配,从而生成一个第一计算图,这样,基于每一深度学习框架生成的JSON格式的计算图信息均能够生成一个计算图。在一个具体例子中,以该网络模型为待训练的图像识别网络,该网络中包括输入层、卷积层、池化层和全连接层等;首先,将该图像识别网络输入到不同的深度学习框架中进行JSON格式的计算图信息提取,得到每一框架对应的JSON格式的计算图信息,在该计算图信息中,输入层、卷积层、池化层和全连接层分别表示为执行不同任务的算子;然后,按照这些算子的执行顺序,通过操作边将不同的算子连接起来,得到表示该图像识别网络的第一计算图。
步骤S102,确定所述第一计算图的显存峰值与运行数据之间的关联关系。
在一些实施例中,第一计算图的显存峰值为该第一计算图在运行过程中所需显存空间的峰值。通过遍历第一计算图,可确定依次运行第一计算图中的所有算子所需的显存空间,以及在整个运行过程中出现的显存峰值。运行数据指的是第一计算图的运行数据。第一计算图的运行数据包括:在遍历该第一计算图的过程中每一算子所产生的数据。在该步骤中,通过遍历第一计算图,能够得到该第一计算图所需显存的峰值,以及每一算子的运行数据,从而分析出现该显存峰值的时刻与每一算子的运行数据的产生时刻以及该运行数据的应用时刻的时序关系;并将该时序关系作为第一计算图的显存峰值与运行数据之间的关联关系。比如,一些算子的运行数据产生时刻与该运行数据的应用时刻均在显存峰值出现时刻之后,或者,一些算子的运行数据产生时刻与该运行数据的应用时刻均在显存峰值出现时刻之前,或者,一些算子的运行数据产生时刻在显存峰值出现时刻之前,且该运行数据的应用时刻在显存峰值出现时刻之后。
步骤S103,基于所述关联关系,对所述第一计算图进行调整,生成至少一个第二计算图。
在一些实施例中,按照第一计算图中显存峰值的出现时刻,与算子的运行数据的生成时刻以及该运行数据的应用时刻之间的时序关系,确定该第一计算图的至少一种优化方案,基于该优化方案对第一计算图进行调整,生成每一优化方案对应的第二计算图。在一些可能的实现方式中,通过该第一计算图的任一种优化方案对第一计算图进行调整,将调整后的第一计算图作为该第二计算图,即第二计算图是通过采用该优化方案对第一计算图调整后得到的。如此,在确定第一计算图的多种优化方案的情况下,通过该多种优化方案逐一对第一计算图进行调整,可得到多个第二计算图。
在一些可能的实现方式中,对第一计算图的调整可以是,通过分析显存峰值与运行数据之间的关联关系,如果该关联关系满足预设条件,即如果第一计算图中任一算子的运行数据的生成时刻在该显存峰值的出现时刻之前,但是该算子的运行数据的应用时刻在该显存峰值的出现时刻之后;那么将该算子在第一计算图中的执行时刻移动到显存峰值之后,实现对第一计算图的调整,得到第二计算图。在第一计算图中,筛选出目标运行数据对应的算子,目标运行数据即为运行数据产生时刻在显存峰值出现时刻之前,且该运行数据的应用时刻在显存峰值出现时刻后的运行数据;通过在第一计算图中对该目标运行数据对应的算子进行移动,从而得到至少一个第二计算图。
在一些可能的实现方式中,设定该预设条件为算子的运行数据产生时刻在显存峰值出现时刻之前且该运行数据的应用时刻在显存峰值出现时刻之后。这样,在第一计算图的各个算子的运行数据中,筛选出算子的运行数据产生时刻在显存峰值出现时刻之前且应用时刻在显存峰值出现时刻之后的目标运行数据。将每一个目标运行数据作为第一计算图的一个优化方案,通过移动这些目标运行数据对应的算子,从而生成至少一个第二计算图。
步骤S104,基于所述至少一个第二计算图的显存峰值和运行时长,在所述至少一个第二计算图中确定目标计算图。
在一些实施例中,通过遍历第二计算图,得到第二计算图所需显存空间的显存峰值,即第二计算图的显存峰值,以及运行该第二计算图所需的运行时长,即第二计算图的运行时长。通过结合该第二计算图的运行时长,在该多个第二计算图中查找显存开销满足预设显存空间的计算图,即可得到该目标计算图。
在一些可能的实现方式中,重新运行每一第二计算图,得到该第二计算图的显存峰值和运行时长;通过获取设定的显存开销预算以及设定的用于权衡运行时长与显存空间比重的参数,结合新生成的第二计算图的显存峰值、运行时长以及该第二计算图对应的原始计算图的运行时长,确定该第二计算图的评分;按照每一第二计算图的评分,从多个第二计算图中搜索显存开销满足预设显存空间的目标计算图,或者搜索显存开销最优的目标计算图。
步骤S105,基于所述目标计算图,确定所述预设网络模型所需的显存空间。
在一些实施例中,通过运行该目标计算图,可预估训练该预设网络模型所需的显存空间以及花费的时间。将该目标计算图的运行时长作为训练该预设网络模型的时长,将该目标计算图运行所需的显存空间,作为训练该预设网络模型所需的显存空间,而且随着模型的增大以及批大小的增加,目标计算图可优化的显存空间也将变大,从而能够更进一步的优化训练该网络模型的显存空间。
在本申请实施例中,对于获取的预设网络模型,首先,通过生成表示该网络模型运行过程的第一计算图,并分析该第一计算图中运行所需的显存峰值与各算子的运行数据之间的关联关系,从而能够通过对第一计算图进行优化生成至少一个第二计算图;然后,综合考虑该第二计算图的显存峰值以及运行该第二计算图所需的运行时长,在多个第二计算图中查找目标计算图;这样,搜索到的目标计算图既能够优化显存空间,还能够兼顾运行时长。最后,通过该目标计算图,实现对预设网络模型所需的显存空间的优化。如此,通过在生成的多个第二计算图中搜索显存花销最优的目标计算图,而且在搜索目标计算图的过程中,将计算图的时间开销也综合加入到计算图的考量之中,使得最终的目标计算图同时满足空间预算和时间预算,从而在不牺牲大量时间成本的基础上,优化了显存空间。
在一些实施例中,通过读入不同深度学习框架提取的JSON格式的计算图信息,生成多个第一计算图,即上述步骤S101可以通过以下步骤S111和S112(图示未示出)实现:
步骤S111,基于所述预设网络模型,生成数据交换格式的计算图信息。
在一些实施例中,将该预设网络模型输入到不同的深度学习框架中,以提取该预设网络模型的JSON文件格式的计算图信息,该计算图信息中包括执行不同任务的算子,操作数以及每一算子的输入和输出等。
步骤S112,基于所述计算图信息中的算子队列,生成所述计算图信息匹配的第一计算图。
在一些实施例中,通过分析各个算子在预设神经网络中执行任务的次序,按照执行任务的次序,将各算子编排为队列;并将该各算子的输入输出依次与操作数进行匹配,通过操作边将各个算子连接起来,形成第一计算图;进而基于采用不同深度学习框架提取的JSON格式的计算图信息,能够得到多个第一计算图,即第一计算图。如此,通过采用深度学习框架将需要训练的模型生成JSON格式的计算图,能够得到第一计算图,进而通过多种优化方案对第一计算图进行调整生成多个第二计算图,便于从中筛选显存花销最优的计算图。
在一些实施例中,通过分析第一计算图中算子的运行数据的生成时刻以及应用时刻,与峰值出现时刻的时序关系,得到第一计算图的显存峰值与运行数据之间的关联关系,即上述步骤S102可以通过以下步骤S121至S124(图示未示出)实现:
步骤S121,确定所述第一计算图中显存峰值的出现时刻。
在一些实施例中,通过遍历运行第一计算图,能够确定出该第一计算图所需显存空间达到峰值的时刻;即运行第一计算图的过程中,显存峰值出现在整个运行时长内的时刻。
步骤S122,确定所述第一计算图中算子的运行数据。
在一些实施例中,通过遍历运行每一第一计算图,能够得到第一计算图中每一算子在运行过程中产生的数据、产生该数据的时刻以及应用该数据的时刻,即运行数据、运行数据的生成时刻和运行数据的应用时刻。
步骤S123,确定所述运行数据的生成时刻和所述运行数据在所述第一计算图中的应用时刻。
在一些实施例中,通过遍历运行每第一计算图,能够得到第一计算图中显存峰值的出现时刻、每一算子在运行过程中产生的运行数据的生成时刻以及该运行数据的应用时刻。
步骤S124,确定所述生成时刻和所述应用时刻,与所述显存峰值的出现时刻之间的时序关系,为所述关联关系。
在一些实施例中,通过分析该运行数据的生成时刻和该运行数据的应用时刻,与该显存峰值的出现时刻之间的时序关系,得到显存峰值与运行数据之间的关联关系。如此,通过分析算子生成的运行数据的时刻和应用该运行数据的时刻,与达到显存峰值的时刻之间的时序关系,能够进一步确定是否需要移动该算子以降低峰值。
在一些实施例中,通过分析算子的运行数据的生成时刻以及运行数据的应用时刻,与峰值出现时刻的时序关系,确定该运行数据是否满足预设条件,进而对该第一计算图进行调整,生成至少一个第二计算图,即上述步骤S103可以通过图2所示的步骤实现,图2为本申请实施例提供的显存优化方法的另一实现流程示意图,结合图1和2所示的步骤进行以下说明:
步骤S201,在所述第一计算图中,确定所述关联关系满足预设条件的目标运行数据。
在一些实施例中,在所述第一计算图中的算子的运行数据中,确定生成时刻在所述显存峰值的出现时间之前且应用时刻在所述显存峰值的出现时刻之后的运行数据,为满足所述预设条件的目标运行数据。在一些可能的实现方式中,在所述每一第一计算图中算子的运行数据中,确定生成时刻在所述显存峰值的出现时间之前的运行数据;响应于所述目标运行数据的应用时刻在所述显存峰值的出现时刻之后,确定该运行数据为目标运行数据。
在一些实施例中,在遍历运行第一计算图之后得到该第一计算图中各个算子在运行过程中产生的运行数据,从这些算子的运行数据中,查找运行数据的生成时刻在该第一计算图的显存峰值出现时刻之前的运行数据。即运行数据是算子在显存峰值出现之前产生的,说明该运行数据占据的显存包含在该显存峰值中。在查找到目标运行数据之后,确定该目标运行数据的应用时刻;并判断该应用时刻是否在显存峰值的出现时刻之后,如果该运行数据的应用时刻是否在显存峰值的出现时刻之后,即说明该算子在运行第一计算图的过程中产生运行数据的时刻在显存峰值的出现时刻之前,但是该运行数据的应用时刻在显存峰值的出现时刻之后;进一步说明该运行数据虽然增加了显存峰值的大小,但是并没有在达到显存峰值之前使用,而是在达到显存峰值之后才进行使用,将这样的运行数据作为目标运行数据。
步骤S202,基于所述目标运行数据,对所述第一计算图进行调整,生成所述至少一个第二计算图。
在一些实施例中,在第一计算图中,将关联关系满足预设条件的目标运行数据对应的算子移动到峰值时刻之后,得到第二计算图。
在本申请实施例中,在第一计算图中筛选运行数据的生成时刻在显存峰值的出现时刻之前,且运行数据的应用时刻在显示峰值的出现时刻之后情况的目标运行数据,在第一计算图中,移动目标运行数据对应的算子,得到第二计算图,从而能够降低第二计算图的峰值。
在一些实施例中,通过移动目标运行数据对应的算子在第一计算图中的位置,生成第二计算图,并基于该第二计算图的显存峰值等信息,从中搜索出目标计算图,即上述图2中的步骤S202可以通过图3A所示的步骤实现,图3A为本申请实施例提供的显存优化方法的另一实现流程示意图,结合图3A所示的步骤进行以下说明:
步骤S301,在所述第一计算图中,确定目标运行数据对应的目标算子。
在一些实施例中,针对第一计算图,在该第一计算图的多个算子中,确定产生该目标运行数据的算子,即目标算子。
步骤S302,基于所述第一计算图中所述显存峰值的出现时刻,调整所述第一计算图中的所述目标算子,生成所述至少一个第二计算图。
在一些实施例中,遍历运行计算图之后,得到了第一计算图中达到显存峰值的时刻。按照该时刻调整目标算子在第一计算图中的执行时刻,即移动该目标算子在第一计算图中的位置得到第二计算图。这样,针对第一计算图,通过按照该第一计算图中显存峰值的出现时刻,移动目标算子,从而得到多个第二计算图。如图3B所示,如果通过分析第一计算图31的优化方案,确定第一计算图31中包括两个目标算子,即该第一计算图31具有两个优化方案。在第一计算图31中移动任一目标算子,生成两个优化的计算图,即第二计算图32和第二计算图33。
在一些可能的实现方式中,通过将该目标算子移动到显存峰值的出现时刻之后,以优化第一计算图,生成第二计算图,即,上述步骤S302可以通过以下过程实现:
在所述第一计算图中,将所述目标算子的执行时刻调整至所述显存峰值的出现时刻之后,生成所述第二计算图。
这里,在所述第一计算图中,将目标算子的执行时刻调整至显存峰值的出现时刻之后,生成第一计算图对应的第二计算图。针对第一计算图,移动该第一计算图中目标算子的位置;由于该目标算子产生目标运行数据的时刻在峰值的出现时刻之前,且该目标运行数据是在峰值的出现时刻之后才使用的,所以,通过将该目标算子的执行时刻移动到显存峰值的出现时刻之后,能够降低生成的第二计算图的峰值。如此,通过移动目标算子至显存峰值之后,能够降低新生成的第一计算图的峰值,从而优化第二计算图所需的显存空间。
在本申请实施例中,通过在第二计算图中移动目标算子到显存峰值的出现时刻之后,能够生成降低了显存峰值的第三计算图,从而便于在至少一个第三计算图中搜索到已优化显存开销的目标计算图。
在一些实施例中,通过对每一第二计算图进行显存空间开销的评分,对第二计算图进行排序,按照排序后的队列搜索目标计算图,即上述步骤S303可以通过图4A所示的步骤实现,图4A为本申请实施例提供的显存优化方法的再一实现流程示意图,结合图3A和4A所示的步骤进行以下说明:
步骤S401,获取预设显存开销和预设权衡比值。
在一些实施例中,预设显存开销为设定的显存申请量,即事先设定的显存空间的大小。预设权衡比值是事先设定的一个权衡时间和空间所占得分比重的参数,该比值小于1。所述预设权衡比值用于权衡计算图的运行时长和所需显存之间的比重。
步骤S402,基于所述预设显存开销和预设权衡比值,对所述每一第二计算图的显存峰值、运行时长和所述对应的第一计算图的运行时长进行评分,得到所述每一第二计算图的评分结果。
在一些实施例中,将设定的预设显存开销和预设权衡比值结合第二计算图显存峰值和运行时长,同时综合考虑该第二计算图的原始计算图(即生成该第二计算图的第一计算图)的运行时长,来评估该第二计算图的显存开销以及运行时长的优劣,从而得到该第二计算图的评分结果。这样,通过综合考虑每一第二计算图的显存开销和运行时长,对每一第二计算图进行评分,得到每一个第二计算图的评分结果。该评分结果可以是一个分值,分值越大表示该第二计算图的显存开销和运行时长的综合性能越好。
在一些可能的实现方式中,通过对第二计算图的运行时长和显存峰值进行综合评估,得到该第二计算图的评分结果,即上述步骤S402可以通过以下步骤S421至S423(图示未示出)实现:
步骤S421,基于所述每一第二计算图的显存峰值、预设显存开销和预设权衡比值,确定所述每一第二计算图的显存评分。
在一些实施例中,对于任一第二计算图,将该第二计算图的显存峰值减去预设显存开销,得到差值(该差值可以为正数,也可以为负数,比如,在该第二计算图的显存峰值大于该预设显存开销的情况下,该差值为负数;在该第二计算图的显存峰值小于该预设显存开销的情况下,该差值为正数)。将该差值与设定的预设权衡比值相乘,即可得到该第二计算图的显存评分。
步骤S422,基于所述预设权衡比值、所述每一第二计算图的运行时长和所述对应的第一计算图的运行时长,确定所述每一第二计算图的运行时长评分。
在一些实施例中,采用预设标准参数(比如,设定为1)减去预设权衡比值,作为评估运行时长的比值。将该第二计算图的运行时长减去对应的第二计算图的运行时长,得到时长差值(一般情况下,该时长差值为正数)。采用计算得到的评估运行时长的比值与该时长差值进行相乘,即可得到该第二计算图的运行时长评分。
步骤S423,基于所述每一第二计算图的显存评分和所述运行时长评分,确定所述每一第二计算图像的评分结果。
在一些实施例中,针对任一第二计算图,将该第二计算图的显存评分和运行时长评分相加,即可得到该第二计算图的评分结果,从而能够得到至少一个第二计算图中每一第二计算图的显存和运行时长的综合评分。如此,在对第二计算图进行评分的阶段,综合考虑第二计算图的运行时长和显存峰值,使最后的计算图在优化显存空间的同时不会牺牲大量时间成本。
步骤S403,基于所述每一第二计算图的评分结果,对所述至少一个第二计算图中的第二计算图进行排序,得到排序队列。
在一些实施例中,按照至少一个第二计算图中每一第二计算图的评分的大小,对这些第二计算图进行排序;比如,按照评分结果从大到小,对至少一个第二计算图中的第二计算图进行排序,得到该排序队列;或者,按照按照评分结果从小到大,对至少一个第二计算图中的第二计算图进行排序,得到该排序队列。如图3B所示,如果第二计算32的评分大于第二计算33的评分,那么这两个第二计算图的排列队列如图3所示,第二计算图32在前,第二计算图33在后。
步骤S404,基于所述排序队列,确定所述目标计算图。
在一些实施例中,由于该排序队列是基于第二计算图的评分大小进行排列的,所以按照该排序队列中的排列次序,首先搜索评分最高的第二计算图的显存开销是否满足预设显存开销,如果评分最高的第二计算图的显存开销满足预设显存开销,则将该第二计算图作为目标计算图;如果不满足,再继续分析该第二计算图中是否存在目标运行数据,以产生该第二计算图的优化方案;从而基于该优化方案对该第二计算图进行调整,生成第三计算图,按照第三计算图的评分结果,将第三计算图列入排序队列中,继续在更新的排列对象中搜索评分排列最高的计算图的显存开销是否满足预设显存开销;最后,在搜索次数达到上限且未搜索到显存开销满足预设显存开销的计算图,将当前排列队列中评分最高的计算图作为目标计算图。如此,通过综合考虑第二计算图的运行时长和显存峰值,对第二计算图进行评分,并按照评分结果排列为优先队列,从而能够通过队列搜索查找到显存开销最优的目标计算图。
在一些可能的实现方式中,按照排列队列中第二计算图的排列顺序对第二计算图所需的显存空间进行搜索,以搜索到显存开销满足预设显存开销的目标计算图,即步骤S404可以通过以下多种方式实现:
方式一:对排列队列总评分结果最优的第二计算图进行显存空间的搜索,以判断该第二计算图的显存开销是否满足预设显存开销,包括以下步骤S441和S442(图示未示出):
步骤S441,在所述排列队列中,搜搜评分结果最优的第一候选计算图。
在一些实施例中,如果该排列队列是基于第二计算图的评分从大到小排序得到的,那么排列在队首的元素即为评分结果最优的第一候选计算图。通过运行该评分结果最优的第一候选计算图,可确定该候选计算图所需的显存空间。
步骤S442,响应于搜索到的所述第一候选计算图所需的显存空间满足预设显存开销,确定所述第一候选计算图为所述目标计算图。
在一些实施例中,确定第一候选计算图所需的显存空间之后,判断该显存空间是否满足预设显存开销,即判断在该预设显存开销内是否能够正常运行该第一候选计算图。如果第一候选计算图所需的显存空间满足预设显存开销,说明该第一候选计算图所需的显存空间在预设显存开销范围内,即通过该第一候选计算图对应的显存空间能够完成对预设网络模型的训练。进而将该第一候选计算图作为目标计算图。如此,基于排队序列,优先搜索评分结果最优的第一候选计算图所需的显存空间是否满足预设显存开销,既能够尽可能地减少搜索次数,还能够使得搜索到的目标计算图的显存开销较小。
方式二:在评分结果最优的第二计算图的显存开销不满足预设显存开销的情况下,通过分析该第二计算图的优化方案,更新排列队列,继续在更新的排列顺序中搜索评分结果最优的计算图,并判断该计算图的显存开销是否满足预设显存开销,包括以下步骤S443和S447(图示未示出):
步骤S443,响应于所述第一候选计算图所需的显存空间不满足所述预设显存开销,基于所述第一候选计算图的目标运行数据,对所述第一候选计算图进行调整,得到至少一个第三计算图。
在一些实施例中,如果第一候选计算图所需的显存空间不满足预设显存开销,说明该第一候选计算图仍需继续优化。基于此,在第一候选计算图中分析目标运行数据对应的目标算子,从而通过在该第一候选计算图中移动目标算子,生成优化后的第三计算图。如果第一候选计算图为图3B中的第二计算图32,通过分析第二计算图32确定该第二计算图32中包括三个目标算子;分别在第二计算图32中移动每一目标算子,生成三个第三计算图;如图4B所示,分别为第三计算图41、42和43。
步骤S444,基于所述至少一个第三计算图的评分结果更新所述排列队列,得到已更新的排列队列。
在一些实施例中,基于第一候选计算图,生成多个第三计算图之后。首先,在该排列队列中弹出该第一候选计算图,然后,按照步骤S401和步骤S402的方式,确定每一第三计算图的评分结果。最后,按照每一第三计算图的评分结果结合排列队列中每一第二计算图的评分结果,将至少一个第三计算图插入到该排列队列中,得到已更新的排列队列。如图4B所示,由于已经弹出第二计算图32,所以当前的排列队列中仅剩下第二计算图33,如果第三计算图41、42和43的评分结果中,第三计算图41的评分大于第二计算图33,第三计算图42和43的评分均小于第二计算图33,且第三计算图42大于第三计算图43;那么已更新的排列队列如图4B所示,按照评分从大到小的排列顺序依次为:第三计算图41、第二计算图33、第三计算图42和第三计算图43。
步骤S445,在所述已更新的排列队列中,搜索评分结果最优的第二候选计算图所需的显存空间是否满足所述预设显存开销。
在一些实施例中,在所述已更新的排列队列中,确定第二候选计算图所需的显存空间之后,判断该显存空间是否满足预设显存开销,如果第二候选计算图所需的显存空间不满足所述预设显存开销(比如,第二候选计算图所需的显存空间大于预设显存开销);那么继续基于该第二候选计算图的优化方案,生成新的计算图,并按照新的计算图的评分结果再次更新该已更新的排列队列。
步骤S446,响应于第二候选计算图所需的显存空间满足所述预设显存开销,确定所述第二候选计算图为所述目标计算图。如此,基于排队序列,在评分结果最优的计算图所需的显存空间不满足预设显存开销的情况下,继续优化该计算图,在最新的排列队列中搜索评分最优的计算图所需的显存空间是否满足预设显存开销,这样经过多次搜索,能够使得搜索到的目标计算图的显存开销更优。
方式三:在评分结果最优的计算图的显存开销不满足预设显存开销,且搜索计算图的搜索次数达到设定次数阈值的情况下,将最新的排列队列中评分结果最优的计算图作为目标计算图,包括以下步骤S447(图示未示出):
步骤S447,响应于所述第二候选计算图所需的显存空间不满足所述预设显存开销,且搜索次数达到预设次数阈值,确定末次搜索对应的排列队列中评分结果最优的计算图为所述目标计算图。
在一些实施例中,预设次数阈值可以是基于排列队列中计算图的数量设定的;比如,设定预设次数阈值小于排列队列中计算图数量的一半。如果第二候选计算图所需的显存空间不满足预设显存开销,且基于此该第二候选计算图更新队列之后,再次搜索到的评分最优的计算图所需的显存空间仍然不满足预设显存开销,那么在搜索次数达到预设次数阈值的情况下,确定最新的排列队列中评分最优的计算图为所述目标计算图。这样,在搜索不到满足预设显存开销的计算图的情况下,将最新的排列队列中评分最优的计算图作为目标计算图,从而使得搜索到的目标计算图是空间开销最优的计算图。
在本申请实施例中,通过综合考虑第二计算图的运行时长以及显存峰值,对多个第二计算图进行排序,按照排序队列搜索目标计算图,从而使得搜索到的目标计算图是空间开销最优的计算图。
在一些实施例中,在训练预设网络模型之前,可以通过确定该预设网络模型的目标计算图确定该预设网络模型所需的内存空间以及运行时间,即上述步骤S105可以通过以下过程实现:
将所述目标计算图所需的显存空间,确定为训练所述预设网络模型所需的显存空间。
在本申请实施例中,在实际情景中训练该网络模型时,通过运行该目标计算图,得到该目标计算图所需的显存空间,以及运行时长;将该目标计算图所需的显存空间,以及运行时长作为预估的训练所述预设网络模型所需的显存空间和运行时长,从而能够优化训练该网络模型所需的显存空间,并且不会牺牲训练该网络模型所需的运行时长。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用,针对大规模的深度神经网络,以基于该神经网络的计算图实现对该神经网络占据显存的优化为例,进行说明。
在一些实施例中,在进行残差网络269(ResNeSt269)(包括1亿网络参数)的图像网络(ImageNet)训练时,显存就已经逼近了V100 32吉比特(GB)的上限,训练占用达到28GB。当模型进一步加大,或者加大批大小(Batch size)后,模型训练的显存占用也会随之增长,最后占用的显存高于显卡的显存容量,触碰到了显存墙,使得模型无法训练。如图5所示,图5为本申请实施例提供的计算图占据显存的曲线变化示意图,其中,横坐标表示计算图中各算子的执行顺序,纵坐标表示在算子执行过程中占据的显存空间的大小。曲线501表示内存申请量,曲线502表示计算图在执行一个任务的过程中不同时刻的内存缓存量,从曲线502可以看出,该计算图在前馈阶段结束时达到峰值点503。该峰值点503超过了曲线501的峰值,既该计算图占用的显存高于显卡的显存容量,使得模型训练无法继续进行。在这种情况下,显存优化就显得尤为重要。在众多显存优化方法中,基于计算图分析的显存优化方法是其中的一种。在相关技术中,计算图分析并优化的方法中,往往只是对算子进行简单的移动来初步降低显存占用。通常这类方法只是作为一种初步的显存优化,将重心放在后续的更进一步的显存优化方法中。这类方法只能优化少许显存占用,且缺少一个完整的优化体系。
基于此,本申请实施例提供一种显存优化方法,首先,通过常规深度学习框架(tensorflow、pytorch等)以及框架parrots将网络模型生成计算图。然后,通过计算图,可以将大的训练任务拆解成一个个算子(Task),每个算子都会使用原有数据(算子的输入)以及产生新的数据(算子的输出)。计算图中也给出了算子相关的各操作数所占的空间以及算子进行计算所需要的时间,从而可以通过分析计算图来优化显存的占用。这样,以降低内存占用峰值为目标,同时考虑移动算子时峰值转移的情况,能够得到最优计算图;而且在评定计算图的好坏时,提出了一个估价函数,而不只考虑其所占据显存这一个因素,从而能够综合考虑其对应的时间消耗。
本申请实施例提供的显存优化方法的实现过程如图6所示,图6为本申请实施例提供的显存优化方法的实现流程示意图,结合图6所示的步骤进行以下说明:
步骤S601,从JSON文件中读取计算图信息。
在一些实施例中,首先利用机器学习框架(tensorflow、pytorch和parrots)将需要训练的模型生成JSON格式的计算图,并存入JSON文件中;然后,启动显存优化流程,读入JSON格式的计算图。在显存优化流程中,定义计算图对象任务(schedule),每一个计算图对象在显存优化流程中就代表一张不同的计算图。
步骤S602,基于读取的计算图信息,生成对应的计算图对象。
在一些实施例中,生成一个新的计算图对象,获取从JSON读入的信息,按次序编排算子队列,并将算子的输入输出依次与操作数进行匹配。
步骤S603,分析当前的计算图对象是否满足显存空间花销。
在一些实施例中,分析当前计算图对象的最大空间开销以及花费的计算时间,包括:
(1)通过对计算图对象中所有算子的计算时间进行累加,得到总的计算时间。
(2)通过遍历所有算子以及它们的输入输出获取计算图的拓扑结构以及显存开销。如果该计算图对象已满足空间开销,进入步骤S604,无需对其优化。如果该计算图对象不满足空间开销,进入步骤S605。
步骤S605,基于计算图对象的拓扑结构,寻找可以优化的位置,并将基于该位置生成的新的计算图对象加入优先队列。
在一些实施例中,寻找可以优化的位置的实现过程如下:首先,找出内存达到峰值的时间点;然后,以峰值为分界点,寻找在峰值前生成却在峰值后才得以使用的数据,该数据所在的位置即为可以优化的位置。
在一些可能的实现方式中,可以将对应生成数据的算子移动到峰值后以达到降低峰值的目的。将满足这一条件的所有算子作为当前计算图对象的可优化方案。结合当前计算图对象的可优化方案,生成一系列新的计算图对象,将生成的新的计算图对象作为元素加入到优先队列。
在一些可能的实现方式中,该队列是以新的计算图对象的评分为依据形成的,采用以下公式确定每一计算图的评分Score:
Score=MEMORY_FACTOR*(peak_memory-limit)/limit+(1-MEMORY_FACT OR)*(total_time-origin_time)/origin_time;
其中,peak_memory表示该计算图的峰值显存占用,limit表示我们设定的显存开销预算,total_time表示该计算图所对应的执行时间,origin_time表示初始计算图对应的执行时间。MEMORY_FACTOR是一个权衡时间和空间所占得分比重的参数。
步骤S606,将优先队列的第一个元素整合成新的计算图对象,判断该新的计算图对象是否满足空间开销。
在一些实施例中,弹出优先队列的第一个元素(既得分最好的计算图对象),判断其是否满足空间开销,如果满足,则进入步骤S607。如果不满足,则返回步骤S605继续进行下一次搜索,如果搜索的计算图对象仍然不满足空间开销,且搜索次数达到预设的上限,进入步骤S608。
步骤S607,将满足条件的计算图对象作为输出并将其保存成JSON文件。
步骤S608,终止搜索,并以当前优先队列第一个元素作为最优的计算图。
上述步骤S601至步骤S608,给出了一个优先队列的回溯搜索最优的计算图的搜索策略:首先,以显存达到峰值的时刻为界限,寻找在峰值前生成却要到峰值后才使用的数据,并将这样的数据对应的算子所在的位置作为可优化的位置;其次,将基于该位置优化后的计算图,计算评分,并按照得分加入优先队列进行搜索;同时考虑峰值转移的情况,即每次用优化方案生成新的计算图,都会进行峰值显存占用分析。最后,如果找不到满足要求的计算图,则在最后返回当前搜索到的评分最好的计算图。
在本申请实施例中,用户在实际情境中训练模型时,可以先使用本申请实施例提供的显存优化方法对模型的计算图进行分析并优化。用户可以根据计算图的情况对模型的内存空间以及时间有一个大致的了解。在本申请实施例中,计算图优化是在开始训练前就完成的,结合后续的更多优化,综合的内存优化将是非常可观的。
在一个具体例子中,在给出的计算图样例pattern.json中,初始计算图显存占用峰值为3.38GiB耗时129.03毫秒(ms),最优的计算图显存峰值为1.72GiB耗时136.09ms,在这种情况下,显存的优化率达到了49%。随着训练模型的增大以及批大小的增加,计算图的可优化空间也将变大,这时,本申请实施例提供的显存优化方法的显存优化效果将进一步增加。这样,可以大大降低大规模深度学习所占用的显存大小,进而大幅度在空间开销上降低大规模训练的成本,即使没能找到满足设定空间开销的计算图,该方法也能给出当前条件下综合评分最优的计算图供用户参考。而且在计算图评分环节加入计算时间成本成本的考量,使最后得到的计算图不至于为了优化少许显存空间而牺牲大量时间成本。
本申请实施例提供一种显存优化装置,图7为本申请实施例显存优化装置的结构组成示意图,如图7所示,所述显存优化装置700包括:
第一生成模块701,用于基于预设网络模型,生成第一计算图;
第一确定模块702,用于确定所述第一计算图的显存峰值与运行数据之间的关联关系;
第二生成模块703,用于基于所述关联关系,对所述第一计算图进行调整,生成至少一个第二计算图;
第二确定模块704,用于基于所述至少一个第二计算图的显存峰值和运行时长,在所述至少一个第二计算图中确定目标计算图;
第三确定模块705,用于基于所述目标计算图,确定所述预设网络模型所需的显存空间。
在一些实施例中,所述第一生成模块701,包括:
第一生成子模块,用于基于所述预设网络模型,生成数据交换格式的计算图信息;
第二生成子模块,用于基于所述计算图信息中的算子队列,生成所述计算图信息匹配的第一计算图。
在一些实施例中,所述第一确定模块702,包括:
第一确定子模块,用于确定所述第一计算图中显存峰值的出现时刻;
第二确定子模块,用于确定所述第一计算图中算子的运行数据;
第三确定子模块,用于确定所述运行数据的生成时刻和所述运行数据在所述第一计算图中的应用时刻;确定所述生成时刻和所述应用时刻,与所述显存峰值的出现时刻之间的时序关系,为所述关联关系。
在一些实施例中,所述第二生成模块703,包括:
第四确定子模块,用于在所述第一计算图中,确定所述关联关系满足预设条件的目标运行数据;
第一调整子模块,用于基于所述目标运行数据,对所述第一计算图进行调整,生成所述至少一个第二计算图。
在一些实施例中,所述第四确定子模块,包括:
第一确定单元,用于在所述第一计算图中的算子的运行数据中,确定生成时刻在所述显存峰值的出现时间之前且应用时刻在所述显存峰值的出现时刻之后的运行数据,为满足所述预设条件的目标运行数据。
在一些实施例中,所述第一调整子模块,包括:
第二确定单元,用于在所述第一计算图中,确定所述目标运行数据对应的目标算子;
第一调整单元,用于基于所述第一计算图中所述显存峰值的出现时刻,调整所述第一计算图中的所述目标算子,生成所述至少一个第二计算图。
在一些实施例中,所述第一调整单元,还用于:
在所述第一计算图中,将所述目标算子的执行时刻调整至所述显存峰值的出现时刻之后,生成所述第二计算图。
在一些实施例中,所述第二确定模块704,包括:
第一获取子模块,用于获取预设显存开销和预设权衡比值;其中,所述预设权衡比值用于权衡计算图的运行时长和所需显存之间的比重;
第一评分子模块,用于基于所述预设显存开销和预设权衡比值,对所述每一第二计算图的显存峰值、运行时长和所述对应的第一计算图的运行时长进行评分,得到所述每一第二计算图的评分结果;
第一排序子模块,用于基于所述每一第二计算图的评分结果,对所述至少一个第二计算图中的第二计算图进行排序,得到排序队列;
第五确定子模块,用于基于所述排序队列,确定所述目标计算图。
在一些实施例中,所述第一评分子模块,包括:
第三确定单元,用于基于所述每一第二计算图的显存峰值、所述预设显存开销和预设权衡比值,确定所述每一第二计算图的显存评分;
第一评分单元,用于基于所述预设权衡比值、所述每一第二计算图的运行时长和所述对应的第一计算图的运行时长,确定所述每一第二计算图的运行时长评分;
第四确定单元,用于基于所述每一第二计算图的显存评分和所述运行时长评分,确定所述每一第二计算图像的评分结果。
在一些实施例中,所述第五确定子模块,包括:
第一搜索单元,用于在所述排列队列中,搜索评分结果最优的第一候选计算图;
第五确定单元,用于响应于搜索到的所述第一候选计算图所需的显存空间满足所述预设显存开销,确定所述第一候选计算图为所述目标计算图。
在一些实施例中,所述第五确定子模块,包括:
第二调整单元,用于响应于所述第一候选计算图所需的显存空间不满足所述预设显存开销,基于所述第一候选计算图的目标运行数据,对所述第一候选计算图进行调整,得到至少一个第三计算图;
第一更新单元,用于基于所述至少一个第三计算图的评分结果更新所述排列队列,得到已更新的排列队列;
第二搜索单元,用于在所述已更新的排列队列中,搜索评分结果最优的第二候选计算图所需的显存空间是否满足所述预设显存开销;
第六确定单元,用于响应于所述第二候选计算图所需的显存空间不满足所述预设显存开销,且搜索次数达到预设次数阈值,确定末次搜索对应的排列队列中评分结果最优的计算图为所述目标计算图。
在一些实施例中,所述第三确定模块705,还用于:
将所述目标计算图所需的显存空间,确定为训练所述预设网络模型所需的显存空间。
需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的显存优化方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、运动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
本申请实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现本申请实施例提供的显存优化方法。
本申请实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,所述该计算机可执行指令被处理器执行时实现上述实施例提供的显存优化方法。
本申请实施例提供一种计算机设备,图8为本申请实施例计算机设备的组成结构示意图,如图8所示,所述计算机设备800包括:一个处理器801、至少一个通信总线、通信接口802、至少一个外部通信接口和存储器803。其中,通信接口802配置为实现这些组件之间的连接通信。其中,通信接口802可以包括显示屏,外部通信接口可以包括标准的有线接口和无线接口。其中所述处理器801,配置为执行存储器中显存优化程序,以实现上述实施例提供的显存优化方法。
以上显存优化装置、计算机设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同相应方法实施例相似的技术描述和有益效果,限于篇幅,可案件上述方法实施例的记载,故在此不再赘述。对于本申请显存优化装置、计算机设备和存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ReadOnly Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种显存优化方法,其特征在于,所述方法包括:
基于预设网络模型,生成第一计算图;
确定所述第一计算图中显存峰值的出现时刻;
确定所述第一计算图中算子的运行数据;
确定所述运行数据的生成时刻和所述运行数据在所述第一计算图中的应用时刻;
确定所述生成时刻和所述应用时刻,与所述显存峰值的出现时刻之间的时序关系,为关联关系;
在所述第一计算图中的算子的运行数据中,确定生成时刻在所述显存峰值的出现时间之前且应用时刻在所述显存峰值的出现时刻之后的运行数据,为满足预设条件的目标运行数据;
在所述第一计算图中,确定所述目标运行数据对应的目标算子;
在所述第一计算图中,将所述目标算子的执行时刻调整至所述显存峰值的出现时刻之后,生成至少一个第二计算图;
基于至少一个所述第二计算图的显存峰值和运行时长,在至少一个所述第二计算图中确定目标计算图;
基于所述目标计算图,确定所述预设网络模型所需的显存空间。
2.根据权利要求1所述的方法,其特征在于,所述基于预设网络模型,生成第一计算图,包括:
基于所述预设网络模型,生成数据交换格式的计算图信息;
基于所述计算图信息中的算子队列,生成所述计算图信息匹配的第一计算图。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述基于至少一个所述第二计算图的显存峰值和运行时长,在至少一个所述第二计算图中确定目标计算图,包括:
获取预设显存开销和预设权衡比值;其中,所述预设权衡比值用于权衡计算图的运行时长和所需显存之间的比重;
基于所述预设显存开销和预设权衡比值,对每一所述第二计算图的显存峰值、运行时长和对应的第一计算图的运行时长进行评分,得到每一所述第二计算图的评分结果;
基于每一所述第二计算图的评分结果,对至少一个所述第二计算图中的第二计算图进行排序,得到排序队列;
基于所述排序队列,确定所述目标计算图。
4.根据权利要求3所述的方法,其特征在于,所述基于所述预设显存开销和预设权衡比值,对每一所述第二计算图的显存峰值、运行时长和所述对应的第一计算图的运行时长进行评分,得到每一所述第二计算图的评分结果,包括:
基于每一所述第二计算图的显存峰值、所述预设显存开销和预设权衡比值,确定每一所述第二计算图的显存评分;
基于所述预设权衡比值、每一所述第二计算图的运行时长和所述对应的第一计算图的运行时长,确定每一所述第二计算图的运行时长评分;
基于每一所述第二计算图的显存评分和所述运行时长评分,确定每一所述第二计算图像的评分结果。
5.根据权利要求4所述的方法,其特征在于,所述基于所述排序队列,确定所述目标计算图,包括:
在所述排序队列中,搜索评分结果最优的第一候选计算图;
响应于搜索到的所述第一候选计算图所需的显存空间满足所述预设显存开销,确定所述第一候选计算图为所述目标计算图。
6.根据权利要求5所述的方法,其特征在于,所述基于所述排序队列,确定所述目标计算图,包括:
响应于所述第一候选计算图所需的显存空间不满足所述预设显存开销,基于所述第一候选计算图的目标运行数据,对所述第一候选计算图进行调整,得到至少一个第三计算图;
基于至少一个所述第三计算图的评分结果更新所述排序队列,得到已更新的排序队列;
在所述已更新的排序队列中,搜索评分结果最优的第二候选计算图所需的显存空间是否满足所述预设显存开销;
响应于所述第二候选计算图所需的显存空间不满足所述预设显存开销,且搜索次数达到预设次数阈值,确定末次搜索对应的排序队列中评分结果最优的计算图为所述目标计算图。
7.根据权利要求1-2、4-6任一项所述的方法,其特征在于,所述基于所述目标计算图,确定所述预设网络模型所需的显存空间,包括:
将所述目标计算图所需的显存空间,确定为训练所述预设网络模型所需的显存空间。
8.一种显存优化装置,其特征在于,所述装置包括:
第一生成模块,用于基于预设网络模型,生成第一计算图;
第一确定模块,用于确定所述第一计算图中显存峰值的出现时刻;
确定所述第一计算图中算子的运行数据;确定所述运行数据的生成时刻和所述运行数据在所述第一计算图中的应用时刻;
确定所述生成时刻和所述应用时刻,与所述显存峰值的出现时刻之间的时序关系,为关联关系;
第二生成模块,用于在所述第一计算图中的算子的运行数据中,确定生成时刻在所述显存峰值的出现时间之前且应用时刻在所述显存峰值的出现时刻之后的运行数据,为满足预设条件的目标运行数据;在所述第一计算图中,确定所述目标运行数据对应的目标算子;在所述第一计算图中,将所述目标算子的执行时刻调整至所述显存峰值的出现时刻之后,生成至少一个第二计算图;
第二确定模块,用于基于至少一个所述第二计算图的显存峰值和运行时长,在至少一个所述第二计算图中确定目标计算图;
第三确定模块,用于基于所述目标计算图,确定所述预设网络模型所需的显存空间。
9.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令被执行后,能够实现权利要求1至7任一项所述的显存优化方法。
10.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时能够实现权利要求1至7任一项所述的显存优化方法。
CN202111254294.7A 2021-10-27 2021-10-27 一种显存优化方法、装置、设备及存储介质 Active CN114003306B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111254294.7A CN114003306B (zh) 2021-10-27 2021-10-27 一种显存优化方法、装置、设备及存储介质
PCT/CN2022/093101 WO2023071149A1 (zh) 2021-10-27 2022-05-16 一种显存优化方法、装置、设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111254294.7A CN114003306B (zh) 2021-10-27 2021-10-27 一种显存优化方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114003306A CN114003306A (zh) 2022-02-01
CN114003306B true CN114003306B (zh) 2024-03-15

Family

ID=79924245

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111254294.7A Active CN114003306B (zh) 2021-10-27 2021-10-27 一种显存优化方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN114003306B (zh)
WO (1) WO2023071149A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114003306B (zh) * 2021-10-27 2024-03-15 上海商汤科技开发有限公司 一种显存优化方法、装置、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908667A (zh) * 2019-11-18 2020-03-24 北京迈格威科技有限公司 神经网络联合编译的方法、装置和电子设备
CN111158901A (zh) * 2019-12-09 2020-05-15 北京迈格威科技有限公司 计算图的优化方法、装置、计算机设备和存储介质
CN111338635A (zh) * 2020-02-20 2020-06-26 腾讯科技(深圳)有限公司 计算图的图编译方法、装置、设备及存储介质
CN112882830A (zh) * 2021-02-03 2021-06-01 北京迈格威科技有限公司 显存管理、模型训练方法、装置、电子设备及存储介质
CN112947933A (zh) * 2021-02-24 2021-06-11 上海商汤智能科技有限公司 一种算子的执行方法、装置、计算机设备及存储介质
CN113296780A (zh) * 2020-11-16 2021-08-24 阿里巴巴集团控股有限公司 计算图的处理方法、装置及设备
CN113449858A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种神经网络模型的处理方法以及相关设备
CN113469353A (zh) * 2020-03-31 2021-10-01 上海商汤智能科技有限公司 神经网络模型的优化方法、数据处理方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110321999B (zh) * 2018-03-30 2021-10-01 赛灵思电子科技(北京)有限公司 神经网络计算图优化方法
US11385875B2 (en) * 2019-01-31 2022-07-12 Google Llc Propagating reduced-precision on computation graphs
WO2020182989A1 (en) * 2019-03-13 2020-09-17 Deepmind Technologies Limited Scheduling computation graphs using neural networks
WO2021011914A1 (en) * 2019-07-17 2021-01-21 Google Llc Scheduling operations on a computation graph
CN111309479B (zh) * 2020-02-14 2023-06-06 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质
CN112948079B (zh) * 2021-02-18 2022-06-28 北京百度网讯科技有限公司 任务调度方法、装置、设备和计算机存储介质
CN112767230A (zh) * 2021-02-26 2021-05-07 清华大学 Gpu图神经网络优化方法及装置
CN114003306B (zh) * 2021-10-27 2024-03-15 上海商汤科技开发有限公司 一种显存优化方法、装置、设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908667A (zh) * 2019-11-18 2020-03-24 北京迈格威科技有限公司 神经网络联合编译的方法、装置和电子设备
CN111158901A (zh) * 2019-12-09 2020-05-15 北京迈格威科技有限公司 计算图的优化方法、装置、计算机设备和存储介质
CN111338635A (zh) * 2020-02-20 2020-06-26 腾讯科技(深圳)有限公司 计算图的图编译方法、装置、设备及存储介质
CN113449858A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种神经网络模型的处理方法以及相关设备
CN113469353A (zh) * 2020-03-31 2021-10-01 上海商汤智能科技有限公司 神经网络模型的优化方法、数据处理方法及装置
CN113296780A (zh) * 2020-11-16 2021-08-24 阿里巴巴集团控股有限公司 计算图的处理方法、装置及设备
CN112882830A (zh) * 2021-02-03 2021-06-01 北京迈格威科技有限公司 显存管理、模型训练方法、装置、电子设备及存储介质
CN112947933A (zh) * 2021-02-24 2021-06-11 上海商汤智能科技有限公司 一种算子的执行方法、装置、计算机设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Estimating GPU memory consumption of deep learning models;Yanjie Gao 等;《ESEC/FSE 2020: Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering》;第1342-1352页 *
GPU平台上循环神经网络训练算法设计与优化;冯诗影;《中国优秀硕士学位论文全文数据库 信息科技辑》(第第01期期);I140-272 *
Optimizing DNN Computation Graph using Graph Substitutions;Jingzhi Fang 等;《Proceedings of the VLDB Endowment》;第第13卷卷(第第12期期);第2734-2746页 *

Also Published As

Publication number Publication date
WO2023071149A1 (zh) 2023-05-04
CN114003306A (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
US10489688B2 (en) Personalized digital image aesthetics in a digital medium environment
WO2020007177A1 (zh) 计算机执行的报价方法、报价装置、电子设备及存储介质
CN107766573B (zh) 基于数据处理的商品推荐方法、装置、设备和存储介质
US20140207711A1 (en) Transductive feature selection with maximum-relevancy and minimum-redundancy criteria
CN111860504A (zh) 基于深度学习的视觉多目标跟踪方法及装置
JP2007317068A (ja) リコメンド装置およびリコメンドシステム
CN113537630A (zh) 业务预测模型的训练方法及装置
CN111461345A (zh) 深度学习模型训练方法及装置
CN113961765B (zh) 基于神经网络模型的搜索方法、装置、设备和介质
CN114003306B (zh) 一种显存优化方法、装置、设备及存储介质
US20230385317A1 (en) Information Retrieval Method, Related System, and Storage Medium
CN103577547B (zh) 网页类型识别方法及装置
CN115240052A (zh) 一种目标检测模型的构建方法及装置
EP3926547A1 (en) Program, learning method, and information processing apparatus
CN111563207B (zh) 一种搜索结果的排序方法、装置、存储介质及计算机设备
CN110348581B (zh) 用户特征群中用户特征寻优方法、装置、介质及电子设备
CN110069647B (zh) 图像标签去噪方法、装置、设备及计算机可读存储介质
CN113326829B (zh) 视频中手势的识别方法、装置、可读存储介质及电子设备
CN114443986A (zh) 排序方法及装置,排序模型训练方法及装置,电子设备
CN110175231B (zh) 视觉问答方法、装置和设备
CN118364428B (zh) 面向rpa的多模态实体对齐自动融合方法、设备及介质
CN113626721B (zh) 基于遗憾探索的推荐方法、装置、电子设备与存储介质
US20240303485A1 (en) Apparatus, method, device and medium for loss balancing in multi-task learning
CN112308170B (zh) 建模方法、装置及电子设备
CN114282101A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40062735

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant