一种协同计算方法及系统转让专利

申请号 : CN202010440473.9

文献号 : CN111338808B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨颢

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本说明书公开了一种协同计算方法及系统。所述方法应用于包括中转模块、至少一个前置计算模块和至少一个后置计算模块的系统中,前置计算模块与后置计算模块配置于不同设备中。所述方法包括:任一前置计算模块获得任一计算任务的输入数据后,执行前置处理以得到中间计算结果;确定该计算任务所属的主题类型;构建包含中间计算结果和主题类型标识的主题消息,将主题消息传输至中转模块;中转模块接收各前置计算模块发送的主题消息,根据主题类型与后置计算模块的对应关系,将特定主题类型标识的主题消息转发至对应的后置计算模块;任一后置计算模块接收到主题消息后,通过解析得到中间计算结果,针对中间计算结果执行后置处理以完成计算任务。

权利要求 :

1.一种协同计算方法,应用于包括中转模块、至少两个前置计算模块和至少两个后置计算模块的系统中,前置计算模块与后置计算模块配置于不同设备中,分别用于执行同一计算任务的不同阶段,所述系统用于执行不同的主题类型的计算任务,且预先设定各主题类型与多个后置计算模块的对应关系,任一计算任务需要的算力大于任一所述设备的算力;所述方法包括:任一前置计算模块获得任一计算任务的输入数据后,执行前置处理以得到中间计算结果;以及,确定该计算任务所属的主题类型;构建包含中间计算结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块;

中转模块接收各前置计算模块发送的主题消息,根据预设的主题类型与后置计算模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的后置计算模块;

任一后置计算模块接收到主题消息后,对主题消息进行解析得到中间计算结果,并针对中间计算结果执行后置处理以完成计算任务。

2.根据权利要求1所述的方法,为不同的前置计算模块分别单独配置中转模块,或者为不同的前置计算模块配置统一的中转模块。

3.根据权利要求1所述的方法,至少一个前置计算模块与中转模块配置于同一设备中,或者每个前置计算模块都与中转模块配置于不同设备中。

4.根据权利要求3所述的方法,在前置计算模块与中转模块配置于不同设备的情况下,所述将所述主题消息传输至中转模块,具体包括:前置计算模块基于轻量通信协议将所述主题消息传输至中转模块。

5.根据权利要求1所述的方法,所述将具有特定主题类型标识的主题消息转发至对应的后置计算模块,具体包括:基于轻量通信协议,将具有特定主题类型标识的主题消息转发至对应的后置计算模块。

6.根据权利要求1所述的方法,所述确定该计算任务所属的主题类型,具体包括:根据该计算任务的输入数据或者中间计算结果确定该计算任务所属的主题类型。

7.根据权利要求1所述的方法,所述构建包含中间计算结果以及主题类型标识的主题消息,具体包括:构建包含编码格式为JSON格式的中间计算结果以及主题类型标识的主题消息。

8.一种人机交互方法,应用于包括中转模块、至少两个识别模块和至少两个渲染模块的系统中,识别模块与渲染模块配置于不同设备中,分别用于执行同一交互任务的识别阶段和渲染阶段,所述系统用于执行不同的主题类型的交互任务,且预先设定各主题类型与多个渲染模块的对应关系,任一交互任务需要的算力大于任一所述设备的算力;所述方法包括:任一识别模块获得任一交互任务的输入数据后,通过深度学习计算得到识别结果;以及,确定该交互任务所属的主题类型;构建包含识别结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块;

中转模块接收各识别模块发送的主题消息,根据预设的主题类型与渲染模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的渲染模块;

任一渲染模块接收到主题消息后,对主题消息进行解析得到识别结果,并针对识别结果执行渲染处理以展示渲染结果,完成交互任务。

9.一种协同计算系统,包括中转模块、至少两个前置计算模块和至少两个后置计算模块,前置计算模块与后置计算模块配置于不同设备中,分别用于执行同一计算任务的不同阶段,所述系统用于执行不同的主题类型的计算任务,且预先设定各主题类型与多个后置计算模块的对应关系,任一计算任务需要的算力大于任一所述设备的算力;所述系统包括:前置计算模块:用于获得任一计算任务的输入数据后,执行前置处理以得到中间计算结果;以及,确定该计算任务所属的主题类型;构建包含中间计算结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块;

中转模块:用于接收各前置计算模块发送的主题消息,根据预设的主题类型与后置计算模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的后置计算模块;

后置计算模块:用于接收到主题消息后,对主题消息进行解析得到中间计算结果,并针对中间计算结果执行后置处理以完成计算任务。

10.根据权利要求9所述的系统,不同的前置计算模块单独配置有中转模块,或者不同的前置计算模块配置有统一的中转模块。

11.根据权利要求9所述的系统,至少一个前置计算模块与中转模块配置于同一设备中,或者每个前置计算模块都与中转模块配置于不同设备中。

12.根据权利要求11所述的系统,在前置计算模块与中转模块配置于不同设备的情况下,所述前置计算模块具体用于:基于轻量通信协议将所述主题消息传输至中转模块。

13.根据权利要求9所述的系统,所述中转模块具体用于:

基于轻量通信协议,将具有特定主题类型标识的主题消息转发至对应的后置计算模块。

