CN114661474A - 信息处理方法、装置、设备、存储介质及程序产品 - Google Patents
信息处理方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN114661474A CN114661474A CN202210334467.4A CN202210334467A CN114661474A CN 114661474 A CN114661474 A CN 114661474A CN 202210334467 A CN202210334467 A CN 202210334467A CN 114661474 A CN114661474 A CN 114661474A
- Authority
- CN
- China
- Prior art keywords
- thread
- threads
- acceleration chip
- target
- target thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请实施例提供信息处理方法、装置、设备、存储介质及程序产品,其方法包括:获取目标任务对应的多个线程以及多个训练集,目标任务由多个线程执行,目标任务支持弹性训练;确定为目标任务提供弹性资源的至少一个加速芯片,并根据多个线程,为每个加速芯片匹配至少一个线程;针对每个训练集,执行下述步骤:针对每个加速芯片,为加速芯片分配一个目标线程,以使当前目标线程根据训练集,执行逻辑操作,并在当前目标线程执行逻辑操作完成后,为加速芯片切换下一个目标线程,直至多个线程在至少一个加速芯片全部执行完毕,用以更新目标任务对应的模型参数。能够实现在支持弹性训练的同时,保证模型的精度。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种信息处理方法、装置、设备、存储介质及程序产品。
背景技术
深度神经网络已经应用在很多广泛部署的***中,横跨多个领域,包括计算机视觉、自然语言处理、语音识别,也可以包括推荐和广告等。因此,深度学习已经成为产品数据流中至关重要的一环。为了支持这种大规模的深度学习应用,一般都会构建大规模共享的加速芯片集群,用来执行多个深度学习任务。
然而,在这些共享加速芯片集群中观察发现,其实很多时候加速芯片资源仍然处于相对低的利用率状态,于此同时,有一些任务却仍在排队等待,整个集群的吞吐量并不很高。此外,由于资源共享也会导致任务的抢占。为了解决上述集群任务排队延迟长,抢占导致失败的问题,使训练任务适应弹性资源是一个很直接的方法。训练任务在支持弹性后可以尽快利用可用资源开始处理,消除因集群调度而产生的强制性等待,并且在被抢占资源的时候使用剩余的资源继续训练,从而提高集群利用率,并减少任务完成时间。目前,弹性训练的方法往往通过改造同步方法、超参数调整、小批量大小调整等方式来达到与固定资源的同步分布式训练类似的模型质量,但是,无法完全做到与不使用弹性资源情况下精度的一致性,即无法保证模型精度。
因此,现有技术中,无法实现在支持弹性训练的同时,保证模型的精度。
发明内容
本申请实施例提供一种信息处理方法、装置、设备、存储介质及程序产品,以解决现有技术无法实现在支持弹性训练的同时,保证模型的精度。
第一方面,本申请实施例提供一种信息处理方法,所述方法包括:
获取目标任务对应的多个线程以及多个训练集,所述目标任务由多个线程执行,所述目标任务支持弹性训练;
确定为所述目标任务提供弹性资源的至少一个加速芯片,并根据所述多个线程,为每个所述加速芯片匹配至少一个线程;
针对每个所述训练集,执行下述步骤:针对每个所述加速芯片,为所述加速芯片分配一个目标线程,以使当前目标线程根据所述训练集,执行逻辑操作,并在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数。
可选的,所述获取目标任务对应的多个线程,包括:
确定所述目标任务在分布式数据并行中使用的进程数量;
对所述目标任务进行线程抽象,确定所述多个线程,以使在运行时,每个所述加速芯片支持执行任意数量的所述线程;
其中,所述多个线程的数量与所述进程数量相同。
可选的,所述根据所述多个线程,为每个所述加速芯片匹配至少一个线程,包括:
根据每个所述加速芯片的配置信息,确定为每个所述加速芯片分配的线程数量;
基于为每个所述加速芯片分配的线程数量,将所述多个线程分配到对应的加速芯片上,使得每个所述加速芯片为至少一个线程提供资源;
其中,每个所述加速芯片在同一时间支持一个线程执行逻辑。
可选的,所述在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数,包括:
在当前目标线程执行逻辑完成后,生成所述当前目标线程的随机状态以及对应的梯度值,将所述当前目标线程的随机状态作为所述当前目标线程的初始状态进行存储,并存储所述当前目标线程对应的梯度值;其中,所述随机状态用于生成随机数序列;
获取下一个目标线程的初始状态,根据所述下一个目标线程的初始状态,确定随机数以及所述随机数对应的所述下一个目标线程的随机状态,并将所述下一个目标线程的随机状态作为所述下一个目标线程的初始状态进行存储;所述随机数用于支持所述下一个目标线程在所述加速芯片上执行逻辑操作;
当所述多个线程在所述至少一个加速芯片全部执行完毕,根据每个所述线程对应的梯度值,更新所述目标任务对应的模型参数。
可选的,所述根据所述下一个目标线程的初始状态,确定所述下一个目标线程的随机状态,包括:
根据所述下一个目标线程的初始状态,通过随机数生成器,生成随机数以及所述随机数对应的所述下一个目标线程的随机状态;
其中,所述随机状态包括:用于表示Python接口的深度学习框架的状态、用于表示Python的开源的科学计算库的状态以及随机数生成器的状态。
可选的,所述将所述当前目标线程的随机状态作为所述当前目标线程的初始状态进行存储,包括:
将所述当前目标线程的初始状态存储在所述至少一个加速芯片的预设共享池中,用以支持在弹性资源发生时,获取相应的线程的初始状态;
相应的,所述存储所述当前目标线程对应的梯度值,包括:
将所述当前目标线程对应的梯度值卸载到内存上,用以支持与所述下一个目标线程对应的梯度值进行融合计算。
可选的,所述确定为所述目标任务提供弹性资源的至少一个加速芯片,包括:
当弹性资源触发后,获取当前支持为所述目标任务提供训练的目标资源,所述目标资源为加速芯片,所述加速芯片的个数为至少一个。
第二方面,本申请实施例提供一种信息处理装置,所述装置包括:
获取模块,用于获取目标任务对应的多个线程以及多个训练集,所述目标任务由多个线程执行,所述目标任务支持弹性训练;
第一处理模块,用于确定为所述目标任务提供弹性资源的至少一个加速芯片,并根据所述多个线程,为每个所述加速芯片匹配至少一个线程;
第二处理模块,用于针对每个所述训练集,执行下述步骤:针对每个所述加速芯片,为所述加速芯片分配一个目标线程,以使当前目标线程根据所述训练集,执行逻辑操作,并在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数。
第三方面,本申请实施例提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面任一项所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如第一方面任一项所述的方法。
本申请实施例提供的信息处理方法、装置、设备、存储介质及程序产品,该方法通过获取目标任务以及参与训练的多个训练集,来执行弹性训练任务,当资源弹性发生时,首先确定能够提供弹性资源的加速芯片,并基于训练任务,为加速芯片分配线程,使得每个加速芯片在同一时间只支持一个线程执行逻辑,当执行完成后,在切换成下一个线程执行逻辑,实现交替执行,当所有的线程都被执行完以后,更新一次模型参数,实现一轮的训练,然后重复上述步骤,执行下一轮的训练。因此,通过交替执行的方式,没有对同步方法、超参数、小批量大小等做调整或修改,即可实现弹性训练,同时由于无修改数据,所以与现有的固定资源时训练的模型质量一致,即保证了模型精度。因此,本申请在支持弹性资源的深度学习训练任务的同时,能够提高现有技术支持弹性训练的模型精度,实现了与固定资源时训练的模型质量一致性,保证了模型精度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的信息处理方法的场景示意图;
图2为本申请实施例提供的信息处理方法的流程示意图;
图3A为现有技术中使用GPU资源的应用示意图一;
图3B为现有技术中使用GPU资源的应用示意图二;
图3C为本申请实施例提供的使用GPU资源的应用示意图;
图4为本申请再一实施例提供的信息处理方法的流程示意图;
图5为本申请实施例提供的信息处理装置的结构示意图;
图6为本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例还能够包括除了图示或描述的那些实例以外的其他顺序实例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
目前,弹性训练的方法往往通过改造同步方法、超参数调整、小批量大小调整等方式来达到与固定资源的同步分布式训练类似的模型质量,但是,无法完全做到与不使用弹性资源情况下精度的一致性,即无法保证模型精度。因此,现有技术中,无法实现在支持弹性训练的同时,提高支持弹性训练的模型精度,进而无法实现与固定资源时训练的模型质量一致性,无法保证模型精度。
为了解决上述问题,本申请的发明构思为:当弹性资源触发时,首先确定能够提供资源的加速芯片,并基于训练任务,为加速芯片分配线程,使得每个加速芯片在同一时间只支持一个线程执行逻辑,当执行完成后,在切换成下一个线程执行逻辑,当所有的线程都被执行完以后,更新一次模型参数,实现一轮的训练,然后重复上述步骤,执行下一轮的训练,进而实现弹性训练,由于该弹性训练的过程无需修改使用固定资源训练时的参数,因此,提高现有技术支持弹性训练的模型精度,实现了与固定资源时训练的模型质量一致性,保证了模型精度。
图1为本申请实施例提供的信息处理方法的场景示意图。用户通过终端设备利用用户编程接口写入程序,即在一个继承自的类中对训练进行编程。这里的编程区别于现有技术,它将在硬件上的执行和高层应用编程接口解耦,即无需编程线程与硬件(比如加速芯片等)上的执行逻辑,比如,线程1分配在加速芯片1上执行,线程2分配在加速芯片2上执行等。
在运行时,服务器基于用户输入的目标任务以及训练样本集,执行训练操作,当弹性资源发生时,服务器根据可用的加速芯片资源,将目标任务对应的进程抽象为EasyScaleThread(即支持弹性异构且精度无损的深度学习训练框架的线程,以下均称为线程),并为可用的加速芯片分配线程,并且保证针对每个加速芯片,在同一时间,运行时只安排一个EasyScaleThread的逻辑执行,而冻结其他的执行。当执行完成后,通过上下文切换的方式,切换成下一个线程执行逻辑,当所有的线程都被执行完以后,更新一次模型参数,实现一轮的训练,然后重复上述步骤,执行下一轮的训练,直到训练停止,将训练结果反馈至终端设别。该弹性训练过程,无需对同步方法、超参数、小批量(大小等做修改,即可实现弹性训练,同时由于无修改数据,所以与现有的固定资源时的训练的模型质量一致,即保证了模型精度。因此,本申请在支持弹性资源的深度学习训练任务的同时,能够保证模型精度。
其中,小批量用于表示:深度学习场景中,在对训练集执行梯度下降算法时,将整个数据集分为若干的小的训练集,每一次对一个小的子集进行训练,一方面是避免全部数据集一次性参与训练带来的计算量巨大的问题,另一方面子集的梯度方向和整个数据集差别不会太大,保证了训练的正确性。
下面以具体实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的信息处理方法的流程示意图,本实施例的方法可以由服务器执行,该服务器中可以部署集群调度器,用以实现资源调度。如图2所示,本实施例的方法,可以包括:
S201:获取目标任务对应的多个线程以及多个训练集。
其中,所述目标任务由多个线程执行,所述目标任务支持弹性训练。
本实施例中,用户在编写目标任务时,可以根据理论worker的数量(也就是EasyScaleThread的数量,它与PyTorch(深度学习计算框架)原生的分布式数据并行方法(DistributedDataParallel,DDP)中使用的worker数量一致)来考虑应用的逻辑(例如:学习率这个超参数)。因此,获取到的目标任务可以由多个线程执行。
S202:确定为所述目标任务提供弹性资源的至少一个加速芯片,并根据所述多个线程,为每个所述加速芯片匹配至少一个线程。
这里的加速芯片可以为GPU(Graphics Processing Unit,GPU)芯片或AI芯片。下述实施例均以GPU为例,对信息处理方法进行详细说明。
比如,确定为所述目标任务提供弹性资源的至少一个GPU,并根据所述多个线程,为每个所述GPU匹配至少一个线程。
其中,弹性资源或资源弹性用于表示训练任务可以使用在数量上动态变化的资源,例如,可用GPU个数在1-100之间来回波动。
可选的,所述确定为所述目标任务提供弹性资源的至少一个加速芯片,可以包括:当弹性资源触发后,获取当前支持为所述目标任务提供训练的目标资源,所述目标资源为加速芯片,所述加速芯片的个数为至少一个。
这里的触发资源弹性,是在计算集群处于多租户的场景下,也就是在同一个GPU集群上有多个用户提交多个任务。当有用户提交任务时,就会占用计算资源,引起资源数量变化。
本实施例中,可以实现在异构GPU之间分配支持弹性异构且精度无损的深度学习训练框架的线程(即EasyScaleThread)以最大化GPU利用率。其中,EasyScaleThread:在这里,用户对应用和算法逻辑进行编程以便在一个线程中执行,这符合当前深度学习领域的编程模式。
其中,在运行时,每个加速芯片可以执行任意数量的EasyScaleThread,从而实现弹性训练。通过这样的抽象,训练任务(比如DLT(Deep Learning Training,DLT)作业,在本实施例中侧重于分布式训练任务作业)不再与GPU的固定并行度紧耦合。
S203:针对每个所述训练集,执行下述步骤:针对每个所述加速芯片,为所述加速芯片分配一个目标线程,以使当前目标线程根据所述训练集,执行逻辑操作,并在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数。
本实施例中,当弹性资源发生时,为可用的GPU分配线程,使得线程进行交替式的单独执行逻辑。即每个GPU在同一时间只支持一个线程执行逻辑,当执行完成后,在切换成下一个线程执行逻辑,当所有的线程都被执行完以后,更新一次模型参数,实现一轮的训练,然后重复上述步骤,执行下一轮的训练,直到训练停止。
示例性的,结合图3A和图3B示出的现有技术中使用GPU资源的应用示意图(其中,图3A展示了当前深度学习的固定并行度数据并行训练作业的GPU利用方法的示意图;图3B展示了直观的支持资源弹性的方法的示意图),以及图3C示出的本申请实施例提供的使用GPU资源的应用示意图,可以确定现有技术与本申请实施例的差异性。
具体地,以一个4worker(即作业,一个作业对应一个进程)的PyTorch(即一种深度学习框架)为例,每个worker固定使用一个特定的GPU(共4个)进行模型训练和梯度同步(参见图3A所示,4-worker on fixed 4GPUs表示4个worker固定使用4个GPU)。即PyTorchworker0分配在GPU0上执行,PyTorch worker1分配在GPU1上执行,PyTorch worker2分配在GPU2上执行,PyTorch worker3分配在GPU3上执行。
理想情况下,当资源弹性发生时,比如可用GPU减少到2个,假设GPU有着无限的显存和计算能力,4个PyTorch worker仍然可以做精度无损的同步训练,此时每个GPU承担两个进程(参见图3B所示,4-worker executing on 2ideal GPUs表示4个worker在理想情况下使用2个GPU执行(即2ideal GPUs)。即PyTorch worker0和PyTorch worker1分配在idealGPU0上执行;PyTorch worker2和PyTorch worker3分配在ideal GPU1上执行)。这种情况下的工作集(这里的工作集是指所有worker的工作状态,主要就包含每个worker对应的进程状态)与使用4个GPU时一致,这是因为每个进程的状态都一致。但是,一个GPU的显存和算力并不是无限的。当在GPU上运行一个DLT作业时,至少模型权重和优化器状态是要保存在GPU上的。通过在单个GPU上并发执行DLT作业的多个worker,在它们的前向传播过程,并发的显存消耗会导致显存用尽或者在显存主存换入换出中产生大量开销。即使不考虑worker的工作集,每个worker的CUDA(Compute Unified Device Architecture,统一计算设备架构)上下文的显存开销仍然是不可忽略的。例如,再V100 GPU上执行32个worker,仅CUDA上下文就需要消耗23GB显存(每个CUDA上下文约750MB),而V100总共只有32GB显存。因此,可以通过改造同步方法、超参数调整、小批量大小调整等方法来最终取得与固定资源的同步分布式训练类似的模型质量(即训练集/验证集的损失),但是,无法完全做到与不使用弹性资源情况下bitwise(按位的)一致。
为了提高现有的弹性训练带来的精度低的问题,通过抽象概念EasyScaleThread,用户对应用和算法逻辑进行编程以便在一个线程中执行,在编程时,用户只需要根据理论worker的数量来考虑应用的逻辑。在运行时,每个GPU可以执行任意数量的EasyScaleThread,从而实现弹性训练。通过这样的抽象,DLT作业不再与GPU的固定并行度紧耦合(参见图3C,PY可以表示Python,使用Python语言编程,PyTorch worker0包括两个线程EST_0、EST_1,分配在GPU0上依次执行;PyTorch worker1包括两个线程EST_2和EST_3,分配在GPU1上依次执行)。
具体地,EasyScaleThread的抽象,它将在硬件上的执行和高层应用编程接口解耦。此外,它最大限度地减少了用户在迁移工作中的努力,并且最大程度地避免引入限制用户编程能力的额外约束。例如,用户仍然可以调整超参数和使用第三方库。用户可以在一个继承自EasyScaleThread的类中对训练进行编程。因此,它允许运行时***根据分配给GPU的worker数量来复制它、hook执行流程、并访问模型和优化器的状态以尽量减少上下文切换的开销,并通过一系列的逻辑,提供准确度一致的结果。此外,迭代训练的迭代步应该在用户代码中被标注出来,这是方案在小批量的边界进行精度一致的上下文切换的关键。
本申请提供的信息处理方法,通过获取目标任务以及参与训练的多个训练集,来执行弹性训练任务,当资源弹性发生时,首先确定能够提供弹性资源的加速芯片,并基于训练任务,为加速芯片分配线程,使得每个加速芯片在同一时间只支持一个线程执行逻辑,当执行完成后,在切换成下一个线程执行逻辑,实现交替执行,当所有的线程都被执行完以后,更新一次模型参数,实现一轮的训练,然后重复上述步骤,执行下一轮的训练。因此,通过交替执行的方式,没有对同步方法、超参数、小批量大小等做调整或修改,即可实现弹性训练,同时由于无修改数据,所以与现有的固定资源时训练的模型质量一致,即保证了模型精度。因此,本申请在支持弹性资源的深度学习训练任务的同时,能够提高现有技术支持弹性训练的模型精度,实现了与固定资源时训练的模型质量一致性,保证了模型精度。
可选的,获取目标任务对应的多个线程,可以通过以下步骤实现:
步骤a1、确定所述目标任务在分布式数据并行中使用的进程数量。
步骤a2、对所述目标任务进行线程抽象,确定所述多个线程,以使在运行时,每个所述加速芯片支持执行任意数量的所述线程。
其中,所述多个线程的数量与所述进程数量相同。
本实施例中,通过线程抽象处理,使得在编程时,用户只需要根据理论worker的数量(即EasyScaleThread的数量,它与DDP中使用的worker(即进程)数量一致)来考虑应用的逻辑。因此,固定资源训练时,比如有4个进程,这里会抽象为4个线程。每个GPU可以支持执行任意数量的线程,但是每个GPU在同一时间允许一个线程执行逻辑,在当前线程执行完毕后,通过上下文切换的方式,恢复下一个线程的状态。
可选的,根据所述多个线程,为每个所述加速芯片匹配至少一个线程,可以通过以下步骤实现:
步骤b1、根据每个所述加速芯片的配置信息,确定为每个所述加速芯片分配的线程数量。
步骤b2、基于为每个所述加速芯片分配的线程数量,将所述多个线程分配到对应的加速芯片上,使得每个所述加速芯片为至少一个线程提供资源。
其中,每个所述加速芯片在同一时间支持一个线程执行逻辑。
这里的配置信息可以包括GPU类型、GPU的吞吐量以及计算能力、GPU性能等。
本实施例中,可以根据目标任务在当前配置下各类型GPU的吞吐量,确定目标任务在当前配置下各类型GPU的计算能力。即:将目标任务在当前配置下各类型GPU的吞吐量进行比例计算,得到各类型GPU的性能比例作为GPU的计算能力。然后根据目标任务在当前配置下各类型GPU的计算能力、GPU类型、各类型GPU数量、各类型GPU上分配的线程数量以及获取到的目标任务对应的最大线程数量,确定分配信息。
示例性的,比如,有两个GPU(即GUP0和GUP1),3个线程,比如GPU1计算能力强,剩余资源多,就给它分配两个线程,GPU0分配剩余的那个线程。其中,在分配上会保证线程的总个数一致。
因此,为了合理分配资源,保证资源的高可用以及提高训练效率,可以基于GPU的配置信息,比如类型、吞吐量、可提供资源、性能等信息,来为多个线程提供资源。
可选的,所述在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数,可以通过以下步骤实现:
步骤c1、在当前目标线程执行逻辑完成后,生成所述当前目标线程的随机状态以及对应的梯度值,将所述当前目标线程的随机状态作为所述当前目标线程的初始状态进行存储,并存储所述当前目标线程对应的梯度值;其中,所述随机状态用于生成随机数序列。
步骤c2、获取下一个目标线程的初始状态,根据所述下一个目标线程的初始状态,确定随机数以及所述随机数对应的所述下一个目标线程的随机状态,并将所述下一个目标线程的随机状态作为所述下一个目标线程的初始状态进行存储;所述随机数用于支持所述下一个目标线程在所述加速芯片上执行逻辑操作。
可选的,根据所述下一个目标线程的初始状态,确定所述下一个目标线程的随机状态,可以通过以下步骤实现:
根据所述下一个目标线程的初始状态,通过随机数生成器,生成随机数以及所述随机数对应的所述下一个目标线程的随机状态;
其中,所述随机状态包括:用于表示Python接口的深度学习框架的状态、用于表示Python的开源的科学计算库的状态以及随机数生成器的状态。
本实施例中,为了节约训练开销,采用的上下文切换的方式并不是加载所有进程有关的参数,而是使用影响模型精度的重点影响因素,即随机状态(能够支持生成随机数的因素的状态,比如PyTorch、NumPy(Numerical Python,Python的一种开源的科学计算库)和Python的random的随机数生成器的状态)。
此外,将所述当前目标线程的随机状态作为所述当前目标线程的初始状态进行存储,可以包括:
将所述当前目标线程的初始状态存储在所述至少一个加速芯片的预设共享池中,用以支持在弹性资源发生时,获取相应的线程的初始状态。
相应的,所述存储所述当前目标线程对应的梯度值,可以包括:
将所述当前目标线程对应的梯度值卸载到内存上,用以支持与所述下一个目标线程对应的梯度值进行融合计算。
步骤c3、当所述多个线程在所述至少一个加速芯片全部执行完毕,根据每个所述线程对应的梯度值,更新所述目标任务对应的模型参数。
本实施例中,在完成一个EasyScaleThread的梯度计算后,采取上下文切换的方式来恢复下一个线程的状态。这是因为把每个线程作为独立在一个GPU上完成执行的worker,需要获取其状态,才能实现逻辑执行。这里的状态为线程的随机状态,即生成随机数的那一部分的状态,而随机数是用来支持线程执行逻辑的。
示例性,参见图4所示,图4为本申请再一实施例提供的信息处理方法的流程示意图。以一个GPU,4个线程(EST_0、EST_1、EST_2、EST_3)为例,在一个GPU中,只有一个GPU计算进程。因此只有一个CUDA上下文可以启动GPU内核。在同一时间,运行时只安排一个EasyScaleThread的逻辑执行,而冻结其他的执行。每个EasyScaleThread都从加载当前小批量的数据输入开始,然后进行数据增强,前向-反向计算,然后将梯度卸载到主机DRAM(即CPU内存)中。由于深度学习训练是在一个DAG(Directed Acyclic Graph,有向无环图)计算图上执行的,并且输出梯度是为了以后的分布式同步。worker的梯度传播到CPU内存(即网络通信的数据桶),可以自然地与它的反向计算以及下一个EasyScaleThread的前向计算相重叠。在完成一个EasyScaleThread的梯度计算后,采取上下文切换的方式来恢复下一个线程的状态。其中,图4中的t-x即thread x,表示线程(x表示0、1、2、3)。comp即computation,表示计算过程。grad即gradient,表示梯度值。
其中,将梯度值卸载到内存上可以减少对GPU的资源占用。图4中Contextswitching for accuracy-consistent表示上下文切换以保证准确性;ScheduleEasyScaleThread computation on GPU表示在GPU上调度EasyScaleThread计算;Copygradient表示复制梯度;Sync gradient表示同步梯度;GPU computing process表示GPU计算过程。
具体地,可以通过以下方式对状态进行优化:1、定位影响最终精度的非确定性来源,并尽量减少需要记录的状态。2、利用DL(即深度学习)的数据并行特性,尽量减少数据切换的工作集。EasyScaleThread在GPU存储器中的工作集可以分为临时张量(即由一组原始值组成一个任意数量的多维度数组,深度学习框架中存储数据的数据单元)、激活、模型参数和优化器状态,以及梯度。对它们的处理方式可以不同:对于临时张量和激活,它们在前向计算中创建,在反向计算完成梯度生成之后销毁。因此,通过约束上下文切换的最小间隙为至少一个小批量,它们就会像预期的那样自动释放。对于模型参数和优化状态,每个数据并行worker在训练进程中都会保留一个副本,并在一个小批量处理结束后进行更新。因此,模型可以在切换EasyScaleThread时重复使用。梯度是根据不同的数据输入计算的,这些数据在不同的EasyScaleThread中是不同的。
由于,梯度在反向计算过程中生成,并且只在小批量结束后的分布式梯度同步中使用。因此,在上下文切换时将梯度迁移到主机DRAM中,并与下一个EasyScaleThread的计算重叠。通过这种方式,交替执行所有EasyScaleThread,直到所有的计算都完成。之后,分布式同步被触发,模型更新被进行一次,以完成小批量的计算。
其中,定位影响最终精度的非确定性来源的过程可以为:非确定性的根本原因散布在几乎整个训练流程的软件栈中。
首先,尽管深度学习训练是由DAG图中的算子(例如:卷积、批量归一化)组成的,在一个DAG图中,一些算子隐含地依赖了其前置算子的输出以外的状态,例如,Dropout根据GPU中的随机生成器状态来生成结果,BatchNorm(即深度网络中经常用到的加速神经网络训练,加速收敛速度及稳定性的算法)根据考虑worker的编号来跟踪张量的均值和方差,数据加载器和数据增强器依赖于PyTorch、NumPy和Python的random的随机数生成器等等随机状态。
其次,深度学习中的可预测特性在DL运行时被用于为深度学习框架、编译器、加速器算法库等选择最适合的算法。它们经常通过在不同的小批量或函数调用上应用不同算法来收集性能统计数据,这些算法通常在实现上有所不同,因此可能会产生具有微妙差异的输出。
然后,当资源弹性发生时,分布式通信可能引入非确定性的Allreduce(用于分布式深度学习的通信运算)结果。梯度被整理到梯度通信桶中以优化分布式通信的性能,一旦桶满,就启动Allreduce。然而,资源弹性会自然地强制执行通信通道的重建。然而,在重建过程中这些桶可以是不同的,因为它们实际上是根据张量在反向传播中得到梯度的顺序决定的。这是由于前向-反向传播是在一个DAG图上进行的,并发节点的梯度可能会以不同的顺序产生。由于环形Allreduce的实现,最终引入了非确定的浮点数聚合的顺序。最后,DL操作的GPU内核实现可能与硬件有关。例如,一些内核的实现是基于流处理器单元的数量、硬件特定的低精度单元等等。为了使用弹性异构GPU(例如:同时使用V100和P100),在执行作业时需要选择与硬件不相关的内核算法。其中,不同的作业负载可能遭受额外的开销。
本实施例追踪了这些导致不确定性的根本原因。在EasyScaleThread的上下文中记录了数据加载器、增强器、DL算子等的状态(比如随机状态)。上下文会在启动EasyScaleThread的小批量计算执行之前恢复,并在执行结束后保存。在检查点中记录了硬件因素和梯度梯度同步顺序,从而使得它们在资源弹性发生时保持一致。
因此,本申请对深度学习框架中的计算任务进行了线程抽象,允许在单个GPU上执行多个分布式数据并行的训练进程,将深度学习的执行与特定硬件解偶,同时充分利用深度学习的特性执行高效上下文切换。将线程的状态(比如随机状态)完全保存在上下文中,线程之间不存在任何干扰因而精度完全无损。
基于同样的思路,本申请实施例还提供了上述方法对应的装置,如图5所示,图5为本申请实施例提供的信息处理装置的结构示意图。信息处理装置可以包括:
获取模块501,用于获取目标任务对应的多个线程以及多个训练集,所述目标任务由多个线程执行,所述目标任务支持弹性训练;
第一处理模块502,用于确定为所述目标任务提供弹性资源的至少一个加速芯片,并根据所述多个线程,为每个所述加速芯片匹配至少一个线程;
第二处理模块503,用于针对每个所述训练集,执行下述步骤:针对每个所述加速芯片,为所述加速芯片分配一个目标线程,以使当前目标线程根据所述训练集,执行逻辑操作,并在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数。
本实施例中,通过设置获取模块501、第一处理模块502以及第二处理模块503,通过获取目标任务以及参与训练的多个训练集,来执行弹性训练任务,当资源弹性发生时,首先确定能够提供弹性资源的加速芯片,并基于训练任务,为加速芯片分配线程,使得每个加速芯片在同一时间只支持一个线程执行逻辑,当执行完成后,在切换成下一个线程执行逻辑,实现交替执行,当所有的线程都被执行完以后,更新一次模型参数,实现一轮的训练,然后重复上述步骤,执行下一轮的训练。因此,通过交替执行的方式,没有对同步方法、超参数、小批量大小等做调整或修改,即可实现弹性训练,同时由于无修改数据,所以与现有的固定资源时训练的模型质量一致,即保证了模型精度。因此,本申请在支持弹性资源的深度学习训练任务的同时,能够提高现有技术支持弹性训练的模型精度,实现了与固定资源时训练的模型质量一致性,保证了模型精度。
可选的,获取模块,具体用于:
确定所述目标任务在分布式数据并行中使用的进程数量;
对所述目标任务进行线程抽象,确定所述多个线程,以使在运行时,每个所述加速芯片支持执行任意数量的所述线程;
其中,所述多个线程的数量与所述进程数量相同。
可选的,第一处理模块,具体用于:
根据每个所述加速芯片的配置信息,确定为每个所述加速芯片分配的线程数量;
基于为每个所述加速芯片分配的线程数量,将所述多个线程分配到对应的加速芯片上,使得每个所述加速芯片为至少一个线程提供资源;
其中,每个所述加速芯片在同一时间支持一个线程执行逻辑。
可选的,第二处理模块包括第一处理单元、第二处理单元以及第三处理单元;
第一处理单元,用于在当前目标线程执行逻辑完成后,生成所述当前目标线程的随机状态以及对应的梯度值,将所述当前目标线程的随机状态作为所述当前目标线程的初始状态进行存储,并存储所述当前目标线程对应的梯度值;其中,所述随机状态用于生成随机数序列;
第二处理单元,用于获取下一个目标线程的初始状态,根据所述下一个目标线程的初始状态,确定随机数以及所述随机数对应的所述下一个目标线程的随机状态,并将所述下一个目标线程的随机状态作为所述下一个目标线程的初始状态进行存储;所述随机数用于支持所述下一个目标线程在所述加速芯片上执行逻辑操作;
第三处理单元,用于当所述多个线程在所述至少一个加速芯片全部执行完毕,根据每个所述线程对应的梯度值,更新所述目标任务对应的模型参数。
可选的,第二处理单元,具体用于:
根据所述下一个目标线程的初始状态,通过随机数生成器,生成随机数以及所述随机数对应的所述下一个目标线程的随机状态;
其中,所述随机状态包括:用于表示Python接口的深度学习框架的状态、用于表示Python的开源的科学计算库的状态以及随机数生成器的状态。
可选的,第一处理单元,具体用于:
将所述当前目标线程的初始状态存储在所述至少一个加速芯片的预设共享池中,用以支持在弹性资源发生时,获取相应的线程的初始状态。
可选的,第一处理单元,还具体用于:
将所述当前目标线程对应的梯度值卸载到内存上,用以支持与所述下一个目标线程对应的梯度值进行融合计算。
可选的,第一处理模块,还具体用于:
当弹性资源触发后,获取当前支持为所述目标任务提供训练的目标资源,所述目标资源为加速芯片,所述加速芯片的个数为至少一个。
本申请实施例提供的装置,可以实现上述如图1-4所示的实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图6为本申请实施例提供的电子设备的硬件结构示意图。如图6所示,本实施例提供的设备600包括:处理器601,以及与所述处理器通信连接的存储器。其中,处理器601、存储器602通过总线603连接。
在具体实现过程中,处理器601执行所述存储器602存储的计算机执行指令,使得处理器601执行上述方法实施例中的方法。
处理器601的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图6所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述方法实施例的信息处理方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的信息处理方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (11)
1.一种信息处理方法,其特征在于,所述方法包括:
获取目标任务对应的多个线程以及多个训练集,所述目标任务由多个线程执行,所述目标任务支持弹性训练;
确定为所述目标任务提供弹性资源的至少一个加速芯片,并根据所述多个线程,为每个所述加速芯片匹配至少一个线程;
针对每个所述训练集,执行下述步骤:针对每个所述加速芯片,为所述加速芯片分配一个目标线程,以使当前目标线程根据所述训练集,执行逻辑操作,并在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数。
2.根据权利要求1所述的方法,其特征在于,所述获取目标任务对应的多个线程,包括:
确定所述目标任务在分布式数据并行中使用的进程数量;
对所述目标任务进行线程抽象,确定所述多个线程,以使在运行时,每个所述加速芯片支持执行任意数量的所述线程;
其中,所述多个线程的数量与所述进程数量相同。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述多个线程,为每个所述加速芯片匹配至少一个线程,包括:
根据每个所述加速芯片的配置信息,确定为每个所述加速芯片分配的线程数量;
基于为每个所述加速芯片分配的线程数量,将所述多个线程分配到对应的加速芯片上,使得每个所述加速芯片为至少一个线程提供资源;
其中,每个所述加速芯片在同一时间支持一个线程执行逻辑。
4.根据权利要求1或2所述的方法,其特征在于,所述在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数,包括:
在当前目标线程执行逻辑完成后,生成所述当前目标线程的随机状态以及对应的梯度值,将所述当前目标线程的随机状态作为所述当前目标线程的初始状态进行存储,并存储所述当前目标线程对应的梯度值;其中,所述随机状态用于生成随机数序列;
获取下一个目标线程的初始状态,根据所述下一个目标线程的初始状态,确定随机数以及所述随机数对应的所述下一个目标线程的随机状态,并将所述下一个目标线程的随机状态作为所述下一个目标线程的初始状态进行存储;所述随机数用于支持所述下一个目标线程在所述加速芯片上执行逻辑操作;
当所述多个线程在所述至少一个加速芯片全部执行完毕,根据每个所述线程对应的梯度值,更新所述目标任务对应的模型参数。
5.根据权利要求4所述的方法,其特征在于,所述根据所述下一个目标线程的初始状态,确定所述下一个目标线程的随机状态,包括:
根据所述下一个目标线程的初始状态,通过随机数生成器,生成随机数以及所述随机数对应的所述下一个目标线程的随机状态;
其中,所述随机状态包括:用于表示Python接口的深度学习框架的状态、用于表示Python的开源的科学计算库的状态以及随机数生成器的状态。
6.根据权利要求4所述的方法,其特征在于,所述将所述当前目标线程的随机状态作为所述当前目标线程的初始状态进行存储,包括:
将所述当前目标线程的初始状态存储在所述至少一个加速芯片的预设共享池中,用以支持在弹性资源发生时,获取相应的线程的初始状态;
相应的,所述存储所述当前目标线程对应的梯度值,包括:
将所述当前目标线程对应的梯度值卸载到内存上,用以支持与所述下一个目标线程对应的梯度值进行融合计算。
7.根据权利要求1或2所述的方法,其特征在于,所述确定为所述目标任务提供弹性资源的至少一个加速芯片,包括:
当弹性资源触发后,获取当前支持为所述目标任务提供训练的目标资源,所述目标资源为加速芯片,所述加速芯片的个数为至少一个。
8.一种信息处理装置,其特征在于,所述装置包括:
获取模块,用于获取目标任务对应的多个线程以及多个训练集,所述目标任务由多个线程执行,所述目标任务支持弹性训练;
第一处理模块,用于确定为所述目标任务提供弹性资源的至少一个加速芯片,并根据所述多个线程,为每个所述加速芯片匹配至少一个线程;
第二处理模块,用于针对每个所述训练集,执行下述步骤:针对每个所述加速芯片,为所述加速芯片分配一个目标线程,以使当前目标线程根据所述训练集,执行逻辑操作,并在所述当前目标线程执行逻辑操作完成后,为所述加速芯片切换下一个目标线程,直至所述多个线程在所述至少一个加速芯片全部执行完毕,用以更新所述目标任务对应的模型参数。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的信息处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的信息处理方法。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1-7任一项所述的信息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210334467.4A CN114661474A (zh) | 2022-03-30 | 2022-03-30 | 信息处理方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210334467.4A CN114661474A (zh) | 2022-03-30 | 2022-03-30 | 信息处理方法、装置、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114661474A true CN114661474A (zh) | 2022-06-24 |
Family
ID=82034143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210334467.4A Pending CN114661474A (zh) | 2022-03-30 | 2022-03-30 | 信息处理方法、装置、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114661474A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389731A (zh) * | 2023-10-20 | 2024-01-12 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
-
2022
- 2022-03-30 CN CN202210334467.4A patent/CN114661474A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389731A (zh) * | 2023-10-20 | 2024-01-12 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
CN117389731B (zh) * | 2023-10-20 | 2024-04-02 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109814986B (zh) | 任务并行处理方法、存储介质、计算机设备、装置和*** | |
Basaran et al. | Supporting preemptive task executions and memory copies in GPGPUs | |
US8099584B2 (en) | Methods for scalably exploiting parallelism in a parallel processing system | |
JP6660991B2 (ja) | マルチスレッドプロセッサでのタスクのスケジューリング | |
EP0352899B1 (en) | Echelon method for execution of nested loops in multiple processor computers | |
US11693706B2 (en) | System and method for dynamic scheduling of distributed deep learning training jobs | |
US8707320B2 (en) | Dynamic partitioning of data by occasionally doubling data chunk size for data-parallel applications | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
CN113535367A (zh) | 任务调度方法及相关装置 | |
CN105579967A (zh) | Gpu发散栅栏 | |
US9645802B2 (en) | Technique for grouping instructions into independent strands | |
US20200042216A1 (en) | Storage-based graph for enabling computation graph optimization | |
US8615770B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
US9513923B2 (en) | System and method for context migration across CPU threads | |
US8028291B2 (en) | Method and computer program product for job selection and resource allocation of a massively parallel processor | |
CN114661474A (zh) | 信息处理方法、装置、设备、存储介质及程序产品 | |
CN114579284A (zh) | 任务调度方法及装置 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN113869902A (zh) | 一种区块链交易执行方法及装置 | |
US20220207643A1 (en) | Implementing heterogenous wavefronts on a graphics processing unit (gpu) | |
US8959497B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
CN112602058B (zh) | 处理器存储器存取 | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
Ho et al. | Towards FPGA-assisted spark: An SVM training acceleration case study | |
US20230236878A1 (en) | Efficiently launching tasks on a processor |
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 |