发明内容
本申请实施例提供了一种标签确定的方法及设备,用以利用少量的标签已确定的节点设备确定大量的标签待确定的节点设备。
为此,本申请采用以下技术手段:
本申请实施例提供了一种标签确定的方法,应用于包括基于整体同步并行计算模型BSP架构的多个节点设备的系统中,该方法包括:
当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;
所述当前节点设备根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;
所述当前节点设备判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;
当判断结果为是时,所述当前节点设备将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。
优选的,所述当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,具体包括:
所述当前节点设备接收标签已确定的节点设备发送的标签更新消息,其中,所述标签更新消息中携带的标签类型和标签值是所述当前节点设备根据所述标签已确定的节点设备与所述标签待确定的节点设备的相似度和阻尼系数得到的。
优选的,所述当前节点设备将所述更新后的标签设置为所述标签待确定的节点设备的确定标签后,所述方法还包括:
所述当前节点设备将所述标签待确定的节点设备的状态设置为标签已确定的节点设备,并不再对所述确定标签进行更新。
优选的,所述方法还包括:
当所述当前节点设备判断所述标签待确定的节点设备在更新前和更新后的标签值的残差不小于预设的收敛系数时,则再次接收标签更新消息。
优选的,所述方法还包括:
如果所述标签待确定的节点设备不存在当前的标签,所述当前节点设备设置所述标签待确定的节点设备的当前的标签为标签类型为任意类型,标签值为1的标签。
优选的,当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,具体包括:
当一个标签待确定的节点设备成为标签已确定的节点设备时,所述标签已确定的节点设备分别根据自身所对应的各边的边属性,对自身已确定的标签值进行处理;
所述标签已确定的节点设备沿各边向其他标签待确定的节点设备发送携带有相对应的处理后的标签值的标签更新消息。
优选的,所述当前节点设备接收标签更新消息之前,还包括:
所述系统的当前节点设备启动,进行初始化操作,并在有向图中读入标签已确定的节点设备的标签和标签待确定的节点设备的标签。
另一方面,本申请实施例还提供了一种节点设备,应用于包括基于整体同步并行计算模型BSP架构的多个节点设备的系统中,其特征在于,包括:
接收模块,用于接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;
更新模块,用于根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;
判断模块,用于判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;
设置模块,用于在所述判断模块的判断结果为是时,将所述更新模块更新后的标签设置为所述标签待确定的节点设备的确定标签。
优选的,所述接收模块,具体用于:
接收标签已确定的节点设备发送的标签更新消息,其中,所述标签更新消息中携带的标签类型和标签值是所述接收模块根据所述标签已确定的节点设备与所述标签待确定的节点设备的相似度和阻尼系数得到的。
优选的,所述设置模块,还用于:
将所述标签待确定的节点设备的状态设置为标签已确定的节点设备,并不再对所述确定标签进行更新。
优选的,所述接收模块,还用于:
当所述判断模块判断所述标签待确定的节点设备在更新前和更新后的标签值的残差不小于预设的收敛系数时,则再次接收标签更新消息。
优选的,所述节点设备,还包括:
所述设置模块,还用于在所述标签待确定的节点设备不存在当前的标签时,设置所述标签待确定的节点设备的当前的标签为标签类型为任意类型,标签值为1的标签。
另一方面,本申请实施例还提供了一种标签确定的方法,应用于包括基于BSP架构的多个节点设备的系统中,所述多个节点设备中包括至少一个原始节点,其特征在于,该方法包括:
所述原始节点启动,进行标签初始化操作,并读入所述系统中的标签已确定的节点设备的标签和标签待确定的节点设备的标签;
所述原始节点接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;
所述节点设备根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;
所述原始节点判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;
当判断结果为是时,所述原始节点将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。
优选的,所述原始节点接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,还包括:
当一个标签待确定的节点设备成为标签已确定的节点设备时,所述标签已确定的节点设备分别根据自身所对应的各边的边属性,对自身已确定的标签值进行处理;
所述标签已确定的节点设备沿各边向其他标签待确定的节点设备发送携带有相对应的处理后的标签值的标签更新消息。
另一方面,本申请实施例还提供了一种系统,包括基于BSP架构的多个节点设备,所述多个节点设备中包括至少一个原始节点,其他节点设备分别为标签已确定的节点设备的标签和标签待确定的节点设备,
所述原始节点,具体用于:
在启动时,进行标签初始化操作,并读入所述系统中的标签已确定的节点设备的标签和标签待确定的节点设备的标签;
接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;
根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;
判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;
当判断结果为是时,将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。
优选的,当一个标签待确定的节点设备成为标签已确定的节点设备时,所述标签已确定的节点设备分别根据自身所对应的各边的边属性,对自身已确定的标签值进行处理;
所述标签已确定的节点设备沿各边向其他标签待确定的节点设备发送携带有相对应的处理后的标签值的标签更新消息。
与现有技术相比,本申请的上述实施例具有以下有益技术效果:
本申请实施例中,当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;所述当前节点设备根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;所述当前节点设备判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;当判断结果为是时,所述当前节点设备将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。通过应用本申请所提出的技术方案,利用少量的标签已确定的节点设备快速实现标签待确定的节点设备的确定,从而提高了标签节点确定的效率,实现对于十亿级别的海量图的分钟级别的标签确定。
具体实施方式
下面结合附图对本申请的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
本申请实施例运用分布式的基于BSP(Bulk Synchronous Parallel,整体同步并行计算模型)程序的架构的节点设备中,在上亿级别的海量数据集实现相应的标签传播算法,下面首先对BSP架构进行简单介绍。
BSP架构基于BSP程序,由一个master(管理端)进行协调,所有worker(处理端)同步执行实现数据计算,数据从输入的队列中读取,架构如图1所示,BSP程序可以实现并行计算,准则是同步(bulk synchrony),其独特之处在于超步(super step)概念的引入,在具体的处理过程中,client(客户端)向各worker输入数据,然后通知master启动处理,master协调各worker进行迭代处理,直到所有worker都得到迭代处理结果之后,master通知client处理结束,client从各worker中提取数据,得到最终处理结果。
一个BSP程序同时具有水平和垂直两个方面的结构。从垂直上看,一个BSP程序由一系列串行的超步组成,这种结构类似于一个串行程序结构,进程串行执行局部计算;从水平上看,在一个超步中,所有的进程并行执行局部计算。一个超步可分为三个阶段:
(1)本地计算阶段,每个处理器只对存储本地内存中的数据进行本地计算。
(2)全局通信阶段,对任何非本地数据进行操作。
(3)栅栏同步阶段,等待所有通信行为的结束。
下面结合具体的实施例对利用BSP设备实现标签确定的技术方案进行详细说明:
参见图2所示,为本申请实施例提供的标签确定的方法流程图,应用于包括基于BSP架构的多个节点设备的系统中,包括以下步骤:
步骤S201、当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值。
节点设备接收标签更新消息之前,需要初始化,在有向图中读入标签已确定的节点设备的标签和标签待确定的节点设备的标签。标签包含标签类型和对应的标签值。
在具体的应用场景中,如果所述标签待确定的节点设备不存在当前的标签,则设置所述标签待确定的节点设备的当前的标签为标签类型为任意类型,标签值为1的标签,需要注意的是,本申请中标签节点采用归一化方法,即标签节点的各种标签类型对应的权重之和为1,例如,a(X:1.0),b(X:0.5,Y:0.5)。
在接收到标签已确定的节点设备发送的标签更新消息时,标签更新消息包含标签类型和标签值,并将所述标签更新请求消息发送给标签待确定的节点设备。
具体地,标签更新消息中携带的标签类型和标签值是当前节点设备根据标签已确定的节点设备与标签待确定的节点设备的相似度得到的。如图5所示,其中,a(X:1.0)为标签已确定的节点设备,标签已确定的节点设备a通过当前节点设备向待确定节点b和c发送标签更新消息,其中,a与b在X标签类型上的相似度为0.8,a与c在X标签类型上的相似度为0.2,则当前节点设备接收到的发送给标签待确定的节点设备b的标签更新请求消息中携带的标签类型为X,标签值为0.8,当前节点设备接收到的发送给标签待确定的节点设备c的标签更新请求消息中携带的标签类型为X,标签值为0.2。
需要注意的是,现有技术中相似度的计算方式非常多,本申请中不再详细说明。这里的相似度是指:标签已确定的节点设备与标签待确定的节点设备之间在标签已确定的节点设备的标签类型上的相似度,例如,图3中,以相似度作为边,构建标签已确定的节点设备和标签待确定的节点设备的复杂网络图,进而可以将标签待确定的节点设备打上合适的标签。
在本步骤之前,还包括:当前节点设备为原始节点时,所述系统的原始节点启动,进行初始化操作,并在有向图中读入标签已确定的节点设备的标签和标签待确定的节点设备的标签。
步骤S202、当前节点设备根据所述标签类型和标签值以及所述标签待确定的节点设备当前的标签更新所述标签待确定的节点设备的标签。
需要说明的是,标签在进行传播时,会产生阻尼系数alpha,本申请中预设了全局参量阻尼系数alpha。更新后的标签节点的标签=标签更新请求消息中携带的标签值×阻尼系数alpha+标签待确定的节点设备当前的标签值×(1-阻尼系数alpha)。
进一步的,计算完更新后的标签中各标签类型值后,需要将标签中的标签类型值进行归一化,得到每个标签类型所对应的标签值的比例。
步骤S203、当前节点设备判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数。
本申请中提供了一种具体的应用场景下的残差的计算方法:残差=标签待确定的节点设备更新后的与更新前的标签在不同种标签类型下标签值的差值的绝对值之和。残差的计算方法并不限于本申请提供的上述方法,本申请中不再一一列举,只要能够得到残差的方法,就在本申请的保护范围之内。
当判断结果为是时,执行步骤S204;
当判断结果为否时,则再次接收标签更新消息,继续执行步骤S201-S204的步骤,直到残差小于收敛系数。
步骤S204、所述当前节点设备将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。
当判断结果为是时,更新后的标签即为该标签待确定的节点设备的确定标签,并将所述标签待确定的节点设备的状态设置为标签已确定的节点设备,并不再对所述确定标签进行更新。可以通过不再接收来自其他节点的标签更新请求消息,也可以是当前节点设备不再根据再次收到的更新请求消息对该节点进行标签确定过程。
需要指出的是,当一个标签待确定的节点设备成为标签已确定的节点设备时,所述标签已确定的节点设备分别根据自身所对应的各边的边属性,对自身已确定的标签值进行处理,所述标签已确定的节点设备沿各边向其他标签待确定的节点设备发送携带有相对应的处理后的标签值的标签更新消息。
优选地,在确定标签时,可以将确定标签全部输出,也可以选择值最大的标签类型作为该确定标签节点的标签,例如,如果a的确定标签为(X:0.8,Y:0.2),则也可以将该节点的确定标签输出为(X:1.0)。
运用本申请的上述实施例提出的方法,在10亿条边,4亿个节点的复杂网络中,当运行环境为1000台机器,每台机器使用16G内容,采用阻尼系数=0.8,收敛系数=0.000001,可以达到在36分钟内确定全部标签节点的高效处理。
与现有技术相比,本申请的上述实施例具有以下有益技术效果:
本申请实施例中,当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;所述当前节点设备根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;所述当前节点设备判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;当判断结果为是时,所述当前节点设备将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。通过应用本申请所提出的技术方案,可以利用少量的标签已确定的节点设备快速实现标签待确定的节点设备的确定,从而提高了标签节点确定的效率,实现对于十亿级别的海量图的分钟级别的标签确定。
下面结合具体的实施例,对更新标签以及残差的计算方法,进行详细的解释说明:
例1,当标签待确定的节点设备a(X:1.0)接收到标签更新请求消息,其中携带的标签类型为X,对应的标签值为0.2,且阻尼系数为0.8时:
根据标签节点的计算方法,更新后的标签节点的标签=标签更新请求消息中携带的标签类型对应的标签值×阻尼系数alpha+标签待确定的节点设备当前的标签类型对应的标签值×(1-阻尼系数alpha)。
即a更新后的标签值为0.2×0.8+1×(1-0.2)=0.96,归一化后,a更新后的标签为(X:1.0)。
例2,当标签待确定的节点设备a(X:0.6,Y:0.4)接收到标签更新请求消息,其中携带的标签类型为X和Y,X对应的标签值为0.2,Y对应的标签值为0.4,且阻尼系数为0.8时:
根据标签节点的计算方法,更新后的标签节点的标签=标签更新请求消息中携带的标签类型对应的标签值×阻尼系数alpha+标签待确定的节点设备当前的标签类型对应的标签值×(1-阻尼系数alpha)。
则a更新后的标签类型X对应的标签值为0.2×0.8+0.6×(1-0.8)=0.28,标签类型Y对应的标签值为0.4×0.8+0.4×(1-0.8)=0.64,经过归一化后,更新后a的标签为(X:7/23,Y:16/23)。
根据残差的计算方法,残差=标签待确定的节点设备更新后的与更新前的标签在不同种标签类型下标签值的差值的绝对值之和。
则例1的残差=1.0-1.0=0,
例2的残差=|0.6-7/23|+|0.4-16/23|=0.59130,
如果预设的收敛系数epsilon为0.000001,则例1中的残差小于收敛系数epsilon,则将待确定节点a更新后的标签设置为节点a的确定标签,同时将节点a的状态设置为标签已确定的节点设备,例2中的残差大于收敛系数epsilon,由于残差大于收敛系数eplison,则该节点a继续执行步骤S201-S204的步骤,即迭代对节点a的标签进行更新,直到残差小于收敛系数eplison,则确定节点a的标签,同时将节点a的状态设置为标签已确定的节点设备。
与现有技术相比,本申请的上述实施例具有以下有益技术效果:
本申请实施例中,当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;所述当前节点设备根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;所述当前节点设备判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;当判断结果为是时,所述当前节点设备将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。通过应用本申请所提出的技术方案,可以利用少量的标签已确定的节点设备快速实现标签待确定的节点设备的确定,从而提高了标签节点确定的效率,实现对于十亿级别的海量图的分钟级别的标签确定。
如图4所示,为实施例三所提出的节点设备的结构示意图,应用于包括基于整体同步并行计算模型BSP架构的系统中,包括:
接收模块31,用于接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;
更新模块32,用于根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;
判断模块33,用于判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;
设置模块34,用于在所述判断模块33的判断结果为是时,将所述更新模块32更新后的标签设置为所述标签待确定的节点设备的确定标签。
所述接收模块31具体用于:接收标签已确定的节点设备发送的标签更新消息,其中,所述标签更新消息中携带的标签类型和标签值是所述接收模块根据所述标签已确定的节点设备与所述标签待确定的节点设备的相似度和阻尼系数得到的。
所述设置模块34还用于:将所述标签待确定的节点设备的状态设置为标签已确定的节点设备,并不再对所述确定标签进行更新。
所述接收模块31还用于,当所述判断模块33判断所述标签待确定的节点设备在更新前和更新后的标签值的残差不小于预设的收敛系数时,则再次接收标签更新消息。
所述设置模块34,还用于在所述标签待确定的节点设备不存在当前的标签时,设置所述标签待确定的节点设备的当前的标签为标签类型为任意类型,标签值为1的标签。
进一步的,本申请实施例还提出了一种系统,包括基于整体同步并行计算模型BSP架构的多个节点设备,所述多个节点设备中包括至少一个原始节点,其他节点设备分别为标签已确定的节点设备的标签和标签待确定的节点设备。
在该系统中,所述节点设备,具体用于:
在启动时,进行标签初始化操作,并读入所述系统中的标签已确定的节点设备的标签和标签待确定的节点设备的标签;
接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;
根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;
判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;
当判断结果为是时,将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。
进一步的,在该系统中,当一个标签待确定的节点设备成为标签已确定的节点设备时,所述标签已确定的节点设备分别根据自身所对应的各边的边属性,对自身已确定的标签值进行处理,所述标签已确定的节点设备沿各边向其他标签待确定的节点设备发送携带有相对应的处理后的标签值的标签更新消息。
与现有技术相比,本申请的上述实施例具有以下有益技术效果:
本申请实施例中,当前节点设备接收标签更新消息,并将所述标签更新消息发送给标签待确定的节点设备,其中,所述标签更新消息中携带标签类型和标签值;所述当前节点设备根据所述标签类型和标签值,以及所述标签待确定的节点设备当前的标签,更新所述标签待确定的节点设备的标签;所述当前节点设备判断所述标签待确定的节点设备在更新前和更新后的标签值的残差是否小于预设的收敛系数;当判断结果为是时,所述当前节点设备将所述更新后的标签设置为所述标签待确定的节点设备的确定标签。通过应用本申请所提出的技术方案,利用少量的标签已确定的节点设备快速实现标签待确定的节点设备的确定,从而提高了标签节点确定的效率,实现对于十亿级别的海量图的分钟级别的标签确定。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
本领域技术人员可以理解,实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本申请的保护范围。