CN110751282A - 面向深度学习训练任务的处理器内存优化方法及装置 - Google Patents
面向深度学习训练任务的处理器内存优化方法及装置 Download PDFInfo
- Publication number
- CN110751282A CN110751282A CN201910996309.3A CN201910996309A CN110751282A CN 110751282 A CN110751282 A CN 110751282A CN 201910996309 A CN201910996309 A CN 201910996309A CN 110751282 A CN110751282 A CN 110751282A
- Authority
- CN
- China
- Prior art keywords
- processor
- path
- calculation unit
- unit
- video memory
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 235
- 238000012549 training Methods 0.000 title claims abstract description 114
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000013135 deep learning Methods 0.000 title claims abstract description 38
- 238000005457 optimization Methods 0.000 title claims abstract description 29
- 238000004364 calculation method Methods 0.000 claims abstract description 278
- 238000013136 deep learning model Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000013473 artificial intelligence Methods 0.000 abstract 1
- 238000013461 design Methods 0.000 description 19
- WURBVZBTWMNKQT-UHFFFAOYSA-N 1-(4-chlorophenoxy)-3,3-dimethyl-1-(1,2,4-triazol-1-yl)butan-2-one Chemical compound C1=NC=NN1C(C(=O)C(C)(C)C)OC1=CC=C(Cl)C=C1 WURBVZBTWMNKQT-UHFFFAOYSA-N 0.000 description 17
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 210000004556 brain Anatomy 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/768—Data position reversal, e.g. bit reversal, byte swapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Processing (AREA)
Abstract
本申请公开了一种面向深度学习训练任务的处理器显存优化方法及装置,涉及人工智能技术领域。该方法中,通过确定出传递计算结果的最优路径,利用最优路径将第一计算单元的计算结果传递给第二计算单元,避免占用显存的同时,避免显存交换导致的GPU的计算单元利用率低的问题,使得大部分任务训练速度几乎不降低。
Description
技术领域
本申请实施例涉及深度学习技术领域,尤其涉及一种面向深度学习训练任务的处理器内存优化方法及装置。
背景技术
目前,深度学习(Deep Learning)是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,以模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习较为典型应用为图像识别和语音识别等。应用过程中,需要训练深度学习模型,如人脸识别模型、语音识别模型等。
通常情况下,使用处理器,如图形处理器(Graphics Processing Unit,GPU)训练深度学习模型。GPU拥有多个计算单元、少量的控制单元和存储单元。为了充分提升GPU的计算单元的利用率,需要提升每次训练的任务数,任务数是指计算单元对训练样本进行加减乘除积分等运算的次数。显然,每次加载至GPU显存的训练样本数量越多,则任务数越大。其中,每次加载至GPU显存的训练样本的数量也可以称之为批次大小(batch size)。
然而,GPU显存的大小是一定的,即GPU的存储单元的数量是一定的,若深度学习模型比较复杂,随着batch size的提升,GPU显存被大量占用,导致无法完成深度学习模型的训练。因此,深度学习模型训练过程中,如何优化GPU显存实为急待解决的问题。
发明内容
本申请实施例提供一种面向深度学习训练任务的处理器显存优化方法及装置,通过确定出传递计算结果的最优路径,利用最优路径将第一计算单元的计算结果传递给第二计算单元,避免占用显存的同时,避免显存交换导致的GPU的计算单元利用率低的问题。
第一方面,本申请实施例提供一种面向深度学习训练任务的处理器显存优化方法,包括:第一处理器接收用户输入的请求指令,所述请求指令用于请求训练深度学习模型,从第一路径和第二路径中确定出最优路径,所述第一路径下,第一计算单元的计算结果从所述第一计算单元直接到达第二计算单元,所述第二路径下,所述第一计算单元的计算结果在第二处理器的内存内执行完交换操作后到达所述第二计算单元,所述第一计算单元和所述第二计算单元包含于所述第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元,通过所述最优路径将所述第一计算单元的计算结果传递至所述第二计算单元。采用该种方案,通过确定出传递计算结果的最优路径,利用最优路径将第一计算单元的计算结果传递给第二计算单元,避免占用显存的同时,避免显存交换导致的GPU的计算单元利用率低的问题,使得大部分任务训练速度几乎不降低。另外,真实的训练环境中,显存占用随着训练样本的编号通常存在峰值,而且通常只有少数样本可以达到峰值情况。采用本申请实施例所述的方案,可以做到只对极少数情况动态的增加swap操作来满足峰值显存使用需求,避免存储溢出导致的训练失败,对于绝大多数非峰值的情况,并不需要增加swap操作,避免显存交换带来的开销,保证训练速度。
一种可行的设计中,所述第一处理器从第一路径和第二路径中确定出最优路径,包括:所述第一处理器确定所述第一处理器的显存的状态信息,所述第一处理器根据所述状态信息,从第一路径和第二路径中确定出最优路径。采用该种方案,
一种可行的设计中,所述状态信息包括下述信息中的至少一个:批次大小,训练样本的长度、所述计算结果占用所述显存的空间的大小、所述显存的交换速度、所述显存剩余空间的大小,其中,所述批次大小用于指示加载至所述显存的训练样本的大小,所述显存的交换速度用于指示单位时间内从所述显存到达第二处理器的内存的数据量。采用该种方案,
一种可行的设计中,所述最优路径为所述第二路径,所述第一处理器从第一路径和第二路径中确定出最优路径之后,还包括:所述第一处理器从所述至少一个中间计算单元中确定第三计算单元,所述第三计算单元是所述至少一个中间计算单元中与所述第二计算单元相邻、且位于所述第二计算单元之前的计算单元,第一处理器添加所述第三计算单元与所述第二处理器的交换操作的依赖关系。采用该种方案,
一种可行的设计中,所述交换操作包括换出操作和换入操作,所述第一处理器添加所述第三计算单元与所述第二处理器的交换操作的依赖关系之后,还执行所述第一计算单元对应的运算以得到所述计算结果,将所述计算结果发送至所述第二处理器,以使得所述第二处理器对所述计算结果执行所述换出操作,判断是否完成所述第三计算单元对应的运算,若所述第一处理器完成所述第三计算单元对应的运算,则向所述第二处理器发送指示信息,以使得所述第二处理器对所述第一计算单元的计算结果执行所述换入操作,根据所述第三计算单元的计算结果和执行完所述换入操作的计算结果执行所述第二计算单元对应的运算。采用该种方案,
一种可行的设计中,所述第一处理器从第一路径和第二路径中确定出最优路径之后,还判断所述第一计算单元的计算结果是否被传递至所述第二处理器的内存;若所述第一计算单元的计算结果被传输至所述第二处理器的内存,则从所述显存中释放所述第一计算单元的计算结果占用的空间。采用该种方案,
一种可行的设计中,所述第一处理器为张量处理器TPU或图形处理器GPU。
第二方面,本申请实施例提供一种面向深度学习训练任务的处理器显存优化装置,包括:
接收模块,用于接收用户输入的请求指令,所述请求指令用于请求训练深度学习模型;
处理模块,用于从第一路径和第二路径中确定出最优路径,所述第一路径下,第一计算单元的计算结果从所述第一计算单元直接到达第二计算单元,所述第二路径下,所述第一计算单元的计算结果在第二处理器的内存内执行完交换操作后到达所述第二计算单元,所述第一计算单元和所述第二计算单元包含于第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元;
传递模块,用于通过所述最优路径将所述第一计算单元的计算结果传递至所述第二计算单元。
一种可行的设计中,所述处理模块,用于确定所述第一处理器的显存的状态信息,根据所述状态信息,从第一路径和第二路径中确定出最优路径。
一种可行的设计中,所述状态信息包括下述信息中的至少一个:批次大小,训练样本的长度、所述计算结果占用所述显存的空间的大小、所述显存的交换速度、所述显存剩余空间的大小,其中,所述批次大小用于指示加载至所述显存的训练样本的大小,所述显存的交换速度用于指示单位时间内从所述显存到达第二处理器的内存的数据量。
一种可行的设计中,所述最优路径为所述第二路径,所述处理单元,在从第一路径和第二路径中确定出最优路径之后,还用于从所述至少一个中间计算单元中确定第三计算单元,所述第三计算单元是所述至少一个中间计算单元中与所述第二计算单元相邻、且位于所述第二计算单元之前的计算单元,添加所述第三计算单元与所述第二处理器的交换操作的依赖关系。
一种可行的设计中,所述交换操作包括换出操作和换入操作,所述处理单元,在添加所述第三计算单元与所述第二处理器的交换操作的依赖关系之后,还用于执行所述第一计算单元对应的运算以得到所述计算结果,所述计算结果发送至所述第二处理器,以使得所述第二处理器对所述计算结果执行所述换出操作,判断是否完成所述第三计算单元对应的运算,若所述第一处理器完成所述第三计算单元对应的运算,则向所述第二处理器发送指示信息,以使得所述第二处理器对所述第一计算单元的计算结果执行所述换入操作,根据所述第三计算单元的计算结果和执行完所述换入操作的计算结果执行所述第二计算单元对应的运算。
一种可行的设计中,所述处理模块,在从第一路径和第二路径中确定出最优路径之后,还用于判断所述第一计算单元的计算结果是否被传递至所述第二处理器的内存,若所述第一计算单元的计算结果被传输至所述第二处理器的内存,则从所述显存中释放所述第一计算单元的计算结果占用的空间。
一种可行的设计中,所述第一处理器为张量处理器TPU或图形处理器GPU。
第三方面、本申请实施例提供一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面或第一方面任意可能实现的方法。
第四方面,本申请实施例提供一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备计算机执行上述第一方面或第一方面的各种可能的实现方式中的方法。
第五方面,本申请实施例提供一种存储介质,所述存储介质中存储有指令,当其在电子设备上运行时,使得电子设备执行如上述第一方面或第一方面的各种可能的实现方式中的方法。
第六方面,本申请实施例提供一种面向深度学习训练任务的处理器显存优化方法,包括:第一处理器确定第一计算单元的计算结果传输至第二计算单元的路径,所述第一计算单元和所述第二计算单元包含于所述第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元,所述第一处理器通过所述路径向所述第二计算单发送所述第一计算单元的计算结果。
上述申请中的一个实施例具有如下优点或有益效果通过确定出传递计算结果的最优路径,利用最优路径将第一计算单元的计算结果传递给第二计算单元,避免占用显存的同时,避免显存交换导致的GPU的计算单元利用率低的问题,使得大部分任务训练速度几乎不降低。另外,真实的训练环境中,显存占用随着训练样本的编号通常存在峰值,而且通常只有少数样本可以达到峰值情况。采用本申请实施例所述的方案,可以做到只对极少数情况动态的增加swap操作来满足峰值显存使用需求,避免存储溢出导致的训练失败,对于绝大多数非峰值的情况,并不需要增加swap操作,避免显存交换带来的开销,保证训练速度。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例提供的面向深度学习训练任务的处理器显存优化方法的运行环境示意图;
图2是本申请实施例提供的一种面向深度学习训练任务的处理器显存优化方法的流程图;
图3是本申请实施例提供的一种面向深度学习训练任务的处理器显存优化方法的举例示意图;
图4为本申请实施例提供的面向深度学习训练任务的处理器显存优化装置的结构示意图;
图5是用来实现本申请实施例的面向深度学习训练任务的处理器显存优化方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
目前,通常使用GPU完成深度学习模型的训练,GPU包含少量的控制单元和存储单元以及大量的计算单元,具有很好的并发性,计算单元的数量可以达到5120甚至更多。为了提升GPU的计算单元的利用率,需要增大每次加载至GPU的显存的训练样本的数量,每次加载至GPU的显存的训练样本的数量也称之为批次大小(batch size)。但是,GPU的显存的大小是有限的,导致无法无限制的提升batch size,进而导致无法训练得到深度学习模型。
有鉴于此,本申请实施例提供一种面向深度学习训练任务的处理器显存优化方法,通过确定出传递计算结果的最优路径,利用最优路径将第一计算单元的计算结果传递给第二计算单元,避免占用显存的同时,避免显存交换导致的GPU的计算单元利用率低的问题。
图1是本申请实施例提供的面向深度学习训练任务的处理器显存优化方法的运行环境示意图。请参照图1,电子设备可以是终端设备也可以是服务器等。电子设备上设置有至少两个处理器,分别为第一处理器和第二处理器,第一处理器包含大量的计算单元以及少了的存储单元和控制单元,第二处理器与一个具有较大存储空间的内存设备直连,内存设备可以为内存条、固态驱动硬盘(Solid State Disk或Solid State Drive,SSD),第一处理器的存储单元称之为第一处理器的显存,与第二处理器直连的内存设备称之为第二处理器的内存,第一处理器可以为GPU、张量处理器(Tensor Processing Unit,TPU)等。
本申请实施例中,第一处理器用于对训练样本进行训练以得到深度学习模型,训练过程中,若第二计算单元需要使用第一计算单元的计算结果,则第一计算单元输出计算结果,该计算结果被存储在第一处理器的显存中。第一处理器判断该计算结果通过哪条路径到达第二计算单元,例如,通过第一路径直接从第一计算单元到达第二计算单元;再如,基于显存交换通过第二路径到达第二计算单元。若该计算结果通过显存交换到达第二计算单元,则第二处理器用于通过交换(swap)操作,将显存中数据交换到第二处理器的内存中,然后在发送至第二计算单元。当显存中的数据被交换到第二处理器的内存后,第一处理器即可释放计算结果占用的显存,从而实现对显存的优化。
下面,在上述图1的基础上,对本申请实施例所述的面向深度学习训练任务的处理器显存优化方法进行详细说明。示例性的,可参见图2。
图2是本申请实施例提供的一种面向深度学习训练任务的处理器显存优化方法的流程图,本实施例包括:
101、第一处理器接收用户输入的请求指令,所述请求指令用于请求训练深度学习模型。
示例性的,当需要训练深度学习模型,如人脸识别模型、图像分类模型、语音识别模型等模型时,用户通过点击操作、触摸操作等向电子设备输入请求指令,电子设备的第一处理器接收并识别该用于请求训练深度学习模型的请求指令。
102、所述第一处理器确定第一计算单元的计算结果传输至第二计算单元的路径,所述第一计算单元和所述第二计算单元包含于所述第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元。
示例性的,第一处理器包含的各个计算单元并不是独立的,而是相互之间存在依赖关系。例如,第二计算单元的计算依赖第一计算单元的计算结果,同时,第一计算单元和第二计算单元之间还存在多个中间计算单元,第一计算单元的计算结果依次被多个中间计算单元处理后,由最后一个中间计算单元(以下称之为第三计算单元)输入至第二计算单元。由于第二计算单元需要使用第一计算单元的计算结果和第三计算单元的计算结果,因此,当第一计算单元得出计算结果后,若该计算结果占用显存的空间较大,当该计算结果通过第一路径,即直接从第一计算单元传递至第二计算单元时,需要将该计算结果一直存储在第一处理器的显存中,此时对第一处理器的显存造成占用。为此,考虑通过第二路径,即显存交换将第一计算单元的计算结果传递给第二计算单元,也就是说,第一计算单元得出计算结果后,该计算结果通过swap操作后被交换至第二处理器的内存,然后到达第二计算单元。但是,由于swap操作需要将计算结果从第一处理器的显存交换到第二处理器的内存,而第二处理器与内存之间通过高速串行计算机扩展(peripheral componentinterconnect express,PCIE)总线连接,该PCIE总线的系统带宽较低,导致从第二处理器到内存的拷贝需要花费大量的时间,导致虽然提升了batch size,但是并没有提高第一处理器的计算单元的利用率。另外,当采用第二路径时,由于可以释放出大量的显存,因此可以实现大规模参数的深度学习模型的训练。
根据上述可知:第一路径导致第一处理器的显存被占用且无法实现大规模参数的深度学习模型的训练,第二路径导致第一处理器的计算单元的利用率较低。因此,本步骤中,第一处理器从第一路径和第二路径中确定出最优路径,以将弊端降至最低。而且,由于输入至第一计算单元的训练样本是不断变化的,第一计算单元的计算结果是动态变化的,因此,第一处理器确定出的最优路径也是动态变化的。例如,以假设一个批次加载至第一处理器的显存的训练样本有1024个,该1024个训练样本中包含长度为128、512等的训练样本,则对于长度为128的训练样本,由于第一计算单元训练该训练样本得到的计算结果较小,占用的显存比较小,若通过第二路径传递该计算结果,则会增加交换时间,导致深度学习模型训练速度变慢,因此,第一处理器确定出的最优路径为第一路径;对于长度为512的训练样本,由于第一计算单元训练该训练样本得到的计算结果较大,占用的显存比较大,若通过第一路径传递会占用第一处理器的显存,导致深度学习模型训练失败,因此,第一处理器确定出的最优路径为第二路径。
103、第一处理器通过所述最优路径将所述第一计算单元的计算结果传递至所述第二计算单元。
示例性的,若最优路径为第一路径,则第一处理器将第一计算单元的计算结果存储在第一处理器的显存中,直到该计算结果到达第二计算单元后,第一处理器释放该计算结果占用的显存;若最优路径为第二路径,则第一处理器将第一计算单元的计算结果发送给第二处理器,使得第二处理器对该计算结果执行交换(swap)操作,如换入(swap_in)操作和换出(swap_out)操作。当第一计算单元的计算结果到达第二处理器的内存,即执行换入操作后,第一处理器释放该计算结果占用的显存。
本申请实施例提供的面向深度学习训练任务的处理器显存优化方法,第一处理器接收到请求训练深度学习模型的请求指令后,从第一路径和第二路径中确定出最优路径,该第一路径为从第一计算单元直接到达第二计算单元,第二路径为通过显存交换到达第二计算单元,然后,第一处理器通过最优路径将第一计算单元的计算结果传递至第二计算单元。采用该种方案,通过确定出传递计算结果的最优路径,利用最优路径将第一计算单元的计算结果传递给第二计算单元,避免占用显存的同时,避免显存交换导致的GPU的计算单元利用率低的问题,使得大部分任务训练速度几乎不降低。另外,真实的训练环境中,显存占用随着训练样本的编号通常存在峰值,而且通常只有少数样本可以达到峰值情况。采用本申请实施例所述的方案,可以做到只对极少数情况动态的增加swap操作来满足峰值显存使用需求,避免存储溢出导致的训练失败,对于绝大多数非峰值的情况,并不需要增加swap操作,避免显存交换带来的开销,保证训练速度。
下面,对上述实施例中,第一处理器如何确定最优路径进行详细说明。
一种可行的实现方式中,第一处理器从第一路径和第二路径中确定出最优路径时,第一处理器确定所述第一处理器的显存的状态信息,根据所述状态信息,从第一路径和第二路径中确定出最优路径。
示例性的,第一处理器的显存的状态信息用于指示第一处理器的显存的状态。第一处理器可以根据显存的状态信息,确定传递第一计算单元的计算结果的路径。例如,若状态信息指示可用显存较大,则通过第一路径传递计算结果,以避免显存交换中swap操作花费时间过长导致深度学习模型训练速度变慢的问题。再如,若第一计算单元的计算结果比较大,若通过第一路径传递则造成显存被一直占用的问题,因此,第一处理器确定的最优路径为第二路径。
采用该种方案,实现第一处理器根据显存的状态信息确定最优路径的目的。
上述实施例中,可选的,状态信息包括下述信息中的至少一个:批次大小(batchsize)、训练样本的长度、所述计算结果占用所述显存的空间的大小、所述显存的交换速度、所述显存剩余空间的大小,其中,所述批次大小用于指示加载至所述显存的训练样本的数量,所述显存的交换速度用于指示单位时间内从所述显存到达第二处理器的内存的数据量。
示例性的,第一处理器可以根据显存当前的状态信息确定将第一计算单元的计算结果传递至第二计算单元的路径。下面,例举一些实现用例。示例性的,可参见图3,图3是本申请实施例提供的一种面向深度学习训练任务的处理器显存优化方法的举例示意图。
请参照图3,第一处理器包含的计算单元包括计算单元b、计算单元c、计算单元d和计算单元e,计算单元b的计算结果(tensor b)被计算单元c和计算单元e使用,计算单元c、计算单元d为计算单元b和计算单元e之间的中间计算单元。其中,第一计算单元为计算单元b、第二计算单元为计算单元、第三计算单元为计算单元d。
请参照图3,当第一处理器执行计算单元b对应的运算后,产生计算结果,即tensorb。由于计算单元c和计算单元b直连,因此,计算结果被直接传递至计算单元c,而计算单元b和计算单元e之间存在中间计算单元,也就是说,计算单元e只有在得到计算单元d的计算结果tensor d之后,才会使用tensor b和tensor d,该过程中,计算单元e需要等待第一处理器执行计算单元c和计算单元d对应运算。此时,第一处理器可以通过如下几种方式判断是通过第一路径将tensor b存储在显存中直到tensor b被利用,还是通过第二路径将tensorb交换到第二处理器的内存中。
方式一、第一处理器根据tensor b的大小从第一路径和第二路径中确定出最优路径。
示例性的,tensor b的大小指示了tensor b占用的显存的空间的大小,若tensorb小于特定的阈值,比如100KB,则第一处理器确定最优路径为第一路径;否则,第一处理器确定最优路径为第二路径。之所以tensor b小于阈值时走第一路径,是因为当tensor b比较小时,能节省的显存的空间是有限的,但是若执行swap操作则会浪费时间。该过程中,阈值的确定可以通过提前统计不同大小的tensor b调用swap操作的时间得到。
方式二、第一处理器根据显存的交换速度从第一路径和第二路径中确定出最优路径。
示例性的,若采用第二路径,则第一计算单元的计算结果从显存到达第一处理器的内存的过程称之为换出(swap_out)操作,之后,该计算结果从第一处理器的内存到达第二处理器的显存的过程称之为换入(swap_in)操作。深度学习模型训练过程中,会有其他的存储交换操作。采用方式二确定最优路径时,可以默认先通过第一路径传递tensor b,选取一些训练样本进行实际测试,根据实际测试结果得到换入操作的时长和缓存操作的时长,根据换入操作的时长和换出操作的时长确定显存交换速度,显存交换速度为tensor与交换时间的比值。若显存交换速度小于一定阈值,则将第一路径作为最优路径;若显存交换速度大于一定阈值,则将第二路径作为最优路径。
方式三、第一处理器根据训练样本的大小从第一路径和第二路径中确定出最优路径。
示例性的,训练样本的大小也可以称之为训练样本的长度。深度学习模型的训练对第一处理器的需求通常和训练样本的大小有关,如果当前训练样本的大小小于特定的阈值,则将第一路径作为最优路径,如果当前训练样本的大小大于特征的阈值,则将第二路径作为最优路径。
方式四、第一处理器对比不同tensor b的swap操作能够节省显存的大小,从第一路径和第二路径中确定出最优路径。
示例性的,第一处理器选取不同长度的训练样本,分别走第一路径和第二路径,统计每个训练样本的tensor b的swap操作能节省的显存的大小,进而根据能够节省显存的大小设置阈值,当节省的显存大小超过设置的阈值时,将第二路径作为最优路径;当节省的显存大小未超过设置的阈值时,将第一路径作为最优路径。
方式五、第一处理器对比不同tensor b的swap操作能够节省显存的大小以及增加的交换时间,根据节省显存的大小以及增加的交换时间,确定单位时间节省显存的大小,进而根据单位时间节省显存的大小,从第一路径和第二路径中确定出最优路径。其中,单位时间节省显存的大小等于对tensor b执行swap操作节省的显存的大小与增加的交换时间的比值。
方式六、第一处理器根据显存剩余空间的大小,从第一路径和第二路径中确定出最优路径。
示例性的,第一处理器根据当前输入样本的长度和提前统计的结果,预估当前的显存占用情况,结合当前可用显存的大小,选择单位时间节省显存数量大的tensor进行swap操作,当节省后的显存占用满足当前可用显存大小后,剩下的tensor都将第一路径作为最优路径。
采用本实施例所述的方案,实现灵活根据显存的状态信息确定最优路径的目的。
再请参照图3,当最优路径为第一路径时,tensor b通过粗黑实线所示的路径,即第一路径被传递至第二计算单元,即计算单元e。当最优路径为第二路径时,tenor b通过虚线所示路径,即第二路径被传递至第二计算单元。图中tensor b′和tensor b的区别在于:tensor b存储在第一处理器的显存中,tensor b′存储在第二处理器的内存中。另外,图中张量(tensor)c指计算单元c的计算结果,张量d指计算单元d的计算结果。
上述实施例中,为了避免tensor b′被过早的执行换入操作到达计算单元e,本申请实施例中,当最优路径为第二路径时,第一处理器从第一路径和第二路径中确定出最优路径之后,还从所述至少一个中间计算单元中确定第三计算单元,所述第三计算单元是所述至少一个中间计算单元中与所述第二计算单元相邻、且位于所述第二计算单元之前的计算单元,添加所述第三计算单元与所述第二处理器的交换操作的依赖关系。
示例性的,再请参照图3,第二处理器用于执行交换操作,包括换出操作(swap_out)和换入操作(swap_in)。由于第二处理器在得到计算单元d的计算结果后,才能执行计算单元e对应的运算。为了避免第二处理器过早的执行交换操作中的换入(swap_in)操作,增加计算单元d到换入操作的依赖,使得换入操作会在计算单元d对应的运算被执行完后才启动。
本实施例中,通过增加第三计算单元与交换操作的依赖关系,避免交换操作被过早的执行导致的显存占用。
下面,对上述实施例中,添加依赖关系后,第一处理器如何执行深度学习模型的训练进行详细说明。
一种可行的实现方式中,第一处理器添加所述第三计算单元与所述第二处理器的交换操作的依赖关系之后,还执行所述第一计算单元对应的运算以得到所述计算结果,将所述计算结果发送至所述第二处理器,以使得所述第二处理器对所述计算结果执行换出操作。之后,第一处理器判断是否完成所述第三计算单元对应的运算,若所述第一处理器完成所述第三计算单元对应的运算,则向所述第二处理器发送指示信息,以使得所述第二处理器对所述第一计算单元的计算结果执行换入操作,第一处理器根据所述第三计算单元的计算结果和执行完所述换入操作的计算结果执行所述第二计算单元对应的运算。
示例性的,再请参照图3,添加了计算单元d与换入操作的依赖关系后,深度学习模型的训练过程中,第一处理器依次执行计算单元b、计算单元c、计算单元d和计算单元e对应的运算。当第一处理器执行完计算单元b对应的运算得到tensor b后,将该tensor b发送至所述第二处理器,以使得所述第二处理器对所述计算结果执行换出操作,从而将tensor b从第一处理器的显存移动到第二处理器的内存中,得到tensor b′。之后,第一处理器根据tensor b执行计算单元c对应运算,以得到tensor c,进而根据tensor c执行计算单元d对应的运算,以得到tensor d。第一处理器判断出完成计算单元d对应的运算后,向第二处理器发送指示信息,该指示信息用于指示第二处理器对tensor b′执行换入操作。最后,第一处理器将tensor d和tensor b′作为输入执行计算单元e对应的运算。
本实施例中,通过增加第三计算单元与交换操作的依赖关系,避免交换操作被过早的执行导致的显存占用。
上述实施例中,所述第一处理器从第一路径和第二路径中确定出最优路径之后,还判断所述第一计算单元的计算结果是否被传递至所述第二处理器的内存,若所述第一计算单元的计算结果被传输至所述第二处理器的内存,则从所述显存中释放所述第一计算单元的计算结果占用的空间。
示例性的,再请参照图3,当最优路径为第二路径时,第一处理器得到tensor b后,若成功将该tensor b传递至计算单元c以及通过换出操作传递至第二处理器的内存,则从显存中释放tensor b占用的空间。
本实施例中,当计算结果执行完换出操作后,及时释放计算结果占用的显存,避免显存被占用导致的训练速度慢甚至无法训练的目的。
上述介绍了本申请实施例提到的面向深度学习训练任务的处理器显存优化方法的具体实现,下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图4为本申请实施例提供的面向深度学习训练任务的处理器显存优化装置的结构示意图。该装置可以集成在电子设备中或通过电子设备实现,电子设备可以终端设备或服务器等。如图4所示,在本实施例中,该面向深度学习训练任务的处理器显存优化装置100可以包括:
接收模块11,用于接收用户输入的请求指令,所述请求指令用于请求训练深度学习模型;
处理模块12,用于从第一路径和第二路径中确定出最优路径,所述第一路径下,第一计算单元的计算结果从所述第一计算单元直接到达第二计算单元,所述第二路径下,所述第一计算单元的计算结果在第二处理器的内存内执行完交换操作后到达所述第二计算单元,所述第一计算单元和所述第二计算单元包含于第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元;
传递模块13,用于通过所述最优路径将所述第一计算单元的计算结果传递至所述第二计算单元。
一种可行的设计中,所述处理模块12,用于确定所述第一处理器的显存的状态信息,根据所述状态信息,从第一路径和第二路径中确定出最优路径。
一种可行的设计中,所述状态信息包括下述信息中的至少一个:
批次大小,训练样本的长度、所述计算结果占用所述显存的空间的大小、所述显存的交换速度、所述显存剩余空间的大小,其中,所述批次大小用于指示加载至所述显存的训练样本的数量,所述显存的交换速度用于指示单位时间内从所述显存到达第二处理器的内存的数据量。
一种可行的设计中,所述最优路径为所述第二路径,所述处理模块12,在从第一路径和第二路径中确定出最优路径之后,还用于从所述至少一个中间计算单元中确定第三计算单元,所述第三计算单元是所述至少一个中间计算单元中与所述第二计算单元相邻、且位于所述第二计算单元之前的计算单元,添加所述第三计算单元与所述第二处理器的交换操作的依赖关系。
一种可行的设计中,所述交换操作包括换出操作和换入操作,所述处理模块12,在添加所述第三计算单元与所述第二处理器的交换操作的依赖关系之后,还用于执行所述第一计算单元对应的运算以得到所述计算结果,所述计算结果发送至所述第二处理器,以使得所述第二处理器对所述计算结果执行所述换出操作,判断是否完成所述第三计算单元对应的运算,若所述第一处理器完成所述第三计算单元对应的运算,则向所述第二处理器发送指示信息,以使得所述第二处理器对所述第一计算单元的计算结果执行所述换入操作,根据所述第三计算单元的计算结果和执行完所述换入操作的计算结果执行所述第二计算单元对应的运算。
一种可行的设计中,所述处理模块12,在从第一路径和第二路径中确定出最优路径之后,还用于判断所述第一计算单元的计算结果是否被传递至所述第二处理器的内存,若所述第一计算单元的计算结果被传输至所述第二处理器的内存,则从所述显存中释放所述第一计算单元的计算结果占用的空间。
一种可行的设计中,所述第一处理器为张量处理器TPU或图形处理器GPU。
本申请实施例提供的装置,可用于如上实施例中第一处理器执行的方法,其实现原理和技术效果类似,在此不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
图5是用来实现本申请实施例的面向深度学习训练任务的处理器显存优化方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的面向深度学习训练任务的处理器显存优化方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的面向深度学习训练任务的处理器显存优化方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的面向深度学习训练任务的处理器显存优化方法对应的程序指令/模块(例如,附图4所示的接收模块11、处理模块12和传递模块13)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的面向深度学习训练任务的处理器显存优化方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储电子设备为执行面向深度学习训练任务的处理器显存优化方法所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
面向深度学习训练任务的处理器显存优化方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与面向深度学习训练任务的处理器显存优化有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
本申请实施例还提供一种面向深度学习训练任务的处理器显存优化方法,包括:第一处理器确定第一计算单元的计算结果传输至第二计算单元的路径,所述第一计算单元和所述第二计算单元包含于所述第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元,第一处理器通过所述路径向所述第二计算单发送所述第一计算单元的计算结果。
根据本申请实施例的技术方案,第一处理器接收到请求训练深度学习模型的请求指令后,从第一路径和第二路径中确定出最优路径,该第一路径为从第一计算单元直接到达第二计算单元,第二路径为通过显存交换到达第二计算单元,然后,第一处理器通过最优路径将第一计算单元的计算结果传递至第二计算单元。采用该种方案,通过确定出传递计算结果的最优路径,利用最优路径将第一计算单元的计算结果传递给第二计算单元,避免占用显存的同时,避免显存交换导致的GPU的计算单元利用率低的问题,使得大部分任务训练速度几乎不降低。另外,真实的训练环境中,显存占用随着训练样本的编号通常存在峰值,而且通常只有少数样本可以达到峰值情况。采用本申请实施例所述的方案,可以做到只对极少数情况动态的增加swap操作来满足峰值显存使用需求,避免存储溢出导致的训练失败,对于绝大多数非峰值的情况,并不需要增加swap操作,避免显存交换带来的开销,保证训练速度。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (17)
1.一种面向深度学习训练任务的处理器显存优化方法,其特征在于,包括:
第一处理器接收用户输入的请求指令,所述请求指令用于请求训练深度学习模型;
所述第一处理器从第一路径和第二路径中确定出最优路径,所述第一路径下,第一计算单元的计算结果从所述第一计算单元直接到达第二计算单元,所述第二路径下,所述第一计算单元的计算结果在第二处理器的内存内执行完交换操作后到达所述第二计算单元,所述第一计算单元和所述第二计算单元包含于所述第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元;
所述第一处理器通过所述最优路径将所述第一计算单元的计算结果传递至所述第二计算单元。
2.根据权利要求1所述的方法,其特征在于,所述第一处理器从第一路径和第二路径中确定出最优路径,包括:
所述第一处理器确定所述第一处理器的显存的状态信息;
所述第一处理器根据所述状态信息,从第一路径和第二路径中确定出最优路径。
3.根据权利要求2所述的方法,其特征在于,所述状态信息包括下述信息中的至少一个:
批次大小,训练样本的长度、所述计算结果占用所述显存的空间的大小、所述显存的交换速度、所述显存剩余空间的大小,其中,所述批次大小用于指示加载至所述显存的训练样本的大小,所述显存的交换速度用于指示单位时间内从所述显存到达第二处理器的内存的数据量。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述最优路径为所述第二路径,所述第一处理器从第一路径和第二路径中确定出最优路径之后,还包括:
所述第一处理器从所述至少一个中间计算单元中确定第三计算单元,所述第三计算单元是所述至少一个中间计算单元中与所述第二计算单元相邻、且位于所述第二计算单元之前的计算单元;
所述第一处理器添加所述第三计算单元与所述第二处理器的交换操作的依赖关系。
5.根据权利要求4所述的方法,其特征在于,所述交换操作包括换出操作和换入操作,所述第一处理器添加所述第三计算单元与所述第二处理器的交换操作的依赖关系之后,还包括:
所述第一处理器执行所述第一计算单元对应的运算以得到所述计算结果;
所述第一处理器将所述计算结果发送至所述第二处理器,以使得所述第二处理器对所述计算结果执行所述换出操作;
所述第一处理器判断是否完成所述第三计算单元对应的运算,若所述第一处理器完成所述第三计算单元对应的运算,则向所述第二处理器发送指示信息,以使得所述第二处理器对所述第一计算单元的计算结果执行所述换入操作;
所述第一处理器根据所述第三计算单元的计算结果和执行完所述换入操作的计算结果执行所述第二计算单元对应的运算。
6.根据权利要求4或5所述的方法,其特征在于,所述第一处理器从第一路径和第二路径中确定出最优路径之后,还包括:
所述第一处理器判断所述第一计算单元的计算结果是否被传递至所述第二处理器的内存;
若所述第一计算单元的计算结果被传输至所述第二处理器的内存,则从所述显存中释放所述第一计算单元的计算结果占用的空间。
7.根据权利要求1~3任一项所述的方法,其特征在于,所述第一处理器为张量处理器TPU或图形处理器GPU。
8.一种面向深度学习训练任务的处理器显存优化装置,其特征在于,包括:
接收模块,用于接收用户输入的请求指令,所述请求指令用于请求训练深度学习模型;
处理模块,用于从第一路径和第二路径中确定出最优路径,所述第一路径下,第一计算单元的计算结果从所述第一计算单元直接到达第二计算单元,所述第二路径下,所述第一计算单元的计算结果在第二处理器的内存内执行完交换操作后到达所述第二计算单元,所述第一计算单元和所述第二计算单元包含于第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元;
传递模块,用于通过所述最优路径将所述第一计算单元的计算结果传递至所述第二计算单元。
9.根据权利要求8所述的装置,其特征在于,
所述处理模块,用于确定所述第一处理器的显存的状态信息,根据所述状态信息,从第一路径和第二路径中确定出最优路径。
10.根据权利要求9所述的装置,其特征在于,所述状态信息包括下述信息中的至少一个:
批次大小,训练样本的长度、所述计算结果占用所述显存的空间的大小、所述显存的交换速度、所述显存剩余空间的大小,其中,所述批次大小用于指示加载至所述显存的训练样本的大小,所述显存的交换速度用于指示单位时间内从所述显存到达第二处理器的内存的数据量。
11.根据权利要求8~10任一项所述的装置,其特征在于,所述最优路径为所述第二路径,所述处理单元,在从第一路径和第二路径中确定出最优路径之后,还用于从所述至少一个中间计算单元中确定第三计算单元,所述第三计算单元是所述至少一个中间计算单元中与所述第二计算单元相邻、且位于所述第二计算单元之前的计算单元,添加所述第三计算单元与所述第二处理器的交换操作的依赖关系。
12.根据权利要求11所述的装置,其特征在于,所述交换操作包括换出操作和换入操作,所述处理单元,在添加所述第三计算单元与所述第二处理器的交换操作的依赖关系之后,还用于执行所述第一计算单元对应的运算以得到所述计算结果,所述计算结果发送至所述第二处理器,以使得所述第二处理器对所述计算结果执行所述换出操作,判断是否完成所述第三计算单元对应的运算,若所述第一处理器完成所述第三计算单元对应的运算,则向所述第二处理器发送指示信息,以使得所述第二处理器对所述第一计算单元的计算结果执行所述换入操作,根据所述第三计算单元的计算结果和执行完所述换入操作的计算结果执行所述第二计算单元对应的运算。
13.根据权利要求11或12所述的装置,其特征在于,
所述处理模块,在从第一路径和第二路径中确定出最优路径之后,还用于判断所述第一计算单元的计算结果是否被传递至所述第二处理器的内存,若所述第一计算单元的计算结果被传输至所述第二处理器的内存,则从所述显存中释放所述第一计算单元的计算结果占用的空间。
14.根据权利要求8~10任一项所述的装置,其特征在于,所述第一处理器为张量处理器TPU或图形处理器GPU。
15.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的方法。
17.一种面向深度学习训练任务的处理器显存优化方法,其特征在于,包括:
第一处理器确定第一计算单元的计算结果传输至第二计算单元的路径,所述第一计算单元和所述第二计算单元包含于所述第一处理器中,所述第一计算单元和所述第二计算单元之间存在至少一个中间计算单元;
所述第一处理器通过所述路径向所述第二计算单元发送所述第一计算单元的计算结果。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910996309.3A CN110751282A (zh) | 2019-10-18 | 2019-10-18 | 面向深度学习训练任务的处理器内存优化方法及装置 |
EP20864303.1A EP3869417B1 (en) | 2019-10-18 | 2020-06-09 | Processor memory optimization method and apparatus oriented toward deep learning training task |
PCT/CN2020/095152 WO2021073125A1 (zh) | 2019-10-18 | 2020-06-09 | 面向深度学习训练任务的处理器内存优化方法及装置 |
KR1020217008257A KR20210038977A (ko) | 2019-10-18 | 2020-06-09 | 딥 러닝 훈련 임무를 위한 프로세서 메모리 최적화 방법 및 장치 |
JP2021516427A JP7265618B2 (ja) | 2019-10-18 | 2020-06-09 | 深層学習トレーニングタスクに向けたプロセッサメモリを最適化するための方法及び装置 |
US17/211,146 US20210209471A1 (en) | 2019-10-18 | 2021-03-24 | Processor memory optimization method and apparatus for deep learning training tasks |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910996309.3A CN110751282A (zh) | 2019-10-18 | 2019-10-18 | 面向深度学习训练任务的处理器内存优化方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110751282A true CN110751282A (zh) | 2020-02-04 |
Family
ID=69278933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910996309.3A Pending CN110751282A (zh) | 2019-10-18 | 2019-10-18 | 面向深度学习训练任务的处理器内存优化方法及装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210209471A1 (zh) |
EP (1) | EP3869417B1 (zh) |
JP (1) | JP7265618B2 (zh) |
CN (1) | CN110751282A (zh) |
WO (1) | WO2021073125A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021073125A1 (zh) * | 2019-10-18 | 2021-04-22 | 北京百度网讯科技有限公司 | 面向深度学习训练任务的处理器内存优化方法及装置 |
CN112882830A (zh) * | 2021-02-03 | 2021-06-01 | 北京迈格威科技有限公司 | 显存管理、模型训练方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130249925A1 (en) * | 2009-06-23 | 2013-09-26 | Boris Ginzburg | Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System |
WO2018217970A2 (en) * | 2017-05-24 | 2018-11-29 | 650 Industries, Inc. | Method and apparatus for hardware accelerated graphics rendering in bridge apis |
CN109919310A (zh) * | 2019-01-15 | 2019-06-21 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的gpu内存优化方法及系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10402746B2 (en) * | 2014-09-10 | 2019-09-03 | Amazon Technologies, Inc. | Computing instance launch time |
US11087234B2 (en) * | 2016-01-29 | 2021-08-10 | Verizon Media Inc. | Method and system for distributed deep machine learning |
CN106021463B (zh) * | 2016-05-17 | 2019-07-09 | 北京百度网讯科技有限公司 | 基于人工智能提供智能服务的方法、智能服务系统及智能终端 |
US10839286B2 (en) * | 2017-09-14 | 2020-11-17 | Xilinx, Inc. | System and method for implementing neural networks in integrated circuits |
US11803764B2 (en) * | 2017-09-29 | 2023-10-31 | Sony Interactive Entertainment Inc. | Mobile and autonomous personal companion based on an artificial intelligence (AI) model for a user |
CN110118566B (zh) * | 2018-02-06 | 2022-11-25 | 腾讯科技(深圳)有限公司 | 机器人运行路径生成方法及装置 |
JP2019211969A (ja) * | 2018-06-04 | 2019-12-12 | オリンパス株式会社 | 学習管理装置、学習管理サーバ、および学習管理方法 |
CN109214512B (zh) * | 2018-08-01 | 2021-01-22 | 中兴飞流信息科技有限公司 | 一种深度学习的参数交换方法、装置、服务器及存储介质 |
CN109343978B (zh) * | 2018-09-27 | 2020-10-20 | 苏州浪潮智能科技有限公司 | 一种深度学习分布式框架用的数据交换方法与装置 |
US10776164B2 (en) * | 2018-11-30 | 2020-09-15 | EMC IP Holding Company LLC | Dynamic composition of data pipeline in accelerator-as-a-service computing environment |
CN110751282A (zh) * | 2019-10-18 | 2020-02-04 | 北京百度网讯科技有限公司 | 面向深度学习训练任务的处理器内存优化方法及装置 |
US11288513B1 (en) * | 2019-11-06 | 2022-03-29 | Amazon Technologies, Inc. | Predictive image analysis |
-
2019
- 2019-10-18 CN CN201910996309.3A patent/CN110751282A/zh active Pending
-
2020
- 2020-06-09 EP EP20864303.1A patent/EP3869417B1/en active Active
- 2020-06-09 WO PCT/CN2020/095152 patent/WO2021073125A1/zh unknown
- 2020-06-09 JP JP2021516427A patent/JP7265618B2/ja active Active
-
2021
- 2021-03-24 US US17/211,146 patent/US20210209471A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130249925A1 (en) * | 2009-06-23 | 2013-09-26 | Boris Ginzburg | Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System |
WO2018217970A2 (en) * | 2017-05-24 | 2018-11-29 | 650 Industries, Inc. | Method and apparatus for hardware accelerated graphics rendering in bridge apis |
CN109919310A (zh) * | 2019-01-15 | 2019-06-21 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的gpu内存优化方法及系统 |
Non-Patent Citations (1)
Title |
---|
吴文文: "面向深度学习的GPU访存优化研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021073125A1 (zh) * | 2019-10-18 | 2021-04-22 | 北京百度网讯科技有限公司 | 面向深度学习训练任务的处理器内存优化方法及装置 |
CN112882830A (zh) * | 2021-02-03 | 2021-06-01 | 北京迈格威科技有限公司 | 显存管理、模型训练方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2022505016A (ja) | 2022-01-14 |
US20210209471A1 (en) | 2021-07-08 |
EP3869417A4 (en) | 2022-07-27 |
EP3869417B1 (en) | 2024-02-14 |
EP3869417A1 (en) | 2021-08-25 |
JP7265618B2 (ja) | 2023-04-26 |
WO2021073125A1 (zh) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110826507B (zh) | 人脸检测方法、装置、设备及存储介质 | |
CN111738446B (zh) | 深度学习推理引擎的调度方法、装置、设备和介质 | |
CN111461290A (zh) | 模型参数更新方法及装置 | |
CN111459618A (zh) | 虚拟化环境中的智能gpu调度 | |
CN111814959A (zh) | 模型训练数据的处理方法、装置、系统和存储介质 | |
EP3961395A1 (en) | Method and apparatus for scheduling memory access request, device and storage medium | |
CN114911596B (zh) | 针对模型训练的调度方法、装置、电子设备和存储介质 | |
CN111966361B (zh) | 用于确定待部署模型的方法、装置、设备及其存储介质 | |
CN110688327B (zh) | 显存管理方法、装置、电子设备和计算机可读存储介质 | |
US20210209471A1 (en) | Processor memory optimization method and apparatus for deep learning training tasks | |
CN111259205A (zh) | 一种图数据库遍历方法、装置、设备及存储介质 | |
JP2023529947A (ja) | 命令送信方法、命令送信装置、電子機器、記憶媒体およびコンピュータプログラム | |
CN115168256A (zh) | 中断控制方法、中断控制器、电子设备、介质和芯片 | |
CN112329919B (zh) | 模型训练方法及装置 | |
CN112486644A (zh) | 用于生成信息的方法、装置、设备以及存储介质 | |
CN111694648A (zh) | 一种任务调度方法、装置以及电子设备 | |
US20220113943A1 (en) | Method for multiply-add operations for neural network | |
KR20210038977A (ko) | 딥 러닝 훈련 임무를 위한 프로세서 메모리 최적화 방법 및 장치 | |
CN110782029A (zh) | 神经网络预测方法、装置、电子设备和自动驾驶系统 | |
CN111767989A (zh) | 神经网络的训练方法和装置 | |
CN115145730B (zh) | 运行监测方法、装置、电子设备和存储介质 | |
CN112114874B (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN115334159B (zh) | 处理流式数据的方法、装置、设备和介质 | |
CN111562962B (zh) | 画面渲染方法、装置、电子设备和存储介质 | |
CN115827282A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200204 |
|
RJ01 | Rejection of invention patent application after publication |