CN112948025A - 数据加载方法、装置及存储介质、计算设备、计算*** - Google Patents
数据加载方法、装置及存储介质、计算设备、计算*** Download PDFInfo
- Publication number
- CN112948025A CN112948025A CN202110523419.5A CN202110523419A CN112948025A CN 112948025 A CN112948025 A CN 112948025A CN 202110523419 A CN202110523419 A CN 202110523419A CN 112948025 A CN112948025 A CN 112948025A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- computing device
- computing
- loaded
- 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.)
- Granted
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据加载方法、装置及存储介质、计算设备、计算***,该方法包括:计算集群中的目标计算设备将从外部存储***中获取的数据存入到其内存空间中,该内存空间被设置为支持以RDMA方式访问的模式,以得到由计算集群中各计算设备中处于该模式的内存空间构成的分布式内存***。响应于目标计算设备中的目标进程触发的数据加载请求,目标计算设备将其中的目标存储空间设置为支持以RDMA方式访问的模式,根据需加载数据在分布式内存***中的存储地址将从分布式内存***中获取的需加载数据加载到目标存储空间。利用计算集群本地的内存资源构建一个基于RDMA的分布式内存***,以通过RDMA方式加载数据,提高了数据加载速度。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据加载方法、装置及存储介质、计算设备、计算***。
背景技术
为了应对海量数据的处理任务,分布式***应用而生。在由众多计算设备构成的分布式计算集群中,每个计算设备每次可以从存储有海量数据的外部存储***中读取一些数据并进行数据计算处理。
另外,随着数据集规模的增加,海量的数据可以采用Hadoop分布式文件***(Hadoop Distributed File System,简称HDFS)、对象存储(Object Storage Service,简称OSS)***等存储***进行存储。
上述计算集群中的各计算设备每次加载数据的时候,都需要通过网络端口访问远程的存储***以加载其中存储的数据。在数据加载过程中,由于网络端口的吞吐有限,会造成输入输出(IO)瓶颈,使得数据加载的延迟较大。
发明内容
本发明实施例提供一种数据加载方法、装置及存储介质、计算设备、计算***,用以提高数据加载速度。
第一方面,本发明实施例提供一种数据加载方法,应用于计算集群中的目标计算设备,所述目标计算设备是所述计算集群中任一个计算设备,所述方法包括:
将从外部存储***中获取的数据存入到所述目标计算设备的内存空间中,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;
响应于所述目标计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述目标计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;
确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
第二方面,本发明实施例提供一种数据加载装置,位于计算集群中的目标计算设备,所述目标计算设备是所述计算集群中任一个计算设备,所述装置包括:
缓存模块,用于将从外部存储***中获取的数据存入到所述目标计算设备的内存空间中,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;
配置模块,用于响应于所述目标计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述目标计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;
加载模块,用于确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
第三方面,本发明实施例提供一计算设备,所述计算设备是计算集群中任一个计算设备,所述计算设备包括:存储器、处理器;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如下步骤:
将从外部存储***中获取的数据存入到所述计算设备中的内存空间,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;
响应于所述计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;
确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使处理器至少可以实现如第一方面所述的数据加载方法。
第五方面,本发明实施例提供了一种计算***,包括:由多个计算设备构成的计算集群和外部存储***;
所述计算集群中的目标计算设备用于:将从所述外部存储***中获取的数据存入到所述目标计算设备的内存空间中,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;响应于所述目标计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述目标计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据;
其中,所述目标计算设备是所述计算集群中任一个计算设备。
在本发明实施例中,假设使用由多个计算设备构成的计算集群以分布式方式来完成某种数据计算任务(如模型训练任务)。为完成该数据计算任务,计算集群中的各计算设备需要从存储有海量数据的外部存储***中加载数据到本地,以完成数据计算任务。
为提高数据加载速度,从而提高数据计算任务的处理效率,在本发明实施例提供的解决方案中,首先,将各计算设备的内存空间(部分内存空间)设置为支持以远程直接数据存取(Remote Direct Memory Access,简称RDMA)方式访问的模式,这样由各计算设备中的处于RDMA模式下的内存空间构成了一个分布式内存***;其次,将外部存储***中存储的数据存储到该分布式内存***中;之后,当某个计算设备在执行数据计算任务的过程中需要加载数据时,将该计算设备中的一块目标存储空间设置为支持以RDMA方式访问的模式,以通过RDMA的方式将从分布式内存***中获取的需加载数据直接加载到目标存储空间中以供数据计算任务使用。
在上述方案中,充分利用计算集群中各计算设备本地的内存资源,构建一个基于RDMA的分布式内存***,并将外部存储***中的数据离线缓存到分布式内存***中,以便后续通过RDMA方式直接加载分布式内存***中的数据,相比于从远程的外部存储***加载数据的方式,可以获得更快的数据加载速度。在数据加载过程提供内存级的数据IO访问,通过RDMA方式将所需数据直接拉取到计算单元(即计算单元对应的上述目标存储空间)中,降低数据加载延迟。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种传统的数据加载场景的示意图;
图2为本发明实施例提供的一种计算***的示意图;
图3为本发明实施例提供的一种数据加载方法的流程图;
图4为本发明实施例提供的一种数据加载场景的示意图;
图5为本发明实施例提供的另一种数据加载场景的示意图;
图6为本发明实施例提供的一种数据加载装置的结构示意图;
图7为与图6所示实施例提供的数据加载装置对应的计算设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
随着深度学习的广泛应用,分布式训练方式成为了应对大规模训练数据集和神经网络模型的主要训练方法。下面结合图1示例性说明传统的一种采用分布式训练方式来训练神经网络模型的实现方式。
如图1中所示,实际应用中,会构建由多个计算设备构成的计算集群来完成神经网络模型的分布式训练。比如,在图1中,该计算集群中包括:计算设备1、计算设备2、···、计算设备N。
实际应用中,可以由计算设备中的某种计算单元来执行模型训练任务,该计算单元比如中央处理器(Central Processing Unit,简称CPU)、图形处理器(GraphicProcessing Unit,简称GPU)等等。
图1中,假设由各计算设备中的GPU来执行模型训练任务,神经网络模型被拷贝到各计算设备中的GPU上,每个GPU会启动一个进程(称为训练进程)用以训练模型。可以理解的是,每个计算设备中可以设有一个或多个GPU,其中的全部或部分GPU都可以用于执行模型训练任务。
另外,如图1所示,假设预先收集的大量的训练数据被存储在一个存储***中,称为外部存储***。其中,“外部”是相对计算集群来说的,即意味着该存储***是独立于计算集群而设置的。
假设模型训练过程中,GPU中的训练进程是对模型进行循环迭代训练的,每次迭代过程都需要从外部存储***中加载训练数据到本地,以基于获得的训练数据进行模型训练。假设每次迭代过程中,训练进程都需要从外部存储***中获取批量(batch)的训练数据。在图1中,假设不同计算设备中的GPU上的训练进程各自在一次迭代过程中从外部存储***中获取到的批量训练数据表示为:batch1、batch2、···、batch N。每个训练进程将在当前迭代过程中获得的训练数据输入到神经网络模型中,进行误差计算等处理,最终基于本次的误差计算结果更新模型参数,并将模型参数的更新结果同步到其他GPU中的神经网络模型,使得各个GPU中的神经网络模型保持参数同步。
如图1中所示,每个训练进程在每次迭代过程中都需要网络访问远程的外部存储***,从中读取批量训练数据以加载到本地。在需要使用海量训练数据对神经网络模型进行分布式训练的情形下,网络端口吞吐有限,通过网络访问远程的外部存储***会增加数据加载时间,使得数据加载延迟成为模型训练效率的瓶颈。
为了解决数据加载IO瓶颈问题,本发明实施例提出了一种高性能的数据加载方法,概括来说,该数据加载方法首先将缓存外部存储***中的海量数据(如上述训练数据)到一个基于RDMA的分布式内存***中,然后在数据加载过程提供内存级的数据IO访问,通过RDMA的方式将数据直接加载到执行数据计算任务的计算单元所对应的存储空间(比如CPU对应的内存空间或者GPU对应的显存空间)中,降低了数据的IO加载延迟,提升了大规模高并发的数据计算性能。
为实现上述数据加载方法,首先,需要对计算集群进行优化,结合图2来示例性说明。
图2为本发明实施例提供的一种计算***的示意图,如图2所示,该计算***中包括由多个计算设备构成的计算集群和外部存储***。其中,假设该计算集群中包括:计算设备1、计算设备2、···、计算设备N。
首先,对计算集群的优化体现为:将其中各计算设备的内存空间(部分内存空间)设置为支持以RDMA方式访问的模式,这样可以得到由各计算设备中处于该模式的内存空间构成的分布式内存***,之后,将外部存储***中存储的大量的数据缓存到该分布式内存***中。简单来说就是利用计算集群中各计算设备本地的内存资源,构成一个分布式内存***。这样,其中的任一计算设备在执行数据计算任务的过程中,仅需要以RDMA方式从该分布式内存***中加载数据即可。
其次,对计算集群的优化还体现为:为了支持以RDMA方式从分布式内存***中加载数据,将计算设备中用于执行数据计算任务的计算单元所使用的部分存储空间设置为支持以RDMA方式访问的模式。其中,计算单元所使用的该存储空间可以对应于离计算单元更近的存储介质。实际应用中,计算单元可以是CPU、GPU等,相应地,CPU对应的存储空间可以是内存空间,GPU对应的存储空间可以是显存空间。
实际应用中,用户针对计算集群中包含的各计算设备,可以灵活地配置设为支持以RDMA方式访问的模式的内存空间大小,不同计算设备中设置的内存空间大小可以不同,比如,某计算设备中划分出1MB的内存空间,另一计算设备中划分出5MB的内存空间。
为便于理解,在图2中,假设每个计算设备中划分出的内存空间结果如图中所示:内存空间1、内存空间2、···、内存空间N。将划出的这些内存空间设置为支持以RDMA方式访问的模式,从而由处于该模式的这些内存空间构成在计算集群本地的分布式内存***。
另外,实际应用中,为实现上述内存空间的模式设置,可以开发一个软件服务,称为数据缓存服务,以通过该数据缓存服务完成上述内存空间的模式设置过程,亦即构建分布式内存***的过程。
在一可选实施例中,如图2中所示,可以将该数据缓存服务可以部署在计算集群中的每个计算设备中,这样,每个计算设备可以基于自身运行的数据缓存服务将用户划定的部分内存空间注册为支持以RDMA方式访问的模式。另外,不同计算设备中的数据缓存服务之间通过交互以得知其他计算设备中设置为上述模式的内存空间,从而实现设为该模式的内存空间的统一地址编码,以形成分布式内存***。
在另一可选实施例中,上述数据缓存服务也可以部署在一个管理设备中,由该管理设备对计算集群中的各计算设备进行内存空间的统一管理,即管理设备通过其中运行的数据缓存服务将各计算设备中的部分内存空间设置为支持以RDMA方式访问的模式,并对所有设为该模式的内存空间进行统一的地址编码,以形成分布式内存***。此时,各计算设备可以将用户划定的内存空间的地址发送至管理设备,以由管理设备通过数据缓存服务对该内存空间进行模式设置。
实际应用中,为支持RDMA,各计算设备中会设有支持RDMA的网卡,其中运行有支持RDMA通信的网络协议,上述数据缓存服务不管是部署在各计算设备本地,还是部署在管理设备中,都可以通过调用协议提供的一个标准的接口(API)的方式完成上述内存空间的模式设置,即调用该接口,写入计算设备中划分出的内存空间的地址,将该内存空间的地址绑定为支持以RDMA方式访问,从而将划出的内存空间纳入到支持以RDMA方式访问的范畴。
在完成上述模式配置之后,可选地,用户可以通过数据缓存服务将外部存储***中存储的数据缓存到分布式内存***中。其中,假设一个计算设备中划分出1MB的内存空间设为支持以RDMA方式访问的模式,那么可以从外部存储***中随机地或以其他某种方式读取该数据量大小的数据,缓存到这1MB的内存空间内,并存储读取到的数据的标识与其在该内存空间中的存储地址之间的对应关系。
需要说明的是,如果外部存储***中存储的数据量很大,分布式内存***中的存储空间不足以一次性容纳全部的数据,那么可以分批地将外部存储***中的数据缓存到分布式内存***中。比如,在某一次将外部存储***中的5GB的数据缓存到分布式内存***中之后,在计算集群中的计算设备加载完这5GB的数据或加载完的数据量占比达到设定阈值时,再执行下一次将外部存储***中的数据缓存到分布式内存***中的操作。
以上通过数据缓存服务完成了分布式内存***的生成以及外部存储***中数据缓存到分布式内存***的处理过程。基于该处理结果,计算集群中的各计算设备在执行数据计算任务时,可以从分布式内存***中加载所需的数据,以基于加载到的数据完成数据计算任务。
可以理解的是,本文中所说的数据计算任务是一种分布式计算任务,即是需要计算集群中的各计算设备协同完成的数据计算任务,比如上文中举例的模型训练任务。
上文中提到,针对任一计算设备(称为计算设备i)来说,可以由该计算设备i中的一个或几个计算单元并行地执行该数据计算任务。由于每个计算单元的执行过程都是一样的,因此仅以一个计算单元的执行过程来说,将该计算单元称为计算单元j。计算单元j会启动一个进程(称为进程a)来执行该数据计算任务,该进程a往往会以循环迭代的方式不断执行该数据计算任务,每次执行数据计算任务时都需要加载设定数据量的数据,因此,进程a在每次需要加载数据时,会触发对应的数据加载请求,用以指示当前需要加载多少数据,或者需要加载哪些数据。
基于该数据加载请求,计算设备i需要从分布式内存***中加载对应的需加载数据到计算设备i本地。
其中,可以理解的是,由于分布式内存***是由计算集群中各计算设备的特定内存空间构成(该特定内存空间是指上文中所说的设为支持以RDMA方式访问的内存空间),计算设备i仅是计算集群中的一个计算设备,计算设备i当前需加载的数据可能分布在不同的计算设备中,因此,计算设备i从分布式内存***中将需加载数据加载到计算设备i本地,往往是计算设备i从其他计算设备的特定内存空间中加载数据的情形。
另外,计算设备i将需加载数据加载到计算设备i本地,假设将在计算设备i本地具体用于存储需加载数据的存储空间称为存储空间b,为了支持RDMA的访问方式,计算设备i需要将该存储空间b设为支持以RDMA方式访问的模式,该设置过程与上文中形成分布式内存***时的模式设置过程一样,不再赘述。之后,计算设备i在确定出需加载数据在分布式内存***中对应的存储地址后,便可以直接以RDMA方式访问分布式内存***以获取需加载数据,并直接存入到上述存储空间b内,从而,进程a可以读取存储空间b中的数据,以执行数据计算任务。
本发明实施例中,以RDMA方式加载分布式内存***中的数据,是指基于各计算设备中设置的支持RDMA的网卡,通过相应的通信网络完成数据传输的过程,具体可以参考现有相关技术实现,在此不赘述。
与在各计算设备中部署数据缓存服务类似地,在实际应用中,可选地,还可以在各计算设备中部署一种软件服务,用于实现计算设备从分布式内存***中加载数据的过程,将这种软件服务称为数据加载服务(或数据加载客户端),如图2中所示。具体地,以上述计算设备i为例,在计算设备i中部署数据加载服务后,进程a在需要加载数据时,调用该数据加载服务以通过该数据加载服务完成数据加载过程:数据加载服务首先确定存储空间b,将存储空间b设置为支持以RDMA方式访问的模式,确定需加载数据在分布式内存***中的存储地址,以将从分布式内存***中获取的需加载数据存入到上述存储空间b中,继而反馈存储空间b的地址至进程a,以使进程a从该存储空间b内读取相应数据。
其中,数据加载服务可以对外提供调用接口(API),进程a调用数据加载服务以触发数据加载请求,比如通过输入需加载的数据量和/或数据标识来触发对应的数据加载请求。数据加载服务可以根据需要加载的数据量的大小来确定存储空间b的大小,比如需要加载的数据量为1MB,那么存储空间b的大小可以是1MB。
其中,基于上文中对数据缓存服务的介绍可知,比如在每个计算设备中都部署有数据缓存服务的情形下,不同计算设备中的数据缓存服务可以通过彼此交互以得到分布式内存***对应的数据存储记录,该数据存储记录中记录有分布式内存***中存储的各数据的数据标识以及数据在分布式内存***中的存储地址之间的对应关系。基于此,计算设备i中的数据加载服务可以通过查询其中的数据缓存服务以得到当前需加载数据在分布式内存***中的存储地址。
需要说明的是,上述在一个计算设备中部署数据缓存服务和数据加载服务这两个服务,仅为一种举例,不以此为限。实际上,比如还可以仅在一个计算设备中部署一种服务,由这种服务完成上文中数据缓存服务和数据加载服务分别需要完成的相关功能;再比如,可以在独立于各计算设备的一管理设备中部署可以完成上述数据缓存服务和数据加载服务所提供的相关功能的服务。
以上对本发明实施例提供的计算***的组成架构以及其工作过程进行了说明,由此可知,通过充分利用计算集群上的各计算设备的本地内存资源,构成基于RDMA的分布式内存***,可以离线地缓存外部存储***中存储的数据到计算集群本地,为提高数据加载速度提供了前提。而且,计算设备通过RDMA方式将数据直接拉到计算单元本地,基于RDMA的数据传输方式,进一步提高了数据加载性能。
其中,上述“离线”缓存,是指相对于计算设备i中的进程a在线(实时)地加载数据来说,可以异步地预先将外部存储***中的数据存入到分布式内存***中。
下面以计算集群中任一计算设备的角度,说明每个计算设备在完成数据加载过程中需要执行的相关操作。
图3为本发明实施例提供的一种数据加载方法的流程图,如图3所示,该方法可以包括如下步骤:
301、目标计算设备将从外部存储***中获取的数据存入到目标计算设备的内存空间中,所述内存空间被设置为支持以RDMA方式访问的模式,以得到由计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***。
本实施例中,目标计算设备是计算集群中任一个计算设备。
用户可以将目标计算设备中的部分内存空间划分出来,用以配置为支持以RDMA方式访问的模式。当然,用户也可以根据实际需求将目标计算设备的全部内存空间配置为支持以RDMA方式访问的模式。
302、目标计算设备响应于其中用于执行数据计算任务的目标进程触发的数据加载请求,将目标计算设备中的目标存储空间设置为支持以RDMA方式访问的模式。
303、目标计算设备确定与数据加载请求对应的需加载数据在分布式内存***中的存储地址,根据该存储地址将从分布式内存***中获取的需加载数据加载到目标存储空间中,以使目标进程从目标存储空间中读取需加载数据。
本实施例中假设由目标计算设备中的第一计算单元来执行数据计算任务,那么可以理解的是,上述目标进程是由第一计算单元启动的进程。第一计算单元比如是:CPU、或者GPU,或者其他处理器。
前文中提到,目标计算设备中的目标进程触发的数据加载请求中可以包括需加载的数据量信息,甚至可以包括需要加载的数据标识信息。而目标进程每次加载数据时所需加载的数据量大小是可以人工配置的。
目标计算设备可以对用户提供配置接口,以供用户输入相关配置信息,比如需加载的数据量。基于上文中对计算集群的组成架构的介绍,当在目标计算设备中部署数据加载服务时,具体可以由该数据加载服务提供该配置接口。用户通过该配置接口输入配置信息,目标计算设备存储用户输入的配置信息,以便在目标进程被启动以执行数据计算任务时,根据该配置信息生成数据加载请求。
可选地,数据加载请求中除了可以包括需加载的数据量外,还可以包括需加载数据在目标计算设备中的加载位置。本实施例中,将该加载位置表示为目标计算单元对应的存储部件。
将需加载数据存入到该加载位置处,是为了方便目标计算设备中的计算单元从中读取数据并进行相关数据计算,该计算单元可以是上文中启动目标进程的第一计算单元,也可以是不同于第一计算单元的第二计算单元。也就是说,上述目标计算单元可以是第一计算单元,也可以是第二计算单元。
可选地,目标计算单元可以是用户按需手动配置的,也可以是目标计算设备自动确定出的。其中,比如目标计算设备可以根据数据计算任务的不同而确定与之对应的目标计算单元。
举例来说,假设由目标计算设备中的GPU启动目标进程,数据计算任务是模型训练任务,简言之,由GPU执行模型训练任务。但是,为了更好的完成模型训练,可能需要对加载到的训练数据进行一些预处理,比如训练数据为图像,需要对图像进行剪裁、归一化、图像增强等预处理,这些预处理可以配置为由目标计算设备中的CPU处理(假设由CPU处理比由GPU处理性能更好),那么此时,用户可以通过配置接口输入加载位置为:CPU对应的内存,或者,目标计算设备根据当前的数据计算任务——模型训练任务,自动地确定出加载位置为:CPU对应的内存。
目标计算单元对应的存储部件,往往是目标计算单元可以使用的可以获得较高数据访问效率的存储部件。可以设定不同目标计算单元对应的存储部件,比如CPU对应的存储部件为内存,GPU对应的存储部件为显存。
从而,目标计算设备中用于存储需加载数据的目标存储空间即是位于目标计算单元对应的存储部件中的存储空间。即如果目标计算单元是CPU,那么目标存储空间可以是内存中的一块存储空间,如果目标计算单元是GPU,那么目标存储空间可以是显存中的一块存储空间。
并且,该目标存储空间的大小根据目标进程当前需加载的数据量来确定。比如,如果目标进程需要加载一条数据,则目标存储空间的容量可以与一条数据的数据量匹配;如果目标进程需要加载一批(batch)数据,则目标存储空间的容量可以与一批数据的数据量匹配。再比如,如果目标进程需要循环迭代地不断加载一批批的数据,那么目标存储空间的容量也可以是N倍于一批数据量的大小,N大于或等于2。
举例来说,N=2,此时,目标进程在从分布式内存***中加载到前一批数据并开始对这批数据进行数据计算处理的同时,还可以执行加载下一批数据的操作,使得加载的数据流更为流畅。此时,可以根据加载批量数据的次数的奇偶性分别使用目标存储空间的前半部分空间或者后半部分空间来存储加载到的数据。
下面结合图4和图5分别示例性说明不同加载位置情形下的数据加载过程。
在图4中,假设由目标计算设备中的一个GPU来执行模型训练任务,其中,GPU中加载有被训练的模型,假设该GPU启动进程k来执行该模型训练任务。另外,假设目标计算设备中运行有上文提到的数据加载服务。进程k调用数据加载服务以触发包括需加载的数据量和目标计算单元对应的存储部件的数据加载请求。在图4中,假设需要加载的数据量为一个batch,一个batch的大小为预设值,比如500KB,并假设目标计算单元对应的存储部件为CPU对应的内存。基于该数据加载请求,数据加载服务先根据用户要加载的一个batch的数据量大小,将内存中一个batch数据量大小的存储空间(图4中表示为batch_mr_cpu)注册为RDMA内存空间,即设置为支持以RDMA方式访问的模式;然后从分布式内存***中获取相应的一个batch的数据(图4中表示为batch0),并将获取的数据存入到注册为RDMA内存空间的batch_mr_cpu中,将该存储空间的地址反馈给进程k,这样进程k可以从该存储空间中读取相应数据,执行模型训练任务。其中,CPU可以从batch_mr_cpu中读取数据并进行相关的数据预处理,以预处理后的数据更新存入batch_mr_cpu中的原始数据,此时,进程k读取到的数据为预处理后的数据。
在图5中,仍旧假设由目标计算设备中的一个GPU来执行模型训练任务,其中,GPU中加载有被训练的模型,假设该GPU启动进程k来执行该模型训练任务。另外,假设目标计算设备中运行有上文提到的数据加载服务。进程k调用数据加载服务以触发包括需加载的数据量和目标计算单元对应的存储部件的数据加载请求。在图5中,假设需要加载的数据量为一个batch,并假设目标计算单元对应的存储部件为GPU对应的显存。基于该数据加载请求,数据加载服务先根据用户要加载的一个batch的数据量大小,将显存中一个batch数据量大小的存储空间(图5中表示为batch_mr_gpu)注册为RDMA内存空间,即设置为支持以RDMA方式访问的模式;然后从分布式内存***中获取相应的一个batch的数据(图5中表示为batch1),并将获取的数据存入到注册为RDMA内存空间的batch_mr_gpu中,将该存储空间的地址反馈给进程k,这样进程k可以从该存储空间中读取相应数据,执行模型训练任务。
本发明实施例提供的数据加载方案可以适用于很多分布式计算场景中,不以上述举例的分布式模型训练场景为限。再比如可以适用于数据搜索场景中:在海量数据中搜索到符合要求的目标数据。
以下将详细描述本发明的一个或多个实施例的数据加载装置。本领域技术人员可以理解,这些数据加载装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图6为本发明实施例提供的一种数据加载装置的结构示意图,该数据加载装置位于计算集群中的目标计算设备,所述目标计算设备是计算集群中任一个计算设备,如图6所示,该装置包括:缓存模块11、配置模块12、加载模块13。
缓存模块11,用于将从外部存储***中获取的数据存入到所述目标计算设备的内存空间中,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***。
配置模块12,用于响应于所述目标计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述目标计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式。
加载模块13,用于确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
可选地,所述数据计算任务包括:模型训练任务,所述数据包括:模型的训练数据。
可选地,所述数据加载请求中包括需加载的数据量和目标计算单元对应的存储部件;其中,所述目标存储空间位于所述目标计算单元对应的存储部件中,所述需加载数据是与所述需加载的数据量对应的数据。
可选地,配置模块12还用于:存储用户通过配置接口输入的配置信息,以根据所述配置信息生成所述数据加载请求,所述配置信息包括所述需加载的数据量和所述目标计算单元对应的存储部件。
其中,可选地,所述目标计算单元对应的存储部件包括如下任一种:中央处理器对应的内存、图形处理器对应的显存。
可选地,加载模块13具体可以用于:获取数据存储记录,所述数据存储记录中描述了数据标识与数据在分布式内存***中的存储地址之间的对应关系;根据所述数据存储记录确定需加载数据在所述分布式内存***中的存储地址。
图6所示装置可以执行前述图1至图5所示实施例中的数据加载方案,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图6所示数据加载装置的结构可实现为一计算设备,该计算设备是是计算集群中任一个计算设备。如图7所示,该计算设备中包括:存储器21、处理器22;其中,所述存储器21上存储有可执行代码,当所述可执行代码被所述处理器22执行时,使所述处理器22执行如下步骤:
将从外部存储***中获取的数据存入到所述计算设备中的内存空间,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;
响应于所述计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;
确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
实际上,该计算设备中还可以包括通信接口23,以用于与其他设备通信。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述图1至图5所示实施例中的数据加载方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据加载方法,其特征在于,应用于计算集群中的目标计算设备,所述目标计算设备是所述计算集群中任一个计算设备,所述方法包括:
将从外部存储***中获取的数据存入到所述目标计算设备的内存空间中,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;
响应于所述目标计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述目标计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;
确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
2.根据权利要求1所述的方法,其特征在于,所述数据加载请求中包括需加载的数据量和目标计算单元对应的存储部件;
其中,所述目标存储空间位于所述目标计算单元对应的存储部件中,所述需加载数据是与所述需加载的数据量对应的数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
存储用户通过配置接口输入的配置信息,以根据所述配置信息生成所述数据加载请求,所述配置信息包括所述需加载的数据量和所述目标计算单元对应的存储部件。
4.根据权利要求2所述的方法,其特征在于,所述目标计算单元对应的存储部件包括如下任一种:中央处理器对应的内存、图形处理器对应的显存。
5.根据权利要求1所述的方法,其特征在于,所述确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,包括:
获取数据存储记录,所述数据存储记录中描述了数据标识与数据在分布式内存***中的存储地址之间的对应关系;
根据所述数据存储记录确定需加载数据在所述分布式内存***中的存储地址。
6.根据权利要求1所述的方法,其特征在于,所述数据计算任务包括:模型训练任务,所述数据包括:模型的训练数据。
7.一种数据加载装置,其特征在于,位于计算集群中的目标计算设备,所述目标计算设备是所述计算集群中任一个计算设备,所述装置包括:
缓存模块,用于将从外部存储***中获取的数据存入到所述目标计算设备的内存空间中,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;
配置模块,用于响应于所述目标计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述目标计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;
加载模块,用于确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
8.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至6中任一项所述的数据加载方法。
9.一种计算设备,其特征在于,所述计算设备是计算集群中任一个计算设备,所述计算设备包括:存储器、处理器;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如下步骤:
将从外部存储***中获取的数据存入到所述计算设备中的内存空间,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;
响应于所述计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;
确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据。
10.一种计算***,其特征在于,包括:
由多个计算设备构成的计算集群和外部存储***;
所述计算集群中的目标计算设备用于:将从所述外部存储***中获取的数据存入到所述目标计算设备的内存空间中,所述内存空间被设置为支持以远程直接数据存取方式访问的模式,以得到由所述计算集群中各计算设备中处于所述模式的内存空间构成的分布式内存***;响应于所述目标计算设备中用于执行数据计算任务的目标进程触发的数据加载请求,将所述目标计算设备中的目标存储空间设置为支持以远程直接数据存取方式访问的模式;确定与所述数据加载请求对应的需加载数据在所述分布式内存***中的存储地址,根据所述存储地址从所述分布式内存***中加载所述需加载数据到所述目标存储空间中,以使所述目标进程从所述目标存储空间中读取所述需加载数据;
其中,所述目标计算设备是所述计算集群中任一个计算设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110523419.5A CN112948025B (zh) | 2021-05-13 | 2021-05-13 | 数据加载方法、装置及存储介质、计算设备、计算*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110523419.5A CN112948025B (zh) | 2021-05-13 | 2021-05-13 | 数据加载方法、装置及存储介质、计算设备、计算*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948025A true CN112948025A (zh) | 2021-06-11 |
CN112948025B CN112948025B (zh) | 2021-09-14 |
Family
ID=76233842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110523419.5A Active CN112948025B (zh) | 2021-05-13 | 2021-05-13 | 数据加载方法、装置及存储介质、计算设备、计算*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948025B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信***及方法 |
WO2023165484A1 (zh) * | 2022-03-04 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 一种分布式任务的处理方法、分布式***及第一设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130185381A1 (en) * | 2012-01-17 | 2013-07-18 | International Business Machines Corporation | Configuring Compute Nodes In A Parallel Computer Using Remote Direct Memory Access ('RDMA') |
CN108268208A (zh) * | 2016-12-30 | 2018-07-10 | 清华大学 | 一种基于rdma的分布式内存文件*** |
CN108351860A (zh) * | 2015-11-20 | 2018-07-31 | 微软技术许可有限责任公司 | 低延迟的基于rdma的分布式存储装置 |
CN109947787A (zh) * | 2017-10-30 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 一种数据分层存储、分层查询方法及装置 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理*** |
CN111752975A (zh) * | 2020-05-28 | 2020-10-09 | 中国平安财产保险股份有限公司 | 基于Redis的数据加载方法、装置、计算机设备和存储介质 |
US20210026801A1 (en) * | 2012-06-08 | 2021-01-28 | Google Llc | Single-Sided Distributed Storage System |
-
2021
- 2021-05-13 CN CN202110523419.5A patent/CN112948025B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130185381A1 (en) * | 2012-01-17 | 2013-07-18 | International Business Machines Corporation | Configuring Compute Nodes In A Parallel Computer Using Remote Direct Memory Access ('RDMA') |
US20210026801A1 (en) * | 2012-06-08 | 2021-01-28 | Google Llc | Single-Sided Distributed Storage System |
CN108351860A (zh) * | 2015-11-20 | 2018-07-31 | 微软技术许可有限责任公司 | 低延迟的基于rdma的分布式存储装置 |
CN108268208A (zh) * | 2016-12-30 | 2018-07-10 | 清华大学 | 一种基于rdma的分布式内存文件*** |
CN109947787A (zh) * | 2017-10-30 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 一种数据分层存储、分层查询方法及装置 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理*** |
CN111752975A (zh) * | 2020-05-28 | 2020-10-09 | 中国平安财产保险股份有限公司 | 基于Redis的数据加载方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
徐越: "面向高性能计算的分布式内存文件缓存***", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023165484A1 (zh) * | 2022-03-04 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 一种分布式任务的处理方法、分布式***及第一设备 |
CN116361037A (zh) * | 2023-05-18 | 2023-06-30 | 之江实验室 | 一种分布式通信***及方法 |
CN116361037B (zh) * | 2023-05-18 | 2023-08-18 | 之江实验室 | 一种分布式通信***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112948025B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11422853B2 (en) | Dynamic tree determination for data processing | |
US10545842B2 (en) | Automated local database connection affinity and failover | |
US10824474B1 (en) | Dynamically allocating resources for interdependent portions of distributed data processing programs | |
CN110321448B (zh) | 一种图像检索方法、装置和存储介质 | |
CN112948025B (zh) | 数据加载方法、装置及存储介质、计算设备、计算*** | |
CN108900626B (zh) | 一种云环境下数据存储方法、装置及*** | |
CN107153643B (zh) | 数据表连接方法及装置 | |
CN113010818A (zh) | 访问限流方法、装置、电子设备及存储介质 | |
US20150112934A1 (en) | Parallel scanners for log based replication | |
CN111078516A (zh) | 分布式性能测试方法、装置、电子设备 | |
CN111488323A (zh) | 一种数据处理方法、装置及电子设备 | |
CN115686836A (zh) | 一种安装有加速器的卸载卡 | |
CN112000734A (zh) | 一种大数据处理方法和装置 | |
CN108363787A (zh) | 一种ifc文件并行存储方法、装置及*** | |
US20190243807A1 (en) | Replication of data in a distributed file system using an arbiter | |
US10127270B1 (en) | Transaction processing using a key-value store | |
CN113127430A (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
CN115714706A (zh) | 基于内嵌h5的访问加速***、方法、存储介质及电子设备 | |
CN113741945B (zh) | 基于云应用的应用磁盘热更新方法、装置、介质及设备 | |
CN113672591A (zh) | 数据迁移方法、***、存储介质及电子设备 | |
CN113805854A (zh) | 基于Linux***的应用层Hook实现方法、***、装置及存储介质 | |
CN106878414B (zh) | 数据写请求处理方法、装置及分布式数据存储*** | |
CN111176787B (zh) | 数据分析方法和装置 | |
US20210248162A1 (en) | Parallel data transfer from one database to another database | |
US20230334066A1 (en) | Data movement from data storage clusters |
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 |