CN119902874B - 数据处理方法、数据处理装置、电子设备和存储介质 - Google Patents
数据处理方法、数据处理装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN119902874B CN119902874B CN202510299974.2A CN202510299974A CN119902874B CN 119902874 B CN119902874 B CN 119902874B CN 202510299974 A CN202510299974 A CN 202510299974A CN 119902874 B CN119902874 B CN 119902874B
- Authority
- CN
- China
- Prior art keywords
- task
- state
- data
- information
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了一种数据处理方法、数据处理装置、电子设备和存储介质。数据处理方法包括:根据用户接口信息和运行状态信息,获取当前操作记录;根据历史操作记录和当前操作记录生成数据调度策略;根据数据调度策略执行对应的数据转移操作。该数据处理方法通过实时分析训练状态和操作记录来自动生成数据调度策略,能够在训练过程中动态调整和优化数据调度策略,具有即插即用的便捷性。并且,该数据处理方法适用范围广泛,可以应用于任意类型的张量。这为复杂模型的训练提供了强有力的支持,提升了系统的效率和稳定性。
Description
技术领域
本公开的实施例涉及一种数据处理方法、数据处理装置、电子设备和存储介质。
背景技术
随着技术的发展,人工智能(Artificial Intelligence,AI)技术在多个领域得到了广泛的应用。深度学习(Deep Learning)是人工智能技术的重要技术之一,基于人工神经网络的深度学习技术已经在诸如物体分类、文本处理、图像搜索以及人机对话等领域取得了巨大进展。
随着问题复杂性的增加,神经网络的深度和规模也不断提升。然而,图形处理器(Graphics Processing Unit,GPU)、张量处理器(Tensor Processing Unit,TPU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)等AI加速器的存储容量的增速远低于神经网络规模的增长,导致其难以满足大规模深度神经网络模型的训练需求。
发明内容
本公开至少一实施例提供一种数据处理方法,所述数据处理方法包括:根据用户接口信息和运行状态信息,获取当前操作记录;根据历史操作记录和所述当前操作记录生成数据调度策略;根据所述数据调度策略执行对应的数据转移操作。
例如,在本公开至少一实施例提供的数据处理方法中,所述用户接口信息包括接口名称,所述运行状态信息包括当前运行位置,所述根据用户接口信息和运行状态信息,获取当前操作记录,包括:组合所述接口名称和所述当前运行位置,得到所述当前操作记录。
例如,本公开至少一实施例提供的数据处理方法还包括:将所述当前操作记录存入操作记录列表;从所述操作记录列表读取所述历史操作记录。
例如,在本公开至少一实施例提供的数据处理方法中,所述数据调度策略包括任务信息,所述任务信息用于生成任务,所述根据历史操作记录和所述当前操作记录生成数据调度策略,包括:根据所述当前操作记录在所述历史操作记录中对应的相对次序,生成所述当前操作记录对应的所述任务信息。
例如,在本公开至少一实施例提供的数据处理方法中,所述根据所述数据调度策略执行对应的数据转移操作,包括:响应于所述任务信息对应于卸载任务或预取任务,对所述任务信息进行有效性检查;响应于所述任务信息通过所述有效性检查,从对应的任务队列中读取所述任务信息对应的任务并执行,以实现对应的数据转移操作。
例如,本公开至少一实施例提供的数据处理方法还包括:响应于执行所述任务,生成新的任务,并基于所述任务的状态设置所述新的任务的状态;将所述新的任务插入对应的任务队列。
例如,在本公开至少一实施例提供的数据处理方法中,所述任务的状态包括准备状态、卸载状态、预取状态或完成状态,所述响应于执行所述任务,生成新的任务,并基于所述任务的状态设置所述新的任务的状态,包括:响应于执行卸载任务且所述任务的状态为准备状态,生成新的任务,将所述新的任务的状态设置为卸载状态;响应于执行预取任务且所述任务的状态为卸载状态,生成新的任务,将所述新的任务的状态设置为预取状态;响应于所述预取任务执行完毕且所述任务的状态为预取状态,生成新的任务,将所述新的任务的状态设置为完成状态。
例如,本公开至少一实施例提供的数据处理方法还包括:响应于所述任务信息对应的用户接口信息指示准备卸载,将所述任务的状态初始化为准备状态。
例如,本公开至少一实施例提供的数据处理方法还包括:响应于判断是否返回所述任务的数据对象且所述任务的状态为准备状态,将所述任务的状态更新为完成状态。
例如,在本公开至少一实施例提供的数据处理方法中,在所述生成所述当前操作记录对应的所述任务信息之后,所述方法还包括:响应于所述任务信息对应的用户接口信息指示准备卸载,将所述任务信息对应的任务插入对应的任务队列。
例如,在本公开至少一实施例提供的数据处理方法中,在所述生成所述当前操作记录对应的所述任务信息之后,所述方法还包括:响应于所述任务信息对应的用户接口信息指示加载,对所述任务信息进行有效性检查;响应于所述任务信息通过所述有效性检查,从对应的任务队列中读取所述任务信息对应的任务并判断是否返回所述任务的数据对象。
例如,在本公开至少一实施例提供的数据处理方法中,不同状态的任务对应于不同的任务队列。
例如,在本公开至少一实施例提供的数据处理方法中,所述数据转移操作包括在中央处理器与图形处理器之间执行的、针对张量的卸载操作或预取操作。
本公开至少一实施例提供一种数据处理装置,所述数据处理装置包括:获取模块,被配置为根据用户接口信息和运行状态信息,获取当前操作记录;生成模块,被配置为根据历史操作记录和所述当前操作记录生成数据调度策略;执行模块,被配置为根据所述数据调度策略执行对应的数据转移操作。
本公开至少一实施例提供一种电子设备,所述电子设备包括:至少一个处理器;至少一个存储器,存储有一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被配置为由所述至少一个处理器执行,用于执行实现本公开任一实施例所述的数据处理方法的指令。
本公开至少一实施例提供一种非瞬时计算机可读存储介质,其上存储有计算机可读指令,其中,所述计算机可读指令被至少一个处理器执行时执行本公开任一实施例所述的数据处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A为一种数据并行模式的示意图;
图1B为一种张量并行模式的示意图;
图1C为一种流水线并行模式的示意图;
图1D为一种微批次流水线并行模式的示意图;
图1E为一种交叉执行微批次数据的前向计算和反向计算的示意图;
图1F为一种重计算的示意图;
图2为本公开至少一实施例提供的一种分布式训练系统的示意框图;
图3为本公开至少一实施例提供的一种数据处理方法的流程图;
图4A为本公开至少一实施例提供的一种数据处理方法的示例性示意图;
图4B为本公开至少一实施例提供的一种数据处理方法的示例性示意图;
图5A为本公开至少一实施例提供的一种数据处理方法的示例性示意图;
图5B为本公开至少一实施例提供的一种状态机转换示意图;
图6A为本公开至少一实施例提供的一种数据处理装置的示意性框图;
图6B为本公开至少一实施例提供的一种数据处理装置的示意性框图;
图7为本公开至少一实施例提供的一种电子设备的示意性框图;
图8为本公开至少一实施例提供的另一种电子设备的示意性框图;以及
图9为本公开至少一实施例提供的一种非瞬时计算机可读存储介质的示意性框图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部(元)件的详细说明。当本公开实施例的任一部(元)件在一个以上的附图中出现时,该部(元)件在每个附图中由相同或类似的参考标号表示。
用于模型训练的处理器种类繁多,例如图形处理器(GPU)、通用图形处理器(GPGPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、人工智能(AI)加速器或协处理器等。目前通常采用GPU作为主力训练设备,结合中央处理器(CPU)进行辅助任务和整体流程管理。对于特定场景或需求,可能会选用ASIC、FPGA或AI加速器等进行定制化加速。
内存(Memory)是计算系统中的主存储器,通常具有较高的带宽和较低的延迟,访问速度快。内存的容量相对较大,例如一个服务器的内存容量可以达到数百GB(吉字节)甚至TB(太字节)的级别。而显存作为GPU的专用内存,虽然具有更高的带宽,但是存储容量通常较小,例如,一个GPU的显存容量通常在十几个GB(吉字节)到几十个GB之间,例如16GB、32GB等。除了GPU之外的其他加速器的存储容量相对来说也比较小,例如,一个TPU的高带宽内存(HBM)可以是16GB、32GB、64GB或128GB等。为了便于描述,这里将大存储容量的主存储器称为“主机内存”,将GPU的显存或其他加速器的小容量存储器称为“设备内存”。
由于一个大规模模型可能具有高达上千亿的参数,单机单卡已经无法胜任此类大规模模型的训练任务,所以分布式训练被广泛用于人工智能中的大规模模型训练。分布式训练是指利用多台机器协同工作,以加快大型深度学习模型的训练过程。在分布式训练中,原始的模型、数据集和训练过程被分解和分配到多台机器上同时进行处理,从而有效利用更多的计算资源,缩短训练时间。
在大模型的分布式训练中,常见的并行技术包括数据并行和模型并行。模型并行又包括张量并行和流水线并行。
数据并行模式是指将模型的训练数据集分割成多个子数据集,被分割后的多个子数据集被分配到多个设备上,每个设备持有一个完整的模型副本,从而能够独立地训练分配到其上的子数据集,例如每个设备能独立地完成子数据集的前向传播和反向传播计算。
图1A为一种数据并行模式的示意图。如图1A所示,一个训练数据集被分割成3个部分,分别被分配到设备0、设备1和设备2上,设备0、设备1和设备2每个都具有完整的模型。在每个设备完成反向传播后,需要将每个设备计算得到的梯度全部聚合(All Reduce)起来,并更新全局模型参数。
图1B为一种张量并行模式的示意图,张量并行模式是指将模型的一个层(或算子)拆开,将算子的部分权重放在不同的设备上,从而降低每个设备(例如,GPU)上的显存占用。一个神经网络模型包括多个层(图1B中示出了4个层作为示例),每一层可以理解为是一个函数,可以对输入张量执行特定的数学运算。例如,全连接层可以对张量执行线性变换操作,卷积层可以对张量执行卷积操作,池化层可以对张量执行池化操作等,以提取或转换特征,这些运算能够改变张量的内容和形状,实现从原始数据到高层抽象表示的逐步转化。如图1B所示,在张量并行模式中,一个层的张量被分割成多个部分,被分割后的多个部分张量被分别分配到多个设备上,例如设备0、设备1和设备2,每个设备只负责模型的一部分计算,并通过通信交换必要的中间结果。
流水线并行模式是指将模型的不同层划分为多个阶段,多个阶段分别分配到多个设备上,形成一个流水线。在不同设备之间按顺序传递激活值和梯度,例如,在前向传播过程中,每个设备将激活值传递给下一个流水线阶段所在的设备,在反向传播过程中,每个设备将梯度传回给前一个流水线阶段所在的设备,从而可以在同一时间内利用多个设备进行计算,提高计算效率。
图1C为一种流水线并行模式的示意图。如图1C所示,一个模型包括4个层,将这4个层划分为3个阶段,每个阶段被分配到一个设备中,例如,第一个层被分配到设备0,第二个层被分配到设备1,第三个层和第四个层被分配到设备2。
图1D为一种微批次流水线并行模式的示意图。通过将全局批次数据分块为微批次数据,并人为地创建流水线来解决设备的空闲问题,从而允许不同的设备同时参与计算过程,可以显著提升流水线并行设备利用率,减小设备空闲状态的时间。
如图1D所示,目标模型的多个层被拆分为4个阶段,每个阶段包括例如4个微批次数据,Fi,j代表第j个微批次数据在第i个阶段的前向传播,Bx,y代表第y个微批次数据在第x个阶段的反向传播。在前向计算过程中,后面阶段的计算依赖于前面一个阶段的计算,例如,F1,0必须在F0,0计算完成之后才能开始计算。同理,在反向计算过程中,前面阶段的计算需要依赖于后面一个阶段的计算,例如,B2,3必须在B3,3计算完成之后才能开始计算。
在流水线并行模式中,相邻设备之间通过通信链路传输数据。例如,在前向计算过程中,输入数据首先在设备0上通过第1层的计算得到中间结果,并将中间结果传输到设备1,然后在设备1上计算得到第2层的输出,并将模型第2层的输出结果传输到设备2,在设备2上经由最后一层的计算得到前向计算的最终结果。反向传播过程类似。最后,各个设备上的网络层会使用反向传播过程计算得到的梯度更新参数。
在图1D所示的流水线并行模式中,需要在所有设备都完成前向计算后,才能开始进行反向计算,这导致第一个阶段的前向计算的中间结果需要一直保留到所有阶段的前向计算全部结束后才能释放,这导致存在大量的流水线气泡(Pipiline Bubbles),即在流水线中出现的空闲周期或间隙。过多的气泡会导致处理器性能下降,因此,减少流水线气泡成为优化处理器性能的一个关键目标。
图1E为一种交叉执行微批次数据的前向计算和反向计算的示意图。如图1E所示,不同微批次数据的前向计算和反向计算以交叉的方式交替进行,在一定程度上减少了流水线气泡。
如图1E所示,前面的阶段相比后面的阶段会保存更多微批次数据的激活值,例如阶段3只需要保存1个微批次数据的激活值,而阶段0要保存4个微批次数据的激活值,这导致了不同阶段间的设备内存的不平衡。
图1F为一种重计算的示意图。如图1F所示,由于反向传播需要依赖前向传播中产生的中间结果,所以在不使用重计算时,前向传播产生的激活值需要一直存储在设备内存中。使用重计算可以只保存若干个恢复点的激活值,释放非恢复点的激活值,从而降低对显存的需求。在反向计算的过程中,以保存的恢复点的激活值作为输入重新进行一遍前向计算,就可以得到反向计算所需要的激活值。由此可见,重计算虽然降低了显存占用量,但是会增加额外的计算量,导致计算时间增长。
随着模型规模的逐渐增大,单一使用某一种并行模式往往不能同时满足设备内存限制和高计算效率的要求。因此,对于大规模模型,通常需要将数据并行、模型并行和流水线并行等多种并行技术结合起来进行分布式训练。
由于设备内存资源较为宝贵,可以将设备内存中的部分数据先转移到主机内存中,在需要使用这些数据时,再将其转移回设备内存中,从而减少设备内存占用。具体地,涉及以下操作:
1. 卸载(Offload):在训练过程中将某些数据从设备(例如GPU、GPGPU或TPU等加速器)转移到主机(例如CPU)的操作。通过卸载暂时不需要的数据,可以释放加速器内存空间,为其他计算任务腾出空间。例如,当模型规模超出GPU显存时,通过卸载部分数据到CPU,可以支持更大规模的模型训练。
2. 加载(Load):将某些数据从主机加载到设备的操作。通过加载操作,可以保证设备拥有执行当前计算任务所需的数据。例如,在训练过程中,某些数据可能只在特定阶段需要,可以通过加载操作按需加载,从而有效利用资源。
3. 预取(Prefetch):也称预加载,即一种提前加载的操作,目的是在数据被实际使用之前,将其从主机移动到设备上。例如,在反向传播阶段,可以异步地进行预取,以使得当需要使用某个数据时,该数据已经被加载到加速器上,减少数据加载的等待时间。
需要说明的是,加载是直接服务于当前请求的操作,而预取则是为了提高未来请求的响应速度而预先采取的操作。
相关技术中,一些基于异步卸载的方法通过分析内存、显存、算子性能等因素来确定何时进行卸载和预取操作。具体地,需要对分布式并行策略和模型结构进行分析,利用显存模拟器来推测需卸载的数据量,并采用手动分析和编排调度的方式来优化数据调度策略,旨在最小化性能开销。
然而,本公开的发明人注意到,上述方法没有提供一个有效的机制来自动生成数据调度策略,也无法实现对这些策略的自动调整和优化。上述方法采用单向命令执行模式,未充分考虑卸载操作的实际运行状态。由于缺少对执行状态的有效监控和反馈机制,一旦某个命令执行失败,可能会导致整个系统的崩溃。为了避免系统崩溃的发生,需要确保卸载系统能够适配所有训练场景,这通常需要投入大量的人力物力,随着业务需求的增长,手动管理的工作量将以指数级上升,极大地限制了系统的灵活性和可维护性。
另一些基于异步卸载的方法引入了独立的卸载流和加载流,这意味着卸载任务和加载任务被安排在单独的流中执行,与计算流分离。
然而,本公开的发明人注意到,上述方法将卸载和加载操作分别置于独立的流中运行,可能引发内核重叠(kernel overlap)时的资源竞争问题。这种竞争会导致额外的性能开销。并且,该方法至少需要三个执行流(计算流、卸载流和加载流),这高度依赖于硬件资源的支持。然而,并非所有硬件配置都能满足这些需求。对于无法支持多个并发执行流的硬件,例如带宽受限或计算能力有限的情况,这种方法不仅难以实现预期的性能增益,还可能导致系统效率降低。
本公开至少一实施例提供一种数据处理方法,该数据处理方法包括:根据用户接口信息和运行状态信息,获取当前操作记录;根据历史操作记录和当前操作记录生成数据调度策略;根据数据调度策略执行对应的数据转移操作。
本公开实施例至少一实施例提供的数据处理方法,可以应用于训练系统中,通过实时分析训练状态和操作记录来自动生成数据调度策略。这种方法能够在训练过程中动态调整和优化数据调度策略,无需依赖定制的数据调度分析器或手写的调度程序,具有即插即用的便捷性。同时,由于生成数据调度策略的过程不依赖于分布式并行策略和模型结构,因此其适用范围更广,可以应用于任意类型的张量。这为复杂模型的训练提供了强有力的支持,提升了系统的效率和稳定性。
进一步地,通过引入任务队列和状态管理机制,该方法实现了基于任务的推送和订阅的执行模式,一方面保证了系统的稳定性,避免任务执行失败导致系统崩溃,另一方面解耦了调度和执行,使得系统拥有更灵活的扩展能力。
图2为本公开至少一实施例提供的一种分布式训练系统的示意框图。例如,图2所示的分布式训练系统包括多个计算节点0~m,每个计算节点包括一个主机和多个设备0~n,其中m、n为正整数,可以根据实际需求设置。在每个计算节点中,主机和设备之间可以通过通信链路传输数据,例如,设备也可以称为“从设备”,可以通过硬件接口直接连接到主机,或者通过网络以软件定义的方式(如虚拟化技术)与主机协同工作。
例如,在本公开实施例的至少一个示例中,主机可以包括中央处理器(CPU),设备包括图形处理器(GPU)、通用图形处理器(GPGPU)、张量处理器(TPU)、AI加速器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等加速器。例如,分布式训练系统500可以包括8个、16个或32个计算节点,每个计算节点可以包括4个或8个GPU。
本公开至少一实施例提供的数据处理方法可以应用于各种类型的训练系统,包括但不限于如图2所示的分布式训练系统和仅包含单个计算节点的训练系统。
图3为本公开至少一实施例提供的一种数据处理方法的流程图。例如,如图3所示,本公开至少一实施例提供的数据处理方法包括如下步骤S101~S103。
步骤S101:根据用户接口信息和运行状态信息,获取当前操作记录。
例如,在步骤S101中,用户接口可以体现为应用程序编程接口(ApplicationProgramming Interface,API),可以包括模块(Module)接口或张量(Tensor)接口等。用户可以调用用户接口。
例如,模块接口用于与现有的深度学习框架(例如PyTorch)集成,几乎不需要修改原始代码即可启用数据转移(即卸载、加载等)功能。在PyTorch中,模块(Module)是构建神经网络模型的基础类,它提供了定义、管理和训练神经网络所需的基本功能。上述模块接口例如可以通过扩展Module类实现,使得用户可以在不改变模型定义的情况下指定整个模型或部分模型(例如某些模块或层)的数据需要被转移。
例如,张量接口允许用户对张量进行数据转移操作,可以应用于任何类型的张量,包括但不限于激活值、权重、优化器状态等。用户可以灵活地将张量接口嵌入到训练系统中,根据需求进行特定张量的加载或卸载。
例如,用户接口信息指的是与用户接口相关的描述,可以包括接口名称、接口类型、功能描述等。接口名称例如可以为卸载(Offload)、预取(Prefetch)、准备卸载(Prepareoffload)、加载(Load)等。
例如,在步骤S101中,运行状态信息可以指训练系统的运行状态信息,用于提供目标模型在执行期间的状态,也即运行时(Runtime)状态,例如可以包括当前运行位置、当前操作(Operation,OP)名称、时间戳或当前资源使用情况等信息。例如,可以使用运行时分析器(Runtime profiler)等工具获取运行状态信息,本公开实施例对此不作限制。
例如,当前运行位置用于指示在训练过程中目标模型当前执行到的具体位置。例如,在使用微批次技术的情况下,当前运行位置可以包括微批次索引,用于指示当前正在处理的微批次,例如微批次索引为0表示当前正在处理的是第1个微批次。例如,目标模型通常由多个层组成,当前运行位置可以包括层索引,用于指示目标模型中当前正在处理的层,例如层索引为2表示当前正在处理的是第3层。根据实际需要,当前运行位置可能还包括其他信息,例如步骤索引、模块索引等,其中步骤索引用于指示当前训练步骤(Step),模块索引用于指示当前正在处理的模块。需要说明的是,上文中给出的仅是一些示例,各种索引可以是数字形式,也可以是名称或二者组合等其它形式,本公开实施例对此不作限制。
上文所述的目标模型可以是待训练的机器学习模型,例如深度学习模型。深度学习模型可以是包括多层(3层、4层、8层或更多层)的神经网络结构,例如卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)等。这些神经网络的结构通常包括输入层、隐藏层和输出层,隐藏层是指神经网络中位于输入层和输出层之间的那些层,隐藏层又称为处理层。输入层用于接收待处理的数据,例如待处理图像等,输出层用于输出处理结果,例如处理后图像等,处理层可以包括卷积层、池化层、批量标准化层、全连接层等。根据神经网络的结构不同,处理层可以包括不同的内容和组合方式。在一些示例中,目标模型例如可以为大语言模型(Large Language Model,LLM),大语言模型是一种基于大量文本数据训练的深度学习模型,能够理解和生成自然语言文本。大语言模型通常基于Transformer架构,并通过自监督学习从海量文本数据中学习语言的统计规律和语义信息,通常用于文本生成、翻译、问答、摘要等任务。
例如,在步骤S101中,可以根据用户接口信息和运行状态信息,获取当前操作记录。当前操作记录(Trace)可以视为一种日志,用于记录当前时刻的操作。当前操作记录不仅记载了用户通过接口进行的操作,还记载了训练系统的运行状态信息。
在一些示例中,用户接口信息包括接口名称,运行状态信息包括当前运行位置,步骤S101的一种示例可以为:组合接口名称和当前运行位置,得到当前操作记录。
例如,可以将接口名称和当前运行位置组合为一个字符串或者结构化的数据格式,作为当前操作记录。
步骤S102:根据历史操作记录和当前操作记录生成数据调度策略。
例如,在步骤S102中,历史操作记录可以是先前的训练步骤中通过步骤S101生成的操作记录。数据调度策略指的是在何种时机进行预取或卸载等操作。在一些示例中,历史操作记录也可以是已经训练好的模型在训练过程中生成的操作记录,适用于从单机训练扩展到多机训练的场景。根据目标模型训练过程中每个步骤执行的相似性,可以通过历史操作记录和当前操作记录推测后续需要执行的任务,具体将在后文进行介绍。
步骤S103:根据数据调度策略执行对应的数据转移操作。
例如,在步骤S103中,数据转移操作可以包括在主机与设备之间执行的卸载操作或预取操作。例如,在一些示例中,数据转移操作可以包括在CPU与GPU之间执行的、针对张量的卸载操作或预取操作。
本公开上述至少一实施例提供的数据处理方法,通过实时分析训练状态和操作记录来自动生成数据调度策略。这种方法能够在训练过程中动态调整和优化数据调度策略,无需依赖定制的数据调度分析器或手写的调度程序,具有即插即用的便捷性。同时,由于生成数据调度策略的过程不依赖于分布式并行策略和模型结构,因此其适用范围更广,可以应用于任意类型的张量。这为复杂模型的训练提供了强有力的支持,提升了系统的效率和稳定性。
根据上述方式生成的每一个操作记录在一个训练步骤内唯一,因此可以维护一个操作记录列表,用于存储该训练步骤内的所有操作记录。
本公开至少一实施例提供的数据处理方法还可以包括如下步骤S104~S105。
步骤S104:将当前操作记录存入操作记录列表。
步骤S105:从操作记录列表读取历史操作记录。
例如,上述步骤S104~ S105可以在步骤S101后、步骤S102前执行。
例如,在训练初期(例如第一个训练步骤Step1),可以对操作记录列表进行初始化。操作记录列表可以基于以下原则进行初始化:对于目标模型中所有张量都进行卸载操作。进一步地,还可以采取尽早卸载、尽晚加载(或预取)的原则进行操作记录列表的初始化。通过上述初始化原则,所有张量首先被卸载以释放加速器存储资源(例如显存),并且仅在即将使用时才被重新加载回加速器,从而优化计算效率和资源利用率。
例如,假设目标模型中包含t1、t2、t3三个张量,根据上述初始化原则,操作记录列表可以初始化如下:
{{Offload_t1},{Offload_t2},{Offload_t3},{Load_t1},{Load_t2},{Load_t3}}
其中,Offload_t1是操作记录列表中的第一条记录,表示卸载张量t1;Load_t3是操作记录列表中的最后一条记录,表示加载张量t3。
在后续训练步骤中(例如第二个训练步骤Step2),上文被初始化的操作记录列表中的各操作记录可以被视为历史操作记录。
根据本申请上述至少一实施例提供的数据处理方法,在训练过程中会持续采集操作记录,并存储在操作记录列表中。根据目标模型训练过程中每个步骤执行的相似性,可以通过历史操作记录和当前操作记录推测后续需要执行的任务。这种推测算法无需依赖分布式策略或模型信息,仅通过简单通用的调度规则即可实现。这是因为尽管不同分布式配置的调度程序存在差异,但它们在调度时序上存在高度的相似性。例如,上文中调度时序的相似性具体可以至少体现在以下两个方面:
1. 预取时机:总是提前一个单位距离(例如一个操作或一层)执行预取操作,例如在当前处理第N层时预取第N+1层的数据,这使得当计算到达需要这些数据的时间点时,数据已经准备就绪,从而减少了数据加载的等待时间。
2. 冗余操作优化:在训练步骤的首尾阶段减少冗余的卸载或加载操作,使之尽量与计算任务重叠以减少不必要的内存管理开销。
因此,在本公开至少一实施例中,调度规则与具体的分布式策略无关,而是由当前操作在整体操作流程中的相对次序决定,这意味着可以应用基于操作记录的简单通用调度规则来实现高效的调度。
在本公开至少一实施例提供的数据处理方法中,数据调度策略可以包括任务信息,任务信息用于生成任务。例如,任务信息中记录了生成任务所必需的详细信息。依据不同的任务信息,可以生成各种不同类型的任务,如卸载任务、预取任务等。
步骤S102的一种示例可以为:根据当前操作记录在历史操作记录中对应的相对次序,生成当前操作记录对应的任务信息。
例如,可以分析当前操作记录在整个流程中的相对位置,并将其与历史操作记录中的相应位置进行匹配,从而得到当前操作记录在历史操作记录中对应的相对次序。通过分析整个历史操作记录,可以预测当前需要执行的操作。例如,可以根据当前操作记录在历史操作记录中对应的相对次序确定预取时机,或是优化冗余操作。
在本公开上述实施例提供的数据处理方法中,不需要了解具体的分布式策略或模型细节,而仅仅依赖于操作间的一般性规律(如预取时机和冗余操作优化)。因此,即使系统的配置发生变化,只要操作间的相对顺序保持一致,就可以应用通用的调度规则来实现高效的调度。
例如,图4A示出了如下的历史操作记录:Offload_t1、Offload_t2、Offload_t3、Load_t1、Load_t2、Load_t3,也即在先前的训练步骤中依次执行了卸载张量t1、卸载张量t2、卸载张量t3、加载张量t1、加载张量t2和加载张量t3的操作。
以当前操作记录的相对次序对应于历史操作记录中的Offload_t3为例,这意味着当前操作处于历史操作记录中Offload_t3相同的位置。通过分析历史操作记录,可以预测当前需要执行的操作。具体地,在上述历史操作记录中,Offload_t3之后的操作是Load_t1,为了优化性能,需要在加载操作之前提前一个单位距离执行预取操作,以便数据在需要时已经准备就绪。因此当前操作记录对应的任务信息为预取张量t1,可以记为Prefetch_t1。根据该任务信息可以生成针对张量t1的预取任务。
以此类推,假设当前操作记录的相对次序对应于历史操作记录中的Load_t1,则当前操作记录对应的任务信息为预取张量t2,可以记为Prefetch_t2;假设当前操作记录的相对次序对应于历史操作记录中的Load_t2,则当前操作记录对应的任务信息为预取张量t3,可以记为Prefetch_t3。
例如,基于历史操作记录和当前操作记录还可以实现更深入的自动调度优化。例如,可以将历史操作记录视为计算图中按照线性顺序排列的节点,通过图优化技术消除冗余操作。具体地,通过图优化技术可以识别并消除不会节省显存反而引入额外开销的操作,例如紧邻的卸载和加载操作。通过图优化技术还可以识别未匹配的卸载操作(即只有卸载操作而没有对应的加载操作的情况),并将其视为冗余操作进行消除。
例如,图4B示出了如下的历史操作记录:Offload_t1、Offload_t2、Offload_t3、Load_t3、Load_t2,也即在先前的训练步骤中依次执行了卸载张量t1、卸载张量t2、卸载张量t3、加载张量t3和加载张量t2的操作。
根据图优化技术分析上述历史操作记录,可以发现紧邻的卸载张量t3和加载张量t3的操作是冗余的。这种操作不仅无法节省显存,反而会引入额外的开销,因此在当前操作中可以跳过。并且,对于张量t1而言,上述历史操作记录中仅包含卸载张量t1的操作,而没有相应的加载张量t1的操作,这表明该卸载操作是不必要的,同样可以跳过。因此,假设当前操作记录的相对次序对应于历史操作记录中的Offload_t1,则当前操作记录对应的任务信息可以为空。
此外,与图4A的示例类似,在图4B中,假设当前操作记录的相对次序对应于历史操作记录中的Load_t3,则当前操作记录对应的任务信息为预取张量t2,可以记为Prefetch_t2。
在传统的命令式卸载执行方案中,卸载系统单向地向训练系统派送卸载任务。由于缺乏对卸载任务执行状态的有效反馈机制,卸载系统无法知晓任务的执行阶段,也无法知晓任务是否执行成功。一旦卸载系统和训练系统之间出现任何偏差(例如指令出错等),可能会导致整个训练程序崩溃。
在本公开至少一实施例提供的数据处理方法中,引入了任务队列和状态管理机制,实现了基于任务的推送和订阅的执行模式,一方面保证了系统的稳定性,另一方面解耦了调度和执行,使得系统拥有更灵活的扩展能力。相较于传统的命令式方案,它更能适应复杂多变的实际应用场景,具体将在下文进行介绍。
在本公开至少一实施例提供的数据处理方法中,不同状态的任务对应于不同的任务队列。
例如,每个任务都遵循预设的状态机,确保了任务能够按照预定流程顺利推进,防止因指令出错导致系统崩溃。后文将对状态机进行详细介绍。不同状态的任务使用单独的任务队列进行管理,不仅有助于组织和管理任务,还可以实时跟踪每个任务的状态,从而及时发现并处理潜在的问题。
在本公开至少一实施例提供的数据处理方法中,步骤S103的一种示例可以包括如下步骤S201~S202。
步骤S201:响应于任务信息对应于卸载任务或预取任务,对任务信息进行有效性检查。
例如,在步骤S201中,需要验证即将执行的卸载任务或预取任务是否有效,以避免执行了错误的任务。有效性检查例如可以包括但不限于资源可用性、状态一致性、依赖关系等。资源可用性用于确认是否具备足够的资源来执行所需操作,例如是否有充足的存储空间可用于卸载任务,或是否有足够的带宽支持预取任务。状态一致性用于确保当前任务的状态与预期相符,避免因状态不匹配导致的错误。依赖关系用于检查是否存在未完成的前置任务,如果某个任务依赖于其他任务的结果,则需确认这些前置任务已完成。
步骤S202:响应于任务信息通过有效性检查,从对应的任务队列中读取任务信息对应的任务并执行,以实现对应的数据转移操作。
例如,任务信息通过有效性检查,说明其对应的任务满足执行条件。此时从对应的任务队列中读取任务并执行,能够实现对应的数据转移操作。例如,若任务信息对应的是卸载任务,则从存放卸载任务的任务队列中读取任务信息对应的卸载任务并执行,可以实现数据的卸载操作;若任务信息对应的是预取任务,则从存放预取任务的任务队列中读取任务信息对应的预取任务并执行,可以实现数据的卸载操作。例如,在执行任务时,可以触发与底层硬件的交互,从而实现与具体硬件相关的数据转移操作。
通过上述机制,能够有效地管理和调度不同类型的任务,确保每个任务只有在其满足所有前提条件并通过有效性检查之后才会被执行。这种方法不仅提高了系统的稳定性和可靠性,还优化了资源的使用效率,使得数据卸载和预取操作更加高效和有序。
在本公开至少一实施例提供的数据处理方法中,还可以包括如下步骤S203A~S203B。
步骤S203A:响应于执行任务,生成新的任务,并基于任务的状态设置新的任务的状态。
步骤S203B:将新的任务插入对应的任务队列。
需要说明的是,步骤S203A中执行任务指的是上述步骤S202中从对应的任务队列中所读取的任务信息对应的任务。例如,在执行卸载任务或预取任务后,需要生成新的任务,并基于所执行的卸载任务或预取任务的状态,按照预设的状态机设置新的任务的状态,并将设置状态后的新的任务插入其状态对应的任务队列。生成新的任务时,旧的任务会被销毁,可以理解为任务的更新。这一步骤使得任务能够正确地按照预设的状态机流程推进,有助于维护系统的稳定性。
在生成当前操作记录对应的任务信息之后,本公开至少一实施例提供的数据处理方法还可以包括如下步骤S204。
步骤S204:响应于任务信息对应的用户接口信息指示准备卸载,将任务信息对应的任务插入对应的任务队列。
例如,在步骤S204中,当检测到任务信息对应的用户接口信息指示准备卸载时,说明用户调用了接口名称为“准备卸载”的用户接口,可以将生成的任务直接插入任务队列,无需进行有效性检查。该步骤可以视为初始化操作。
在生成当前操作记录对应的任务信息之后,本公开至少一实施例提供的数据处理方法还可以包括如下步骤S205~步骤S206。
步骤S205:响应于任务信息对应的用户接口信息指示加载,对任务信息进行有效性检查。
步骤S206:响应于任务信息通过有效性检查,从对应的任务队列中读取任务信息对应的任务并判断是否返回任务的数据对象。
例如,在步骤S205中,当检测到任务信息对应的用户接口信息指示加载时,说明用户调用了接口名称为“加载”的用户接口,需要先对任务信息进行有效性检查,再进行后续操作。有效性检查的相关内容与上文步骤S202中类似,此处不作赘述。
例如,在步骤S206中,每个任务都关联有需要处理的数据对象,例如需要被卸载或预取的张量。当检测到任务信息对应的用户接口信息指示加载时,说明用户调用了接口名称为“加载”的用户接口,这意味着收到了返回当前任务对应的数据对象的请求。在返回任务的数据对象之前,需要先判断当前是否为返回任务的数据对象的正确时机。例如,如果当前尚未执行卸载任务,则可以返回任务的数据对象,数据对象可以被返回给用户,也可以直接应用于后续训练过程中;如果当前正在执行卸载任务或预取任务,则需要等待预取任务完成后才能返回任务的数据对象,以避免流程出错。
图5A为本公开至少一实施例提供的一种数据处理方法的示例性示意图。图5A示出了上述步骤S201~S206的一种示例。
例如,如图5A所示,当检测到任务信息对应的用户接口信息指示准备卸载时,将根据该任务信息生成的任务直接插入任务队列,无需进行有效性检查。
例如,如图5A所示,根据数据调度策略查询要执行的任务,具体如下:若任务信息对应于卸载任务,需要先对任务信息进行有效性检查。若该任务信息通过有效性检查,则从存放卸载任务的任务队列中读取任务信息对应的卸载任务并执行,以实现在主机与设备之间执行的卸载操作。当执行卸载任务时,生成新的任务,并基于卸载任务的状态按照预设的状态机设置新的任务的状态,并将设置状态后的新的任务插入其状态对应的任务队列。
若任务信息对应于预取任务,需要先对任务信息进行有效性检查。若该任务信息通过有效性检查,则从存放预取任务的任务队列中读取任务信息对应的预取任务并执行,以实现在主机与设备之间执行的预取操作。当执行预取任务时,生成新的任务,并基于预取任务的状态按照预设的状态机设置新的任务的状态,并将设置状态后的新的任务插入其状态对应的任务队列。
例如,如图5A所示,当检测到任务信息对应的用户接口信息指示加载时,需要先对任务信息进行有效性检查,若该任务信息通过有效性检查,则从对应的任务队列中读取任务信息对应的任务并判断是否返回任务的数据对象。具体判断方式已在上文介绍,此处不再赘述。
这种方法通过引入任务队列和有效性检查机制,不仅提高了系统的鲁棒性和可靠性,还使得资源管理更加灵活和高效,能够适应复杂多变的实际应用场景。
在本公开至少一实施例提供的数据处理方法中,任务的状态包括准备状态、卸载状态、预取状态和完成状态。准备状态表示任务对应的数据对象即将被卸载;卸载状态表示任务对应的数据对象正在被卸载;预取状态表示任务对应的数据对象正在被预取;完成状态表示任务对应的数据对象已完成预取,已准备好被返回。不同状态的任务可以由不同的任务队列管理,例如可以设置准备队列、卸载队列、预取队列和完成队列,分别管理上述不同状态的任务。在一些示例中,无需设置完成队列,可以根据实际需要进行选择。
相应地,本公开至少一实施例提供的数据处理方法还可以包括如下步骤S301。
步骤S301:响应于任务信息对应的用户接口信息指示准备卸载,将任务的状态初始化为准备状态。
例如,在步骤S301中,当检测到任务信息对应的用户接口信息指示准备卸载时,说明用户调用了接口名称为“准备卸载”的用户接口,此时对当前任务执行状态初始化操作,将其状态设置为准备状态。
在本公开至少一实施例提供的数据处理方法中,上述步骤S203A可以包括如下步骤S302~步骤S304。
步骤S302:响应于执行卸载任务且任务的状态为准备状态,生成新的任务,将新的任务的状态设置为卸载状态。
步骤S303:响应于执行预取任务且任务的状态为卸载状态,生成新的任务,将新的任务的状态设置为预取状态。
步骤S304:响应于预取任务执行完毕且任务的状态为预取状态,生成新的任务,将新的任务的状态设置为完成状态。
例如,在步骤S302~S304中,执行卸载任务和预取任务的时机根据数据调度策略确定,当执行卸载任务且其状态为准备状态时,生成新的任务,并将新的任务的状态设置为卸载状态,该卸载状态由卸载任务的状态(准备状态)转化而来;当执行预取任务且其状态为卸载状态时,生成新的任务,并将新的任务的状态设置为预取状态,该预取状态由预取任务的状态(卸载状态)转化而来;当预取任务执行完毕且其状态为预取状态时,生成新的任务,并将新的任务的状态设置为完成状态,该完成状态由预取状态转化而来。
相应地,本公开至少一实施例提供的数据处理方法还可以包括如下步骤S305。
步骤S305:响应于判断是否返回任务的数据对象且任务的状态为准备状态,将任务的状态更新为完成状态。
例如,在步骤S305中,关于“判断是否返回任务的数据对象”可以参见上文步骤S206中的描述,此处不作赘述。在判断是否返回任务的数据对象时,如果当前任务的状态为准备状态,则可以跳过卸载状态和预取状态,直接更新为完成状态,此时可以返回任务的数据对象。
图5B为本公开至少一实施例提供的一种状态机转换示意图。图5B示出了上述步骤S301~S305的一种示例。如图5B所示,任务的状态包括准备状态、卸载状态、预取状态和完成状态,可以对应设置准备队列、卸载队列、预取队列和完成队列这四种任务队列(未示出),分别管理上述不同状态的任务。
参考图5A和图5B,首先,当检测到任务信息对应的用户接口信息指示准备卸载时,将任务的状态初始化为准备状态,直接插入准备队列中。接下来,根据先前步骤中生成的数据调度策略查询要执行的任务,也即当任务信息对应于卸载任务且通过有效性检查时,从准备队列中读取任务信息对应的任务(卸载任务)并执行,生成新的任务,并将新的任务的状态设置为卸载状态,将新的任务插入卸载队列中;进一步地,继续根据数据调度策略查询要执行的任务,也即当任务信息对应于预取任务且通过有效性检查时,从卸载队列中读取任务信息对应的任务(预取任务)并执行,生成新的任务,并将新的任务的状态设置为预取状态,将新的任务插入预取队列中。最后,当预取任务执行完毕时,将任务从预取队列中取出,生成新的任务,并将新的任务的状态设置为完成状态,将新的任务插入完成队列中。
例如,当检测到任务信息对应的用户接口信息指示加载时,需要先对任务信息进行有效性检查,若该任务信息通过有效性检查,则从对应的任务队列中读取任务信息对应的任务并判断是否返回任务的数据对象。在判断是否返回任务的数据对象时,根据任务状态的不同,存在以下两种情形:
如果当前任务的状态为准备状态,则可以跳过卸载状态和预取状态,直接更新为完成状态。避免冗余的计算。当任务的状态为完成状态时,可以返回任务的数据对象。
如果当前任务的状态为卸载状态或预取状态,则需要按照图5B所示的状态机所限定的流程进行,直至预取任务执行完毕、任务状态更新为完成状态时,才能返回任务的数据对象,以保证数据完整性和一致性。
图6A为本公开至少一实施例提供的一种数据处理装置的示意性框图。本公开至少一实施例提供的数据处理装置可以嵌入于各种类型的训练系统中,包括但不限于如图2所示的分布式训练系统和仅包含单个计算节点的训练系统。本公开至少一实施例提供的数据处理装置也可以独立部署,通过通信连接与训练系统交互,可以根据实际需要选择。
例如,如图6A所示,本公开实施例提供的数据处理装置600包括获取模块601、生成模块602和执行模块603。
例如,获取模块601被配置为根据用户接口信息和运行状态信息,获取当前操作记录。关于获取模块601的相关内容可以参考上述数据处理方法的实施例中步骤S101的相关描述,在此不再赘述。
例如,生成模块602被配置为根据历史操作记录和当前操作记录生成数据调度策略。关于生成模块602的相关内容可以参考上述数据处理方法的实施例中步骤S102的相关描述,在此不再赘述。
例如,执行模块603被配置为根据数据调度策略执行对应的数据转移操作。关于执行模块603的相关内容可以参考上述数据处理方法的实施例中步骤S103的相关描述,在此不再赘述。
例如,在本公开至少一实施例中,用户接口信息包括接口名称,运行状态信息包括当前运行位置,获取模块601被进一步配置为:组合接口名称和当前运行位置,得到当前操作记录。
例如,在本公开至少一实施例中,获取模块601被进一步配置为:将当前操作记录存入操作记录列表;生成模块602被进一步配置为:从操作记录列表读取历史操作记录。
例如,在本公开至少一实施例中,数据调度策略包括任务信息,任务信息用于生成任务,生成模块602被进一步配置为:根据当前操作记录在历史操作记录中对应的相对次序,生成当前操作记录对应的任务信息。
例如,在本公开至少一实施例中,执行模块603包括任务管理单元,任务管理单元被配置为:响应于任务信息对应于卸载任务或预取任务,对任务信息进行有效性检查;以及响应于任务信息通过有效性检查,从对应的任务队列中读取任务信息对应的任务并执行,以实现对应的数据转移操作。
例如,在本公开至少一实施例中,数据处理装置600还可以包括更新模块。更新模块被配置为响应于执行任务,生成新的任务,并基于任务的状态设置新的任务的状态;以及将新的任务插入对应的任务队列。
例如,在本公开至少一实施例中,任务的状态包括准备状态、卸载状态、预取状态或完成状态,更新模块被进一步配置为:响应于执行卸载任务且任务的状态为准备状态,生成新的任务,将新的任务的状态设置为卸载状态;响应于执行预取任务且任务的状态为卸载状态,生成新的任务,将新的任务的状态设置为预取状态;以及响应于预取任务执行完毕且任务的状态为预取状态,生成新的任务,将新的任务的状态设置为完成状态。
例如,在本公开至少一实施例中,更新模块被进一步配置为:响应于任务信息对应的用户接口信息指示准备卸载,将任务的状态初始化为准备状态。
例如,在本公开至少一实施例中,更新模块被进一步配置为:响应于判断是否返回任务的数据对象且任务的状态为准备状态,将任务的状态更新为完成状态。
例如,在本公开至少一实施例中,任务管理单元可以被配置为:响应于任务信息对应的用户接口信息指示准备卸载,将任务信息对应的任务插入对应的任务队列。
例如,在本公开至少一实施例中,任务管理单元可以被配置为:响应于任务信息对应的用户接口信息指示加载,对任务信息进行有效性检查;响应于任务信息通过有效性检查,从对应的任务队列中读取任务信息对应的任务并判断是否返回任务的数据对象。
例如,在本公开至少一实施例中,不同状态的任务对应于不同的任务队列。
例如,在本公开至少一实施例中,数据转移操作包括在CPU与GPU之间执行的、针对张量的卸载操作或预取操作。
例如,在本公开至少一实施例中,数据处理装置600还可以包括底层执行模块,被配置为根据任务管理单元所执行的任务,直接与硬件交互,实现与具体硬件相关的数据转移操作。底层执行单元还可以实现流同步功能,系统中可能存在多个流(例如计算流、数据转移流等),底层执行单元可以管理和协调多个流之间的依赖关系,确保数据一致性和正确性。
需要说明的是,上述各种模块和单元可以通过软件、硬件、固件或它们的任意组合实现,例如,获取模块、生成模块和执行模块可以分别实现为获取电路、生成电路和执行电路,本公开的实施例对它们的具体实施方式不作限制。
应当理解的是,本公开至少一实施例提供的数据处理装置600可以用于实施前述数据处理方法,也可以实现与前述数据处理方法相似的技术效果,在此不作赘述。
需要注意的是,在本公开的实施例中,该数据处理装置600可以包括更多或更少的模块或单元,并且各个模块或单元之间的连接关系不受限制,可以根据实际需求而定。各个模块或单元的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。
图6B为本公开至少一实施例提供的一种数据处理装置的示意性框图。例如,图6B为本公开上述实施例提供的数据装置的一种具体示例。
例如,如图6B所示,本公开至少一实施例提供的数据处理装置内嵌于训练系统中,包括获取模块、执行模块、生成模块和底层执行模块。获取模块从训练系统中获得用户接口信息和运行状态信息,并根据用户接口信息和运行状态信息,获取当前操作记录,并将获取的当前操作记录存入操作记录列表中。生成模块从操作记录列表中读取历史操作记录,并根据历史操作记录和当前操作记录生成数据调度策略,数据调度策略体现为任务信息。执行模块维护操作记录列表和任务队列,实现协调中枢的功能。执行模块包括任务管理单元,任务管理单元接收生成模块生成的任务信息,可以实现有效性检查、更新任务队列、执行任务等功能,具体可以参见上述实施例的描述,此处不作赘述。底层执行模块根据任务管理单元所执行的任务,直接与硬件交互,实现与具体硬件相关的数据转移操作(预取、卸载操作)。需要说明的是,图6B示出的数据处理装置仅为一种示例,根据实际需要可以增加或减少其中的模块,本公开实施例对此不作限制。
图7为本公开至少一实施例提供的一种电子设备的示意性框图。
例如,如图7所示,电子设备700包括至少一个处理器701以及至少一个存储器702。至少一个存储器702包括一个或多个计算机程序模块。一个或多个计算机程序模块被存储在存储器702中并被配置为由至少一个处理器701执行,一个或多个计算机程序模块包括用于执行上述数据处理方法的指令,其被至少一个处理器701执行时,可以执行本公开至少一实施例提供的数据处理方法中的一个或多个步骤。存储器702和处理器701可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器701可以是中央处理单元(CPU)、数字信号处理器(DSP)、图像处理器(GPU)、通用图形处理器(GPGPU)、人工智能(Artificial Intelligence,AI)加速器或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86、ARM、RISC-V架构等。处理器701可以为通用处理器或专用处理器,可以控制电子设备700中的其它组件以执行期望的功能。
例如,存储器702可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(Cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。
图8为本公开至少一实施例提供的另一种电子设备的示意性框图。
本公开至少一实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(PDA)、平板电脑(PAD)、便携式多媒体播放器(PMP)、车载终端(例如车载导航终端)、可穿戴电子设备等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
电子设备包括至少一个处理器以及存储器。这里的处理器可以称为下文所述的处理装置801,存储器可以包括下文中的只读存储器(ROM)、随机访问存储器(RAM)以及存储装置808中的至少一项。存储器用于存储执行上述各个方法实施例所述方法的程序;处理器被配置为执行存储器中存储的程序。处理器可以是包括中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制电子设备中的其它组件以执行期望的功能。
如图8所示,电子设备800可以包括处理装置801(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)中的程序或者从存储装置808加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如显示器、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开至少一实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开至少一实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM 802被安装。在该计算机程序被处理装置801执行时,执行本公开至少一实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开至少一实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开至少一实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、射频(RF)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备800中所包含的;也可以是单独存在,而未装配入该电子设备800中。
图9为本公开至少一实施例提供的一种非瞬时计算机可读存储介质的示意性框图。
例如,如图9所示,非瞬时计算机可读存储介质900上存储有计算机可读指令901,该计算机可读指令901被至少一个处理器执行时执行上述数据处理方法的一个或多个步骤。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。例如,该可读存储介质也可以为图7中的存储器702,相关描述可以参考前述内容,此处不再赘述。
虽然上文中已经用一般性说明及具体实施方式,对本公开作了详尽的描述,但在本公开实施例基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本公开精神的基础上所做的这些修改或改进,均属于本公开要求保护的范围。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)为了清晰起见,在用于描述本公开的实施例的附图中,层或区域的厚度被放大或缩小,即这些附图并非按照实际的比例绘制。
(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种数据处理方法,应用于训练系统,包括:
根据用户接口信息和运行状态信息,获取当前操作记录,其中,所述当前操作记录包括通过接口进行的操作和所述训练系统的运行状态信息;
根据历史操作记录和所述当前操作记录生成数据调度策略,其中,所述数据调度策略包括对数据执行预取操作或卸载操作的时机;
根据所述数据调度策略执行对应的数据转移操作,其中,所述数据转移操作包括在主机与设备之间执行的卸载操作或预取操作。
2.根据权利要求1所述的数据处理方法,其中,所述用户接口信息包括接口名称,所述运行状态信息包括当前运行位置,所述根据用户接口信息和运行状态信息,获取当前操作记录,包括:
组合所述接口名称和所述当前运行位置,得到所述当前操作记录。
3.根据权利要求1所述的数据处理方法,还包括:
将所述当前操作记录存入操作记录列表;
从所述操作记录列表读取所述历史操作记录。
4.根据权利要求1所述的数据处理方法,其中,所述数据调度策略包括任务信息,所述任务信息用于生成任务,所述根据历史操作记录和所述当前操作记录生成数据调度策略,包括:
根据所述当前操作记录在所述历史操作记录中对应的相对次序,生成所述当前操作记录对应的所述任务信息。
5.根据权利要求4所述的数据处理方法,其中,所述根据所述数据调度策略执行对应的数据转移操作,包括:
响应于所述任务信息对应于卸载任务或预取任务,对所述任务信息进行有效性检查;
响应于所述任务信息通过所述有效性检查,从对应的任务队列中读取所述任务信息对应的任务并执行,以实现对应的数据转移操作。
6.根据权利要求5所述的数据处理方法,还包括:
响应于执行所述任务,生成新的任务,并基于所述任务的状态设置所述新的任务的状态;
将所述新的任务插入对应的任务队列。
7.根据权利要求6所述的数据处理方法,其中,所述任务的状态包括准备状态、卸载状态、预取状态或完成状态,所述响应于执行所述任务,生成新的任务,并基于所述任务的状态设置所述新的任务的状态,包括:
响应于执行卸载任务且所述任务的状态为准备状态,生成新的任务,将所述新的任务的状态设置为卸载状态;
响应于执行预取任务且所述任务的状态为卸载状态,生成新的任务,将所述新的任务的状态设置为预取状态;
响应于所述预取任务执行完毕且所述任务的状态为预取状态,生成新的任务,将所述新的任务的状态设置为完成状态。
8.根据权利要求7所述的数据处理方法,还包括:
响应于所述任务信息对应的用户接口信息指示准备卸载,将所述任务的状态初始化为准备状态。
9.根据权利要求7所述的数据处理方法,还包括:
响应于判断是否返回所述任务的数据对象且所述任务的状态为准备状态,将所述任务的状态更新为完成状态。
10.根据权利要求4所述的数据处理方法,其中,在所述生成所述当前操作记录对应的所述任务信息之后,所述方法还包括:
响应于所述任务信息对应的用户接口信息指示准备卸载,将所述任务信息对应的任务插入对应的任务队列。
11.根据权利要求4所述的数据处理方法,其中,在所述生成所述当前操作记录对应的所述任务信息之后,所述方法还包括:
响应于所述任务信息对应的用户接口信息指示加载,对所述任务信息进行有效性检查;
响应于所述任务信息通过所述有效性检查,从对应的任务队列中读取所述任务信息对应的任务并判断是否返回所述任务的数据对象。
12.根据权利要求5-11任一项所述的数据处理方法,其中,不同状态的任务对应于不同的任务队列。
13.根据权利要求1所述的数据处理方法,其中,所述数据转移操作包括在中央处理器与图形处理器之间执行的、针对张量的卸载操作或预取操作。
14.一种数据处理装置,应用于训练系统,包括:
获取模块,被配置为根据用户接口信息和运行状态信息,获取当前操作记录,其中,所述当前操作记录包括通过接口进行的操作和所述训练系统的运行状态信息;
生成模块,被配置为根据历史操作记录和所述当前操作记录生成数据调度策略,其中,所述数据调度策略包括对数据执行预取操作或卸载操作的时机;
执行模块,被配置为根据所述数据调度策略执行对应的数据转移操作,其中,所述数据转移操作包括在主机与设备之间执行的卸载操作或预取操作。
15.一种电子设备,包括:
至少一个处理器;
至少一个存储器,存储有一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被配置为由所述至少一个处理器执行,用于执行权利要求1-13中任一项所述的数据处理方法的指令。
16.一种非瞬时计算机可读存储介质,其上存储有计算机可读指令,其中,所述计算机可读指令被至少一个处理器执行时执行权利要求1-13中任一项所述的数据处理方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510299974.2A CN119902874B (zh) | 2025-03-14 | 2025-03-14 | 数据处理方法、数据处理装置、电子设备和存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510299974.2A CN119902874B (zh) | 2025-03-14 | 2025-03-14 | 数据处理方法、数据处理装置、电子设备和存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN119902874A CN119902874A (zh) | 2025-04-29 |
| CN119902874B true CN119902874B (zh) | 2025-07-11 |
Family
ID=95465088
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202510299974.2A Active CN119902874B (zh) | 2025-03-14 | 2025-03-14 | 数据处理方法、数据处理装置、电子设备和存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN119902874B (zh) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110874305A (zh) * | 2019-11-14 | 2020-03-10 | 北京金山云网络技术有限公司 | 用户操作的记录方法、装置及服务器 |
| CN118796514A (zh) * | 2024-07-26 | 2024-10-18 | 上海壁仞科技股份有限公司 | 卸载训练优化方法、装置、电子设备及存储介质 |
| CN119415276A (zh) * | 2025-01-09 | 2025-02-11 | 山东浪潮科学研究院有限公司 | 一种基于异构多核处理器的进程调度方法、系统及设备 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112214443B (zh) * | 2020-10-22 | 2021-12-03 | 上海壁仞智能科技有限公司 | 设置于图形处理器中的二次卸载装置和方法 |
| CN115248728B (zh) * | 2022-09-21 | 2023-02-03 | 之江实验室 | 面向智能计算的分布式训练任务调度方法、系统和装置 |
| US12326838B2 (en) * | 2023-09-27 | 2025-06-10 | Lemon Inc. | Implementation for efficient log storage |
-
2025
- 2025-03-14 CN CN202510299974.2A patent/CN119902874B/zh active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110874305A (zh) * | 2019-11-14 | 2020-03-10 | 北京金山云网络技术有限公司 | 用户操作的记录方法、装置及服务器 |
| CN118796514A (zh) * | 2024-07-26 | 2024-10-18 | 上海壁仞科技股份有限公司 | 卸载训练优化方法、装置、电子设备及存储介质 |
| CN119415276A (zh) * | 2025-01-09 | 2025-02-11 | 山东浪潮科学研究院有限公司 | 一种基于异构多核处理器的进程调度方法、系统及设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN119902874A (zh) | 2025-04-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111090464B (zh) | 一种数据流处理方法及相关设备 | |
| US10372428B1 (en) | Dynamic computational acceleration using a heterogeneous hardware infrastructure | |
| US10902315B2 (en) | Device for implementing artificial neural network with separate computation units | |
| US12182688B2 (en) | Hierarchical partitioning of operators | |
| US8572614B2 (en) | Processing workloads using a processor hierarchy system | |
| US20250383850A1 (en) | Multistage compiler architecture | |
| CN104035751A (zh) | 基于多图形处理器的数据并行处理方法及装置 | |
| EP3126971A1 (en) | Program execution on heterogeneous platform | |
| JP2021034020A (ja) | ワークロードのスタティックマッピングの順不同にパイプライン化された実行を可能にする方法及び装置 | |
| CN109669772A (zh) | 计算图的并行执行方法和设备 | |
| CN118093203B (zh) | 数据搬运方法、分布式训练系统、电子设备和存储介质 | |
| US9612863B2 (en) | Hardware device for accelerating the execution of a systemC simulation in a dynamic manner during the simulation | |
| CN114662646A (zh) | 实现神经网络的方法和装置 | |
| CN120218190B (zh) | 分布式训练方法和系统、电子设备和存储介质 | |
| US12530296B2 (en) | Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs | |
| CN119902874B (zh) | 数据处理方法、数据处理装置、电子设备和存储介质 | |
| CN118296084B (zh) | 数据处理设备、指令同步方法、电子设备和存储介质 | |
| US20230236878A1 (en) | Efficiently launching tasks on a processor | |
| CN118277490A (zh) | 数据处理系统、数据同步方法、电子设备和存储介质 | |
| US12190086B1 (en) | Method and apparatus for ML graphs by a compiler | |
| CN117827386A (zh) | 调度方法、调度装置、电子设备及存储介质 | |
| CN120704693B (zh) | 编译方法、电子设备以及存储介质 | |
| CN113805976B (zh) | 数据处理方法及装置、电子设备及计算机可读存储介质 | |
| CN121070441A (zh) | 分配方法、电子设备和存储介质 | |
| CN120610798A (zh) | 大模型训练方法、装置、电子设备、存储介质和程序产品 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |