CN117806833B - 一种数据处理***、方法及介质 - Google Patents
一种数据处理***、方法及介质 Download PDFInfo
- Publication number
- CN117806833B CN117806833B CN202410220698.1A CN202410220698A CN117806833B CN 117806833 B CN117806833 B CN 117806833B CN 202410220698 A CN202410220698 A CN 202410220698A CN 117806833 B CN117806833 B CN 117806833B
- Authority
- CN
- China
- Prior art keywords
- memory
- host
- card
- data
- hosts
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 title claims abstract description 35
- 230000015654 memory Effects 0.000 claims abstract description 544
- 230000001133 acceleration Effects 0.000 claims abstract description 149
- 238000012549 training Methods 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims abstract description 31
- 238000004590 computer program Methods 0.000 claims description 45
- 238000013507 mapping Methods 0.000 claims description 27
- 238000013500 data storage Methods 0.000 claims description 12
- 238000003672 processing method Methods 0.000 claims description 11
- 230000003993 interaction Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 abstract description 25
- 238000011084 recovery Methods 0.000 abstract description 6
- 238000004891 communication Methods 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000002441 reversible effect Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 101150116046 PCBD1 gene Proteins 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101100297580 Xenopus laevis pcbd gene Proteins 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 102100029333 Pterin-4-alpha-carbinolamine dehydratase Human genes 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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
- G06F9/505—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 considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了模型训练技术领域内的一种数据处理***、方法及介质。本申请借助主机中的加速设备执行模型训练任务,借助主机中的内存板卡存储训练数据、中间结果和权重数据,从而不必由主机执行任务,也不必由主机存储数据,因而降低了主机的负载,加速设备执行模型训练任务能够提高模型训练效率,整个训练过程仅需主机进行任务分配,将大量计算和访存工作卸载到加速设备和内存板卡,可降低训练过程中的宕机风险和模型权重数据恢复难度。
Description
技术领域
本申请涉及模型训练技术领域,特别涉及一种数据处理***、方法及介质。
背景技术
目前,利用主机执行模型训练任务时,主机内存中需要存储大量数据,模型训练的中间结果、权重等数据也需要存储在主机内存中,这样会加重主机负载,且训练效率慢。当训练程序出错时,保存一份完整的模型权重需要大量访存时间,模型权重存在掉电丢失的风险。
因此,如何降低主机负载,提高模型训练效率,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据处理***、方法及介质,以降低主机负载,提高模型训练效率。其具体方案如下:
第一方面,本申请提供了一种数据处理***,包括多个主机,任意主机包括:多个加速设备和至少一个内存板卡;
多个主机中包括控制主机,控制主机将同一模型训练任务划分为多个子任务,并分发多个子任务至多个主机;
多个主机并行利用自身中的多个加速设备执行接收到的子任务,利用自身中的内存板卡存储相应子任务对应的训练数据、中间结果和权重数据;
控制主机利用自身中的内存板卡收集并处理多个主机中的内存板卡存储的权重数据,将处理得到的最新权重数据写回多个主机中的内存板卡。
另一方面,任意内存板卡包括:非易失存储模块,非易失存储模块包括存储控制器和非易失存储区;
存储控制器用于对非易失存储区进行内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度;
非易失存储区用于响应存储控制器进行的内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。
另一方面,非易失存储区被划分为训练数据区、全模型权重数据区、子任务权重数据区和其他区。
另一方面,任意内存板卡还包括:板卡调度器,板卡调度器用于通过CXL协议实现当前内存板卡所属的主机的内存与当前内存板卡中的非易失存储区中的数据一致性。
另一方面,任意内存板卡还包括:优先级仲裁器,优先级仲裁器根据接收到的访存请求中的访存地址确定优先级,并按照确定的优先级处理访存请求。
另一方面,访存请求为:当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求、当前内存板卡访问自身中的非易失存储区的请求和/或当前内存板卡访问其他主机中的内存板卡的请求。
另一方面,优先级仲裁器确定访存请求为当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则确定优先级为最高。
另一方面,优先级仲裁器若确定访存请求不是当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则按照预设策略确定优先级。
另一方面,任意内存板卡还包括:板卡计算单元,板卡计算单元用于进行权重数据的收集和计算。
另一方面,任意内存板卡还包括:网络模块,网络模块用于通过目标协议与其他主机中的内存板卡进行通信。
另一方面,网络模块通过RDMA(Remote Direct Memory Access,远程直接数据存取)协议将网络模块所属的内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。
另一方面,控制主机对多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。
另一方面,任意主机或任意内存板卡或任意加速设备通过目标内存地址对应的基地址和偏移地址访问目标内存地址,目标内存地址为非当前内存板卡中的非易失存储区的地址。
另一方面,任意主机通过CXL协议将自身中的内存板卡中的非易失存储区的地址映射至主机内存空间,并根据映射得到的地址映射关系实现主机内存地址和板卡内存地址之间的转换。
另一方面,任意主机将接收到的子任务按照自身中的加速设备的数量切分为多个任务块,并将多个任务块分发至自身中的加速设备,控制自身中的加速设备并行运行多个任务块。
另一方面,控制主机计算多个主机中的内存板卡存储的权重数据的均值,将均值作为最新权重数据。
另一方面,任意加速设备包括设备调度器,设备调度器用于通过CXL协议实现当前加速设备的内存与当前加速设备所属的主机的内存中的数据一致性。
另一方面,任意加速设备包括多个设备计算单元,多个设备计算单元用于执行接收到的任务块;任务块按照当前加速设备所属主机中的加速设备的数量对当前加速设备接收到的子任务切分得到。
另一方面,任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址属于本地,则通过PCIE协议访问所述目标内存地址;和/或任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址不属于本地,则通过RDMA协议访问所述目标内存地址。
另一方面,任意加速设备将执行子任务得到的训练过程中的中间权重存入同一主机的内存板卡的子任务权重数据区;若所述子任务权重数据区被存满,则将所述子任务权重数据区对应的标志为由0置为1。
另一方面,任意内存板卡中的板卡计算单元根据编址表读取本地或远程的子任务权重数据区中的中间权重,将相应子任务权重数据区对应的标志为由1置为0;计算所读取数据的均值,根据编址表将该均值写入本地或远程的全模型权重数据区。
第二方面,本申请提供了一种数据处理方法,应用于分布式***,分布式***包括多个主机,任意主机包括:多个加速设备和至少一个内存板卡;
多个主机中包括控制主机,控制主机将同一模型训练任务划分为多个子任务,并分发多个子任务至多个主机;
多个主机并行利用自身中的多个加速设备执行接收到的子任务,利用自身中的内存板卡存储相应子任务对应的训练数据、中间结果和权重数据;
控制主机利用自身中的内存板卡收集并处理多个主机中的内存板卡存储的权重数据,将处理得到的最新权重数据写入多个主机中的内存板卡。
另一方面,任意内存板卡中的网络模块通过RDMA协议将当前内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。
另一方面,控制主机对多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。
第三方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,计算机程序被处理器执行时实现前述公开的数据处理方法。
通过以上方案可知,本申请提供了一种数据处理***,包括多个主机,任意主机包括:多个加速设备和至少一个内存板卡;多个主机中包括控制主机,控制主机将同一模型训练任务划分为多个子任务,并分发多个子任务至多个主机;多个主机并行利用自身中的多个加速设备执行接收到的子任务,利用自身中的内存板卡存储相应子任务对应的训练数据、中间结果和权重数据;控制主机利用自身中的内存板卡收集并处理多个主机中的内存板卡存储的权重数据,将处理得到的最新权重数据写回多个主机中的内存板卡。
可见,本申请借助主机中的加速设备执行模型训练任务,借助主机中的内存板卡存储训练数据、中间结果和权重数据,从而不必由主机执行任务,也不必由主机存储数据,因而降低了主机的负载,加速设备执行模型训练任务能够提高模型训练效率,整个训练过程仅需主机进行任务分配,将大量计算和访存工作卸载到加速设备和内存板卡,可降低训练过程中的宕机风险和模型权重数据恢复难度。
相应地,本申请提供的一种数据处理方法及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据处理***示意图;
图2为本申请公开的一种分布式集群示意图;
图3为本申请公开的一种内存板卡示意图;
图4为本申请公开的一种加速设备示意图;
图5为本申请公开的一种数据处理方法流程图;
图6为本申请提供的一种服务器结构图;
图7为本申请提供的一种终端结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实例,都属于本申请保护的范围。
大模型训练是指使用大规模数据集和计算资源来训练深度学习模型的过程。大模型通常具有更多的参数和更深的网络结构,能够学习到更复杂、更抽象的特征表示。这使得大模型在处理复杂任务和大规模数据时具有更强的表达能力,能够更好地捕捉数据中的潜在模式和关系。通过增加参数和层数,可以提高模型的性能和效果。例如,在自然语言处理领域,大模型能够更好地理解和生成自然语言,表现出更高的语义准确性和语言流畅度。在计算机视觉领域,大模型能够更准确地进行物体识别、图像生成等任务。同时大模型具有更强的泛化能力,即在未见过的数据上表现良好。通过增加模型的容量和复杂度,大模型能够更好地适应不同的数据分布和任务要求,从而提高模型在新数据上的泛化能力。通过在大规模数据上进行训练,可以学习到更通用的特征表示。这使得大模型在迁移学习任务中表现更好,可以将已学习的知识迁移到新的任务和领域中。
与此同时,大模型训练面临着一些难点和挑战,最为明显的挑战是大模型对训练设备的需求极高,主要包括以下几个方面:处理器性能:大模型训练需要高性能的处理器来进行计算。通常使用图形处理器或者专用的AI加速器来加速模型训练。这些处理器具有并行计算能力和高速的浮点运算能力,可以显著加快训练速度。内存容量:大模型训练中的模型参数通常非常庞大,需要大量的内存来存储和更新参数。对于单个计算节点来说,内存容量需要能够满足模型参数的存储需求。如果内存容量不足,可能需要采用模型并行化或者分布式训练技术来解决内存限制问题。存储***:大模型训练产生的数据量较大,需要快速的存储***来存储和读取数据。高速的固态硬盘或者网络存储(如分布式文件***)可以提供足够的存储带宽和容量,以满足大规模训练的需求。网络连接:大模型训练通常需要多个计算节点之间进行通信和同步。因此,需要高速的网络连接来保证节点之间的数据传输效率和稳定性。高速以太网等高性能网络可以满足大规模训练的需求。分布式计算架构:对于大规模的模型训练,可能需要使用分布式计算架构来将计算任务分配给多个计算节点并行计算。这样可以提高训练速度和效率。分布式计算架构需要具备任务调度、节点管理和通信协调等功能。
目前,利用主机执行模型训练任务时,主机内存中需要存储大量数据,模型训练的中间结果、权重等数据也需要存储在主机内存中,这样会加重主机负载,且训练效率慢。当训练程序出错时,保存一份完整的模型权重需要大量访存时间,模型权重存在掉电丢失的风险。为此,本申请提供了一种数据处理方案,能够降低主机负载,提高模型训练效率。
参见图1所示,本申请实施例公开了一种数据处理***,包括多个主机,任意主机包括:多个加速设备和至少一个内存板卡。加速设备如FPGA加速卡、GPU加速卡等。
其中,多个主机中包括控制主机,控制主机将同一模型训练任务划分为多个子任务,并分发多个子任务至多个主机。多个主机并行利用自身中的多个加速设备执行接收到的子任务,利用自身中的内存板卡存储相应子任务对应的训练数据、中间结果和权重数据。控制主机利用自身中的内存板卡收集并处理多个主机中的内存板卡存储的权重数据,将处理得到的最新权重数据写回多个主机中的内存板卡。内存板卡可以为基于FPGA实现的内存扩展卡。
在本实施例中,模型训练任务用于实现各种智能模型的训练,智能模型可以是任意结构,可以用于实现数据加密任务、数据解密任务、图像识别任务和图像分类任务等。主机具体为服务器。多个主机构成的数据处理***可具体为分布式***。分布式***中的各主机可实现资源共享,能加快计算速度。本实施例将一个模型训练任务划分为若干个并行运行的子任务,且把这些子任务分散到不同的主机节点上,使它们同时在这些主机节点上运行,从而加快计算速度。另外,分布式***具有计算迁移功能,如果某个主机节点上的负载太重,则可把其中一些作业移到其他主机节点去执行,从而减轻前一主机节点的负载。这种作业迁移称为负载平衡。并且,分布式***可靠性高,如果其中某个节点失效了,则其余的节点可以继续操作,整个***不会因为一个或少数几个节点的故障而全体崩溃。因此,分布式***有很好的容错性能。***还能够检测节点的故障,采取适当的手段,使它从故障中恢复过来。***确定故障所在的节点后,就不再利用它来提供服务,直至其恢复正常工作。失效节点的功能可由其他节点完成,当失效节点被恢复或者修复时,***可以把它平滑地集成到***中。
在单一一个主机中,可以包括至少一个支持CXL协议的switch设备,该switch设备的上游端口用于连接主机,下游端口用于连接其他switch设备、多个加速设备和至少一个内存板卡。其中,switch设备的下游端口完成配置空间的配置以及BAR(Base AddressRegister,基地址寄存器)总线基地址的分配后,下游各设备可以周期性通过PCIE(Peripheral Component Interconnect Express,一种高速串行计算机扩展总线标准)接口广播自己的空闲内存信息至对方,由此实现下游各设备间的直接PCIE通信。switch设备可以很好地实现主机与其下游设备的通信互联。PCIE属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽。PCIExpress也有多种规格,从PCIExpress x1到PCIExpress x32,能满足将来一定时间内出现的低速设备和高速设备的需求。PCI-Express的接口是PCIE 3.0接口,其比特率为8Gbps,约为上一代产品带宽的两倍,并且包含发射器和接收器均衡以及时钟数据恢复等一系列重要功能,用以改善数据传输和数据保护性能。PCIExpress总线链路支持任何两个端点之间的全双工通信。通道由两个差分信号对组成,一对用于接收数据,另一对用于发送数据,还有一对差分的参考时钟。因此,每个通道由四条线数据线组成。在概念上,每条通道用作全双工字节流,在链路端点之间的两个方向同时传输8位字节格式的数据包。物理PCI Express链路可能包含1个到32个通道。
CXL协议与PCIE标准兼容,能够解决异构设备的缓存和内存访问的一致性问题,让加速设备的内存、主机的内存和CPU的缓存在全局上可以被所有支持CXL协议的设备快速访问到。CXL技术在CPU内存空间和连接设备上的内存之间保持内存一致性,能支持资源共享(或内存池)以获得更高的性能,降低软件堆栈的复杂性,并降低整体***成本。因此,通过CXL接口可使CPU与GPU加速设备、FPGA加速设备等进行通信,带来更高的数据访问效率和更低的局部数据访问延时。CXL由单个链路上的三个动态多路复用子协议组成,包括类似于PCIE的IO协议(即CXL.io)、缓存协议(即CXL.cach)和内存访问协议(即CXL.memory)。根据特定的加速设备使用模式,可以启用所有子协议或仅启用一个子协议。对于发现和枚举、错误报告和主机物理地址查找等操作,需要启用CXL.io协议。CXL的一个主要优势是它为加速设备访问***提供了一个低延迟、高带宽的路径。CXL的内存缓存一致性允许在主机CPU和加速设备之间共享内存资源。
在一种示例中,一个主机中的switch设备的下游各加速设备间可以以DMA方法直接通信,而不用经过主机。若任意加速设备需传输数据,则根据内存空闲容量和加速卡功能确定用于处理该数据的当前主机中的其他加速设备,并在自身中查询其他加速设备的内存空闲信息;之后利用自身中的存储器直接访问控制器和内存空闲信息将当前需传输数据以存储器直接访问方式写入其他加速设备的内存。switch设备为多网口设备,主要功能是将数据在不同端口之间转发,也会留有数据接口以便和其他设备对接。
在一种实施方式中,任意内存板卡包括:非易失存储模块,非易失存储模块包括存储控制器和非易失存储区;存储控制器用于对非易失存储区进行内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度;非易失存储区用于响应存储控制器进行的内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。其中,非易失存储区被划分为训练数据区、全模型权重数据区、子任务权重(模型中的某一层的权重)数据区和其他区。
在一种实施方式中,任意内存板卡还包括:板卡调度器用于通过CXL协议实现当前内存板卡所属的主机的内存与当前内存板卡中的非易失存储区中的数据一致性。具体的,板卡调度器借助CXL协议提供的数据一致性标准实现相关引擎,从而利用此引擎即时同步主机内存和内存板卡中的非易失存储区中的数据。
优先级仲裁器根据接收到的访存请求中的访存地址确定优先级,并按照确定的优先级处理访存请求。其中,访存请求为:当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求、当前内存板卡访问自身中的非易失存储区的请求和/或当前内存板卡访问其他主机中的内存板卡的请求。可见,本***支持当前内存板卡所属的主机访问当前内存板卡中的非易失存储区、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区、当前内存板卡访问自身中的非易失存储区和/或不同主机的内存板卡的互相访问。具体的,优先级仲裁器确定访存请求为当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则确定优先级为最高。具体的,优先级仲裁器若确定访存请求不是当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则按照预设策略确定优先级。其中,预设策略中可以对上述不同请求进行优先级设定,例如:当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求的优先级最高,当前内存板卡访问自身中的非易失存储区的请求的优先级为第二,不同主机的内存板卡的互相访问的优先级位第三,当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求的优先级最低。
板卡计算单元用于进行权重数据的收集和计算,具体可以获取当前板卡所在主机中的加速设备和/或其他主机中的加速设备输出的权重数据,并进行计算。
网络模块用于通过目标协议与其他主机中的内存板卡进行通信。其中,网络模块通过RDMA协议或TCP(Transmission Control Protocol,传输控制协议)协议将网络模块所属的内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。RDMA能够降低网络延迟,把数据直接传入不同内存板卡的非易失存储区,使数据在不同内存板卡上快速传输,而不对主机操作***造成任何影响,这样就不需要用到主机的处理功能,因而能解放主机内存和带宽,改进主机***性能。
在一种实施方式中,控制主机对多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。其中,任意主机或任意内存板卡或任意加速设备通过目标内存地址对应的基地址和偏移地址访问目标内存地址,目标内存地址为非当前内存板卡中的非易失存储区的地址。
在一种实施方式中,任意主机通过CXL(Compute Express Link,一种技术规范)将自身中的内存板卡中的非易失存储区的地址映射至主机内存空间,并根据映射得到的地址映射关系实现主机内存地址和板卡内存地址之间的转换。
在一种实施方式中,任意主机将接收到的子任务按照自身中的加速设备的数量切分为多个任务块,并将多个任务块分发至自身中的加速设备,控制自身中的加速设备并行运行多个任务块。可见,同一主机中的不同加速设备并行运行该主机接到的子任务,由此也可以加快任务处理速率。
在一种实施方式中,控制主机计算多个主机中的内存板卡存储的权重数据的均值,将均值作为最新权重数据。
在一种实施方式中,任意加速设备包括设备调度器,设备调度器用于通过CXL协议实现当前加速设备的内存与当前加速设备所属的主机的内存中的数据一致性。
在一种实施方式中,任意加速设备包括多个设备计算单元,多个设备计算单元用于执行接收到的任务块;任务块按照当前加速设备所属主机中的加速设备的数量对当前加速设备接收到的子任务切分得到。
在一种示例中,控制主机还包括数据传输装置。数据传输装置用于:根据至少一个远端设备的内存申请直连相应远端设备的一段内存地址,使得主机借助数据传输装置直接访问远端设备中存储的模型训练任务及其相关数据。其中,数据传输装置包括:地址解析模块和多个内存访问模块;每一内存访问模块用于根据至少一个远端设备的内存申请直连相应远端设备的一段内存地址,并支持其所连的不同远端设备的分时复用,被每一内存访问模块直接访问的各远端设备共享控制主机的处理器及加速设备。内存访问模块包括RDMA单元。
在一种实施方式中,控制主机的处理器还用于:根据任意远端设备发送的内存申请请求在数据传输装置中查询空闲的内存访问模块;若查询到空闲的内存访问模块,则针对空闲的内存访问模块生成地址配置操作,发送地址配置操作至空闲的内存访问模块;相应地,空闲的内存访问模块用于:根据地址配置操作,在自身中配置地址配置操作携带的与任意远端设备对应的内存地址范围,并与当前远端设备建立远程内存访问连接;相应地,地址解析模块用于:记录内存地址范围、当前远端设备和配置有内存地址范围的内存访问模块之间的映射关系。处理器还用于:根据任意远端设备发送的内存申请请求,针对所述数据传输装置中的空闲的内存访问模块生成地址配置操作,发送所述地址配置操作至所述数据传输装置;相应地,所述数据传输装置用于:使空闲的内存访问模块根据所述地址配置操作,在自身中配置所述地址配置操作携带的与任意远端设备对应的内存地址范围,并与当前远端设备建立远程内存访问连接;
在一种实施方式中,控制主机的处理器还用于:若未查询到空闲的内存访问模块,则返回申请失败消息至相应远端设备。在一种实施方式中,控制主机的处理器还用于:根据任意远端设备发送的内存申请请求检测内存地址范围的内存空间大小;确定与内存空间大小匹配的内存模式;按照内存模式管理相应内存空间。在一种实施方式中,控制主机的处理器还用于:为所述数据传输装置中的每一内存访问模块设定可配置的地址范围大小。
另一方面,任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址属于本地,则通过PCIE协议访问所述目标内存地址;和/或任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址不属于本地,则通过RDMA协议访问所述目标内存地址。任意加速设备将执行子任务得到的训练过程中的中间权重存入同一主机的内存板卡的子任务权重数据区;若所述子任务权重数据区被存满,则将所述子任务权重数据区对应的标志为由0置为1。相应地,任意内存板卡中的板卡计算单元根据编址表读取本地或远程的子任务权重数据区中的中间权重,将相应子任务权重数据区对应的标志为由1置为0;计算所读取数据的均值,根据编址表将该均值写入本地或远程的全模型权重数据区。
本实施例借助主机中的加速设备执行模型训练任务,借助主机中的内存板卡存储训练数据、中间结果和权重数据,从而不必由主机执行任务,也不必由主机存储数据,因而降低了主机的负载,加速设备执行模型训练任务能够提高模型训练效率,整个训练过程仅需主机进行任务分配,将大量计算和访存工作卸载到加速设备和内存板卡,可降低训练过程中的宕机风险和模型权重数据恢复难度。
请参见图2,本实施例提供了一种分布式集群,由若干带有cxl-pmem(即内存板卡)和cxl-gpu(即加速设备)的主机节点组成。每个主机节点包含cxlswitch(连接设备)、带有若干CXL接口的GPU加速设备,一个或多个集成了FPGA的内存扩展CXL设备(即内存板卡)。
每个主机可以连接多个级联cxl switch,最多支持4096个内存板卡。加速设备和内存板卡设备被设计为cxl 2型(包括IO和缓存),并通过cxl switch连接到主机。得益于它们的设备类型,内存板卡的内部内存可以暴露于加速设备中和相应主机,内存板卡看不到主机内存,加速设备可以访问主机内存,内存板卡和加速设备互相访问;主机可以访问内存板卡,反之内存板卡也可以访问主机。
请参见图3,内存板卡为FPGA实现的内存扩展卡,包含如下四个模块:计算单元、存储调度器(即板卡调度器)、PMEM(Persistent Memory)存储模块(即非易失存储模块)和网络模块。
存储调度器通过CXL实现了引擎dcoh(device coherency engine),用于保持和主机的内存一致性,包括访存队列和优先级仲裁器。内存板卡中设计了访存队列和优先级仲裁器。该设备的访存主要由以下几种:主机读写内存板卡的PMEM存储模块;加速设备读写内存板卡的PMEM存储模块;内存板卡读写自己的PMEM存储模块;内存板卡读写其他节点的内存板卡的PMEM存储模块。
优先级仲裁器:通过访存地址和读写命令来确定优先级,将并发的访存请求存入访存队列。由于训练中占时最长的为前向和反向计算,因此为保证训练的时延,将加速设备访问内存板卡的访存操作的优先级设为最高,而其他访存操作则会隐藏在前向和反向计算过程。
计算单元:主要完成训练时各个GPU的权重收集和计算。
引擎dcoh:用于设备内存和主机内存的一致性跟踪逻辑。在CXL标准中可以保证访存的一致性,能够保证主机和加速设备访问到的内存是最新的一致的。
网络模块用于支持不同主机中的内存板卡间的远程访问,可以采用RDMA/TCP等网络协议,本例中使用RDMA作为通信方式进行描述。
PEME存储模块中的控制器主要功能包括内存分配/释放、数据放置、地址映射、内存请求调度等。PMEM用于存储模型权重和训练数据,由于PMEM具有掉电不丢失的特性,且单位存储相较于DDR成本低,因此更适合大模型训练场景。PMEM支持对远程内存板卡中的扩展内存访问,并对网络节点中的内存板卡进行统一编址,板卡使用CXL.IO协议,网络连接内存板卡地址可以通过IO MMU映射地址到主机内存空间,用户可以使用地址转换后的虚拟地址空间连接内存板卡。
请参见图4,加速设备为支持CXL协议的GPU计算单元,包括以下几个模块,内存一致性引擎DCOH、I/O FIFO、GPGPU计算模块(设备计算单元)和DDR(Double Data Rate,双倍速率同步动态随机存储器)。其中,GPGPU计算单元,主要完成训练中的前向和反向计算任务;I/OFIFO(InputOutput First Input First Output,输入输出的先入先出队列)负责训练数据/模型权重的预取,以及写入训练中的模型权重到内存板卡;内存一致性引擎DCOH用于实现设备内存的与主机内存的一致性跟踪逻辑,DDR(即子任务权重数据区)存储用于缓存计算过程中的中间权重。
在一种示例中,一种具体的模型训练过程包括:在训练之前首先需要对集群中的主机节点的扩展内存进行初始化,将所有的节点的扩展内存写入各节点的内存配置文件,配置文件包括当前主机的每个内存板卡的交互方式、大小和起始偏移地址。
以3个主机节点,每个节点的扩展内存大小为0x10000000为例,具体的内存信息请参见表1。
表1
通过上述统一编址,每个节点都拥有其他节点的扩展内存的访问权,且保证每个节点中内存板卡中的基地址+偏移内存地址指向唯一物理内存。由表1可看出,一个内存板卡同时支持PCIE通信和RDMA通信。
启动训练:由于模型很大,单个GPU内存无法放下,因此训练采用基于节点的模型并行策略,将模型拆分到每个节点的GPU进行运行。具体的,每个节点中所有的GPU运行共同分割一个模型。模型由多个层组成,每层都拆分到N个GPU上计算。作为分布式训练,选则其中一个节点作为master(控制主机),负责启动训练任务,发送训练参数给其他节点。每个节点负责烧录和启动加速设备和内存板卡 kernel程序,并将从master接收到的训练参数传递给加速设备和内存板卡程序。
初始化训练参数配置包括:在内存板卡按照模型大小分配内存,分为4部分:训练数据(Train data)区、模型权重(Model weight)区、模型中的某一层的权重(Layerweight)区、其他内存区。由于模型训练的数据集极大,因此需要分批存入每个节点的内存板卡,由于PCIE的读取延时小于RDMA,因此将训练数据存入本地内存板卡的非易失存储区域。
初始化每个节点的本地weight块,该内存用于保存当前正在计算的局部权重,存在于每个节点的本地内存板卡内存中,降低通信时延,并分配到本地的DDR存储,相较于PMEM会提升读写性能。该部分内存会被master节点访问进行均值计算,并更新数据后进行写回操作。更新数据为所有节点的数据的均值。为防止读写冲突,该区域设计为乒乓(pingpang)缓存,同时设计标记位,当加速设备更新局部权重后对标记位置1,当内存板卡中的计算单元发现标记为1后进行均值计算并写入模型权重区域,然后置0。由于加速设备更新权重为模型的某一层数据,且内存板卡的均值计算时间远小于加速设备的更新时间(模型该层的计算/训练时间),从而规避掉访问冲突。
读取训练数据到GPU内存:该操作由加速设备的I/O FIFO模块完成,该模块负责从内存板卡的训练数据区域预取训练数据,并将训练数据存入数据FIFO中,然后由加速设备的GPGPU(General Purpose computing on GPU,通用图形处理器)计算模块读取。
分段读取模型权重:由于模型较大,采用模型分割将每层的权重按照单个节点的GPU个数分割到每个加速设备,具体可按计算量。假设每个节点有2个GPU,则按计算量将该层拆分到两个GPU上,这样能保证两个GPU同时计算完成,减少同步需要的等待时间。该操作同样由加速设备的I/O FIFO模块完成,该模块负责从内存板卡的模型权重区域预取训练数据,该区域存储了上一次训练好的模型权重均值,将训练数据存入权重FIFO中,然后由加速设备的GPGPU计算模块读取;通过将模型权重分层/分块读取,可以降低本地的GPU内存占用,本地仅需缓存少量模型权重和中间数据即可。
前向计算:每个节点根据读取到的数据和权重各自进行前向计算,计算得到各自节点的模型损失。
部分反向计算:反向计算同样分块进行,由加速设备的GPGPU模块完成。
GPU更新本地权重:各节点计算完权重后将该部分权重存储到加速设备的显存中。
模型权重存储到节点内存板卡DDR:该操作由加速设备I/O FIFO模块完成,该模块会记录上次发写入到内存板卡的pingpong地址,读取加速设备本地显存权重存储到pmem内存对应的weight区域,当缓存区域缓存满时,将标记为置位为1。
更新PMEM模型权重:内存板卡的计算模块读取每个节点weight的乒乓缓存,进行均值计算,并存入pmem内存中的模型权重内存,并将标记为置位为0。由于内存板卡的均值计算时间远小于加速设备的更新时间,采取定时器模式去读标记位。
重复前述过程,直至完成所有模型块的反向传播。
可见,本实施例通过CXL总线PMEM内存扩展设备将训练数据、训练中间结果和训练权重存储到内存板卡设备,利用跨节点的cxlmem统一编址,分布式训练设备仅需要保存一份模型权重,大大节省了模型缓存空间,从而在小规模集群实现分布式大模型训练;整个训练过程仅需少量CPU参与,大量计算和访存工作卸载到cxl设备,从而大大节省GPU内存,算力和带宽。PMEM的掉电不丢失特性可以大大降低训练过程中的宕机风险和模型权重数据恢复难度,达到扩展GPU内存和CPU内存效果,从而支持在小规模集群中训练大模型。
下面对本申请实施例提供的一种数据处理方法进行介绍,下文描述的一种数据处理方法与本文描述的其他实施例可以相互参照。
参见图5所示,本申请实施例公开了一种数据处理方法,应用于分布式***,分布式***包括多个主机,任意主机包括:多个加速设备和至少一个内存板卡。
S501、多个主机中包括控制主机,控制主机将同一模型训练任务划分为多个子任务,并分发多个子任务至多个主机。
S502、多个主机并行利用自身中的多个加速设备执行接收到的子任务,利用自身中的内存板卡存储相应子任务对应的训练数据、中间结果和权重数据。
S503、控制主机利用自身中的内存板卡收集并处理多个主机中的内存板卡存储的权重数据,将处理得到的最新权重数据写入多个主机中的内存板卡。
在一种实施方式中,任意内存板卡中的网络模块通过RDMA协议将当前内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。
在一种实施方式中,控制主机对多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。
在一种实施方式中,任意内存板卡包括:非易失存储模块,非易失存储模块包括存储控制器和非易失存储区;
存储控制器用于对非易失存储区进行内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度;
非易失存储区用于响应存储控制器进行的内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。
在一种实施方式中,非易失存储区被划分为训练数据区、全模型权重数据区、子任务权重数据区和其他区。
在一种实施方式中,任意内存板卡还包括:板卡调度器,板卡调度器用于通过CXL协议实现当前内存板卡所属的主机的内存与当前内存板卡中的非易失存储区中的数据一致性。
在一种实施方式中,任意内存板卡还包括:优先级仲裁器。
优先级仲裁器根据接收到的访存请求中的访存地址确定优先级,并按照确定的优先级处理访存请求。其中,访存请求为:当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求、当前内存板卡访问自身中的非易失存储区的请求和/或当前内存板卡访问其他主机中的内存板卡的请求。可见,本***支持当前内存板卡所属的主机访问当前内存板卡中的非易失存储区、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区、当前内存板卡访问自身中的非易失存储区和/或不同主机的内存板卡的互相访问。具体的,优先级仲裁器确定访存请求为当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则确定优先级为最高。具体的,优先级仲裁器若确定访存请求不是当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则按照预设策略确定优先级。其中,预设策略中可以对上述不同请求进行优先级设定,例如:当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求的优先级最高,当前内存板卡访问自身中的非易失存储区的请求的优先级为第二,不同主机的内存板卡的互相访问的优先级位第三,当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求的优先级最低。
在一种实施方式中,任意内存板卡还包括:板卡计算单元,板卡计算单元用于进行权重数据的收集和计算。
在一种实施方式中,任意内存板卡还包括:网络模块,网络模块用于通过目标协议与其他主机中的内存板卡进行通信。
在一种实施方式中,网络模块通过RDMA协议将网络模块所属的内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。
在一种实施方式中,控制主机对多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。
在一种实施方式中,任意主机或任意内存板卡或任意加速设备通过目标内存地址对应的基地址和偏移地址访问目标内存地址,目标内存地址为非当前内存板卡中的非易失存储区的地址。
在一种实施方式中,任意主机通过CXL协议将自身中的内存板卡中的非易失存储区的地址映射至主机内存空间,并根据映射得到的地址映射关系实现主机内存地址和板卡内存地址之间的转换。
在一种实施方式中,任意主机将接收到的子任务按照自身中的加速设备的数量切分为多个任务块,并将多个任务块分发至自身中的加速设备,控制自身中的加速设备并行运行多个任务块。可见,同一主机中的不同加速设备并行运行该主机接到的子任务,由此也可以加快任务处理速率。
在一种实施方式中,控制主机计算多个主机中的内存板卡存储的权重数据的均值,将均值作为最新权重数据。
在一种实施方式中,任意加速设备包括设备调度器,设备调度器用于通过CXL协议实现当前加速设备的内存与当前加速设备所属的主机的内存中的数据一致性。
在一种实施方式中,任意加速设备包括多个设备计算单元,多个设备计算单元用于执行接收到的任务块;任务块按照当前加速设备所属主机中的加速设备的数量对当前加速设备接收到的子任务切分得到。
另一方面,任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址属于本地,则通过PCIE协议访问所述目标内存地址;和/或任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址不属于本地,则通过RDMA协议访问所述目标内存地址。任意加速设备将执行子任务得到的训练过程中的中间权重存入同一主机的内存板卡的子任务权重数据区;若所述子任务权重数据区被存满,则将所述子任务权重数据区对应的标志为由0置为1。相应地,任意内存板卡中的板卡计算单元根据编址表读取本地或远程的子任务权重数据区中的中间权重,将相应子任务权重数据区对应的标志为由1置为0;计算所读取数据的均值,根据编址表将该均值写入本地或远程的全模型权重数据区。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例借助主机中的加速设备执行模型训练任务,借助主机中的内存板卡存储训练数据、中间结果和权重数据,从而不必由主机执行任务,也不必由主机存储数据,因而降低了主机的负载,加速设备执行模型训练任务能够提高模型训练效率,整个训练过程仅需主机进行任务分配,将大量计算和访存工作卸载到加速设备和内存板卡,可降低训练过程中的宕机风险和模型权重数据恢复难度。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与本文描述的其他实施例可以相互参照。本实施例中的电子设备可以是上述实施例中的主机、内存板卡或加速设备。
本申请实施例公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:对非易失存储区进行内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。响应存储控制器进行的内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。其中,非易失存储区被划分为训练数据区、全模型权重数据区、子任务权重数据区和其他区。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过CXL协议实现当前内存板卡所属的主机的内存与当前内存板卡中的非易失存储区中的数据一致性。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:根据接收到的访存请求中的访存地址确定优先级,并按照确定的优先级处理访存请求。其中,访存请求为:当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求、当前内存板卡访问自身中的非易失存储区的请求和/或当前内存板卡访问其他主机中的内存板卡的请求。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:确定访存请求为当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则确定优先级为最高。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:若确定访存请求不是当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则按照预设策略确定优先级。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:进行权重数据的收集和计算。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过目标协议与其他主机中的内存板卡进行通信。其中,网络模块通过RDMA协议将网络模块所属的内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:对多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过目标内存地址对应的基地址和偏移地址访问目标内存地址,目标内存地址为非当前内存板卡中的非易失存储区的地址。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过CXL协议将自身中的内存板卡中的非易失存储区的地址映射至主机内存空间,并根据映射得到的地址映射关系实现主机内存地址和板卡内存地址之间的转换。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:将接收到的子任务按照自身中的加速设备的数量切分为多个任务块,并将多个任务块分发至自身中的加速设备,控制自身中的加速设备并行运行多个任务块。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:计算多个主机中的内存板卡存储的权重数据的均值,将均值作为最新权重数据。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过CXL协议实现当前加速设备的内存与当前加速设备所属的主机的内存中的数据一致性。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:执行接收到的任务块;任务块按照当前加速设备所属主机中的加速设备的数量对当前加速设备接收到的子任务切分得到。
进一步的,本申请实施例还提供了一种电子设备。其中,上述电子设备既可以是如图6所示的服务器,也可以是如图7所示的终端。图6和图7均是根据一示例性实施例示出的电子设备结构图,图中的内容不能被认为是对本申请的使用范围的任何限制。
图6为本申请实施例提供的一种服务器的结构示意图。该服务器具体可以包括:至少一个处理器、至少一个存储器、电源、通信接口、输入输出接口和通信总线。其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行,以实现前述任一实施例公开的数据处理中的相关步骤。
本实施例中,电源用于为服务器上的各硬件设备提供工作电压;通信接口能够为服务器创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作***、计算机程序及数据等,存储方式可以是短暂存储或者永久存储。
其中,操作***用于管理与控制服务器上的各硬件设备以及计算机程序,以实现处理器对存储器中数据的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序除了包括能够用于完成前述任一实施例公开的数据处理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据除了可以包括应用程序的更新信息等数据外,还可以包括应用程序的开发商信息等数据。
图7为本申请实施例提供的一种终端的结构示意图,该终端具体可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
通常,本实施例中的终端包括有:处理器和存储器。
其中,处理器可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器还可以包括AI(ArtificialIntelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器至少用于存储以下计算机程序,其中,该计算机程序被处理器加载并执行之后,能够实现前述任一实施例公开的由终端侧执行的数据处理方法中的相关步骤。另外,存储器所存储的资源还可以包括操作***和数据等,存储方式可以是短暂存储或者永久存储。其中,操作***可以包括Windows、Unix、Linux等。数据可以包括但不限于应用程序的更新信息。
在一些实施例中,终端还可包括有显示屏、输入输出接口、通信接口、传感器、电源以及通信总线。
本领域技术人员可以理解,图7中示出的结构并不构成对终端的限定,可以包括比图示更多或更少的组件。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与本文描述的其他实施例可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据处理方法。其中,可读存储介质为计算机可读存储介质,其作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作***、计算机程序及数据等,存储方式可以是短暂存储或者永久存储。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:对非易失存储区进行内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。响应存储控制器进行的内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。其中,非易失存储区被划分为训练数据区、全模型权重数据区、子任务权重数据区和其他区。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过CXL协议实现当前内存板卡所属的主机的内存与当前内存板卡中的非易失存储区中的数据一致性。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:根据接收到的访存请求中的访存地址确定优先级,并按照确定的优先级处理访存请求。其中,访存请求为:当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求、当前内存板卡访问自身中的非易失存储区的请求和/或当前内存板卡访问其他主机中的内存板卡的请求。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:确定访存请求为当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则确定优先级为最高。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:若确定访存请求不是当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则按照预设策略确定优先级。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:进行权重数据的收集和计算。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过目标协议与其他主机中的内存板卡进行通信。其中,网络模块通过RDMA协议将网络模块所属的内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:对多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过目标内存地址对应的基地址和偏移地址访问目标内存地址,目标内存地址为非当前内存板卡中的非易失存储区的地址。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过CXL协议将自身中的内存板卡中的非易失存储区的地址映射至主机内存空间,并根据映射得到的地址映射关系实现主机内存地址和板卡内存地址之间的转换。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:将接收到的子任务按照自身中的加速设备的数量切分为多个任务块,并将多个任务块分发至自身中的加速设备,控制自身中的加速设备并行运行多个任务块。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:计算多个主机中的内存板卡存储的权重数据的均值,将均值作为最新权重数据。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:通过CXL协议实现当前加速设备的内存与当前加速设备所属的主机的内存中的数据一致性。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:执行接收到的任务块;任务块按照当前加速设备所属主机中的加速设备的数量对当前加速设备接收到的子任务切分得到。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (23)
1.一种数据处理***,其特征在于,包括多个主机,任意主机包括:多个加速设备和至少一个内存板卡;
所述多个主机中包括控制主机,所述控制主机将同一模型训练任务划分为多个子任务,并分发所述多个子任务至所述多个主机;
所述多个主机并行利用自身中的多个加速设备执行接收到的子任务,利用自身中的内存板卡存储相应子任务对应的训练数据、中间结果和权重数据;
所述控制主机利用自身中的内存板卡收集并处理所述多个主机中的内存板卡存储的权重数据,将处理得到的最新权重数据写回所述多个主机中的内存板卡。
2.根据权利要求1所述的***,其特征在于,任意内存板卡包括:非易失存储模块,所述非易失存储模块包括存储控制器和非易失存储区;
所述存储控制器用于对所述非易失存储区进行内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度;
所述非易失存储区用于响应所述存储控制器进行的内存分配操作、内存释放操作、数据存储操作、地址映射操作和/或内存请求调度。
3.根据权利要求2所述的***,其特征在于,所述非易失存储区被划分为训练数据区、全模型权重数据区、子任务权重数据区和其他区。
4.根据权利要求2所述的***,其特征在于,任意内存板卡还包括:板卡调度器,所述板卡调度器用于通过CXL协议实现当前内存板卡所属的主机的内存与当前内存板卡中的非易失存储区中的数据一致性。
5.根据权利要求2所述的***,其特征在于,任意内存板卡还包括:优先级仲裁器,所述优先级仲裁器根据接收到的访存请求中的访存地址确定优先级,并按照确定的优先级处理所述访存请求。
6.根据权利要求5所述的***,其特征在于,所述访存请求为:当前内存板卡所属的主机访问当前内存板卡中的非易失存储区的请求、当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求、当前内存板卡访问自身中的非易失存储区的请求和/或当前内存板卡访问其他主机中的内存板卡的请求。
7.根据权利要求5所述的***,其特征在于,所述优先级仲裁器确定所述访存请求为当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则确定优先级为最高。
8.根据权利要求5所述的***,其特征在于,所述优先级仲裁器若确定所述访存请求不是当前内存板卡所属的主机中的加速设备访问当前内存板卡中的非易失存储区的请求,则按照预设策略确定优先级。
9.根据权利要求2所述的***,其特征在于,任意内存板卡还包括:板卡计算单元,所述板卡计算单元用于进行权重数据的收集和计算。
10.根据权利要求2所述的***,其特征在于,任意内存板卡还包括:网络模块,所述网络模块用于通过目标协议与其他主机中的内存板卡进行通信。
11.根据权利要求10所述的***,其特征在于,所述网络模块通过RDMA协议将所述网络模块所属的内存板卡存储的权重数据同步至其他主机中的内存板卡;接收其他主机中的内存板卡通过RDMA协议发送的权重数据。
12.根据权利要求1至11任一项所述的***,其特征在于,所述控制主机对所述多个主机中的内存板卡进行初始化,配置各内存板卡的交互方式、内存大小和起始偏移地址,对各内存板卡统一编址得到编址表,并使各内存板卡之间有访问权。
13.根据权利要求12所述的***,其特征在于,任意主机或任意内存板卡或任意加速设备通过目标内存地址对应的基地址和偏移地址访问所述目标内存地址,所述目标内存地址为非当前内存板卡中的非易失存储区的地址。
14.根据权利要求13所述的***,其特征在于,任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址属于本地,则通过PCIE协议访问所述目标内存地址;和/或任意主机或任意内存板卡或任意加速设备根据编址表确定所述目标内存地址不属于本地,则通过RDMA协议访问所述目标内存地址。
15.根据权利要求1至11任一项所述的***,其特征在于,任意主机通过CXL协议将自身中的内存板卡中的非易失存储区的地址映射至主机内存空间,并根据映射得到的地址映射关系实现主机内存地址和板卡内存地址之间的转换。
16.根据权利要求1至11任一项所述的***,其特征在于,任意主机将接收到的子任务按照自身中的加速设备的数量切分为多个任务块,并将所述多个任务块分发至自身中的加速设备,控制自身中的加速设备并行运行所述多个任务块。
17.根据权利要求1至11任一项所述的***,其特征在于,所述控制主机计算所述多个主机中的内存板卡存储的权重数据的均值,将所述均值作为最新权重数据。
18.根据权利要求1至11任一项所述的***,其特征在于,任意加速设备包括设备调度器,所述设备调度器用于通过CXL协议实现当前加速设备的内存与当前加速设备所属的主机的内存中的数据一致性。
19.根据权利要求18所述的***,其特征在于,任意加速设备包括多个设备计算单元,所述多个设备计算单元用于执行接收到的任务块;所述任务块按照当前加速设备所属主机中的加速设备的数量对当前加速设备接收到的子任务切分得到。
20.根据权利要求19所述的***,其特征在于,任意加速设备将执行子任务得到的训练过程中的中间权重存入同一主机的内存板卡的子任务权重数据区;若所述子任务权重数据区被存满,则将所述子任务权重数据区对应的标志为由0置为1。
21.根据权利要求20所述的***,其特征在于,任意内存板卡中的板卡计算单元根据编址表读取本地或远程的子任务权重数据区中的中间权重,将相应子任务权重数据区对应的标志为由1置为0;计算所读取数据的均值,根据编址表将该均值写入本地或远程的全模型权重数据区。
22.一种数据处理方法,其特征在于,应用于分布式***,所述分布式***包括多个主机,任意主机包括:多个加速设备和至少一个内存板卡;
所述多个主机中包括控制主机,所述控制主机将同一模型训练任务划分为多个子任务,并分发所述多个子任务至所述多个主机;
所述多个主机并行利用自身中的多个加速设备执行接收到的子任务,利用自身中的内存板卡存储相应子任务对应的训练数据、中间结果和权重数据;
所述控制主机利用自身中的内存板卡收集并处理所述多个主机中的内存板卡存储的权重数据,将处理得到的最新权重数据写入所述多个主机中的内存板卡。
23.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求22所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410220698.1A CN117806833B (zh) | 2024-02-28 | 2024-02-28 | 一种数据处理***、方法及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410220698.1A CN117806833B (zh) | 2024-02-28 | 2024-02-28 | 一种数据处理***、方法及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117806833A CN117806833A (zh) | 2024-04-02 |
CN117806833B true CN117806833B (zh) | 2024-04-30 |
Family
ID=90426986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410220698.1A Active CN117806833B (zh) | 2024-02-28 | 2024-02-28 | 一种数据处理***、方法及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117806833B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113918351A (zh) * | 2021-12-08 | 2022-01-11 | 之江实验室 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
CN114528099A (zh) * | 2022-01-28 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种gpu卡分配的方法、***、设备和存储介质 |
CN114741169A (zh) * | 2022-03-30 | 2022-07-12 | 天津大学 | 负荷聚合公共服务平台异构密码计算服务多任务调度算法 |
CN114968559A (zh) * | 2022-05-06 | 2022-08-30 | 苏州国科综合数据中心有限公司 | 基于lsf的多主机多gpu分布式布置深度学习模型的方法 |
CN115146865A (zh) * | 2022-07-22 | 2022-10-04 | 中国平安财产保险股份有限公司 | 基于人工智能的任务优化方法及相关设备 |
CN115310566A (zh) * | 2022-10-12 | 2022-11-08 | 浪潮电子信息产业股份有限公司 | 分布式训练***、方法、装置、设备及可读存储介质 |
CN117407178A (zh) * | 2023-12-14 | 2024-01-16 | 成都凯迪飞研科技有限责任公司 | 一种自适应负载分配的加速子卡管理方法及*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11120368B2 (en) * | 2017-09-27 | 2021-09-14 | Oracle International Corporation | Scalable and efficient distributed auto-tuning of machine learning and deep learning models |
US20230066080A1 (en) * | 2021-09-01 | 2023-03-02 | Micron Technology, Inc. | Data sequence prediction and resource allocation |
-
2024
- 2024-02-28 CN CN202410220698.1A patent/CN117806833B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113918351A (zh) * | 2021-12-08 | 2022-01-11 | 之江实验室 | 深度学习框架与ai加速卡片内分布式训练适配方法和装置 |
CN114528099A (zh) * | 2022-01-28 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种gpu卡分配的方法、***、设备和存储介质 |
CN114741169A (zh) * | 2022-03-30 | 2022-07-12 | 天津大学 | 负荷聚合公共服务平台异构密码计算服务多任务调度算法 |
CN114968559A (zh) * | 2022-05-06 | 2022-08-30 | 苏州国科综合数据中心有限公司 | 基于lsf的多主机多gpu分布式布置深度学习模型的方法 |
CN115146865A (zh) * | 2022-07-22 | 2022-10-04 | 中国平安财产保险股份有限公司 | 基于人工智能的任务优化方法及相关设备 |
CN115310566A (zh) * | 2022-10-12 | 2022-11-08 | 浪潮电子信息产业股份有限公司 | 分布式训练***、方法、装置、设备及可读存储介质 |
CN117407178A (zh) * | 2023-12-14 | 2024-01-16 | 成都凯迪飞研科技有限责任公司 | 一种自适应负载分配的加速子卡管理方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN117806833A (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3916564B1 (en) | System with cache-coherent memory and server-linking switch | |
US11416431B2 (en) | System with cache-coherent memory and server-linking switch | |
US7979645B2 (en) | Multiprocessor system for memory mapping of processing nodes | |
US7475190B2 (en) | Direct access of cache lock set data without backing memory | |
JP2006506736A (ja) | システム管理信号を分配する方法および装置 | |
EP4235441A1 (en) | System, method and apparatus for peer-to-peer communication | |
CN106844263B (zh) | 一种基于可配置的多处理器计算机***及实现方法 | |
CN117873931B (zh) | 一种数据处理***、方法及介质 | |
US20150006825A9 (en) | Method and Apparatus for Memory Write Performance Optimization in Architectures with Out-of-Order Read/Request-for-Ownership Response | |
CN102291298B (zh) | 一种高效的面向长消息的计算机网络通信方法 | |
CN114356492A (zh) | 具有虚拟化和分层存储器的加速器的***、方法和设备 | |
CN117493237B (zh) | 计算设备、服务器、数据处理方法和存储介质 | |
CN117591450B (zh) | 一种数据处理***、方法、设备及介质 | |
CN117312229B (zh) | 一种数据传输装置、数据处理设备、***、方法及介质 | |
CN117806833B (zh) | 一种数据处理***、方法及介质 | |
CN115328832B (zh) | 一种基于pcie dma的数据调度***与方法 | |
WO2021139733A1 (zh) | 一种对内存进行分配的方法、设备及计算机可读存储介质 | |
CN110413562B (zh) | 一种具有自适应功能的同步***和方法 | |
CN116881191B (zh) | 数据处理方法、装置、设备及存储介质 | |
US11487695B1 (en) | Scalable peer to peer data routing for servers | |
US20240201990A1 (en) | Fused Data Generation and Associated Communication | |
CN116302554A (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 |