14.根据权利要求9所述的系统,所述前置计算模块具体用于:

根据该计算任务的输入数据或者中间计算结果确定该计算任务所属的主题类型。

15.根据权利要求9所述的系统,所述前置计算模块具体用于:

构建包含编码格式为JSON格式的中间计算结果以及主题类型标识的主题消息。

16.一种人机交互系统,包括中转模块、至少两个识别模块和至少两个渲染模块,识别模块与渲染模块配置于不同设备中,分别用于执行同一交互任务的识别阶段和渲染阶段,所述系统用于执行不同的主题类型的交互任务,且预先设定各主题类型与多个渲染模块的对应关系,任一交互任务需要的算力大于任一所述设备的算力;所述系统包括:识别模块:用于获得任一交互任务的输入数据后,通过深度学习计算得到识别结果;以及,确定该交互任务所属的主题类型;构建包含识别结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块;

中转模块:用于接收各识别模块发送的主题消息,根据预设的主题类型与渲染模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的渲染模块;

渲染模块:用于接收到主题消息后,对主题消息进行解析得到识别结果,并针对识别结果执行渲染处理以展示渲染结果,完成交互任务。

说明书 :

一种协同计算方法及系统

技术领域

[0001] 本说明书实施例涉及计算机应用技术领域,尤其涉及一种协同计算方法及系统。

背景技术

[0002] 目前,在实际的业务处理过程中,存在许多具有实时处理需求的计算任务,需要在较短的时间内得到计算结果。以指纹解锁场景为例,获取指纹信息后需要在较短的时间内得到验证结果并进行解锁,时间需要短于密码解锁耗费的时间,因此具有实时处理的需求。
[0003] 当数据处理量及业务复杂度提升后,仅利用单一设备处理全部的计算任务,会面临算力不足、多任务竞争计算资源等问题。例如,在进行人机交互时,需要尽量减小交互的时延,提升用户体验。而对于较为复杂的人机交互操作,设备需要获取到多个图像,进行姿势识别等复杂计算操作,同时还需要根据计算结果进行高精度渲染操作,将渲染结果投射到屏幕上。其中,复杂计算操作和高精度渲染操作都十分耗费算力,如果在单一设备上处理,将难以满足低时延的要求,从而对用户体验造成影响。

发明内容

[0004] 为了满足计算任务的实时处理需求,本说明书公开了一种协同计算方法及系统。技术方案如下:
[0005] 一种协同计算方法,应用于包括中转模块、至少一个前置计算模块和至少一个后置计算模块的系统中,前置计算模块与后置计算模块配置于不同设备中,分别用于执行同一计算任务的不同阶段;所述方法包括:
[0006] 任一前置计算模块获得任一计算任务的输入数据后,执行前置处理以得到中间计算结果;以及,确定该计算任务所属的主题类型;构建包含中间计算结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块;
[0007] 中转模块接收各前置计算模块发送的主题消息,根据预设的主题类型与后置计算模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的后置计算模块;
[0008] 任一后置计算模块接收到主题消息后,对主题消息进行解析得到中间计算结果,并针对中间计算结果执行后置处理以完成计算任务。
[0009] 一种协同计算系统,包括中转模块、至少一个前置计算模块和至少一个后置计算模块,前置计算模块与后置计算模块配置于不同设备中,分别用于执行同一计算任务的不同阶段;所述系统包括:
[0010] 前置计算模块:用于获得任一计算任务的输入数据后,执行前置处理以得到中间计算结果;以及,确定该计算任务所属的主题类型;构建包含中间计算结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块;
[0011] 中转模块:用于接收各前置计算模块发送的主题消息,根据预设的主题类型与后置计算模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的后置计算模块;
[0012] 后置计算模块:用于接收到主题消息后,对主题消息进行解析得到中间计算结果,并针对中间计算结果执行后置处理以完成计算任务。
[0013] 上述技术方案中,增加了用于完成计算任务的设备,提高了计算系统的算力,同时采用发布订阅模式进行数据传输,降低了数据传输的时延,能够满足计算任务的实时处理需求。

附图说明

[0014] 为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0015] 图1是本说明书实施例提供的一种具体的用于实现上述协同计算方案的协同计算系统的结构示意图;
[0016] 图2是本说明书实施例提供的一种协同计算方法的流程示意图;
[0017] 图3是本说明书实施例提供的一种协同计算方法中任一前置计算模块的处理流程示意图;
[0018] 图4是本说明书实施例提供的一种协同计算方法中中转模块的处理流程示意图;
[0019] 图5是本说明书实施例提供的一种协同计算方法中任一后置计算模块的处理流程示意图;
[0020] 图6是本说明书实施例提供的一种人机交互方法的流程示意图;
[0021] 图7是本说明书实施例提供的一种具体的用于实现上述人机交互方案的人机交互系统的结构示意图;
[0022] 图8是用于配置本说明书实施例方法的一种设备的结构示意图。

具体实施方式

