CN109447274A - 用于执行机器学习的分布式系统及其方法 - Google Patents
用于执行机器学习的分布式系统及其方法 Download PDFInfo
- Publication number
- CN109447274A CN109447274A CN201811206263.2A CN201811206263A CN109447274A CN 109447274 A CN109447274 A CN 109447274A CN 201811206263 A CN201811206263 A CN 201811206263A CN 109447274 A CN109447274 A CN 109447274A
- Authority
- CN
- China
- Prior art keywords
- parameter
- machine learning
- computing device
- algorithm
- learning model
- 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
Landscapes
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种用于执行机器学习的分布式系统及其方法。所述分布式系统包括:参数服务器,用于维护多个机器学习模型的参数,其中,所述参数具有键值对的形式,所述参数服务器按照单个键对应于多个值的形式来保存具有相同键的多个键值对;以及多个计算装置,被配置为并行地执行关于所述多个机器学习模型的算法,其中,所述参数服务器包括至少一个服务器端和多个客户端,其中,每个客户端用于与一个或多个服务器端之间传送关于至少一个机器学习模型的算法所涉及的参数的参数操作指令,其中,与所述每个客户端对应的计算装置被配置为执行关于所述至少一个机器学习模型的算法,其中,在所述参数操作指令中,相同键被压缩和/或合并。
Description
本申请是申请日为2017年8月30日、申请号为201710764323.1、题为“用于执行机器学习的分布式系统及其方法”的专利申请的分案申请。
技术领域
本发明的示例性实施例总体说来涉及人工智能领域,更具体地讲,涉及一种用于执行机器学习的分布式系统以及利用所述分布式系统来执行机器学习的方法。
背景技术
随着数据规模的迅速增长,机器学习被广泛应用于各种领域以挖掘数据的价值。然而,为了执行机器学习,一般物理机的内存已经远远不足,为此,实践中往往需要利用分布式机器学习系统来完成机器学习模型的训练或相应的预估。在现有的分布式机器学习系统中,通常由多个计算装置并行地执行关于同一机器学习模型的训练或预估,由参数服务器来存储该机器学习模型的参数,并支持各个计算装置对该机器学习模型的参数的读写。
参数服务器具有支持海量维度、高并发度、负载均衡等优点,但也存在内存占用大、运算量大、网络带宽占用大等缺点。通常一个参数服务器仅用于维护一个机器学习模型的参数,如果想要同时进行关于多个机器学习模型的训练和/或预估,则需要参数服务器维护多个机器学习模型的参数,那么网络开销也会呈线性增长。
发明内容
本发明的示例性实施例在于提供一种用于执行机器学习的分布式系统及其方法,以解决在同时进行关于多个机器学习模型的训练和/或预估时参数服务器的网络开销过大的问题。
根据本发明的示例性实施例,提供一种用于执行机器学习的分布式系统,包括:参数服务器,用于维护多个机器学习模型的参数,其中,所述参数具有键值对的形式;以及多个计算装置,被配置为并行地执行关于所述多个机器学习模型的算法,其中,所述算法为关于机器学习模型的训练算法或关于机器学习模型的预估算法,其中,所述参数服务器将计算装置为了执行关于机器学习模型的训练算法而需要读取的参数提供给所述计算装置,以使所述计算装置利用读取的参数来执行所述训练算法,并且,所述参数服务器根据所述计算装置执行所述训练算法的结果来更新所述机器学习模型的参数;并且/或者,所述参数服务器将计算装置为了执行关于机器学习模型的预估算法而需要读取的参数提供给所述计算装置,以使所述计算装置利用读取的参数来执行所述预估算法,其中,所述参数服务器包括至少一个服务器端和多个客户端,其中,客户端与计算装置一一对应,并且,对应的客户端和计算装置集成为一体,其中,所述至少一个服务器端用于保存所述多个机器学习模型的参数;每个客户端用于与一个或多个服务器端之间传送关于至少一个机器学习模型的算法所涉及的参数的参数操作指令,其中,与所述每个客户端对应的计算装置被配置为执行关于所述至少一个机器学习模型的算法,其中,在所述参数操作指令中,相同键被压缩和/或合并。
可选地,服务器端、客户端与计算装置一一对应,并且,对应的服务器端、客户端和计算装置集成为一体。
可选地,所述每个客户端从对应的计算装置接收关于所述至少一个机器学习模型的算法所涉及的参数的参数操作请求,针对保存所述参数的一个或多个服务器端分别生成与所述参数操作请求相应的参数操作指令,并将生成的参数操作指令分别传送到所述一个或多个服务器端。
可选地,所述每个客户端从所述一个或多个服务器端接收与所述参数的参数操作结果相应的参数操作指令,基于接收到的参数操作指令生成与所述参数操作请求之中的每一个对应的参数操作结果,并将生成的参数操作结果传送到对应的计算装置。
可选地,所述至少一个服务器端按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
可选地,所述参数操作请求包括拉取操作请求和/或推送操作请求。
可选地,相同键通过分桶方式或排序方式被合并。
可选地,客户端与对应的计算装置之间针对每个算法,采用单独的句柄来进行交互。
根据本发明的另一示例性实施例,提供一种利用分布式系统来执行机器学习的方法,其中,所述分布式系统中的参数服务器用于维护多个机器学习模型的参数,其中,所述参数具有键值对的形式;所述分布式系统中的多个计算装置被配置为并行地执行关于所述多个机器学习模型的算法,其中,所述算法为关于机器学习模型的训练算法或关于机器学习模型的预估算法,所述方法包括:所述参数服务器将计算装置为了执行关于机器学习模型的训练算法而需要读取的参数提供给所述计算装置,所述计算装置利用读取的参数来执行所述训练算法,所述参数服务器根据所述计算装置执行所述训练算法的结果来更新所述机器学习模型的参数;并且/或者,所述参数服务器将计算装置为了执行关于机器学习模型的预估算法而需要读取的参数提供给所述计算装置,所述计算装置利用读取的参数来执行所述预估算法,其中,所述参数服务器包括至少一个服务器端和多个客户端,其中,客户端与计算装置一一对应,并且,对应的客户端和计算装置集成为一体,其中,所述至少一个服务器端用于保存所述多个机器学习模型的参数;每个客户端用于与一个或多个服务器端之间传送关于至少一个机器学习模型的算法所涉及的参数的参数操作指令,其中,与所述每个客户端对应的计算装置被配置为执行关于所述至少一个机器学习模型的算法,其中,在所述参数操作指令中,相同键被压缩和/或合并。
可选地,服务器端、客户端与计算装置一一对应,并且,对应的服务器端、客户端和计算装置集成为一体。
可选地,所述每个客户端通过执行以下处理来与所述一个或多个服务器端之间传送关于所述至少一个机器学习模型的算法所涉及的参数的参数操作指令:所述每个客户端从对应的计算装置接收所述关于至少一个机器学习模型的算法所涉及的参数的参数操作请求;针对保存所述参数的一个或多个服务器端分别生成与所述参数操作请求相应的参数操作指令;将生成的参数操作指令分别传送到所述一个或多个服务器端。
可选地,所述每个客户端还通过执行以下处理来与所述一个或多个服务器端之间传送关于所述至少一个机器学习模型的算法所涉及的参数的参数操作指令:所述每个客户端从所述一个或多个服务器端接收与所述参数的参数操作结果相应的参数操作指令;基于接收到的参数操作指令生成与所述参数操作请求之中的每一个对应的参数操作结果;将生成的参数操作结果传送到对应的计算装置。
可选地,所述至少一个服务器端按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
可选地,所述参数操作请求包括拉取操作请求和/或推送操作请求。
可选地,相同键通过分桶方式或排序方式被合并。
可选地,客户端与对应的计算装置之间针对每个算法,采用单独的句柄来进行交互。
在根据本发明示例性实施例的用于执行机器学习的分布式系统及其方法中,通过参数服务器来维护多个机器学习模型的参数,并且,在参数服务器的客户端和服务器端之间传送的参数操作指令中,相同键被压缩和/或合并,从而能够有效减少在同时进行关于多个机器学习模型的训练和/或预估时参数服务器的网络开销。进一步地,还能够有效减少参数服务器的内存开销和运算量。
将在接下来的描述中部分阐述本发明总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明总体构思的实施而得知。
附图说明
通过下面结合示例性地示出实施例的附图进行的描述,本发明示例性实施例的上述和其他目的和特点将会变得更加清楚,其中:
图1示出根据本发明示例性实施例的用于执行机器学习的分布式系统的框图;
图2示出根据本发明的另一示例性实施例的用于执行机器学习的分布式系统的框图;
图3示出根据本发明的另一示例性实施例的用于执行机器学习的分布式系统的框图;
图4示出根据本发明示例性实施例的保存机器学习模型的参数的示例;
图5示出根据本发明示例性实施例的客户端与关于机器学习模型的算法交互的示例;
图6示出根据本发明示例性实施例的利用分布式系统来执行机器学习的方法的流程图;
图7示出根据本发明的另一示例性实施例的利用分布式系统来执行机器学习的方法的流程图;
图8示出根据本发明示例性实施例的客户端向服务器端请求计算装置为了执行关于机器学习模型的算法而需要读取的参数的方法的流程图;
图9示出根据本发明示例性实施例的客户端从服务器端获取计算装置需要读取的参数的方法的流程图。
具体实施方式
现将详细参照本发明的实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。以下将通过参照附图来说明所述实施例,以便解释本发明。
本发明的示例性实施例所涉及的用于执行机器学习的分布式系统可由参数服务器和多个计算装置组成,其中,参数服务器通过与各个计算装置进行交互来维护多个机器学习模型的参数,多个计算装置并行地进行关于所述多个机器学习模型的训练和/或预估。应注意,这里所说的计算装置和/或参数服务器均由其所执行的处理或所实现的功能来限定,既可指示物理实体,也可指示虚拟实体,例如,计算装置可指示实际的计算机器,也可指示部署在该计算机器上的逻辑实体,同样,参数服务器既可指示实际的计算机器,也可作为一个或多个逻辑实体而与计算装置部署在同样和/或不同的计算机器上。
图1示出根据本发明示例性实施例的用于执行机器学习的分布式系统的框图。参照图1,根据本发明示例性实施例的用于执行机器学习的分布式系统可包括:参数服务器1000和多个计算装置2000(例如,2000-1、2000-2、…、2000-n(其中,n为大于1的整数))。
具体说来,参数服务器1000用于维护多个机器学习模型的参数,其中,所述参数具有键值对(key-value)的形式。这里,机器学习模型可看作关于机器学习样本特征的函数,可通过针对全部机器学习样本不断地迭代训练,逐渐收敛到该函数的参数最优解,相应地,一个key-value中的key可对应于一个特征的标识,value可对应于该函数的参数之中与该特征相关的参数的值。
多个计算装置2000被配置为并行地执行关于所述多个机器学习模型的算法,其中,所述算法为关于机器学习模型的训练算法或关于机器学习模型的预估算法。具体说来,参数服务器1000将计算装置2000为了执行关于机器学习模型的训练算法而需要读取的参数提供给计算装置2000,以使计算装置2000利用读取的参数来执行所述关于机器学习模型的训练算法,并且,参数服务器1000根据计算装置2000执行所述关于机器学习模型的训练算法的结果来更新所述机器学习模型的参数;并且/或者,参数服务器1000将计算装置2000为了执行关于机器学习模型的预估算法而需要读取的参数提供给计算装置2000,以使计算装置2000利用读取的参数来执行所述关于机器学习模型的预估算法。
作为示例,在计算装置2000为了执行关于至少一个机器学习模型的算法而与参数服务器1000进行的关于所述算法所涉及的参数的交互过程中,相关参数操作指令中的相同键可被压缩和/或合并。
应注意,各个计算装置2000可执行至少一个关于机器学习模型的算法。作为示例,不同计算装置2000可针对各自的数据记录(这里,不同计算装置2000所针对的数据记录各不相同)执行相同的关于机器学习模型的算法(也即,关于同一机器学习模型的训练算法或关于同一机器学习模型的预估算法);不同计算装置2000也可执行不同的关于机器学习模型的算法。
作为示例,参数服务器1000可部署在单个计算机器上;或者,参数服务器1000可同时部署在多个计算机器上。
图2示出根据本发明的另一示例性实施例的用于执行机器学习的分布式系统的框图。如图2所示,参数服务器1000可具有分布式结构,其中,在所述分布式结构下,参数服务器1000可包括至少一个服务器端1001(图2中仅示出包括一个服务器端1001的情况)和多个客户端1002(例如,1002-1、1002-2、…、1002-n),其中,客户端1002与计算装置2000一一对应,并且,对应的客户端1002和计算装置2000集成为一体。具体说来,对应的客户端1002-1和计算装置2000-1可集成在相同的虚拟机或物理机上,对应的客户端1002-2和计算装置2000-2可集成在相同的虚拟机或物理机上,以此类推,对应的客户端1002-n和计算装置2000-n可集成在相同的虚拟机或物理机上。
所述至少一个服务器端1001用于保存所述多个机器学习模型的参数。具体地,当存在单个服务器端1001时,该服务器端1001保存所述多个机器学习模型的参数;当存在多个服务器端1001时,每个服务器端1001分别保存所述多个机器学习模型的参数的一部分,并且,不同服务器端1001保存的参数无交集。
每个客户端1002用于与一个或多个服务器端1001之间传送关于至少一个机器学习模型的算法所涉及的参数的参数操作指令,其中,与所述每个客户端1002对应的计算装置2000被配置为执行所述关于至少一个机器学习模型的算法。作为优选示例,在所述参数操作指令中,相同键可被压缩和/或合并,避免了相同键的重复传输,从而能够有效减少客户端1002与服务器端1001之间传送参数操作指令的网络开销。
作为示例,参数操作指令中的相同键,可通过分桶方式或排序方式被合并。应该理解,参数操作指令中的相同键也可通过其他方式被合并,本发明对此不作限制。
作为示例,参数操作指令中的相同键可被直接压缩。作为另一示例,在客户端1002与服务器端1001之间传送的参数操作指令也可以是压缩形式的参数操作指令,从而实现参数操作指令中的相同键被压缩。压缩算法能够隐式地合并相同数据,例如,可使用Snappy压缩算法、LZ4压缩算法等各种适合的压缩算法。
此外,作为示例,参数操作指令中的相同键可先被合并,然后相同键被合并的参数操作指令可再被压缩,从而实现参数操作指令中的相同键被合并和压缩。
作为示例,每个客户端1002可从对应的计算装置2000接收所述关于至少一个机器学习模型的算法所涉及的参数的参数操作请求,针对保存所述参数的一个或多个服务器端1001分别生成与所述参数操作请求相应的参数操作指令,并将生成的参数操作指令分别传送到所述一个或多个服务器端1001。
进一步地,作为示例,每个客户端1002从所述一个或多个服务器端1001接收与所述参数的参数操作结果相应的参数操作指令,基于接收到的参数操作指令生成与所述参数操作请求之中的每一个对应的参数操作结果,并将生成的参数操作结果传送到对应的计算装置2000。
作为示例,所述参数操作请求可包括拉取(pull)操作请求和/或推送(push)操作请求。具体说来,pull操作请求用于请求读取机器学习模型的参数,例如,pull操作请求中可指定请求读取的机器学习模型及请求读取的参数的key。相应地,与pull操作请求对应的参数操作结果为请求读取的参数的具体内容。push操作请求用于请求更新机器学习模型的参数,例如,push操作请求可指定请求更新的机器学习模型、请求更新的参数的key、以及对与key对应的value的具体更新操作。相应地,与push操作请求对应的参数操作结果是参数服务器已完成更新操作的通知。
作为示例,参数服务器1000所包括的全部或部分服务器端1001之中的每一个可和对应的一个计算装置2000集成为一体。图3示出根据本发明的另一示例性实施例的用于执行机器学习的分布式系统的框图。如图3所示,服务器端1001、客户端1002与计算装置2000可一一对应,并且,对应的服务器端1001、客户端1002和计算装置2000可集成为一体。具体说来,对应的服务器端1001-1、客户端1002-1和计算装置2000-1可集成在相同的虚拟机或物理机上,对应的服务器端1002-1、客户端1002-2和计算装置2000-2可集成在相同的虚拟机或物理机上,以此类推,对应的服务器端1001-n、客户端1002-n和计算装置2000-n可集成在相同的虚拟机或物理机上。
应注意:在根据本发明的另一示例性实施例的用于执行机器学习的分布式系统中,每个计算装置2000为了执行关于机器学习模型的算法,可在本地使用与其集成为一体的对应的客户端1001所保存的参数,也可在需要使用其他客户端1001所维护的参数时,与所述其他客户端1001进行交互以得到执行关于机器学习模型的算法所需的参数。
作为示例,参数服务器1000可按照单个键对应于多个值的形式来保存具有相同键的多个键值对。具体说来,每一个机器学习模型会对应一套键值对,在这套键值对中,不同键值对的键各不相同,每个键对应各自的值,参数服务器1000在保存多个机器学习模型的参数时,将具有相同键的对应于不同机器学习模型的键值对合并保存为单个键对应于多个值的形式,从而避免了在同时存储多个机器学习模型的参数时存储开销呈线性增长。如图4所示,机器学习模型A对应一套键值对,其中至少包括键k1、k2、k3、…、km,分别对应值v11、v12、v13、…、v1m;机器学习模型B对应另一套键值对,其中至少包括键k1、k2、k3、…、km,分别对应值v21、v22、v23、…、v2m,其中,m为大于1的整数,可以看出,两套键值对之中的至少一部分键值对具有完全相同的键,因此,根据本发明的示例性实施例,参数服务器1000可按照单个键对应于多个值的形式来保存具有相同键的所述至少一部分键值对,例如,保存为键k1对应于值v11和v21两者的形式。
作为示例,当参数服务器1000包括至少一个服务器端1001和多个客户端1002时,每个服务器端1001可按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
作为示例,当参数服务器1000包括多个服务器端1001时,可将键相同的键值对保存在同一参数服务器端1001中,以使服务器端1001能够按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
根据本发明的示例性实施例,服务器端1001按照单个键对应于多个值的形式来保存具有相同键的多个键值对,不仅能够减少存储开销,还能够避免在接收到参数操作指令之后重复查找相同键,从而有效减少服务器端1001在接收到参数操作指令之后查找所涉及的参数的运算量。
作为示例,参数服务器1000可使用映射(Map)数据结构来存储键值对。作为示例,当参数服务器1000包括至少一个服务器端1001和多个客户端1002时,每个服务器端1001可使用映射(Map)数据结构来存储键值对。
作为示例,参数服务器1000可按照数据分片(shard)来存储键值对,从而提高参数服务器1000对参数进行读写操作的效率。作为示例,当参数服务器1000包括至少一个服务器端1001和多个客户端1002时,每个服务器端1001可按照数据分片来存储键值对。此外,作为示例,可针对每一个数据分片内的键值对,使用映射数据结构来进行存储。
作为示例,客户端1002与对应的计算装置2000之间针对每个算法,可采用单独的句柄(handler)来进行交互。参照图5,计算装置2000所执行的关于机器学习模型的算法可不与对应的客户端1002直接进行交互,每个算法可通过一个单独的句柄与对应的客户端1002进行交互,例如,每个算法可通过对应的句柄向客户端1002发送pull操作请求、push操作请求、wait操作请求等参数操作请求,客户端1002也将与参数操作请求对应的参数操作结果发送到对应的句柄,算法可从句柄获知参数操作结果。由于关于机器学习模型的算法只需和句柄交互,因此,对于所述分布式系统的使用而言:同一计算装置2000执行的关于机器学习模型的算法彼此之间相对独立执行、并无影响,是纯透明的。
图6示出根据本发明示例性实施例的利用分布式系统来执行机器学习的方法的流程图。所述方法涉及的步骤可由之前描述的分布式系统中的计算装置和/或参数服务器(例如,参数服务器1000;或者,服务器端1001和客户端1002)来执行,例如,可由计算装置和/或参数服务器根据预先设定的配置来执行,其中,所述分布式系统中的参数服务器用于维护多个机器学习模型的参数,其中,所述参数具有键值对的形式;所述分布式系统中的多个计算装置被配置为并行地执行关于所述多个机器学习模型的训练算法。
参照图6,在步骤S100中,参数服务器将计算装置为了执行关于机器学习模型的训练算法而需要读取的参数提供给所述计算装置。
在步骤S200中,所述计算装置利用读取的参数来执行所述训练算法。
在步骤S300中,所述参数服务器根据所述计算装置执行所述训练算法的结果来更新所述机器学习模型的参数。
作为示例,在计算装置为了执行关于至少一个机器学习模型的训练算法而与参数服务器进行的关于所述算法所涉及的参数的交互过程中,相关参数操作指令中的相同键可被压缩和/或合并。
作为示例,所述参数服务器可按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
本领域技术人员应该理解,在针对机器学习样本对机器学习模型进行训练的过程中,计算装置需要从本地或外部获取作为机器学习样本的数据记录。此外,在针对大量机器学习样本对机器学习模型进行训练的过程中,往往需要多次重复执行步骤S100-S300。步骤S100到S300所涉及的操作已经参照图1到图5进行了详细描述,这里将不再赘述相关细节。
图7示出根据本发明的另一示例性实施例的利用分布式系统来执行机器学习的方法的流程图。所述方法涉及的步骤可由之前描述的分布式系统中的计算装置和/或参数服务器(例如,参数服务器1000;或者,服务器端1001和客户端1002)来执行,例如,可由计算装置和/或参数服务器根据预先设定的配置来执行,其中,所述分布式系统中的参数服务器用于维护多个机器学习模型的参数,其中,所述参数具有键值对的形式;所述分布式系统中的多个计算装置被配置为并行地执行关于所述多个机器学习模型的预估算法。
参照图7,在步骤S110中,参数服务器将计算装置为了执行关于机器学习模型的预估算法而需要读取的参数提供给所述计算装置。
在步骤S210中,所述计算装置利用读取的参数来执行所述预估算法。
作为示例,在计算装置为了执行关于至少一个机器学习模型的预估算法而与参数服务器进行的关于所述算法所涉及的参数的交互过程中,相关参数操作指令中的相同键可被压缩和/或合并。
作为示例,所述参数服务器可按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
本领域技术人员应该理解,在针对数据记录执行机器学习模型的预估(或测试)的过程中,需要从本地或外部获取用于预估的数据记录。此外,在针对大量数据记录执行机器学习模型的预估的过程中,往往需要多次重复执行步骤S110和S210。步骤S110和S210所涉及的操作已经参照图1到图5进行了详细描述,这里将不再赘述相关细节。
此外,应该理解,图6和图7示出的根据本发明示例性实施例的利用分布式系统来执行机器学习的方法可以同时执行。
图8示出根据本发明示例性实施例的客户端向服务器端请求计算装置为了执行关于机器学习模型的算法而需要读取的参数的方法的流程图。所述方法可在步骤S100和/或步骤S110之前来执行。
这里,参数服务器可包括至少一个服务器端和多个客户端,其中,客户端与计算装置一一对应,并且,对应的客户端和计算装置集成为一体,其中,所述至少一个服务器端用于保存所述多个机器学习模型的参数;每个客户端用于与一个或多个服务器端之间传送关于至少一个机器学习模型的算法所涉及的参数的参数操作指令,其中,与所述每个客户端对应的计算装置被配置为执行所述关于至少一个机器学习模型的算法。
参照图8,在步骤S400中,每个客户端从对应的计算装置接收所述关于至少一个机器学习模型的算法所涉及的参数的参数操作请求。
根据本发明的示例性实施例,每个计算装置在执行机器学习算法的过程中会向其对应的客户端请求获取和/或更新算法参数,这里,所述参数会分布地保存在一个或多个服务器端。为此,客户端在接收到任何参数操作请求之后,会将其拆分为与各个服务器端对应的参数操作请求部分,并将拆分后的各个部分保存在相应的队列中。例如,可针对每一个服务器端设置相应的队列。
在步骤S500中,针对保存所述参数的一个或多个服务器端分别生成与所述参数操作请求相应的参数操作指令。
作为示例,客户端每次生成参数操作指令所基于的参数操作请求可以是队列中缓存的各个部分,即,从该客户端上一次生成参数操作指令之后,到本次生成参数操作指令之前,从对应的计算装置接收到的针对相应服务器端的至少一个参数操作请求部分。作为示例,可每隔预定时间段执行一次生成参数操作指令的操作;也可每接收到预定数量的参数操作请求执行一次生成参数操作指令的操作。此外,作为示例,也可根据网络状况和/或服务器端的运行状态来确定每次执行生成参数操作指令的操作的时机。应该理解,也可根据其他预定策略来确定每次执行生成参数操作指令的操作的时机。
由于基于各个队列来分别生成与各个服务器端对应的参数操作指令,因此,考虑到每个队列中缓存有与至少一个机器学习算法相关的参数操作请求,相应生成的参数操作指令可基于相同或不同类型的参数操作请求,这些参数操作请求可针对相同或不同的机器学习算法。相应地,作为示例,在生成的参数操作指令中,相同键可被压缩和/或合并。
在步骤S600中,将生成的参数操作指令分别传送到所述一个或多个服务器端。
图9示出根据本发明示例性实施例的客户端从服务器端获取计算装置需要读取的参数的方法的流程图。作为示例,该方法可对应于步骤S100和/或步骤S110,在步骤S600之后被相应执行。具体说来,所述一个或多个服务器端在接收到所述每个客户端在步骤S600传送的参数操作指令之后,响应于接收到的参数操作指令对所述参数执行相应的操作,并返回与所述参数的参数操作结果相应的参数操作指令,其中,在返回的参数操作指令中,相同键可被压缩和/或合并。
参照图9,在步骤S111中,所述每个客户端从所述一个或多个服务器端接收与所述参数的参数操作结果相应的参数操作指令。
在步骤S112中,基于接收到的参数操作指令生成与所述参数操作请求之中的每一个对应的参数操作结果。
在步骤S113中,将生成的参数操作结果传送到对应的计算装置。
例如,客户端可从对应的计算装置接收关于算法A的pull操作请求1(所涉及的参数的键为k1-k100)和关于算法B的push操作请求2(所涉及的参数的键为k20-k80),其中,键为k1-k50的参数保存在服务器端1001-1,键为k51-k100的参数保存在服务器端1001-2,根据本发明的示例性实施例,在按照预定策略将针对上述两个参数操作请求来生成参数操作指令的情况下,客户端1002可先根据pull操作请求1和push操作请求2所涉及的参数确定服务器端1001-1和服务器端1001-2,然后针对服务器端1001-1生成与pull操作请求1和push操作请求2相应的关于键为k1-k50的参数的参数操作指令C(这里,参数操作指令C可指示对算法A对应的机器学习模型的键为k1-k50的参数执行pull操作,对算法B对应的机器学习模型的键为k20-k50的参数执行push操作),并且,在该参数操作指令中,相同键k20-k50被合并和/或压缩;相应地,针对服务器端1001-2生成与pull操作请求1和push操作请求2相应的关于键为k51-k100的参数的参数操作指令D(这里,参数操作指令D可指示对算法A对应的机器学习模型的键为k51-k100的参数执行pull操作,对算法B对应的机器学习模型的键为k51-k80的参数执行push操作),并且,在该参数操作指令中,相同键k51-k80被合并和/或压缩。服务器端1001-1和服务器端1001-2分别响应于接收到的参数操作指令C和D对相应的参数执行相应的操作,并返回参数操作指令C’(这里,参数操作指令C’可指示针对算法A对应的机器学习模型的键为k1-k50的参数的pull操作结果,针对算法B对应的机器学习模型的键为k20-k50的参数的push操作结果)和参数操作指令D’(这里,参数操作指令D’可指示针对算法A对应的机器学习模型的键为k51-k100的参数的pull操作结果,针对算法B对应的机器学习模型的键为k51-k80的参数的push操作结果),其中,在参数操作指令C’和D’中,相同键被合并和/或压缩。客户端基于接收到的参数操作指令C’和D’分别生成与pull操作请求1和push操作请求2相应的参数操作结果1’(即,针对算法A对应的机器学习模型的键为k1-k100的参数的pull操作结果)和2’(即,针对算法B对应的机器学习模型的键为k20-k80的参数的push操作结果)。这里,应注意,参与合并的参数操作请求不仅可来自不同的算法,而且可来自相同的算法。此外,在每个参数操作请求内部,也可进行相同键的合并和/或压缩。
根据本发明示例性实施例的用于执行机器学习的分布式系统及其方法能够有效减少在同时进行关于多个机器学习模型的训练和/或预估时参数服务器的网络开销。进一步地,还能够有效减少参数服务器的内存开销和运算量。
根据本发明示例性实施例的用于执行机器学习的分布式系统及其方法尤其适用于模型参数调优、多用户共享集群执行机器学习任务等同时训练的多个机器学习模型的参数之间存在至少部分重叠的key的情况。
应理解,根据本发明示例性实施例的分布式系统中的参数服务器、计算装置或组成它们的装置或单元等组成部分可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些组成部分可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。当它们以软件、固件、中间件或微代码实现时,用于执行相应操作的程序代码或者代码段可以存储在诸如存储介质的计算机可读介质中,使得处理器可通过读取并运行相应的程序代码或者代码段来执行相应的操作。此外,这些组成部分所实现的一个或多个功能也可由物理实体设备(例如,计算机器等)中的组件来统一执行。
应注意,根据本发明示例性实施例的分布式系统可完全依赖计算机程序的运行来实现相应的功能,即,各个组成部分在计算机程序的功能架构中与各步骤相应,使得整个系统通过专门的软件包(例如,lib库)而被调用,以实现相应的功能。
虽然已表示和描述了本发明的一些示例性实施例,但本领域技术人员应该理解,在不脱离由权利要求及其等同物限定其范围的本发明的原理和精神的情况下,可以对这些实施例进行修改。
Claims (10)
1.一种用于执行机器学习的分布式系统,包括:
参数服务器,用于维护多个机器学习模型的参数,其中,所述参数具有键值对的形式;以及
多个计算装置,被配置为并行地执行关于所述多个机器学习模型的算法,其中,所述算法为关于机器学习模型的训练算法或关于机器学习模型的预估算法,
其中,所述参数服务器将计算装置为了执行关于机器学习模型的训练算法而需要读取的参数提供给所述计算装置,以使所述计算装置利用读取的参数来执行所述训练算法,并且,所述参数服务器根据所述计算装置执行所述训练算法的结果来更新所述机器学习模型的参数;并且/或者,所述参数服务器将计算装置为了执行关于机器学习模型的预估算法而需要读取的参数提供给所述计算装置,以使所述计算装置利用读取的参数来执行所述预估算法,
其中,所述参数服务器包括至少一个服务器端和多个客户端,其中,客户端与计算装置一一对应,并且,对应的客户端和计算装置集成为一体,其中,所述至少一个服务器端用于保存所述多个机器学习模型的参数;每个客户端用于与一个或多个服务器端之间传送关于至少一个机器学习模型的算法所涉及的参数的参数操作指令,其中,与所述每个客户端对应的计算装置被配置为执行关于所述至少一个机器学习模型的算法,
其中,在所述参数操作指令中,相同键被压缩和/或合并。
2.根据权利要求1所述的分布式系统,其中,服务器端、客户端与计算装置一一对应,并且,对应的服务器端、客户端和计算装置集成为一体。
3.根据权利要求1所述的分布式系统,其中,所述每个客户端从对应的计算装置接收关于所述至少一个机器学习模型的算法所涉及的参数的参数操作请求,针对保存所述参数的一个或多个服务器端分别生成与所述参数操作请求相应的参数操作指令,并将生成的参数操作指令分别传送到所述一个或多个服务器端。
4.根据权利要求3所述的分布式系统,其中,所述每个客户端从所述一个或多个服务器端接收与所述参数的参数操作结果相应的参数操作指令,基于接收到的参数操作指令生成与所述参数操作请求之中的每一个对应的参数操作结果,并将生成的参数操作结果传送到对应的计算装置。
5.根据权利要求1所述的分布式系统,其中,所述至少一个服务器端按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
6.根据权利要求1所述的分布式系统,其中,客户端与对应的计算装置之间针对每个算法,采用单独的句柄来进行交互。
7.一种利用分布式系统来执行机器学习的方法,其中,所述分布式系统中的参数服务器用于维护多个机器学习模型的参数,其中,所述参数具有键值对的形式;所述分布式系统中的多个计算装置被配置为并行地执行关于所述多个机器学习模型的算法,其中,所述算法为关于机器学习模型的训练算法或关于机器学习模型的预估算法,所述方法包括:
所述参数服务器将计算装置为了执行关于机器学习模型的训练算法而需要读取的参数提供给所述计算装置,所述计算装置利用读取的参数来执行所述训练算法,所述参数服务器根据所述计算装置执行所述训练算法的结果来更新所述机器学习模型的参数;
并且/或者,所述参数服务器将计算装置为了执行关于机器学习模型的预估算法而需要读取的参数提供给所述计算装置,所述计算装置利用读取的参数来执行所述预估算法,
其中,所述参数服务器包括至少一个服务器端和多个客户端,其中,客户端与计算装置一一对应,并且,对应的客户端和计算装置集成为一体,其中,所述至少一个服务器端用于保存所述多个机器学习模型的参数;每个客户端用于与一个或多个服务器端之间传送关于至少一个机器学习模型的算法所涉及的参数的参数操作指令,其中,与所述每个客户端对应的计算装置被配置为执行关于所述至少一个机器学习模型的算法,其中,在所述参数操作指令中,相同键被压缩和/或合并。
8.根据权利要求7所述的方法,其中,所述每个客户端通过执行以下处理来与所述一个或多个服务器端之间传送关于所述至少一个机器学习模型的算法所涉及的参数的参数操作指令:
所述每个客户端从对应的计算装置接收关于所述至少一个机器学习模型的算法所涉及的参数的参数操作请求;
针对保存所述参数的一个或多个服务器端分别生成与所述参数操作请求相应的参数操作指令;
将生成的参数操作指令分别传送到所述一个或多个服务器端。
9.根据权利要求8所述的方法,其中,所述每个客户端还通过执行以下处理来与所述一个或多个服务器端之间传送关于所述至少一个机器学习模型的算法所涉及的参数的参数操作指令:
所述每个客户端从所述一个或多个服务器端接收与所述参数的参数操作结果相应的参数操作指令;
基于接收到的参数操作指令生成与所述参数操作请求之中的每一个对应的参数操作结果;
将生成的参数操作结果传送到对应的计算装置。
10.根据权利要求7所述的方法,其中,所述至少一个服务器端按照单个键对应于多个值的形式来保存具有相同键的多个键值对。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811206263.2A CN109447274B (zh) | 2017-08-30 | 2017-08-30 | 用于执行机器学习的分布式系统及其方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710764323.1A CN107622310B (zh) | 2017-08-30 | 2017-08-30 | 用于执行机器学习的分布式系统及其方法 |
CN201811206263.2A CN109447274B (zh) | 2017-08-30 | 2017-08-30 | 用于执行机器学习的分布式系统及其方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710764323.1A Division CN107622310B (zh) | 2017-08-30 | 2017-08-30 | 用于执行机器学习的分布式系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109447274A true CN109447274A (zh) | 2019-03-08 |
CN109447274B CN109447274B (zh) | 2021-02-09 |
Family
ID=61088402
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811206263.2A Active CN109447274B (zh) | 2017-08-30 | 2017-08-30 | 用于执行机器学习的分布式系统及其方法 |
CN201710764323.1A Active CN107622310B (zh) | 2017-08-30 | 2017-08-30 | 用于执行机器学习的分布式系统及其方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710764323.1A Active CN107622310B (zh) | 2017-08-30 | 2017-08-30 | 用于执行机器学习的分布式系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109447274B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472747A (zh) * | 2019-08-16 | 2019-11-19 | 第四范式(北京)技术有限公司 | 用于执行多机器学习任务的分布式系统及其方法 |
US11954611B2 (en) | 2020-08-27 | 2024-04-09 | International Business Machines Corporation | Tensor comparison across a distributed machine learning environment |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111079942B (zh) * | 2017-08-30 | 2023-03-24 | 第四范式(北京)技术有限公司 | 执行机器学习的分布式系统及其方法 |
CN108985459A (zh) * | 2018-05-30 | 2018-12-11 | 华为技术有限公司 | 训练模型的方法和装置 |
CN108924187B (zh) * | 2018-06-07 | 2020-05-08 | 北京百度网讯科技有限公司 | 基于机器学习的任务处理方法、装置和终端设备 |
CN109754090A (zh) * | 2018-12-27 | 2019-05-14 | 第四范式(北京)技术有限公司 | 支持执行多机器学习模型预测服务的分布式系统及方法 |
CN110188884A (zh) * | 2019-05-14 | 2019-08-30 | 深圳极视角科技有限公司 | 一种数据处理方法及推理平台 |
CN110909875B (zh) * | 2019-11-22 | 2022-12-23 | 北京百度网讯科技有限公司 | 共享编码器生成方法、装置及电子设备 |
CN111680799B (zh) * | 2020-04-08 | 2024-02-20 | 北京字节跳动网络技术有限公司 | 用于处理模型参数的方法和装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077183A (zh) * | 2012-12-14 | 2013-05-01 | 北京普泽天玑数据技术有限公司 | 一种分布式顺序表的数据导入方法及其系统 |
CN104714852A (zh) * | 2015-03-17 | 2015-06-17 | 华中科技大学 | 一种适用于分布式机器学习的参数同步优化方法及其系统 |
CN105184152A (zh) * | 2015-10-13 | 2015-12-23 | 四川中科腾信科技有限公司 | 一种移动终端数据处理方法 |
CN105912500A (zh) * | 2016-03-30 | 2016-08-31 | 百度在线网络技术(北京)有限公司 | 机器学习模型生成方法和装置 |
CN105956021A (zh) * | 2016-04-22 | 2016-09-21 | 华中科技大学 | 一种适用于分布式机器学习的自动化任务并行的方法及其系统 |
CN106156810A (zh) * | 2015-04-26 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 通用机器学习算法模型训练方法、系统和计算节点 |
CN106294762A (zh) * | 2016-08-11 | 2017-01-04 | 齐鲁工业大学 | 一种基于学习的实体识别方法 |
CN106713303A (zh) * | 2016-12-19 | 2017-05-24 | 北京启明星辰信息安全技术有限公司 | 一种恶意域名检测方法及系统 |
WO2017084016A1 (zh) * | 2015-11-16 | 2017-05-26 | 华为技术有限公司 | 模型参数融合方法及装置 |
CN106815644A (zh) * | 2017-01-26 | 2017-06-09 | 北京航空航天大学 | 机器学习方法和从节点 |
CN107025205A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种分布式系统中的训练模型的方法及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8849725B2 (en) * | 2009-08-10 | 2014-09-30 | Yahoo! Inc. | Automatic classification of segmented portions of web pages |
US9390376B2 (en) * | 2013-10-15 | 2016-07-12 | Lockheed Martin Corporation | Distributed machine learning intelligence development systems |
CN103745225A (zh) * | 2013-12-27 | 2014-04-23 | 北京集奥聚合网络技术有限公司 | 分布式ctr预测模型训练的方法和系统 |
-
2017
- 2017-08-30 CN CN201811206263.2A patent/CN109447274B/zh active Active
- 2017-08-30 CN CN201710764323.1A patent/CN107622310B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077183A (zh) * | 2012-12-14 | 2013-05-01 | 北京普泽天玑数据技术有限公司 | 一种分布式顺序表的数据导入方法及其系统 |
CN104714852A (zh) * | 2015-03-17 | 2015-06-17 | 华中科技大学 | 一种适用于分布式机器学习的参数同步优化方法及其系统 |
CN106156810A (zh) * | 2015-04-26 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 通用机器学习算法模型训练方法、系统和计算节点 |
CN105184152A (zh) * | 2015-10-13 | 2015-12-23 | 四川中科腾信科技有限公司 | 一种移动终端数据处理方法 |
WO2017084016A1 (zh) * | 2015-11-16 | 2017-05-26 | 华为技术有限公司 | 模型参数融合方法及装置 |
CN107025205A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种分布式系统中的训练模型的方法及设备 |
CN105912500A (zh) * | 2016-03-30 | 2016-08-31 | 百度在线网络技术(北京)有限公司 | 机器学习模型生成方法和装置 |
CN105956021A (zh) * | 2016-04-22 | 2016-09-21 | 华中科技大学 | 一种适用于分布式机器学习的自动化任务并行的方法及其系统 |
CN106294762A (zh) * | 2016-08-11 | 2017-01-04 | 齐鲁工业大学 | 一种基于学习的实体识别方法 |
CN106713303A (zh) * | 2016-12-19 | 2017-05-24 | 北京启明星辰信息安全技术有限公司 | 一种恶意域名检测方法及系统 |
CN106815644A (zh) * | 2017-01-26 | 2017-06-09 | 北京航空航天大学 | 机器学习方法和从节点 |
Non-Patent Citations (4)
Title |
---|
CHI-OU CHEN ET AL: "Machine Learning-Based Configuration Parameter Tuning on Hadoop System", 《2015 IEEE INTERNATIONAL CONGRESS ON BIG DATA》 * |
SUYOG GUPTA ET AL: "Model Accuracy and Runtime Tradeoff in Distributed Deep Learning: A Systematic Study", 《2016 IEEE 16TH INTERNATIONAL CONFERENCE ON DATA MINING (ICDM)》 * |
唐黎哲等: "以LDA为例的大规模分布式机器学习系统分析", 《计算机应用》 * |
李培: "基于参数服务器的分布式机器学习研究", 《硕士学位论文》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472747A (zh) * | 2019-08-16 | 2019-11-19 | 第四范式(北京)技术有限公司 | 用于执行多机器学习任务的分布式系统及其方法 |
US11954611B2 (en) | 2020-08-27 | 2024-04-09 | International Business Machines Corporation | Tensor comparison across a distributed machine learning environment |
Also Published As
Publication number | Publication date |
---|---|
CN107622310B (zh) | 2019-03-26 |
CN107622310A (zh) | 2018-01-23 |
CN109447274B (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107622310B (zh) | 用于执行机器学习的分布式系统及其方法 | |
CN107729353A (zh) | 用于执行机器学习的分布式系统及其方法 | |
CN107609652B (zh) | 执行机器学习的分布式系统及其方法 | |
Mishra et al. | Esp: A machine learning approach to predicting application interference | |
Cunha Jr et al. | Uncertainty quantification through the Monte Carlo method in a cloud computing setting | |
CN107679625B (zh) | 针对数据记录执行机器学习的分布式系统及其方法 | |
CN105718364B (zh) | 一种云计算平台中计算资源能力动态评估方法 | |
CN109074284A (zh) | 用于按比例增减资源的方法和系统、以及计算机程序产品 | |
CN106959894B (zh) | 资源分配方法和装置 | |
CN110472747A (zh) | 用于执行多机器学习任务的分布式系统及其方法 | |
CN110069502A (zh) | 基于Spark架构的数据均衡分区方法及计算机存储介质 | |
CN107169513A (zh) | 控制数据使用顺序的分布式机器学习系统及其方法 | |
CN110502323A (zh) | 一种云计算任务实时调度方法 | |
CN106201839A (zh) | 一种业务对象的信息加载方法和装置 | |
US20230254214A1 (en) | Control apparatus, virtual network assignment method and program | |
Sinclair et al. | Hindsight learning for mdps with exogenous inputs | |
Rosas et al. | Improving performance on data-intensive applications using a load balancing methodology based on divisible load theory | |
Cucinotta et al. | Optimum VM placement for NFV infrastructures | |
Seybold et al. | The impact of the storage tier: A baseline performance analysis of containerized dbms | |
US9529688B2 (en) | Performance evaluation device and performance evaluation method | |
Wang et al. | Smart build targets batching service at Google | |
Groenda et al. | Improving IaaS cloud analyses by black-box resource demand modeling | |
CN106209493B (zh) | 一种对互联网服务系统进行流量跟踪的系统与方法 | |
Ibrahim et al. | Presence: Performance metrics models for cloud saas web services | |
JP2006301852A (ja) | 計算資源運用管理装置およびシステム |
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 |