CN111582398A - 数据聚类方法、装置、系统、服务器以及存储介质 - Google Patents
数据聚类方法、装置、系统、服务器以及存储介质 Download PDFInfo
- Publication number
- CN111582398A CN111582398A CN202010409247.4A CN202010409247A CN111582398A CN 111582398 A CN111582398 A CN 111582398A CN 202010409247 A CN202010409247 A CN 202010409247A CN 111582398 A CN111582398 A CN 111582398A
- Authority
- CN
- China
- Prior art keywords
- data
- server
- data set
- servers
- target
- 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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (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)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种数据聚类方法、装置、系统、服务器以及存储介质,属于数据处理技术领域,该方法包括:确定目标数据集的资源需求,响应于资源需求,确定多台服务器以及多台服务器上的GPU资源,通过多台服务器上的GPU资源,分别基于目标数据集中各个子数据集进行数据聚类,得到目标数据集的数据聚类结果。本公开实施例中,控制服务器根据目标数据集的资源需求,通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据进行数据聚类,进而获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据聚类方法、装置、系统、服务器以及存储介质。
背景技术
计算机技术和移动互联网的飞速发展,推动了大数据时代的到来,现代社会产生的大规模数据,对已有的数据处理方式产生了巨大的压力,大规模数据的管理利用已经成为一种必然趋势。数据聚类作为最常用的数据处理方法,在大规模数据中的应用也变得非常普遍。
目前,数据聚类方法通常为:获取待进行聚类的多个数据,预估该多个数据的资源需求以及服务器上的剩余GPU(Graphics Processing Unit,图形处理器)资源,从剩余GPU资源中为该多个数据分配满足资源需求的GPU资源,再应用分配的GPU资源对该多个数据进行聚类。
上述技术中,在对普通的大规模数据聚类时,可以为其分配满足资源需求的GPU资源,但是,当遇到要对百亿级超大规模数据进行聚类时,由于单台服务器上的GPU资源是有限的,会导致服务器的内存无法一次性加载待进行聚类的数据,无法实现对超大规模数据的聚类。
发明内容
本公开提供一种数据聚类方法、装置、系统、服务器以及存储介质,可以避免服务器无法加载待聚类的数据,能够实现对超大规模数据的聚类。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据聚类方法,应用于控制服务器,该方法包括:
确定目标数据集的资源需求,所述资源需求包括服务器数量以及GPU资源数量;
响应于所述资源需求,确定多台服务器以及所述多台服务器上的多个GPU资源,所述多台服务器的数量符合所述服务器数量,所述多个GPU资源的数量符合所述GPU资源数量;
通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果。
在一种可能的实现方式中,所述通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果,包括:
通过所述多台服务器上的多个GPU资源,分别计算所述目标数据集中各个子数据集和当前迭代过程中各个数据类别的代表数据之间的距离;
若所述迭代过程不满足目标条件,则基于所述迭代过程的计算结果,更新所述迭代过程的各个数据类别的代表数据,继续执行下一次迭代过程,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
若所述迭代过程满足所述目标条件,则基于所述迭代过程的各个数据类别和所述计算结果,获取所述目标数据集的数据聚类结果。
在一种可能的实现方式中,所述通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类之前,所述方法还包括:
获取目标镜像文件,所述目标镜像文件用于进行数据聚类;
在所述多台服务器上安装所述目标镜像文件,生成目标运行环境,所述目标运行环境用于对所述目标数据集进行数据聚类。
在一种可能的实现方式中,所述通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果之后,所述方法还包括:
响应于所述多台服务器中任一台服务器返回的聚类完成消息,释放所述多台服务器以及所述多台服务器上的多个GPU资源。
根据本公开实施例的第二方面,提供一种数据聚类方法,应用于第一服务器,该方法包括:
在任一次迭代过程中,确定目标数据集的多个数据类别的代表数据,所述目标数据集存储于分布式文件系统中,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
控制多台第二服务器分别应用所述第二服务器上的GPU资源对所述目标数据集中对应的子数据集和所述多个数据类别的代表数据之间的距离进行计算;
基于所述迭代过程中所述多台第二服务器的计算结果,更新所述多个数据类别的代表数据;
若所述迭代过程满足目标条件,则基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果。
在一种可能的实现方式中,所述控制多台第二服务器分别应用所述第二服务器上的GPU资源对所述目标数据集中对应的子数据集和所述多个数据类别的代表数据之间的距离进行计算之前,所述方法还包括:
通过所述多台第二服务器上的GPU资源所绑定的通信端口,分别向所述多台第二服务器上的GPU资源发送计算请求。
在一种可能的实现方式中,所述基于所述迭代过程中所述多台第二服务器的计算结果,更新所述多个数据类别的代表数据,包括:
对于所述目标数据集中的每个数据,基于所述多台第二服务器的计算结果,确定与所述数据距离最近的代表数据,将所述数据分配至所述代表数据对应的数据类别中;
确定所述数据类别中的数据的均值,作为更新后的代表数据,得到更新后的所述多个数据类别的代表数据。
在一种可能的实现方式中,所述基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果,包括:
基于所述更新后的所述多个数据类别的代表数据,生成目标格式的第一数据文件,将所述第一数据文件发送给分布式文件系统,所述目标格式支持文本和内存映射文件中至少一项;
或,
基于所述更新后的所述多个数据类别的代表数据,按照所述目标数据集中的数据顺序,生成第二数据文件,所述第二数据文件中的字符用于表示对应数据顺序的数据的数据类别,将所述第二数据文件发送给所述分布式文件系统。
在一种可能的实现方式中,所述基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果之后,所述方法还包括:
向控制服务器发送聚类完成消息,所述聚类完成消息用于指示所述控制服务器释放所述目标数据集所占用的服务器和GPU资源。
根据本公开实施例的第三方面,提供一种数据聚类方法,应用于第二服务器,该方法包括:
第二服务器基于目标数据集、GPU资源数量和所述第二服务器上的GPU资源,确定所述第二服务器对应的子数据集,所述目标数据集存储于分布式文件系统中;
所述第二服务器从所述分布式文件系统中获取所述子数据集;
在任一次迭代过程中,所述第二服务器应用所述第二服务器上的GPU资源对所述子数据集和所述目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
将所述迭代过程的计算结果发送至第一服务器。
在一种可能的实现方式中,所述第二服务器基于目标数据集和GPU资源数量,确定所述第二服务器对应的子数据集,包括:
所述第二服务器基于所述目标数据集的数据总量与所述GPU资源数量,将所述目标数据集划分为所述GPU资源数量的子数据集;
在所述GPU资源数量的子数据集中,基于所述第二服务器上的GPU资源的数目,确定所述第二服务器对应的子数据集。
在一种可能的实现方式中,所述第二服务器从所述分布式文件系统中获取所述子数据集之后,所述方法还包括:
在所述第二服务器中存储所述子数据集,构建所述子数据集的索引文件;
基于所述第二服务器上的GPU资源的索引序号,将所述子数据集的索引文件与所述GPU资源进行索引关联;
在任一次迭代过程中,所述第二服务器上的GPU资源基于所述索引文件,读取所述索引文件对应的子数据集。
根据本公开实施例的第四方面,提供一种数据聚类装置,该装置包括:
确定单元,被配置为执行确定目标数据集的资源需求,所述资源需求包括服务器数量以及GPU资源数量;
响应单元,被配置为执行响应于所述资源需求,确定多台服务器以及所述多台服务器上的多个GPU资源,所述多台服务器的数量符合所述服务器数量,所述多个GPU资源的数量符合所述GPU资源数量;
计算单元,被配置为执行通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果。
在一种可能的实现方式中,所述计算单元,被配置为执行:
通过所述多台服务器上的多个GPU资源,分别计算所述目标数据集中各个子数据集和当前迭代过程中各个数据类别的代表数据之间的距离,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
若所述迭代过程不满足目标条件,则基于所述迭代过程的计算结果,更新所述迭代过程的各个数据类别的代表数据,继续执行下一次迭代过程;
若所述迭代过程满足所述目标条件,则基于所述迭代过程的各个数据类别和所述计算结果,获取所述目标数据集的数据聚类结果。
在一种可能的实现方式中,所述装置还包括:
获取单元,被配置为执行获取目标镜像文件,所述目标镜像文件用于进行数据聚类;
生成单元,被配置为执行在所述多台服务器上安装所述目标镜像文件,生成目标运行环境,所述目标运行环境用于对所述目标数据集进行数据聚类。
在一种可能的实现方式中,所述装置还包括:
释放单元,被配置为执行响应于所述多台服务器中任一台服务器返回的聚类完成消息,释放所述多台服务器以及所述多台服务器上的多个GPU资源。
根据本公开实施例的第五方面,提供一种数据聚类装置,该装置包括:
确定单元,被配置为执行在任一次迭代过程中,确定目标数据集的多个数据类别的代表数据,所述目标数据集存储于分布式文件系统中,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
控制单元,被配置为执行控制多台第二服务器分别应用所述第二服务器上的GPU资源对所述目标数据集中对应的子数据集和所述多个数据类别的代表数据之间的距离进行计算;
更新单元,被配置为执行基于所述迭代过程中所述多台第二服务器的计算结果,更新所述多个数据类别的代表数据;
输出单元,被配置为执行若所述迭代过程满足目标条件,则基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果。
在一种可能的实现方式中,所述装置还包括:
发送单元,被配置为执行通过所述多台第二服务器上的GPU资源所绑定的通信端口,分别向所述多台第二服务器上的GPU资源发送计算请求。
在一种可能的实现方式中,所述更新单元,被配置为执行:
对于所述目标数据集中的每个数据,基于所述多台第二服务器的计算结果,确定与所述数据距离最近的代表数据,将所述数据分配至所述代表数据对应的数据类别中;
确定所述数据类别中的数据的均值,作为更新后的代表数据,得到更新后的所述多个数据类别的代表数据。
在一种可能的实现方式中,所述输出单元,被配置为执行:
基于所述更新后的所述多个数据类别的代表数据,生成目标格式的第一数据文件,将所述第一数据文件发送给分布式文件系统,所述目标格式支持文本和内存映射文件中至少一项;
或,
基于所述更新后的所述多个数据类别的代表数据,按照所述目标数据集中的数据顺序,生成第二数据文件,所述第二数据文件中的字符用于表示对应数据顺序的数据的数据类别,将所述第二数据文件发送给所述分布式文件系统。
在一种可能的实现方式中,所述装置还包括:
发送单元,被配置为执行向控制服务器发送聚类完成消息,所述聚类完成消息用于指示所述控制服务器释放所述目标数据集所占用的服务器和GPU资源。
根据本公开实施例的第六方面,提供一种数据聚类装置,该装置包括:
确定单元,被配置为执行第二服务器基于目标数据集、GPU资源数量和所述第二服务器上的GPU资源,确定所述第二服务器对应的子数据集,所述目标数据集存储于分布式文件系统中;
获取单元,被配置为执行所述第二服务器从所述分布式文件系统中获取所述子数据集;
计算单元,被配置为执行在任一次迭代过程中,所述第二服务器应用所述第二服务器上的GPU资源对所述子数据集和所述目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
发送单元,被配置为执行将所述迭代过程的计算结果发送至第一服务器。
在一种可能的实现方式中,所述确定单元,被配置为执行:
所述第二服务器基于所述目标数据集的数据总量与所述GPU资源数量,将所述目标数据集划分为所述GPU资源数量的子数据集;
在所述GPU资源数量的子数据集中,基于所述第二服务器上的GPU资源的数目,确定所述第二服务器对应的子数据集。
在一种可能的实现方式中,所述装置还包括:
构建单元,被配置为执行在所述第二服务器中存储所述子数据集,构建所述子数据集的索引文件;
索引单元,被配置为执行基于所述第二服务器上的GPU资源的索引序号,将所述子数据集的索引文件与所述GPU资源进行索引关联;
读取单元,被配置为执行在任一次迭代过程中,所述第二服务器上的GPU资源基于所述索引文件,读取所述索引文件对应的子数据集。
根据本公开实施例的第七方面,提供一种数据聚类系统,该系统包括控制服务器、至少一台第一服务器与多台第二服务器,其中,
所述控制服务器,用于确定目标数据集的资源需求,所述资源需求包括服务器数量以及GPU资源数量,响应于所述资源需求,确定多台服务器以及所述多台服务器上的多个GPU资源,所述多台服务器的数量符合所述服务器数量,所述多个GPU资源的数量符合所述GPU资源数量,通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果;
所述至少一台第一服务器,用于在任一次迭代过程中,确定所述目标数据集的多个数据类别的代表数据,所述目标数据集存储于分布式文件系统中,控制所述多台第二服务器分别应用所述第二服务器上的GPU资源对所述目标数据集中对应的子数据集和所述多个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心,基于所述迭代过程中所述多台第二服务器的计算结果,更新所述多个数据类别的代表数据,若所述迭代过程满足目标条件,则基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果;
对于所述多台第二服务器中的每台第二服务器,用于基于所述目标数据集、所述GPU资源数量和所述第二服务器上的GPU资源,确定所述第二服务器对应的子数据集,所述第二服务器从所述分布式文件系统中获取所述子数据集,在任一次迭代过程中,所述第二服务器应用所述第二服务器上的GPU资源对所述子数据集和所述目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,将所述迭代过程的计算结果发送至所述至少一台第一服务器。
根据本公开实施例的第八方面,提供一种数据聚类方法,该方法包括:
控制服务器确定目标数据集的资源需求,所述资源需求包括服务器数量以及GPU资源数量,所述控制服务器响应于所述资源需求,确定多台服务器以及所述多台服务器上的多个GPU资源,所述多台服务器的数量符合所述服务器数量,所述多个GPU资源的数量符合所述GPU资源数量;
所述多台服务器中的第一服务器在任一次迭代过程中,确定所述目标数据集的多个数据类别的代表数据,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心,所述目标数据集存储于分布式文件系统中,所述第一服务器控制多台第二服务器分别应用所述第二服务器上的GPU资源对所述目标数据集中对应的子数据集和所述多个数据类别的代表数据之间的距离进行计算;
对于所述多台服务器中的每台第二服务器,所述第二服务器基于所述目标数据集、所述GPU资源数量和所述第二服务器上的GPU资源,确定所述第二服务器对应的子数据集,所述第二服务器从所述分布式文件系统中获取所述子数据集,在任一次迭代过程中,所述第二服务器应用所述第二服务器上的GPU资源对所述子数据集和所述目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,所述第二服务器将所述迭代过程的计算结果发送至所述第一服务器;
所述第一服务器基于所述迭代过程中所述多台第二服务器的计算结果,更新所述多个数据类别的代表数据,若所述迭代过程满足目标条件,则所述第一服务器基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果;
所述控制服务器基于所述第一服务器,得到所述目标数据集的数据聚类结果。
根据本公开实施例的第九方面,提供一种服务器,该服务器包括:
一个或多个处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述的数据聚类方法。
根据本公开实施例的第十方面,提供一种存储介质,该存储介质包括:当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述的数据聚类方法。
根据本公开实施例的第十一方面,提供一种计算机程序产品,该计算机程序产品存储有一条或多条指令,该一条或多条指令可以由服务器的处理器执行,以完成上述数据聚类方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开实施例提供的技术方案,控制服务器根据目标数据集的资源需求,通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据进行数据聚类,进而获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据聚类方法的实施环境示意图;
图2是根据一示例性实施例示出的一种数据聚类方法的流程图;
图3是根据一示例性实施例示出的一种数据聚类方法的流程图;
图4是根据一示例性实施例示出的一种数据聚类方法的流程图;
图5是根据一示例性实施例示出的一种数据聚类方法的流程图;
图6是根据一示例性实施例示出的一种数据聚类装置的框图;
图7是根据一示例性实施例示出的一种数据聚类装置的框图;
图8是根据一示例性实施例示出的一种数据聚类装置的框图;
图9是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是本公开实施例提供的一种数据聚类方法的实施环境示意图,参见图1,该实施环境中包括数据聚类系统,该数据聚类系统包括控制服务器101、至少一台第一服务器102、多台第二服务器103。
该至少一台第一服务器102与该多台第二服务器103上均可以提供GPU资源,例如,安装有GPU卡等,该控制服务器101、该至少一台第一服务器102与该多台第二服务器103之间可以相互通信。
需要说明的是,数据聚类是衡量不同数据之间的相似性,以把数据分类到不同的数据类别中的方法,同一个数据类别中的数据具有很大的相似性,该数据聚类是搜索数据类别的无监督学习过程,不依赖于预先定义的类标记,需要由聚类算法来确定类标记的过程。
该控制服务器101可以对应运行有资源管理系统,该资源管理系统用于管理服务器资源及每台服务器上的GPU资源,该控制服务器,用于确定目标数据集的资源需求,该资源需求包括服务器数量以及GPU资源数量,响应于该资源需求,确定多台服务器以及该多台服务器上的多个GPU资源,通过该多台服务器上的多个GPU资源,分别基于目标数据集中各个子数据集进行数据聚类,得到该目标数据集的数据聚类结果。第一服务器102为该多台服务器中的任一服务器,该至少一台第一服务器102用于控制目标数据集的数据聚类的迭代过程、汇总过程及输出过程,该至少一台第一服务器,用于在任一次迭代过程中,确定该目标数据集的多个数据类别的代表数据,控制该多台第二服务器分别应用该第二服务器上的GPU资源对该目标数据集中对应的子数据集和该多个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在该迭代过程中的簇心,基于该迭代过程中该多台第二服务器的计算结果,更新该多个数据类别的代表数据,若该迭代过程满足目标条件,则基于更新后的该多个数据类别的代表数据,向该分布式文件系统输出该目标数据集的数据聚类结果。多台第二服务器103可以为该多台服务器中的全部服务器,也可以为除该至少一台第一服务器102以外的多台服务器,该多台第二服务器中的每台第二服务器,用于基于该目标数据集、该GPU资源数量和该第二服务器上的GPU资源,确定该第二服务器对应的子数据集,该第二服务器从该分布式文件系统中获取该子数据集,在任一次迭代过程中,该第二服务器应用该第二服务器上的GPU资源对该子数据集和该目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,将该迭代过程的计算结果发送至该至少一台第一服务器。
该数据聚类系统还可以包括分布式文件系统104,该分布式文件系统104用于存储数据集,本公开实施例中以目标数据集来表示待进行数据聚类的数据集,该目标数据集可以存储于分布式文件系统中。其中,该数据集的存储方式可以为二进制文件,该数据集的存储精度支持int8、fp16、float32及float64等多种精度。分布式文件系统104是指将文件系统中存储的二进制文件通过网络与各台服务器相连,将该二进制文件分布存储在多台服务器的文件系统上。采用分布式文件系统104,在处理超大规模的数据时,可以实现分布式存储该数据,能够突破二进制文件的存储限制,提高了二进制文件的存储上限。
在实施本公开实施例提供的数据聚类方法的过程中,控制服务器101可以确定目标数据集的资源需求,进而确定多台服务器以及该多台服务器上的多个GPU资源,控制服务器101控制该多台服务器中的至少一台第一服务器在任一次迭代过程中,确定目标数据集的多个数据类别的代表数据,该至少一台第一服务器控制该多台服务器中的多台第二服务器分别应用第二服务器上的GPU资源对目标数据集中对应的子数据集和多个数据类别的代表数据之间的距离进行计算,对于多台第二服务器103中的每台第二服务器,该第二服务器分别基于目标数据集、GPU资源数量和第二服务器上的GPU资源,确定该第二服务器对应的子数据集,进而访问该分布式文件系统104,获取到第二服务器103对应的子数据集,在当前迭代过程中,该多台第二服务器103分别应用第二服务器上的GPU资源对该子数据集和目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,并向该第一服务器102返回计算结果,该第一服务器102接收到计算结果后,更新多个数据类别的代表数据,若该迭代过程满足目标条件,则该第一服务器基于更新后的多个数据类别的代表数据,向该分布式文件系统104输出目标数据集的数据聚类结果,则控制服务器基于该第一服务器,可以得到目标数据集的数据聚类结果。上述第一服务器102和任一台第二服务器103可以是运行于同一个硬件设备上,也可以是分别运行于不同硬件设备上,当然,上述服务器还可以包括其他功能服务器,以便提供更全面且多样化的服务。
本公开所涉及的数据可以为经用户授权或者经过各方充分授权的数据。
图2是根据一示例性实施例示出的一种数据聚类方法的流程图,如图2所示,该方法用于控制服务器中,包括以下步骤:
在步骤201中,控制服务器确定目标数据集的资源需求,该资源需求包括服务器数量以及GPU资源数量。
在步骤202中,控制服务器响应于该资源需求,确定多台服务器以及该多台服务器上的多个GPU资源,该多台服务器的数量符合该服务器数量,该多个GPU资源的数量符合该GPU资源数量。
在步骤203中,控制服务器通过该多台服务器上的多个GPU资源,分别基于该目标数据集中各个子数据集进行数据聚类,得到该目标数据集的数据聚类结果。
本公开实施例提供的技术方案,控制服务器根据目标数据集的资源需求,通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据进行数据聚类,进而获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
图3是根据一示例性实施例示出的一种数据聚类方法的流程图,如图3所示,该方法用于第一服务器中,包括以下步骤:
在步骤301中,第一服务器在任一次迭代过程中,确定目标数据集的多个数据类别的代表数据,该目标数据集存储于分布式文件系统中,一个代表数据用于表示一个数据类别在该迭代过程中的簇心。
在步骤302中,第一服务器控制多台第二服务器分别应用该第二服务器上的GPU资源对该目标数据集中对应的子数据集和该多个数据类别的代表数据之间的距离进行计算。
在步骤303中,第一服务器基于该迭代过程中该多台第二服务器的计算结果,更新该多个数据类别的代表数据。
在步骤304中,若该迭代过程满足目标条件,则第一服务器基于更新后的该多个数据类别的代表数据,向该分布式文件系统输出该目标数据集的数据聚类结果。
本公开实施例提供的技术方案,通过第一服务器控制目标数据集的数据聚类的迭代过程,进而通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据执行距离计算以及基于计算结果来对聚类中心进行迭代更新,进而通过不断迭代来获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
图4是根据一示例性实施例示出的一种数据聚类方法的流程图,如图4所示,该方法用于第二服务器中,包括以下步骤:
在步骤401中,第二服务器基于目标数据集、GPU资源数量和该第二服务器上的GPU资源,确定该第二服务器对应的子数据集,该目标数据集存储于分布式文件系统中。
在步骤402中,该第二服务器从该分布式文件系统中获取该子数据集。
在步骤403中,在任一次迭代过程中,该第二服务器应用该第二服务器上的GPU资源对该子数据集和该目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在该迭代过程中的簇心。
在步骤404中,第二服务器将该迭代过程的计算结果发送至第一服务器。
本公开实施例提供的技术方案,通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据执行距离计算以及基于计算结果来对聚类中心进行迭代更新,进而通过不断迭代来获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
上述图2至图4所示仅为本公开的基本流程,下面基于一种具体实施方式,来对本公开提供的方案进行进一步阐述,图5是根据一示例性实施例示出的一种数据聚类方法的流程图,参见图5,该方法包括:
在步骤501中,控制服务器确定目标数据集的资源需求,该资源需求包括服务器数量以及GPU资源数量,该目标数据集存储于分布式文件系统中。
其中,目标数据集用于表示待进行数据聚类的数据集,数据集是多个数据的集合,该数据集的表现形式可以为数据表。服务器数量是指为对目标数据集进行数据聚类所需服务器的数量,GPU资源数量是指并行运行的GPU资源数量,也即是,为对目标数据集进行数据聚类所需GPU资源的数量,该GPU资源数量可以是指GPU卡的数量。
在一种可能的实施方式中,当技术人员想要对目标数据集进行数据聚类时,需要先确定该目标数据集的资源需求,以为目标数据集确定用于数据聚类的服务器集群。可选地,该资源需求可以根据系统默认的服务器数量以及GPU数量来确定,或者,该资源需求可以根据用户选择的服务器数量以及GPU数量来确定。例如,技术人员可以根据目标数据集的数据规模,在控制服务器所运行的资源管理系统中,选择所需服务器以及GPU数量,进而控制服务器根据该服务器数量以及GPU数量,可以确定出目标数据集的资源需求,再进行后续构建服务器集群的步骤。
可选地,技术人员还可以设置服务器的数量和单台服务器上的GPU资源数量,根据该服务器数量以及单台服务器上的GPU资源数量,来确定出目标数据集的资源需求。或者,技术人员还可以设置num-worker(工作节点数量)、单个工作节点中的服务器数量以及num-GPU(单台服务器上的GPU资源数量),根据该工作节点数量、单个工作节点中的服务器数量及单台服务器上的GPU资源数量,也可以确定出目标数据集的资源需求。其中,该工作节点可以对应至少一台服务器,单台服务器上的GPU资源数量可以相同,也可以不同。本公开实施例对资源需求的确定方式不作限定。
在步骤502中,控制服务器响应于资源需求,确定多台服务器以及多台服务器上的多个GPU资源,该多台服务器的数量符合该服务器数量,该多个GPU资源的数量符合该GPU资源数量。
在一种可能的实施方式中,当控制服务器接收到资源需求后,响应于该资源需求,根据该资源需求中的服务器数量与GPU资源数量,从目标服务器集群中确定服务器数量的多台服务器,以及多台服务器上GPU资源数量的GPU资源。
在一种可能的实施方式中,控制服务器在确定目标数据集的服务器和GPU资源之前,还需要对剩余服务器资源、剩余GPU资源及该资源需求进行判断,可选地,控制服务器响应于该资源需求,查询目标服务器集群中的剩余服务器资源和剩余GPU资源,判断该剩余服务器资源和剩余GPU资源是否满足该资源需求,若该剩余服务器资源和剩余GPU资源满足该资源需求,确定多台服务器,以及多台服务器上的多个GPU资源。若该剩余服务器资源和剩余GPU资源不满足该资源需求,则该资源需求处于等待或排队状态,在剩余服务器资源和剩余GPU资源满足该资源需求时,再进行后续调取的操作。
可选地,控制服务器可以根据目标服务器集群中的剩余服务器资源和剩余GPU资源的数量进行判断,先判断该剩余服务器资源的数量是否满足服务器数量,若是,则判断剩余GPU资源的数量是否满足GPU资源数量,若是,则为目标数据集确定服务器数量的多台服务器,以及多台服务器上GPU资源数量的GPU资源。若该剩余服务器资源的数量不满足服务器数量,也可以继续判断剩余GPU资源的数量是否满足GPU资源数量,若该剩余GPU资源的数量满足GPU资源数量,则可以按照该剩余GPU资源所在的服务器,为目标数据集分配服务器。上述过程仅是一种确定资源的方式,本公开实施例对此不作限定。
在步骤503中,控制服务器在该多台服务器上安装目标镜像文件,生成目标运行环境,该目标运行环境用于对目标数据集进行数据聚类。
其中,目标镜像文件(Docker)用于进行数据聚类,可以为一段聚类运行代码,该目标镜像文件可以为技术人员提前打包好的聚类运行代码。
在一种可能的实施方式中,控制服务器为目标数据集调取多台服务器以及多台服务器上的多个GPU资源后,需要为该多台服务器部署用于进行数据聚类的运行环境。可选地,技术人员可以将提前打包好的目标镜像文件输入控制服务器,则控制服务器可以获取到该目标镜像文件,进而在服务器集群的多台服务器上安装目标镜像文件,生成目标运行环境。
上述步骤501至503中,根据待进行数据聚类的目标数据集的数据规模,来设置该目标数据集的资源需求,能够很方便的确定出该服务器集群中的服务器数量以及每台服务器上的GPU资源数量,进而构建出该目标数据集的服务器集群,再进行后续数据聚类的过程,实现了动态构建服务器集群,由于服务器集群的内存能够加载超大规模数据,因此本公开实施例能够实现对超大规模数据的数据聚类。
在步骤504中,控制服务器向该多台服务器发送聚类指令,该聚类指令用于指示该多台服务器启动对目标数据集的数据聚类。
在一种可能的实施方式中,在服务器集群的多台服务器上安装目标镜像文件后,控制服务器可以向该服务器集群的多台服务器发送聚类指令,指示该多台服务器启动对目标数据集的数据聚类。
在步骤505中,多台服务器接收到该聚类指令后,基于目标数据集、GPU资源数量和服务器上的GPU资源,分别确定该服务器对应的子数据集,从分布式文件系统中获取子数据集。
在一种可能的实施方式中,对于多台服务器中的每台服务器,当该服务器接收到该聚类指令后,可以触发执行获取该服务器对应的子数据集的步骤。可选地,服务器根据该目标数据集的数据总量以及该GPU资源数量,对该目标数据集进行数据划分处理(shard),将该目标数据集划分为该GPU资源数量的子数据集。在该GPU资源数量的子数据集中,基于该服务器上的GPU资源的数量,可以确定该服务器对应的子数据集,从分布式文件系统中获取该子数据集,便于后续对子数据集进行数据聚类时读取该子数据集。
可选地,上述划分目标数据集的方式可以为按照目标数据集的数据顺序划分,也即是,根据该目标数据集的数据总量N以及该GPU资源数量,按照该目标数据集的数据顺序,将该目标数据集划分为多个数据区间[i-begin,i-end],其中,N为正整数,且N大于等于1,i为第i个数据在目标数据集中的数据顺序,i的取值范围为[1,N],i-begin表示开始的数据顺序,i-end表示结束的数据顺序。后续服务器根据该服务器的序号及该服务器上的GPU资源的数量,可以确定出该服务器对应的数据区间,得到该数据区间对应的子数据集,作为该服务器对应的子数据集。
例如,该目标数据集的数据总量可以为100,GPU资源数量可以为10,则对该目标数据集进行数据划分处理,可以得到10个数据区间(也即是10个子数据集),分别为[1-begin,10-end]、[11-begin,20-end]、……[91-begin,100-end]。当服务器数量为5,GPU资源数量为10,也即是服务器集群中服务器总量为5,GPU资源总量为10,当每台服务器上有2个GPU资源时,每台服务器可以对应两个数据区间,将这两个数据区间对应的子数据集作为该服务器对应的子数据集,每台服务器可以对应一个序号,如服务器对应的序号可以分别为1、2、3、4、5,则序号为1的服务器对应的数据区间可以为[1-begin,10-end]、[11-begin,20-end],也即是[1-begin,20-end],序号为2的服务器对应的数据区间可以为[21-begin,30-end]、[31-begin,40-end],也即是[21-begin,40-end],其他序号的服务器确定数据区间的过程同理,在此不再赘述。
可选地,上述服务器从分布式文件系统中获取该子数据集的过程可以为:服务器根据该服务器对应的数据区间,访问分布式文件系统,基于内存映射文件的方式,从分布式文件系统中获取该数据区间对应的子数据集。另外,目标数据集中的每个数据可以包括多个维度的数据,维度是指数据的特征,如时间、地区等。在服务器获取子数据集的过程中,需要根据目标数据集中数据的维度信息d,来读取该服务器对应的子数据集,以读取到完整维度的子数据集。
需要说明的是,分布式文件系统内可以采用内存映射文件的方式,创建目标数据集的数组的内存映射文件,该内存映射文件是由数组到内存的映射,使得服务器访问分布式文件系统内存储的目标数据集时,访问的是目标数据集的部分数组,而不是访问整个目标数据集,避免了服务器内存资源限制(Out of Memory)而无法加载数据的问题,能够实现对目标数据集的快速读取。
在步骤506中,该多台服务器分别存储该子数据集,构建该子数据集的索引文件。
其中,索引文件用于指示子数据集在服务器上的存储地址。
在一种可能的实施方式中,对于多台服务器中的每台服务器,当该服务器获取到该服务器对应的子数据集后,在该服务器中存储该子数据集,并构建该子数据集的索引文件。
需要说明的是,上述步骤505至步骤506中,确定、获取及存储服务器对应的子数据集的过程可以由服务器中的Kmeans-runner(Kmeans-运行)进程实现,也即是,控制服务器向目标数据集中的多台服务器发送聚类指令后,触发该多台服务器同时启动Kmeans-runner进程,由该Kmeans-runner进程执行确定、获取及存储子数据集的过程。其中,Kmeans是一种数据聚类的算法,后续对目标数据集进行数据聚类以Kmeans算法为例进行说明。
在步骤507中,多台服务器基于该服务器上的GPU资源的索引序号,将子数据集的索引文件与GPU资源进行索引关联。
其中,索引序号(index)可以为GPU资源的唯一标号,该索引标号可以根据服务器的序号以及该GPU资源在该服务器上的序号确定,例如,索引标号可以通过对服务器的序号和GPU资源的序号相加或相乘得到。
在一种可能的实施方式中,对于多台服务器中的每台服务器,当该服务器构建子数据集的索引文件后,基于该服务器上的GPU资源的索引序号,将该子数据集的索引文件与该GPU资源进行索引关联。
在一种可能的实施方式中,还可以通过server(服务)进程为每个GPU资源分配通信端口(Port),并实现对GPU资源的绑定。可选地,服务器可以根据每个GPU资源的索引序号,通过server进程为该GPU资源分配一个通信端口,该通信端口用于后续进行数据聚类时RPC(Remote Procedure Call Protocol,远程调用协议)通信。对于该第二服务器上的每个GPU资源,通过server进程将该GPU资源、该GPU资源的通信端口及该GPU资源对于的子数据集进行绑定,实现GPU资源、通信端口及子数据集的绑定。其中,一个GPU资源对应一个server进程。
需要说明的是,上述步骤507中对GPU资源进行索引关联、分配通信端口的过程可以由服务器中的server(服务)进程实现,该server进程可以由Kmeans-runner进程启动,也即是Kmeans-runner进程确定、获取及存储子数据集的过程后,可以触发多台服务器启动server进程,由该server进程执行对子数据集的索引关联指令及分配通信端口的过程。还需要说明的是,该server进程完成对子数据集的索引关联指令后,一直保持运行状态,用于后续接收对子数据集的计算请求再进行数据聚类。
在步骤508中,响应于多台服务器完成索引关联,该多台服务器中的第一服务器确定第一次迭代过程中目标数据集的多个数据类别的代表数据,一个代表数据用于表示一个数据类别在该迭代过程中的簇心。
其中,第一服务器为该多台服务器中用于对聚类过程进行控制的服务器。
在一种可能的实施方式中,第一服务器响应于多台服务器完成索引关联,确定目标数据集的初始聚类中心,作为第一次迭代过程中目标数据集的多个数据类别的代表数据。
可选地,目标数据集的初始聚类中心的确定过程可以为:在目标数据集中,根据目标聚类数,随机选取目标聚类数的数据,将该目标聚类数的数据作为目标数据集的初始聚类中心。其中,目标聚类数是指数据聚类所要求划分的数据类别的数目,该目标聚类数可以为技术人员预先设定的数值。
例如,该目标数据集的数据总量可以为N,目标聚类数可以为K,则在该N个数据中,随机选取出K个数据,作为目标数据集的初始聚类中心,也即是第一次迭代过程中目标数据集的多个数据类别的代表数据。可选地,该多个数据类别的代表数据可以为集合形式,如(K1,K2,……KN),或者,该多个数据类别的代表数据可以为矩阵形式,如(K,N),为一个K行N列的矩阵,其中每行代表一个数据类别,每行对应有一个代表数据,N列用于表示每个数据类别对应的数据。需要说明的是,初始聚类中心对应的多个数据类别的代表数据的矩阵中除代表数据外其余均为0,后续经过数据聚类后可以在该矩阵中为每个数据类别分配该数据类别对应的数据。其中,N与K均为正整数,且N与K均大于等于1。
在步骤509中,第一服务器通过多台第二服务器上的GPU资源所绑定的通信端口,分别向多台第二服务器上的GPU资源发送计算请求,该计算请求中携带有目标数据集的多个数据类别的代表数据。
在一种可能的实施方式中,第一服务器确定出目标数据集的多个数据类别的代表数据后,可以通过多台第二服务器上的GPU资源所绑定的通信端口,分别向多台第二服务器上的GPU资源发送计算请求。
需要说明的是,上述步骤508至步骤509的过程可以由第一服务器中的Kmeans-Client进程实现,该Kmeans-Client进程用于控制迭代计算的过程,该Kmeans-Client进程可以由完成索引关联触发,也即是,多台服务器完成索引关联后,触发该第一服务器启动Kmeans-Client进程,由该Kmeans-Client进程执行确定目标数据集的多个数据类别的代表数据及发送计算请求的过程。
在步骤510中,多台第二服务器接收到该计算请求后,分别应用第二服务器上的GPU资源对目标数据集中对应的子数据集和多个数据类别的代表数据之间的距离进行计算。
其中,距离用于表示数据与多个数据类别的代表数据之间的接近程度,本公开实施例中根据目标数据集的数据类型的不同,可以选用不同的距离来进行数据聚类,例如,欧氏距离、曼哈顿距离、卡方距离及切比雪夫距离等,本公开实施例对计算距离所采用的算法不作限定。
在一种可能的实施方式中,当多台第二服务器接收到该计算请求后,对于该多台第二服务器中的每台第二服务器,应用该第二服务器上的GPU资源,基于该GPU资源的索引标号,确定该GPU资源对应的索引文件,根据该索引文件,读取该索引文件对应的子数据集。对于该子数据集中的每个数据,根据该计算请求中携带的多个数据类别的代表数据,计算该数据和多个数据类别的代表数据之间的距离,得到该迭代过程对应的计算结果。
可选地,上述GPU资源根据索引文件读取对应的子数据集的过程可以为:GPU资源确定该GPU资源对应的索引文件后,根据查询算法,查询该索引文件记录的子数据集在第二服务器上的存储地址,按照该存储地址,查询到该GPU资源对应的子数据集,再进行后续对该子数据集的数据聚类。
在本公开实施例中,GPU资源根据索引文件读取对应的子数据集,GPU资源中仅仅存储了索引文件,由于索引文件本身占用内存很小,只占两个字段,可以减小对GPU资源的内存的占用,节省了GPU资源的内存空间。
在步骤511中,多台第二服务器分别将迭代过程的计算结果发送至第一服务器。
其中,计算结果是指GPU资源对应的子数据集中多个数据和多个数据类别的代表数据之间的距离。
在一种可能的实施方式中,多台第二服务器得到该迭代过程对应的计算结果后,分别将该迭代过程的计算结果发送至第一服务器。
需要说明的是,上述步骤510至步骤511中距离计算以及发送计算结果的过程可以由server进程实现,也即是Kmeans-Client进程可以通过server进程以及通信端口与GPU资源进行通信,进而实现多个GPU资源的并行计算。
在步骤512中,第一服务器接收到该迭代过程中多台第二服务器的计算结果后,基于该迭代过程中多台第二服务器的计算结果,更新多个数据类别的代表数据。
在一种可能的实施方式中,第一服务器接收到该迭代过程中多台第二服务器的计算结果后,对于该目标数据集中的每个数据,基于该多台第二服务器的计算结果,确定与该数据距离最近的代表数据,将该数据分配至该代表数据对应的数据类别中,确定该数据类别中的数据的均值,作为更新后的代表数据,从而得到更新后的多个数据类别的代表数据。
在步骤513中,第一服务器基于更新后的多个数据类别的代表数据进行下一次迭代过程。
在一种可能的实施方式中,第一服务器确定出更新后的多个数据类别的代表数据后,作为下一次迭代过程的多个数据类别的代表数据,进行下一次迭代过程。
在步骤514中,若任一次迭代过程满足目标条件,则第一服务器基于更新后的多个数据类别的代表数据,向分布式文件系统输出目标数据集的数据聚类结果。
其中,目标条件可以为预先设定的条件,如目标条件可以为迭代次数大于某一固定值,需要说明的是,在每一次迭代过程得到计算结果后,判断该迭代过程是否满足目标条件,若该迭代过程不满足目标条件,则基于该迭代过程的计算结果,更新该迭代过程的各个数据类别的代表数据,继续执行下一次迭代过程,若该迭代过程满足目标条件,则基于该迭代过程的各个数据类别和该计算结果,获取该目标数据集的数据聚类结果。数据聚类结果为目标数据集的数据聚类结果,该数据聚类结果可以为多种形式,如数据聚类中心或目标数据集中每个数据的聚类,本公开实施例对数据聚类结果的类型不作限定。
在一种可能的实施方式中,若迭代过程满足目标条件,则第一服务器基于该更新后的多个数据类别的代表数据,生成目标格式的第一数据文件,将该第一数据文件发送给分布式文件系统,该目标格式支持文本和内存映射文件中至少一项。在另一种可能的实施方式中,若迭代过程满足目标条件,则第一服务器基于该更新后的多个数据类别的代表数据,按照该目标数据集中的数据顺序,生成第二数据文件,该第二数据文件中的字符用于表示对应数据顺序的数据的数据类别,将该第二数据文件发送给该分布式文件系统。
可选地,上述生成目标格式的第一数据文件的过程可以为:若迭代过程满足目标条件,当该更新后的多个数据类别的代表数据的聚类类别K较小时,第一服务器可以直接以文本格式的数据文件向分布式文件系统输出该更新后的多个数据类别的代表数据,再由分布式文件系统进行存储。或者,上述生成目标格式的第一数据文件的过程也可以为:当该更新后的多个数据类别的代表数据的数据类别K较大时,第一服务器可以生成该更新后的多个数据类别的代表数据的内存映射文件,由分布式文件系统根据该内存映射文件,对该更新后的多个数据类别的代表数据的数组进行存储,便于下次访问。本公开实施例中,灵活的根据多个数据类别的代表数据的数据类别K的大小,来确定其对应的数据文件的格式,在对超大规模数据进行大规模聚类时,能够实现对大规模数据聚类结果的存储,并实现了下次访问该数据聚类结果时的快速读取。
可选地,上述生成目标格式的第二数据文件的过程可以为:第一服务器得到该更新后的多个数据类别的代表数据后,可以确定每个代表数据对应的数据类别,对于目标数据集中的每个数据,根据该数据对应的代表数据,确定该数据对应的数据类别,按照目标数据集中每个数据的顺序,以数据文件的形式向分布式文件系统输出该多个数据对应的数据类别。同样的,该数据文件也可以为文本文件或内存映射文件中的至少一种。
在步骤515中,第一服务器向控制服务器发送聚类完成消息,该聚类完成消息用于指示控制服务器释放目标数据集所占用的服务器和GPU资源。
在一种可能的实施方式中,第一服务器向分布式文件系统输出目标数据集的数据聚类结果后,向控制服务器发送聚类完成消息。
需要说明的是,上述步骤513至步骤515的过程可以由第一服务器中的Kmeans-Client进程实现,也即是Kmeans-Client进程接收到多个server进程发送的计算结果后,更新多个数据类别的代表数据,当迭代过程结束,输出目标数据集的数据聚类结果后,退出该Kmeans-Client进程,进而触发发送该聚类完成消息的过程。
在步骤516中,控制服务器响应于第一服务器返回的聚类完成消息,释放多台服务器以及多台服务器上的多个GPU资源。
在一种可能的实施方式中,控制服务器接收到第一服务器返回的聚类完成消息,释放多台服务器以及多台服务器上的多个GPU资源。
例如,第一服务器可以为第0个Worker,则Kmeans-Client进程可以在第0个Worker上,当资源管理系统检测到第0个Worker上Kmeans-Client进程的退出信号后,会自动销毁所有worker容器,回收服务器资源和GPU资源,将该服务器资源和GPU资源放入目标服务器集群中,至此整个流程结束。
本公开实施例提供的技术方案,控制服务器根据目标数据集的资源需求,通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据执行距离计算以及基于计算结果来对聚类中心进行迭代更新,进而通过不断迭代来获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
基于上述技术方案,本公开实施例还提供了采用上述方法对超大规模数据进行数据聚类的实验结果,基于该实验结果,可以证明采用上述数据聚类方法能够有效实现对超大规模数据的数据聚类。在该实验中,在4*8=32张nivida V100-GPU卡上,实现了对100亿(N=100亿)个数据、128维(128d)的数据集、聚类数为100万(K=100万)的数据聚类,在该实验中,完成了300次迭代计算,仅花费5小时就完成了kmeans聚类以及结果输出,不仅实现了对超大规模数据的数据聚类,还提高了数据聚类的效率。
图6是根据一示例性实施例示出的一种数据聚类装置的框图。参照图6,该装置包括确定单元601,响应单元602和计算单元603。
该确定单元601,被配置为执行确定目标数据集的资源需求,该资源需求包括服务器数量以及GPU资源数量;
该响应单元602,被配置为执行响应于该资源需求,确定多台服务器以及该多台服务器上的多个GPU资源,该多台服务器的数量符合该服务器数量,该多个GPU资源的数量符合该GPU资源数量;
该计算单元603,被配置为执行通过该多台服务器上的多个GPU资源,分别基于该目标数据集中各个子数据集进行数据聚类,得到该目标数据集的数据聚类结果。
在一种可能的实现方式中,该计算单元,被配置为执行:
通过该多台服务器上的多个GPU资源,分别计算该目标数据集中各个子数据集和当前迭代过程中各个数据类别的代表数据之间的距离,一个代表数据用于表示一个数据类别在该迭代过程中的簇心;
若该迭代过程的计算结果不满足目标条件,则基于该迭代过程的计算结果,更新该迭代过程的各个数据类别的代表数据,继续执行下一次迭代过程;
若该迭代过程的计算结果满足该目标条件,则基于该迭代过程的各个数据类别和该计算结果,获取该目标数据集的数据聚类结果。
在一种可能的实现方式中,该装置还包括:
获取单元,被配置为执行获取目标镜像文件,该目标镜像文件用于进行数据聚类;
生成单元,被配置为执行在该多台服务器上安装该目标镜像文件,生成目标运行环境,该目标运行环境用于对该目标数据集进行数据聚类。
在一种可能的实现方式中,该装置还包括:
释放单元,被配置为执行响应于该多台服务器中任一台服务器返回的聚类完成消息,释放该多台服务器以及该多台服务器上的多个GPU资源。
本公开实施例提供的技术方案,控制服务器根据目标数据集的资源需求,通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据执行距离计算以及基于计算结果来对聚类中心进行迭代更新,进而通过不断迭代来获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
图7是根据一示例性实施例示出的一种数据聚类装置的框图。参照图7,该装置包括确定单元701,控制单元702、更新单元703和输出单元704。
该确定单元701,被配置为执行在任一次迭代过程中,确定目标数据集的多个数据类别的代表数据,该目标数据集存储于分布式文件系统中,一个代表数据用于表示一个数据类别在该迭代过程中的簇心;
该控制单元702,被配置为执行控制多台第二服务器分别应用该第二服务器上的GPU资源对该目标数据集中对应的子数据集和该多个数据类别的代表数据之间的距离进行计算,;
该更新单元703,被配置为执行基于该迭代过程中该多台第二服务器的计算结果,更新该多个数据类别的代表数据;
该输出单元704,被配置为执行若该迭代过程满足目标条件,则基于更新后的该多个数据类别的代表数据,向该分布式文件系统输出该目标数据集的数据聚类结果。
在一种可能的实现方式中,该装置还包括:
发送单元,被配置为执行通过该多台第二服务器上的GPU资源所绑定的通信端口,分别向该多台第二服务器上的GPU资源发送计算请求。
在一种可能的实现方式中,该更新单元703,被配置为执行:
对于该目标数据集中的每个数据,基于该多台第二服务器的计算结果,确定与该数据距离最近的代表数据,将该数据分配至该代表数据对应的数据类别中;
确定该数据类别中的数据的均值,作为更新后的代表数据,得到更新后的该多个数据类别的代表数据。
在一种可能的实现方式中,该输出单元704,被配置为执行:
基于该更新后的该多个数据类别的代表数据,生成目标格式的第一数据文件,将该第一数据文件发送给分布式文件系统,该目标格式支持文本和内存映射文件中至少一项;
或,
基于该更新后的该多个数据类别的代表数据,按照该目标数据集中的数据顺序,生成第二数据文件,该第二数据文件中的字符用于表示对应数据顺序的数据的数据类别,将该第二数据文件发送给该分布式文件系统。
在一种可能的实现方式中,该装置还包括:
发送单元,被配置为执行向控制服务器发送聚类完成消息,该聚类完成消息用于指示该控制服务器释放该目标数据集所占用的服务器和GPU资源。
本公开实施例提供的技术方案,通过第一服务器控制目标数据集的数据聚类的迭代过程,进而通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据执行距离计算以及基于计算结果来对聚类中心进行迭代更新,进而通过不断迭代来获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
图8是根据一示例性实施例示出的一种数据聚类装置的框图。参照图8,该装置包括确定单元801,获取单元802、计算单元803和发送单元804。
该确定单元801,被配置为执行基于目标数据集、GPU资源数量和该第二服务器上的GPU资源,确定该第二服务器对应的子数据集,该目标数据集存储于分布式文件系统中;
该获取单元802,被配置为执行从该分布式文件系统中获取该子数据集;
该计算单元803,被配置为执行在任一次迭代过程中,应用该第二服务器上的GPU资源对该子数据集和该目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在该迭代过程中的簇心;
该发送单元804,被配置为执行将该迭代过程的计算结果发送至第一服务器。
在一种可能的实现方式中,该确定单元801,被配置为执行:
基于目标数据集的数据总量与GPU资源数量,将目标数据集划分为GPU资源数量的子数据集;
在GPU资源数量的子数据集中,基于第二服务器上的GPU资源的数目,确定第二服务器对应的子数据集。
在一种可能的实现方式中,该装置还包括:
构建单元,被配置为执行在该第二服务器中存储该子数据集,构建该子数据集的索引文件;
索引单元,被配置为执行基于该第二服务器上的GPU资源的索引序号,将该子数据集的索引文件与该GPU资源进行索引关联;
读取单元,被配置为执行在任一次迭代过程中,该第二服务器上的GPU资源基于该索引文件,读取该索引文件对应的子数据集。
本公开实施例提供的技术方案,通过多台服务器上的可用GPU资源,分别对目标数据集中的一部分数据执行距离计算以及基于计算结果来对聚类中心进行迭代更新,进而通过不断迭代来获取到目标数据集的数据聚类结果,可以实现分布式的数据聚类,从而实现对超大规模数据的数据聚类。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9是根据一示例性实施例示出的一种服务器的框图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)901和一个或多个的存储器902,其中,该一个或多个存储器902中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器901加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器900还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器900还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器902,上述指令可由服务器900的处理器901执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由服务器的处理器901执行,以完成上述实施例中提供的数据聚类方法的方法步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据聚类方法,其特征在于,应用于控制服务器,所述方法包括:
确定目标数据集的资源需求,所述资源需求包括服务器数量以及GPU资源数量;
响应于所述资源需求,确定多台服务器以及所述多台服务器上的多个GPU资源,所述多台服务器的数量符合所述服务器数量,所述多个GPU资源的数量符合所述GPU资源数量;
通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果。
2.根据权利要求1所述的数据聚类方法,其特征在于,所述通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果,包括:
通过所述多台服务器上的多个GPU资源,分别计算所述目标数据集中各个子数据集和当前迭代过程中各个数据类别的代表数据之间的距离;
若所述迭代过程不满足目标条件,则基于所述迭代过程的计算结果,更新所述迭代过程的各个数据类别的代表数据,继续执行下一次迭代过程,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
若所述迭代过程满足所述目标条件,则基于所述迭代过程的各个数据类别和所述计算结果,获取所述目标数据集的数据聚类结果。
3.一种数据聚类方法,其特征在于,应用于第一服务器,所述方法包括:
在任一次迭代过程中,确定目标数据集的多个数据类别的代表数据,所述目标数据集存储于分布式文件系统中;
控制多台第二服务器分别应用所述第二服务器上的GPU资源对所述目标数据集中对应的子数据集和所述多个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
基于所述迭代过程中所述多台第二服务器的计算结果,更新所述多个数据类别的代表数据;
若所述迭代过程满足目标条件,则基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果。
4.根据权利要求3所述的数据聚类方法,其特征在于,所述基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果,包括:
基于所述更新后的所述多个数据类别的代表数据,生成目标格式的第一数据文件,将所述第一数据文件发送给分布式文件系统,所述目标格式支持文本和内存映射文件中至少一项;
或,
基于所述更新后的所述多个数据类别的代表数据,按照所述目标数据集中的数据顺序,生成第二数据文件,所述第二数据文件中的字符用于表示对应数据顺序的数据的数据类别,将所述第二数据文件发送给所述分布式文件系统。
5.一种数据聚类方法,其特征在于,应用于第二服务器,所述方法包括:
第二服务器基于目标数据集、GPU资源数量和所述第二服务器上的GPU资源,确定所述第二服务器对应的子数据集,所述目标数据集存储于分布式文件系统中;
所述第二服务器从所述分布式文件系统中获取所述子数据集;
在任一次迭代过程中,所述第二服务器应用所述第二服务器上的GPU资源对所述子数据集和所述目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心;
将所述迭代过程的计算结果发送至第一服务器。
6.根据权利要求5所述的数据聚类方法,其特征在于,所述第二服务器基于目标数据集、GPU资源数量和所述第二服务器上的GPU资源,确定所述第二服务器对应的子数据集,包括:
所述第二服务器基于所述目标数据集的数据总量与所述GPU资源数量,将所述目标数据集划分为所述GPU资源数量的子数据集;
在所述GPU资源数量的子数据集中,基于所述第二服务器上的GPU资源的数目,确定所述第二服务器对应的子数据集。
7.一种数据聚类装置,其特征在于,所述装置包括多个功能单元,所述多个功能单元用于实现如权利要求1至6中任一项所述的数据聚类方法。
8.一种数据聚类系统,其特征在于,所述数据聚类系统包括控制服务器、至少一台第一服务器与多台第二服务器,其中:
所述控制服务器,用于确定目标数据集的资源需求,所述资源需求包括服务器数量以及GPU资源数量,响应于所述资源需求,确定多台服务器以及所述多台服务器上的多个GPU资源,所述多台服务器的数量符合所述服务器数量,所述多个GPU资源的数量符合所述GPU资源数量,通过所述多台服务器上的多个GPU资源,分别基于所述目标数据集中各个子数据集进行数据聚类,得到所述目标数据集的数据聚类结果;
所述至少一台第一服务器,用于在任一次迭代过程中,确定所述目标数据集的多个数据类别的代表数据,所述目标数据集存储于分布式文件系统中,控制所述多台第二服务器分别应用所述第二服务器上的GPU资源对所述目标数据集中对应的子数据集和所述多个数据类别的代表数据之间的距离进行计算,一个代表数据用于表示一个数据类别在所述迭代过程中的簇心,基于所述迭代过程中所述多台第二服务器的计算结果,更新所述多个数据类别的代表数据,若所述迭代过程满足目标条件,则基于更新后的所述多个数据类别的代表数据,向所述分布式文件系统输出所述目标数据集的数据聚类结果;
对于所述多台第二服务器中的每台第二服务器,用于基于所述目标数据集、所述GPU资源数量和所述第二服务器上的GPU资源,确定所述第二服务器对应的子数据集,所述第二服务器从所述分布式文件系统中获取所述子数据集,在任一次迭代过程中,所述第二服务器应用所述第二服务器上的GPU资源对所述子数据集和所述目标数据集的当前迭代过程中各个数据类别的代表数据之间的距离进行计算,将所述迭代过程的计算结果发送至所述至少一台第一服务器。
9.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的数据聚类方法。
10.一种存储介质,其特征在于,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求1至6中任一项所述的数据聚类方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010409247.4A CN111582398B (zh) | 2020-05-14 | 2020-05-14 | 数据聚类方法、装置、系统、服务器以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010409247.4A CN111582398B (zh) | 2020-05-14 | 2020-05-14 | 数据聚类方法、装置、系统、服务器以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111582398A true CN111582398A (zh) | 2020-08-25 |
CN111582398B CN111582398B (zh) | 2022-03-25 |
Family
ID=72113644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010409247.4A Active CN111582398B (zh) | 2020-05-14 | 2020-05-14 | 数据聚类方法、装置、系统、服务器以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111582398B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446959A (zh) * | 2016-10-10 | 2017-02-22 | 北京邮电大学 | 一种云计算资源动态匹配方法及装置 |
CN107102824A (zh) * | 2017-05-26 | 2017-08-29 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
CN108257077A (zh) * | 2018-01-02 | 2018-07-06 | 深圳云天励飞技术有限公司 | 基于gpu的聚类数据的处理方法、系统及计算设备 |
CN109660392A (zh) * | 2018-12-14 | 2019-04-19 | 武汉烽火信息集成技术有限公司 | 一种Linux系统下硬件统一化自适应管理部署方法及系统 |
CN110019875A (zh) * | 2017-12-29 | 2019-07-16 | 上海全土豆文化传播有限公司 | 索引文件的生成方法及装置 |
CN110941481A (zh) * | 2019-10-22 | 2020-03-31 | 华为技术有限公司 | 资源调度方法、装置及系统 |
-
2020
- 2020-05-14 CN CN202010409247.4A patent/CN111582398B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446959A (zh) * | 2016-10-10 | 2017-02-22 | 北京邮电大学 | 一种云计算资源动态匹配方法及装置 |
CN107102824A (zh) * | 2017-05-26 | 2017-08-29 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
CN110019875A (zh) * | 2017-12-29 | 2019-07-16 | 上海全土豆文化传播有限公司 | 索引文件的生成方法及装置 |
CN108257077A (zh) * | 2018-01-02 | 2018-07-06 | 深圳云天励飞技术有限公司 | 基于gpu的聚类数据的处理方法、系统及计算设备 |
CN109660392A (zh) * | 2018-12-14 | 2019-04-19 | 武汉烽火信息集成技术有限公司 | 一种Linux系统下硬件统一化自适应管理部署方法及系统 |
CN110941481A (zh) * | 2019-10-22 | 2020-03-31 | 华为技术有限公司 | 资源调度方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111582398B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022037337A1 (zh) | 机器学习模型的分布式训练方法、装置以及计算机设备 | |
CN110062924B (zh) | 用于虚拟化图形处理的容量预留 | |
CN113037794B (zh) | 计算资源配置调度方法、装置及系统 | |
CN110247984B (zh) | 业务处理方法、装置及存储介质 | |
CN109408590B (zh) | 分布式数据库的扩容方法、装置、设备及存储介质 | |
CN111143039B (zh) | 一种虚拟机的调度方法、装置及计算机存储介质 | |
CN115328663A (zh) | 基于PaaS平台进行资源调度的方法、装置、设备和存储介质 | |
CN111126604B (zh) | 模型训练方法、装置、服务器及存储介质 | |
KR20210105378A (ko) | 프로그래밍 플랫폼의 사용자 코드 작동 방법 및 플랫폼, 노드, 기기, 매체 | |
CN110888658A (zh) | 应用程序中功能模块的动态化方法、装置及存储介质 | |
CN111988429A (zh) | 算法调度方法以及系统 | |
CN112860450A (zh) | 一种请求处理方法及装置 | |
CN113672375A (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN111506414A (zh) | 资源调度方法、装置、设备、系统及可读存储介质 | |
CN116089477B (zh) | 分布式训练方法及系统 | |
CN111582398B (zh) | 数据聚类方法、装置、系统、服务器以及存储介质 | |
CN112149139B (zh) | 权限管理方法及装置 | |
US10635336B1 (en) | Cache-based partition allocation | |
CN116010093A (zh) | 数据处理方法、装置、计算机设备和可读存储介质 | |
CN112131007B (zh) | 基于ai平台的gpu资源调度方法、装置及介质 | |
US20170090820A1 (en) | Method and device for operating a many-core system | |
CN111523927A (zh) | 资源的发送方法、装置、设备及存储介质 | |
CN118502965B (zh) | 加速卡分配方法、装置和人工智能平台 | |
CN114745382B (zh) | 任务分片方法、任务分片装置和业务系统 | |
CN113568708B (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 |