[0023] 目前,在实际的业务处理过程中,存在许多具有实时处理需求的计算任务,需要在较短的时间内得到计算结果。
[0024] 例如,在手机解锁的场景下,指纹解锁的方式需要在获取指纹信息后尽快得到指纹验证结果并进行解锁,这一过程的时间需要短于输入密码解锁耗费的时间,才能方便用户的操作。因此,指纹解锁这一计算任务具有实时处理的需求。
[0025] 如果具有实时处理需求的计算任务比较简单,仅使用单一设备,可以依靠足够的算力将完成计算任务的时间缩短,满足实时处理需求。
[0026] 但是,当数据处理量及业务复杂度提升后,如果依然仅使用单一设备处理全部的计算任务,不仅会因为单一设备算力不足,使得完成计算任务的时间较长,而且还会产生不同的计算任务竞争存储资源、计算资源等的问题,进一步造成更大的时延,从而无法满足计算任务的实时处理需求。
[0027] 例如,在进行人机交互时,需要尽量减小交互的时延,提升用户体验,因此人机交互任务具有实时处理需求。而对于复杂的人机交互任务,设备需要获取到用户的多个图像,首先利用深度学习进行人体检测、姿势识别等复杂计算操作,再根据复杂计算操作的计算结果,对模型或画面进行高精度渲染操作,最后将渲染操作的渲染结果投射到屏幕上展示给用户,完成一次人机交互。其中,复杂计算操作和高精度渲染操作都十分耗费算力,并且都需要竞争中央处理器(Central Processing Unit,CPU)和图形处理器(Graphics Processing Unit,GPU)的计算资源。如果在单一设备上处理,将难以满足低时延的要求,从而对用户体验造成影响。
[0028] 为了解决上述问题,本说明书实施例提供的方案,首先考虑利用多个设备分别处理计算任务的不同阶段以满足计算任务的实时处理需求的方法。
[0029] 其中,复杂计算任务可以被分解为多个阶段,由不同的物理设备进行处理,一方面,将复杂的计算任务分派给不同的物理设备,可以有效缓解单一设备算力不足的问题、减少了不同阶段的计算对计算资源和存储资源的竞争。另一方面,由于不同阶段的任务对于系统资源的需求不同、使用方式不同,因此这种分派处理的方式,可以针对不同阶段任务的实际处理需求对设备进行优化配置,在多任务处理场景中,这种方式更能充分发挥设备性能,从而在整体上提升处理效率。例如,对于特定的渲染任务,可以对处理渲染任务的物理设备进行算法或结构上的优化,使得该物理设备能够更快地处理渲染任务,从而提升处理效率。
[0030] 然而,上述方案由于使用了多个不同的物理设备,还需要考虑不同的物理设备之间的数据传输问题,也就是说,除了考虑计算所需的时间外,还需要考虑数据传输所耗费的时间。因此,为了满足计算任务的实时处理需求,需要尽量减少在不同物理设备之间传输数据所耗费的时间。
[0031] 在进行数据传输时,普通采用的方案是:不同物理设备之间通过请求应答模式传输数据,即在传输数据之前物理设备先向其他物理设备发送请求建立连接,连接建立成功后传输数据,数据传输完成后断开连接。其中连接建立和断开所耗费的时间较长,同时造成连接资源的浪费。尤其在面对设备之间的高频数据传输时,频繁地建立和断开连接,进一步增加了连接所耗费的时间和连接资源的浪费。
[0032] 因此,本说明书实施例提供了一种协同计算方案,采用发布订阅模式,即物理设备将数据异步传输到对应于同一计算任务的其他物理设备上,并且传输过程中不需要单独建立或断开连接,相对于传统的请求应答模式,本说明书实施例提供的协同计算方法可以减少数据传输耗费的时间,避免了连接资源的浪费,同时由于数据的传输方式是异步传输,因此能够适应高频的数据传输,并行传输数据。
[0033] 为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
[0034] 下面结合说明书附图对本说明书实施例作进一步详细描述。
[0035] 下面首先对本说明书实施例提供的一种用于实现上述协同计算方案的计算系统进行说明。该计算系统中可以包括中转模块、至少一个前置计算模块和至少一个后置计算模块。前置计算模块将数据通过中转模块异步传输到对应于同一计算任务的后置计算模块上。
[0036] 如图1所示,为本说明书实施例提供的一种具体的用于实现上述协同计算方案的协同计算系统的结构示意图,其中计算系统包括三个前置计算模块、一个中转模块和三个后置计算模块,为三个前置计算模块统一配置一个中转模块。
[0037] 需要说明的是,图1所示出的仅是一种具体的计算系统的结构示意图,其中的模块数量,不应理解为对本说明书方案的限定。
[0038] 在详细介绍计算系统中各个模块的作用之前,首先对计算任务和发布订阅模式进行解释。
[0039] 对于单一的计算任务而言,计算系统中提供了前置计算模块和后置计算模块,因此该计算任务可以被拆分成两个阶段,每个阶段由不同的物理设备执行,这两个阶段可以具有时序关系。例如,只有完成了前一个阶段,得到中间计算结果,才能根据中间计算结果开始执行后一个阶段,两个阶段都完成后,可以得到最终的计算结果,完成该计算任务。
[0040] 进一步,对于多个计算任务而言,每个计算任务都可以被拆分成两个阶段,此时需要对不同的物理设备分配不同的计算任务。
[0041] 为了整体统筹不同的计算任务阶段,以快速完成计算任务,可以采用发布订阅模式。在发布订阅模式中,可以由中转模块作为代理,根据“主题”确定计算任务的分配。
[0042] “主题”用于标识中间计算结果对应的计算任务,以便于物理设备根据主题确定中间计算结果所对应的计算任务;另外,主题可以被物理设备订阅,以便于物理设备接收该主题标识的中间计算结果,完成该主题对应的计算任务。
[0043] 例如,某一物理设备执行某一计算任务的前一阶段,得到中间计算结果。由于采用发布订阅模式,该物理设备无需知道后一阶段的执行设备,只需要将中间计算结果添加上该计算任务所属的主题,发送到代理即可,该物理设备可以执行下一个计算任务。
[0044] 而中转模块作为代理在接收到该中间计算结果后,根据添加的主题,可以查询预存的主题与物理设备的对应关系,其中包含了物理设备及其订阅的主题。查询到物理设备后,将该中间计算结果分配到查询的物理设备,由该物理设备根据中间计算结果执行该计算任务的后一阶段,以得到最终计算结果,完成该计算任务。进而,中转模块作为代理可以根据主题将计算任务分配到不同的物理设备上。
[0045] 基于上述对计算任务和发布订阅模式的说明,本说明书提供的协同计算系统具体实现方式如下:
[0046] 1、前置计算模块
[0047] 1)前置计算模块可以用于获取任一计算任务的输入数据,执行前置处理得到中间计算结果。
[0048] 其中,输入数据的文件类型可以是图片、视频、文档等等,前置处理具体可以是人脸识别、关节点估计、人体检测等等,本说明书对此不作限定,只要符合计算任务的需求即可。
[0049] 中间计算结果的编码格式可以是JSON格式、二进制格式或者XML格式。其中,JSON格式可读性高,同时编码带宽小,能够节省传输成本,减小传输时延。
[0050] 2)前置计算模块还可以用于确定计算任务所属的主题类型。
[0051] 主题类型的确定,可以根据计算任务、输入数据或者中间计算结果进行确定。例如,可以根据计算任务的种类、输入数据的类型或者中间计算结果的格式确定主题类型。
[0052] 具体实现可以是前置计算模块预存有主题类型与计算任务的对应关系,例如,前置计算模块预存有主题类型标识和输入数据类型的对应关系,如果输入数据的类型为图片,可以确定主题类型标识为1。主题类型标识的具体形式本说明书不作限定。
[0053] 3)前置计算模块还可以用于构建包含中间计算结果和主题类型标识的主题消息,将该主题消息传输至中转模块。
[0054] 其中,主题消息的具体格式可以包括主题和负载。主题可以用于标识消息对应的计算任务,以便于中转模块转发到对应的后置计算模块,内容可以是主题类型标识;负载可以用于传输数据,内容可以是中间计算结果。
[0055] 为了便于理解,下面利用一个具体的实例对前置计算模块进行解释。
[0056] 例如,前置计算模块需要执行身份验证的计算任务中人脸识别的阶段。前置计算模块获取到图片数据,对图片数据进行人脸识别得到识别结果,同时,根据图片数据类型,利用预存的数据类型与主题类型的对应关系,确定计算任务所属的主题类型标识为“身份验证”。最后利用识别结果和“身份验证”构建主题消息,将该主题消息传输到中转模块。
[0057] 2、中转模块
[0058] 1)中转模块可以用于接收各前置计算模块发送的主题消息
[0059] 由于中转模块可以配置于不同的前置计算模块,因此接收不同的前置计算模块发送的主题消息可以是并行进行的。
[0060] 例如,中转模块保存有多个端口,每个端口对应于一个前置计算模块。当不同的前置计算模块向中转模块发送主题消息时,中转模块可以通过不同的端口接收到全部的主题消息,不同端口间的数据传输互不干扰。
[0061] 2)根据预设的主题类型与后置计算模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的后置计算模块
[0062] 中转模块可以预存有主题类型和后置计算模块的对应关系,具体可以是主题类型标识和后置计算模块标识的对应关系。例如,中转模块存储有包含主题类型标识和后置计算模块标识的表格,可以通过查表的方式根据主题类型标识确定对应的后置计算模块。
[0063] 当然,一个主题类型可以对应于多个后置计算模块,一个后置计算模块也可以对应多个主题类型。
[0064] 例如,为了确保计算的稳定性,防止单一的后置计算模块计算失败,可以使用多个后置计算模块订阅同一个主题类型,计算同一计算任务,如果某一个后置计算模块计算失败,可以使用其他计算成功的后置计算模块的计算结果。
[0065] 同时,单个后置计算模块也可以执行多个计算任务,以便于支持更多的功能。例如,为了同时支持“通过人脸识别进行身份验证”和“通过虹膜识别进行身份验证”两种功能,后置计算模块可以订阅这两种计算任务所属的主题类型。
[0066] 此外,主题类型和后置计算模块的对应关系可以进行手动更新,也可以由设备自动进行更新,以便于更灵活地分配计算任务。
[0067] 其中,一种较为特殊的情况是主题类型和后置计算模块的对应关系可以由后置计算模块进行更新。
[0068] 例如,某一后置计算模块需要执行新的人体检测计算任务,可以向中转模块发送请求,请求中包含该后置计算模块标识和该计算任务所属的主题类型标识“人体检测”。中转模块接收到该请求后,可以将该后置计算模块标识和该主题类型标识添加到主题类型与后置计算模块的对应关系中。之后,中转模块可以将人体检测的计算任务发送到该后置计算模块中。
[0069] 由于中转模块在发送主题消息时,可能需要将一个主题消息发送到多个后置计算模块中,对于多个主题消息也需要发送到多个后置计算模块中,因此中转模块可以并行向多个后置计算模块发送主题消息。
[0070] 例如,中转模块保存有多个端口,每个端口对应于一个后置计算模块,可以通过不同的端口发送主题消息到不同的后置计算模块,不同端口间的数据传输互不干扰。
[0071] 需要注意的是,中转模块还可以并行地接收主题消息和发送主题消息。
[0072] 对于单个主题消息而言,中转模块需要先接收,再发送。而对于多个主题消息,中转模块可以并行地接收和发送,接收和发送的过程互不干扰。
[0073] 例如,中转模块可以在接收主题消息1、2、3的同时,也可以发送主题消息4、5、6。
[0074] 3、后置计算模块
[0075] 后置计算模块可以用于在接收到主题消息后,对主题消息进行解析得到中间计算结果,并针对中间计算结果执行后置处理以完成计算任务。
[0076] 后置计算模块可以直接从主题消息的负载中获取到中间计算结果。后置处理具体可以是“画面渲染”、“验证身份”或者“解锁”等等,本说明书对此不作限定,只要符合计算任务的需求即可。
[0077] 例如,对于“通过人脸识别进行身份验证”的计算任务,前置计算模块已经通过人脸识别得到识别结果,后置计算模块需要根据识别结果在数据库中查找数据,判断身份是否合法,从而得到计算结果为合法或不合法,完成计算任务。
[0078] 以上是对三种模块的详细描述,下面对模块之间的关系,即计算系统的具体架构实现方式进行描述。
[0079] 1)前置计算模块与后置计算模块之间:由于前置计算模块与后置计算模块并不直接进行数据传输,而是通过中转模块进行异步传输,因此,前置计算模块与后置计算模块之间并没有明确的数量关系,计算系统中前置计算模块的数量可以是一个或多个,后置计算模块的数量也可以是一个或多个,不同数量的前置计算模块和后置计算模块之间可以进行自由组合。
[0080] 例如,计算系统中可以包括一个前置计算模块和多个后置计算模块,也可以包括多个前置计算模块和一个后置计算模块。
[0081] 另外,前置计算模块与后置计算模块配置于不同的物理设备中,以使得整体计算系统的能够提供更高的算力。
[0082] 具体而言,任意一个前置计算模块都不会与任意一个后置计算模块配置于同一个物理设备中。对于单一物理设备而言,可以只配置一个或多个前置计算模块,也可以只配置一个或多个后置计算模块。
[0083] 2)前置计算模块与中转模块之间:由于每个前置计算模块都需要配置有中转模块,才能通过中转模块将数据异步传输到对应于同一计算任务的后置计算模块,因此,前置计算模块与中转模块之间可以是一对一,也可以是多对一。
[0084] 具体而言,中转模块的数量在本说明书中并不限定,可以为不同的前置计算模块分别单独配置中转模块,也可以为不同的前置计算模块配置统一的中转模块。为不同的前置计算模块配置统一的中转模块具体可以包括为全部的前置计算模块配置同一个中转模块,或者为部分前置计算模块配置同一个中转模块。
[0085] 例如,计算系统中可以包括多个前置计算模块和一个中转模块,所有的前置计算模块都向该中转模块发送主题消息;或者计算系统中可以包括相同数量的前置计算模块和中转模块,每个前置计算模块对应有单独的一个中转模块,每个前置计算模块向对应的中转模块发送主题消息。
[0086] 此外,前置计算模块可以与中转模块可以配置于同一设备中,或者不同设备中,对此本说明书并不限定。
[0087] 具体而言,至少一个前置计算模块与中转模块配置于同一设备中,或者每个前置计算模块都与中转模块配置于不同设备中。对于单一的物理设备而言,可以配置有一个或多个前置计算模块,或者一个中转模块,或者多个前置计算模块和一个中转模块。
[0088] 当某个前置计算模块与中转模块配置于同一设备时,该前置计算模块计算得到的中间计算结果可以直接传输给中转模块,进一步降低了数据传输的时延。
[0089] 而当前置计算模块与中转模块配置于不同设备时,该前置计算模块计算得到的中间计算结果可以基于轻量通信协议传输给中转模块,由于轻量通信协议中报文头部信息较少,因此数据传输量较小,也可以进一步降低数据传输的时延。
[0090] 当然,中转模块也可以基于轻量通信协议将数据传输给后置计算模块,进一步降低数据传输的时延。
[0091] 轻量通信协议可以具体是消息队列遥测传输协议(Message Queuing Telemetry Transport,MQTT)或者可扩展消息与存在协议(Extensible Messaging and Presence Protocol,XMPP)。
[0092] 3)计算任务的角度
[0093] 前置计算模块和后置计算模块分别用于执行同一计算任务的不同阶段,中转模块用于根据主题分配计算任务。
[0094] 对于单个计算任务而言,计算任务可以被划分为两个阶段,计算系统处理计算任务的流程可以解释为:前置计算模块对计算任务的输入数据进行前一阶段的处理得到中间计算结果,构建主题消息,将主题消息发送到中转模块;中转模块再将该主题消息发送到对应的后置计算模块中;后置计算模块针对该主题消息中的中间计算结果进行后一阶段的处理,得到最终计算结果,完成计算任务。计算系统对于单一计算任务的处理具有时序关系。
[0095] 而对于多个计算任务,计算系统可以并行处理,具体的流程可以解释为:
[0096] 前置计算模块将某一计算任务的中间计算结果发送到中转模块之后,无需等待后置计算模块完成该计算任务,可以直接开始处理下一个计算任务。不同的前置计算模块并行处理各自的计算任务。
[0097] 中转模块并行地执行以下两个操作:接收各前置计算模块发送的主题消息,向多个后置计算模块发送主题消息。
[0098] 后置计算模块根据接收到的主题消息进行后一阶段的处理,完成计算任务。不同的后置计算模块并行处理各自的计算任务。
[0099] 可见,三类模块针对多个计算任务,各自执行各自的分工,并行处理计算任务,彼此互不干扰,从而可以加快多个计算任务的处理时间,也能够适应高频的数据传输。
[0100] 此外,由于每一类模块可以执行各自的分工,因此,对于执行特定计算任务的计算模块,可以从设备或算法的角度进行专门的优化,从而减小计算任务的处理时间。例如,某一计算模块仅执行画面渲染的操作,因此,可以针对画面渲染对该计算模块进行算法优化,以便于该计算模块更快地得到渲染操作的计算结果。
[0101] 由于上述系统实施例采用了发布订阅模式,前置计算模块只将中间计算结果发送到中转模块,中转模块只将特定主题的消息发送到对应的后置计算模块,以完成计算任务,由于前置计算模块和中转模块传输数据的对象是固定的,因此可以长时间保存连接用于传输数据,无需单独建立或断开连接。
[0102] 同时由于发布订阅模式中,数据传输的方式是异步传输,因此前置计算模块与后置计算模块在计算多个计算任务时,可以各自进行数据处理,前置计算模块无需等待后置计算模块完成计算任务后再开始处理下一个计算任务,从而实现低时延的效果。这使得上述系统实施例可以应对高频的数据传输。
[0103] 因此,上述系统实施例能够减少数据传输的时间,通过增加设备来增加计算系统的算力,提升了计算任务的处理效率,减少计算任务从发起到完成的时延,避免连接资源的浪费,满足了计算任务的实时处理需求。
[0104] 基于上述提供的协同计算系统,本说明书实施例进一步提供相应的协同计算方法,该方法可以包括以下步骤:
[0105] 步骤1:任一前置计算模块获得任一计算任务的输入数据后,执行前置处理以得到中间计算结果;以及,确定该计算任务所属的主题类型;构建包含中间计算结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块。
[0106] 步骤2:中转模块接收各前置计算模块发送的主题消息,根据预设的主题类型与后置计算模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的后置计算模块。
[0107] 步骤3:任一后置计算模块接收到主题消息后,对主题消息进行解析得到中间计算结果,并针对中间计算结果执行后置处理以完成计算任务。
[0108] 由于本说明书实施例提供的协同计算方法中,对于同一个计算任务,前置计算模块、中转模块和后置计算模块的处理具有时序关系。
[0109] 而对于不同的多个计算任务,前置计算模块在将数据转发到中转模块后,就可以直接进行下一个计算任务的处理;中转模块在将数据转发到后置计算模块后,就可以直接进行下一个计算任务的处理;后置计算模块在完成一个计算任务后,就可以直接进行下一个计算任务的处理。即,对于不同的计算任务,前置计算模块、中转模块和后置计算模块的处理没有时序关系,可以并行执行。
[0110] 因此,下面将具体从单一计算任务的角度和三个模块各自的角度分别对本说明书实施例提供的协同计算方法进行描述。
[0111] 1、单一计算任务的角度
[0112] 如图2所示,为本说明书实施例提供的一种协同计算方法的流程示意图,应用于本说明书实施例提供的上述计算系统。
[0113] 协同计算方法的步骤具体可以包括:
[0114] S101:某一前置计算模块获得某一计算任务的输入数据后,执行前置处理以得到中间计算结果;以及,确定该计算任务所属的主题类型;构建包含该中间结果以及该主题类型标识的主题消息,将该主题消息传输至中转模块。
[0115] S102:中转模块接收S101中前置计算模块发送的主题消息,根据预设的主题类型与后置计算模块的对应关系,将该主题消息转发至对应的后置计算模块。
[0116] S103:某一后置计算模块接收到S102中的主题消息后,对该主题消息进行解析得到S101中前置计算模块得到的中间计算结果,并针对该中间计算结果执行后置处理以完成S101中的计算任务。
[0117] 为了进一步说明,下面通过一个具体的实例解释本说明书提供的协同计算方法。
[0118] 对于一个“通过人脸识别进行身份检测”的计算任务,可以拆分为“人脸识别”和“身份检测”两个阶段。
[0119] 某一前置计算模块获得该计算任务的图片数据后,对图片进行“人脸识别”得到识别结果,并确定该计算任务所属的主题类型,该主题类型的标识为“1”,再构建包含识别结果和“1”的主题消息。
[0120] 中转模块接收到该主题消息后,根据“1”查找主题类型与后置计算模块的对应关系表中对应的后置计算模块a,并将该主题消息发送到查找到的后置计算模块a。
[0121] 后置计算模块a接收到该主题消息后,获取该主题消息中的识别结果,根据识别结果进行“身份检测”,具体可以是在数据库中查找与识别结果相匹配的合法身份,如果能查找到,则身份合法,否则身份不合法。
[0122] 之后得到最终的计算结果为“身份合法”,完成计算任务。
[0123] 2、三个模块各自的角度
[0124] 如图3所示,为本说明书实施例提供的一种协同计算方法中任一前置计算模块的处理流程示意图,处理的步骤可以包括:
[0125] S201:获取任一计算任务的输入数据。
[0126] S202:根据输入数据执行前置处理以得到中间计算结果。
[0127] S203:确定计算任务所属的主题类型。
[0128] S204:构建包含S202中得到的中间计算结果以及S203中确定的主题类型标识的主题消息,并传输到中转模块。
[0129] 其中,当根据计算任务或输入数据确定主题类型时,S202和S203可以并行执行;当根据中间计算结果确定主题类型时,必须先执行S202,再执行S203。
[0130] 例如,获取计算任务的输入的图片数据后,可以并行地执行以下两个操作:一个是根据图片数据进行“人脸识别”,另一个是由于数据的类型是图片,可以通过查找预设的主题类型与输入数据类型的对应关系表,确定计算任务所属的主题类型为“1”。
[0131] 或者,获取计算任务输入的图片数据后,根据图片数据进行“人脸识别”,识别结果采用JSON格式编码,然后可以通过识别结果的编码格式,查找预设的主题类型与中间计算结果的编码格式的对应关系表,确定计算任务所属的主题类型为“2”。
[0132] 如图4所示,为本说明书实施例提供的一种协同计算方法中中转模块的处理流程示意图,处理的步骤可以包括:
[0133] S301:接收各前置计算模块发送的主题消息。
[0134] S302:根据预设的主题类型与后置计算模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的后置计算模块。
[0135] 如图5所示,为本说明书实施例提供的一种协同计算方法中任一后置计算模块的处理流程示意图,处理的步骤可以包括:
[0136] S401:接收到主题消息后,对主题消息进行解析得到中间计算结果。
[0137] S402:针对S401中得到的中间计算结果执行后置处理以完成计算任务。
[0138] 针对不同的计算任务,上述三类模块的处理可以各自执行,彼此之间互不干扰,没有时序关系。
[0139] 具体的步骤解释可以参见上述系统实施例,这里不再重复说明。
[0140] 下面结合人机交互这一具体应用场景,对本说明书所提供的技术方案进行说明。
[0141] 本说明书实施例还提供一种具体的人机交互方法,该人机交互方法中需要完成的人机交互任务包括两个阶段,一个阶段是针对输入的数据通过深度学习计算得到识别结果,输入数据具体可以是图像数据或视频数据,识别结果具体可以是人体识别结果、手势识别结果或者动作识别结果等等,另一个阶段是根据识别结果执行渲染处理,具体可以是对模型或者图像进行渲染,得到渲染结果,并展示给用户,完成一次人机交互。
[0142] 实际中的例子可以是通过人体动作进行屏幕的实时交互,通过人体的动作进行屏幕内容的切换,例如手臂向左挥动,屏幕的内容可以向左移动。具体可以是获取到多张图片数据,利用深度学习的方法进行动作识别,根据识别结果对屏幕内容进行渲染或者移动或者切换。
[0143] 如图6所示,为本说明书实施例提供的一种人机交互方法的流程示意图,应用于包括中转模块、至少一个识别模块和至少一个渲染模块的系统中,识别模块与渲染模块配置于不同设备中,分别用于执行同一交互任务的识别阶段和渲染阶段。
[0144] 人机交互方法的步骤具体可以包括:
[0145] S501:任一识别模块获得任一交互任务的输入数据后,通过深度学习计算得到识别结果;以及,确定该交互任务所属的主题类型;构建包含识别结果以及主题类型标识的主题消息,将该主题消息传输至中转模块。
[0146] S502:中转模块接收各识别模块发送的主题消息,根据预设的主题类型与渲染模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的渲染模块。
[0147] S503:任一渲染模块接收到主题消息后,对主题消息进行解析得到识别结果,并针对识别结果执行渲染处理以展示渲染结果,完成交互任务。
[0148] 其中,识别模块可以基于MQTT协议将主题消息传输至中转模块,中转模块可以基于MQTT协议将主题消息传输至渲染模块。由于MQTT协议天然支持发布订阅模式,同时属于轻量通信协议,报文头部信息较少,节省了传输成本,减少了数据传输耗费的时间。
[0149] 针对不同的交互任务,S501、S502和S503可以各自执行,彼此之间互不干扰。例如,交互任务1正在执行S501的步骤,而交互任务2、3在执行S502的步骤,交互任务4、5在执行S503的步骤。因此,本说明书并不限定S501、S502和S503的时序关系,即,对于不同的交互任务,S501、S502和S503并不一定按顺序执行。
[0150] 当然,对于同一个交互任务,S501、S502和S503可以按照顺序执行。具体解释如下:
[0151] 对于同一个交互任务:
[0152] 某一识别模块获得某一交互任务的输入数据后,通过深度学习计算得到识别结果;以及,确定该交互任务所属的主题类型;构建包含该识别结果以及该主题类型标识的主题消息,将该主题消息传输至中转模块。
[0153] 中转模块接收该主题消息,根据预设的主题类型与渲染模块的对应关系,将该主题消息转发至对应的渲染模块。
[0154] 某一渲染模块接收到该主题消息后,对该主题消息进行解析得到该识别结果,并针对该识别结果执行渲染处理以完成该交互任务。
[0155] 为了方便理解,利用通过人体动作进行屏幕的实时交互的交互任务进行解释:
[0156] 通过人体动作进行屏幕的实时交互的交互任务可以分为识别人体动作和屏幕渲染两个阶段。
[0157] 某一识别模块获取到多张图片数据,进行识别人体动作的处理,获得识别结果为“向左挥手”。根据图片数据类型,确定该交互任务所属的主题类型标识为“屏幕交互”,构建包含“屏幕交互”和“向左挥手”的主题消息,并将该主题消息发送到中转模块。
[0158] 中转模块根据“屏幕交互”确定对应的两个后置计算模块a和b,并将该主题消息分别发送到渲染模块a和b。
[0159] 渲染模块a和b分别根据该主题消息中的“向左挥手”,将屏幕中的内容向左移动,展示渲染效果给用户,完成交互任务。
[0160] 由于能够满足实时处理需求,对于用户而言,向左挥手之后的较短时间内,屏幕中的内容向左移动,交互时延较短,用户体验较好。
[0161] 并且,由于渲染操作较为复杂,可能导致渲染模块宕机,无法展示渲染效果。因此,可以采用渲染模块a和b处理同一交互任务,将渲染成功的渲染结果展示出来,能够尽量保证渲染效果及时展示给用户。
[0162] 通过上述人机交互方法实施例,可以通过增加多个设备和采用发布订阅模式传输数据,在增加算力的同时,减少数据传输的时延,从而满足人机交互任务的实时处理需求。
[0163] 另外,由于中转模块中预设的主题类型与渲染模块的对应关系中支持同一个计算任务对应多个渲染模块,因此多个渲染模块可以都用于人机交互,可以避免由于渲染的不稳定性导致的渲染模块无法展示渲染结果,提高用户体验。
[0164] 本说明书实施例还提供一种具体的人机交互系统,包括中转模块、至少一个识别模块和至少一个渲染模块,识别模块与渲染模块配置于不同设备中,分别用于执行同一交互任务的识别阶段和渲染阶段。
[0165] 如图7所示,为本说明书实施例提供的一种具体的用于实现上述人机交互方案的人机交互系统的结构示意图,其中计算系统包括一个识别模块、一个中转模块和三个渲染模块,为一个识别模块配置一个中转模块。
[0166] 需要说明的是,图7所示出的仅是一种具体的计算系统的结构示意图,其中的模块数量,不应理解为对本说明书方案的限定。
[0167] 人机交互系统具体可以包括:
[0168] 识别模块:用于获得任一交互任务的输入数据后,通过深度学习计算得到识别结果;以及,确定该交互任务所属的主题类型;构建包含识别结果以及主题类型标识的主题消息,将所述主题消息传输至中转模块;
[0169] 中转模块:用于接收各识别模块发送的主题消息,根据预设的主题类型与渲染模块的对应关系,将具有特定主题类型标识的主题消息转发至对应的渲染模块;
[0170] 渲染模块:用于接收到主题消息后,对主题消息进行解析得到识别结果,并针对识别结果执行渲染处理以展示渲染结果,完成交互任务。
[0171] 具体的模块解释可以参见上述人机交互方法实施例,这里不再重复说明。
[0172] 本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现一种协同计算方法中的前置计算模块的处理步骤、中转模块的处理步骤或者后置计算模块的处理步骤;或者实现一种人机交互方法中的识别模块的处理流程、中转模块的处理步骤或者渲染模块的处理步骤。
[0173] 其中,一种协同计算方法中的前置计算模块的处理步骤和中转模块的处理步骤可以在同一个计算机设备上实现,也可以在不同的计算机设备上实现。
[0174] 一种人机交互方法中的识别模块的处理步骤和中转模块的处理步骤可以在同一个计算机设备上实现,也可以在不同的计算机设备上实现。
[0175] 图8示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
[0176] 处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
[0177] 存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
[0178] 输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0179] 通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
[0180] 总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
[0181] 需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0182] 本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种协同计算方法中的前置计算模块的处理步骤、中转模块的处理步骤或者后置计算模块的处理步骤;或者实现一种人机交互方法中的识别模块的处理流程、中转模块的处理步骤或者渲染模块的处理步骤。
[0183] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0184] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
[0185] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0186] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0187] 以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护。