调度方法及相关装置转让专利

申请号 : CN201711467783.4

文献号 : CN109978149B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 不公告发明人

申请人 : 中科寒武纪科技股份有限公司

摘要 :

本申请实施例公开了一种调度方法及相关装置,其中方法基于包含多个计算装置的服务器,包括:接收M个运算请求;根据所述M个运算请求中每一运算请求的运算任务从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令;根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述M个运算请求对应的运算数据进行计算,得到M个最终运算结果;将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。本申请实施例,可选取与服务器中接收到的运算请求对应的计算装置进行运算,提高了服务器的运行效率。

权利要求 :

1.一种调度方法,其特征在于,所述方法基于包含多个计算装置的服务器,所述方法包括:接收M个运算请求,所述M个运算请求包括至少一个串行指令,所述M为正整数;

基于运算请求与目标计算装置的对应关系,从所述多个计算装置中选取与所述M个运算请求对应的至少一个目标计算装置,所述目标计算装置包括所述串行指令对应的计算装置,所述运算请求与目标计算装置的对应关系为所述目标计算装置中部署的神经网络模型与所述运算请求之间的对应关系,或所述目标计算装置与所述运算请求的属性信息之间的对应关系;

基于所述至少一个目标计算装置中每一目标计算装置执行对应的运算请求的运算,得到每一运算请求的多个中间运算结果,根据所述多个中间运算结果获取所述M个运算请求对应的M个最终运算结果;

将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备;

所述基于运算请求与目标计算装置的对应关系,从所述多个计算装置中选取与所述M个运算请求对应的至少一个目标计算装置,包括:若所述M大于1,且所述M个运算请求对应多个目标神经网络模型,从所述多个计算装置中选取与多个目标神经网络模型中每一目标神经网络模型对应的多个目标计算装置,所述多个目标神经网络模型中每一目标神经网络模型对应执行的串行指令为执行该目标计算装置对应的目标神经网络模型所对应的运算请求。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

等待第一预设时长,检测所述至少一个目标计算装置中每一目标计算装置是否得到对应的最终运算结果,若否,将所述未得到最终运算结果的目标计算装置作为延迟计算装置;

从所述多个计算装置的空闲计算装置中选取与所述延迟计算装置对应的运算请求对应的备用计算装置;

基于所述备用计算装置执行所述延迟计算装置对应的运算请求的运算。

3.根据权利要求2所述的方法,其特征在于,在所述基于所述备用计算装置执行所述延迟计算装置对应的运算请求之后,所述方法还包括:获取所述延迟计算装置和所述备用计算装置之间最先得到的最终运算结果;

向所述延迟计算装置和所述备用计算装置之间未得到最终运算结果的计算装置发送暂停指令。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

等待第二预设时长,检测所述延迟计算装置是否得到对应的最终运算结果,若否,将所述延迟计算装置作为故障计算装置,发送故障指令,所述故障指令用于告知运维人员所述故障计算装置发生故障,所述第二预设时长大于所述第一预设时长。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

每隔目标时间阈值,更新所述服务器的散列表。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:

获取指定神经网络模型集中每一指定神经网络模型的运算需求和所述多个计算装置中每一计算装置的硬件属性得到多个运算需求和多个硬件属性;

根据所述多个运算需求和所述多个硬件属性将所述指定神经网络模型集中每一指定神经网络模型对应的指定计算装置上部署对应的指定神经网络模型。

7.根据权利要求3-6任一项所述的方法,其特征在于,所述计算装置包括至少一个计算载体,所述计算载体包括至少一个计算单元,所述计算单元对训练的多层神经网络中一层或多层的输入数据与权值数据执行运算,或对正向运算的多层神经网络中一层或多层的输入数据与权值数据执行运算,所述运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。

8.根据权利要求7所述的方法,其特征在于,所述计算单元包括:主处理电路、分支处理电路与基础处理电路,所述主处理电路与分支处理电路连接,所述基础处理电路与分支处理电路连接,其中:所述主处理电路获取所述计算单元以外的数据,并将该数据划分成广播数据和分发数据,将所述广播数据以广播方式发送给所有分支处理电路,将所述分发数据选择性的分发给不同的分支处理电路;

所述分支处理电路在所述主处理电路与所述基础处理电路之间转发数据;

所述基础处理电路接收所述分支处理电路转发的广播数据和分发数据,并对该广播数据和分发数据执行运算得到运算结果,将该运算结果发送至所述分支处理电路;

所述主处理电路接收分支处理电路转发的所述基础处理电路的与运算结果,将该运算结果进行处理得到计算结果。

9.根据权利要求8所述的方法,其特征在于,所述主处理电路将所述广播数据以广播方式发送给所有分支处理电路,包括:所述主处理电路将所述广播数据以一次广播或多次广播发送给所有分支处理电路。

10.根据权利要求8所述的方法,其特征在于,所述基础处理电路对该广播数据和分发数据执行运算得到运算结果,包括:所述基础处理电路对该广播数据和分发数据执行内积运算、乘积运算或向量运算得到运算结果。

11.一种服务器,其特征在于,所述服务器包括多个计算装置,所述服务器还包括:用于执行如权利要求1-10任一项所述的方法的单元。

12.一种服务器,其特征在于,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行权利要求1-10任一项方法中的步骤的指令。

13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-10任一项所述的方法。

说明书 :

调度方法及相关装置

技术领域

[0001] 本申请涉及计算机技术领域,具体涉及一种调度方法及相关装置。

背景技术

[0002] 神经网络是目前许多人工智能应用的基础,随着神经网络的应用范围的进一步扩大,采用服务器或云计算服务对各种各样的神经网络模型进行存储,并针对用户提交的运算请求进行运算。面对众多的神经网络模型和大批量的请求,如何提高服务器的运算效率是本领域技术人员待解决的技术问题。

发明内容

[0003] 本申请实施例提出了一种调度方法及相关装置,可选取与服务器中接收到的运算请求对应的计算装置进行运算,提高了服务器的运行效率。
[0004] 第一方面,本申请实施例提供了一种调度方法,基于多个计算装置的服务器,所述方法包括:
[0005] 接收M个运算请求,所述M为正整数;
[0006] 从所述多个计算装置中选取与所述M个运算请求对应的至少一个目标计算装置;
[0007] 基于所述至少一个目标计算装置中每一目标计算装置执行对应的运算请求的运算,得到M个最终运算结果;
[0008] 将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。
[0009] 第二方面,本申请实施例提供了一种服务器,所述服务器包括多个计算装置,其中:
[0010] 接收单元,用于接收M个运算请求;
[0011] 调度单元,用于从所述多个计算装置中选取与所述M个运算请求对应的至少一个目标计算装置;
[0012] 运算单元,用于基于所述至少一个目标计算装置中每一目标计算装置执行对应的运算请求的运算,得到M个最终运算结果;
[0013] 发送单元,用于将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。
[0014] 第三方面,本申请实施例提供了另一种服务器,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于如第一方面中所描述的部分或全部步骤的指令。
[0015] 第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
[0016] 采用了上述的调度方法及相关装置之后,基于接收到的运算请求从服务器中包括的M个多个计算装置中选取执行M个运算请求的目标计算装置,并基于目标计算装置根据其对应的运算请求进行运算,并将每一运算请求对应的最终运算结果发送至对应的电子设备,即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的运算效率。

附图说明

[0017] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 其中:
[0019] 图1是本申请实施例提供的一种服务器的结构示意图;
[0020] 图1a是本申请实施例提供的一种计算单元的结构示意图;
[0021] 图1b是本申请实施例提供的一种主处理电路的结构示意图;
[0022] 图1c是本申请实施例提供的一种计算单元的数据分发示意图;
[0023] 图1d是本申请实施例提供的一种计算单元的数据回传示意图;
[0024] 图1e是本申请实施例提供的一种神经网络结构的运算示意图;
[0025] 图2是本申请实施例提供的一种调度方法的流程示意图;
[0026] 图3是本申请实施例提供的另一种服务器的结构示意图;
[0027] 图4是本申请实施例提供的另一种服务器的结构示意图。

具体实施方式

[0028] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0029] 应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0030] 还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0031] 还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0032] 如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0033] 本申请实施例提出了一种调度方法及相关装置,可选取与服务器中接收到的运算请求对应的计算装置进行运算,提高了服务器的运行效率。以下结合具体实施例,并参照附图,对本申请进一步详细说明。
[0034] 请参照图1,图1是本申请实施例提供的一种服务器的结构示意图。如图1所示,上述服务器包括多个计算装置,计算装置包括但不限于服务器计算机,还可以是个人计算机(personal computer,PC)、网络PC、小型计算机、大型计算机等。
[0035] 在本申请中,服务器中包含的每一计算装置之间通过有线或无线建立连接并传输数据,且每一计算装置包括至少一个计算载体,例如:中央处理器(Central Processing Unit,CPU)、图像处理器(graphics processing unit,GPU)、处理器板卡等。且本申请所涉及的服务器还可以是云服务器,为电子设备提供云计算服务。
[0036] 其中,每一计算载体可包括至少一个用于神经网络运算的计算单元,例如:处理芯片等。对于计算单元的具体结构不作限定,请参阅图1a,图1a为一种计算单元的结构示意图。如图1a所示,该计算单元包括:主处理电路、基本处理电路和分支处理电路。具体的,主处理电路与分支处理电路连接,分支处理电路连接至少一个基本处理电路。
[0037] 该分支处理电路,用于收发主处理电路或基本处理电路的数据。
[0038] 参阅图1b,图1b为主处理电路的一种结构示意图,如图1b所示,主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑电路)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路。
[0039] 主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
[0040] 在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;
[0041] 具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据,即广播数据可以包括所有基础处理电路均需要接收到的数据。分发数据可以包括:部分基础处理电路需要接收到的数据。主处理电路可以通过一次或多次广播将该广播数据发送给所有分支处理电路,分支处理电路该广播数据转发给所有的基础处理电路。
[0042] 可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。
[0043] 每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
[0044] 分支处理电路和基础电路的连接结构可以是任意的,不局限在图1b的H型结构。可选的,主处理电路到基础电路是广播或分发的结构,基础电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下:
[0045] 所述主处理电路到基础电路的数据传递方式可以包括:
[0046] 主处理电路与多个分支处理电路分别相连,每个分支处理电路再与多个基础电路分别相连。
[0047] 主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再与多个基础电路分别相连。
[0048] 主处理电路与多个分支处理电路分别相连,每个分支处理电路再串联多个基础电路。
[0049] 主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再串联多个基础电路。
[0050] 分发数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到的数据可以不同;
[0051] 广播数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到相同的数据。
[0052] 收集数据时,部分或全部基础电路向主处理电路传输数据。需要说明的,如图1a所示的计算单元可以是一个单独的物理芯片,当然在实际应用中,该计算单元也可以集成在其他的芯片内(例如CPU,GPU),本申请具体实施方式并不限制上述芯片装置的物理表现形式。
[0053] 参阅图1c,图1c为一种计算单元的数据分发示意图,如图1c的箭头所示,该箭头为数据的分发方向,如图1c所示,主处理电路接收到外部数据以后,将外部数据拆分以后,分发至多个分支处理电路,分支处理电路将拆分数据发送至基本处理电路。
[0054] 参阅图1d,图1d为一种计算单元的数据回传示意图,如图1d的箭头所示,该箭头为数据的回传方向,如图1d所示,基本处理电路将数据(例如内积计算结果)回传给分支处理电路,分支处理电路在回传至主处理电路。
[0055] 对于输入数据,具体的可以为向量、矩阵、多维(三维或四维及以上)数据,对于输入数据的一个具体的值,可以称为该输入数据的一个元素。
[0056] 本披露实施例还提供一种如图1a所示的计算单元的计算方法,该计算方法应用与神经网络计算中,具体的,该计算单元可以用于对多层神经网络中一层或多层的输入数据与权值数据执行运算。
[0057] 具体的,上述所述计算单元用于对训练的多层神经网络中一层或多层的输入数据与权值数据执行运算;
[0058] 或所述计算单元用于对正向运算的多层神经网络中一层或多层的输入数据与权值数据执行运算。
[0059] 上述运算包括但不限于:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
[0060] GEMM计算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*op(P)+beta*C,其中,S和P为输入的两个矩阵,C为输出矩阵,alpha和beta为标量,op代表对矩阵S或P的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的S和P的宽高;
[0061] GEMV计算是指:BLAS库中的矩阵-向量乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*P+beta*C,其中,S为输入矩阵,P为输入的向量,C为输出向量,alpha和beta为标量,op代表对矩阵S的某种操作。
[0062] 本申请对于计算装置中计算载体之间的连接关系不作限定,可以是同构或异构的计算载体,对于计算载体中计算单元之间的连接关系也不作限定,通过上述异构的计算载体或计算单元执行并行任务,可提高运算效率。
[0063] 如图1所述的计算装置包括至少一个计算载体,其中计算载体又包括至少一个计算单元,即本申请中所选取的目标计算装置依赖于各个计算装置之间的连接关系和每一计算装置中部署的神经网络模型、网络资源等具体的物理硬件支持情况和运算请求的属性信息,则可将同类型的计算载体部署于同一个计算装置,例如将用于前向传播的计算载体部署于同一个计算装置,而不是不同的计算装置,有效地减少了计算装置之间通信的开销,便于提高运算效率;也可将特定神经网络模型部署于特定的计算载体,即服务器在接收到针对指定神经网络的运算请求时,调用上述指定神经网络对应的计算载体执行上述运算请求即可,节省了确定处理任务的时间,提高了运算效率。
[0064] 在本申请中,将公开的,且广泛被使用的神经网络模型作为指定神经网络模型(例如:卷积神经网络(convolutional neural network,CNN)中的LeNet、AlexNet、ZFnet、GoogleNet、VGG、ResNet)。
[0065] 可选的,获取指定神经网络模型集中每一指定神经网络模型的运算需求和所述多个计算装置中每一计算装置的硬件属性得到多个运算需求和多个硬件属性;根据所述多个运算需求和所述多个硬件属性将所述指定神经网络模型集中每一指定神经网络模型对应的指定计算装置上部署对应的指定神经网络模型。
[0066] 其中,指定神经网络模型集包括多个指定神经网络模型,计算装置的硬件属性包括计算装置本身的网络带宽、存储容量、处理器主频率等,还包括计算装置中计算载体或计算单元的硬件属性。也就是说,根据每一计算装置的硬件属性选择与指定神经网络模型的运算需求对应的计算装置,可避免处理不及时导致服务器故障,提高服务器的运算支持能力。
[0067] 本申请中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
[0068] 上文中提到的运算都是神经网络中一层的运算,对于多层神经网络,其实现过程如图1e所示,图中虚线的箭头表示反向运算,实线的箭头表示正向运算。在正向运算中,当上一层人工神经网络执行完成之后,将上一层得到的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值。在反向运算中,当上一层人工神经网络的反向运算执行完成后,将上一层得到的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
[0069] 神经网络的正向运算为输入数据输入至最终输出数据的运算过程,反向运算与正向运算的传播方向相反,为最终输出数据与期望输出数据的损失或损失对应的损失函数反向通过正向运算的运算过程。通过周而复始的信息正向运算和反向运算,按照损失或损失函数梯度下降的方式修正各层权值,对各层权值进行调整,也是神经网络学习训练的过程,可减少网络输出的损失。
[0070] 请参见图2,图2是本申请实施例提供的一种调度方法的流程示意图,如图2所示,该方法应用于如图1所示的服务器,且该方法涉及上述允许访问上述服务器的电子设备,该电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS),终端设备(terminal device)等等。
[0071] 201:接收M个运算请求。
[0072] 在本申请中,M为正整数,服务器接收允许访问的电子设备发送的M个运算请求,对于电子设备的数量和每一电子设备发送的运算请求的数量不作限定,即上述M个运算请求可以是一个电子设备发送的,也可以是多个电子设备发送的。
[0073] 运算请求包括运算任务(训练任务还是测试任务)、运算所涉及的目标神经网络模型等属性信息。其中,训练任务用于对目标神经网络模型进行训练,即对该神经网络模型进行正向运算和反向运算,直至训练完成;而测试任务用于根据目标神经网络模型进行一次正向运算。
[0074] 上述目标神经网络模型可以是用户通过电子设备发送运算请求时上传的神经网络模型、也可以是服务器中所存储的神经网络模型等,本申请对于目标神经网络模型的数量也不作限定,即每一运算请求可对应至少一个目标神经网络模型。
[0075] 202:从多个计算装置中选取与所述M个运算请求对应的至少一个目标计算装置。
[0076] 本申请对于如何选取目标计算装置不作限定,可根据运算请求的数量和目标神经网络模型的数量选取,例如:若存在一个运算请求,且该运算请求对应一个目标神经网络模型时,可对运算请求对应的运算指令进行分类得到并行指令和串行指令,将并行指令分配给不同的目标计算装置进行运算,将串行指令分配给擅长处理的目标计算装置进行运算,提高每一指令的运算效率,从而提高运算效率;若存在多个运算请求,且多个运算请求对应一个目标神经网络模型时,可采用包含目标神经网络模型的目标计算装置对多个运算请求对应的运算数据进行批处理,避免反复运算造成的时间浪费,且避免了不同计算装置之间的通信产生的额外开销,从而提高运算效率;若存在多个运算请求,且多个运算请求对应多个目标神经网络模型时,可分别查找擅长处理该目标神经网络模型的计算装置或之前部署了该目标神经网络模型的计算装置完成运算请求,即省去了网络初始化的时间,提高了运算效率。
[0077] 可选的,若目标运算请求的运算任务为测试任务,从所述多个计算装置中选取包括所述运算任务对应的目标神经网络模型的前向运算的计算装置得到第一目标计算装置;若所述目标运算请求的运算任务为训练任务,从所述多个计算装置中选取包括所述运算任务对应的目标神经网络模型的前向运算和后向训练的计算装置得到所述第一目标计算装置。
[0078] 其中,目标运算请求为所述M个运算请求中的任一运算请求,第一目标计算装置为所述至少一个目标计算装置中与所述目标运算请求对应的目标计算装置。
[0079] 也就是说,若目标运算请求的运算任务为测试任务,第一目标计算装置为可用于执行目标神经网络模型的前向运算的计算装置;而当运算任务为训练任务时,第一目标计算装置为可用于执行目标神经网络模型的前向运算和后向训练的计算装置,即通过专用计算装置处理运算请求可提高运算的准确率和运算效率。
[0080] 举例来说,服务器中包括第一计算装置和第二计算装置,其中,第一计算装置只包含用于指定神经网络模型的前向运算,第二计算装置既可以执行上述指定神经网络模型的前向运算,又可以执行上述指定神经网络模型的后向训练运算。当接收到的目标运算请求中的目标神经网络模型为上述指定神经网络模型,且运算任务为测试任务时,确定第一计算装置执行上述目标运算请求。
[0081] 可选的,根据所述M个运算请求中每一运算请求的属性信息从辅助调度算法集中选取辅助调度算法;根据所述辅助调度算法从所述多个计算装置中选取所述至少一个目标计算装置。
[0082] 其中,辅助调度算法集包括但不限于以下一项:轮询调度(Round-Robin Scheduling)算法、加权轮询(Weighted Round  Robin)算法、最少链接(Least 
Connections)算法、加权最少链接(Weighted Least Connections)算法、基于局部性的最少链接(Locality-Based Least Connections)算法、带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)算法、目标地址散列
(Destination Hashing)算法、源地址散列(Source Hashing)算法。
[0083] 本申请对于如何根据属性信息选取辅助调度算法不作限定,举例来说,若多个目标计算装置处理同种运算请求,则辅助调度算法可以是轮询调度算法;若不同的目标计算装置的抗压能力不同,应该给配置高、负载低的目标计算装置分配更多的运算请求,则辅助调度算法可以是加权轮询算法;若多个目标计算装置中每个目标计算装置分配到的工作量不尽相同,则辅助调度算法可以是最少链接调度算法,动态地选取其中当前积压连接数最少的一台目标计算装置来处理当前的请求,尽可能地提高目标计算装置的利用效率,也可以是加权最少链接调度算法。
[0084] 也就是说,在如上述实施例中涉及的调度方法的基础上,结合辅助调度算法选取最终执行运算请求的计算装置,从而进一步提高服务器的运算效率。
[0085] 203:基于所述至少一个目标计算装置中每一目标计算装置执行对应的运算请求的运算得到M个最终运算结果。
[0086] 本申请对于每一运算请求对应的运算数据不作限定,可以是用于图像识别的图像数据,也可以是用于语音识别的声音数据等;当运算任务为测试任务时,运算数据为用户上传的数据,而当运算任务为训练任务时,运算数据可以是用户上传的训练集,也可以是服务器中存储的与目标神经网络模型对应的训练集。
[0087] 运算指令的计算过程中可产生多个中间运算结果,根据多个中间运算结果可获取每一运算请求对应的最终运算结果。本申请实施例对于目标计算装置的运算方法不作限定,可采用如图1a-1d所示的计算单元的计算方法。
[0088] 204:将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。
[0089] 可以理解,基于接收到的运算请求从服务器中包括的M个多个计算装置中选取执行M个运算请求的目标计算装置,并基于目标计算装置根据其对应的运算请求进行运算,并将每一运算请求对应的最终运算结果发送至对应的电子设备,即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的运算效率。
[0090] 可选的,所述方法还包括:等待第一预设时长,检测所述至少一个目标计算装置中每一目标计算装置是否得到对应的最终运算结果,若否,将所述未得到最终运算结果的目标计算装置作为延迟计算装置;从所述多个计算装置的空闲计算装置中选取与所述延迟计算装置对应的运算请求对应的备用计算装置;基于所述备用计算装置执行所述延迟计算装置对应的运算请求的运算。
[0091] 也就是说,在第一预设时长到达时,将未完成运算指令的计算装置作为延迟计算装置,根据延迟计算装置执行的运算请求从服务器中多个计算装置的空闲计算装置中选取备用计算装置,基于备用计算装置完成延迟计算装置对应的运算请求的运算,从而提高运算效率。
[0092] 可选的,在所述基于所述备用计算装置执行所述延迟计算装置对应的运算请求的运算之后,所述方法还包括:获取所述延迟计算装置和所述备用计算装置之间最先得到的最终运算结果;向所述延迟计算装置和所述备用计算装置之间未得到最终运算结果的计算装置发送暂停指令。
[0093] 其中,暂停指令用于指示延迟计算装置和所述备用计算装置之间未返回最终运算结果的计算装置暂停执行对应的运算指令。也就是说,通过备用计算装置执行延迟计算装置对应的运算请求的运算,并选取备用计算装置和延迟计算装置之间最先得到最终运算结果作为运算请求对应的最终运算结果,且向通过延迟计算装置和备用计算装置之间未得到最终运算结果的计算装置发送暂停指令,即暂停未完成运算请求的计算装置的运算,从而节省功耗。
[0094] 可选的,所述方法还包括:等待第二预设时长,检测所述延迟计算装置是否得到对应的最终运算结果,若否,将所述延迟计算装置作为故障计算装置,发送故障指令。
[0095] 其中,故障指令用于告知运维人员故障计算装置发生故障,第二预设时长大于所述第一预设时长。也就是说,在第二预设时长到达时,若未接收到延迟计算装置得到的最终运算结果,则判断执行延迟计算装置发生故障,并告知对应的运维人员,从而提高故障的处理能力。
[0096] 可选的,所述方法还包括:每隔目标时间阈值,更新所述多个计算装置的散列表。
[0097] 其中,散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。在本申请中,将多个计算装置的IP地址作为关键码值,通过散列函数(映射函数)将其映射到散列表中的一个位置,即在确定目标计算装置之后,可快速查找到目标计算装置所分配的物理资源。对于散列表的具体形式不作限定,可以是人为地设置静态的散列表,也可以是根据IP地址分配的硬件资源。每隔目标时间阈值,对多个计算装置的散列表进行更新,提高了查找的准确性和查找效率。
[0098] 与上述图2中的实施例一致,请参照图3,图3为本申请所提供的另一种服务器的结构示意图,上述服务器包括多个计算装置。如图3所示,上述服务器300包括:
[0099] 接收单元301,用于接收M个运算请求,所述M为正整数;
[0100] 调度单元302,用于从所述多个计算装置中选取与所述M个运算请求对应的至少一个目标计算装置;
[0101] 运算单元303,用于基于所述至少一个目标计算装置中每一目标计算装置执行对应的运算请求的运算,得到M个最终运算结果;
[0102] 发送单元304,用于将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。
[0103] 可选的,所述调度单元302具体用于若目标运算请求的运算任务为测试任务,从所述多个计算装置中选取包括所述运算任务对应的目标神经网络模型的前向运算的计算装置,得到第一目标计算装置,所述目标运算请求为所述M个运算请求中的任一运算请求,所述第一目标计算装置为所述至少一个目标计算装置中与所述目标运算请求对应的目标计算装置;若所述目标运算请求的运算任务为训练任务,从所述多个计算装置中选取包括所述运算任务对应的目标神经网络模型的前向运算和后向训练的计算装置,得到所述第一目标计算装置。
[0104] 可选的,所述调度单元302具体用于根据所述M个运算请求中每一运算请求的属性信息从辅助调度算法集中选取辅助调度算法,所述辅助调度算法集包括以下至少一项:轮询调度算法、加权轮询算法、最少链接算法、加权最少链接算法、基于局部性的最少链接算法、带复制的基于局部性最少链接算法、目标地址散列算法、源地址散列算法;根据所述辅助调度算法从所述多个计算装置中选取所述至少一个目标计算装置。
[0105] 可选的,所述服务器还包括检测单元306,用于等待第一预设时长,检测所述至少一个目标计算装置中每一目标计算装置是否得到对应的最终运算结果,若否,将所述未得到最终运算结果的目标计算装置作为延迟计算装置;由所述调度单元302从所述多个计算装置的空闲计算装置中选取与所述延迟计算装置对应的运算请求对应的备用计算装置;由所述运算单元303基于所述备用计算装置执行所述延迟计算装置对应的运算请求的运算。
[0106] 可选的,所述获取单元305,还用于获取所述延迟计算装置和所述备用计算装置之间最先得到的最终运算结果;由所述发送单元304向所述延迟计算装置和所述备用计算装置之间未得到最终运算结果的计算装置发送暂停指令。
[0107] 可选的,所述检测单元306,还用于等待第二预设时长,检测所述延迟计算装置是否得到对应的最终运算结果,若否,将所述未返回最终运算结果的延迟计算装置作为故障计算装置;由所述发送单元304发送故障指令,所述故障指令用于告知运维人员所述故障计算装置发生故障,所述第二预设时长大于所述第一预设时长。
[0108] 可选的,所述服务器还包括更新单元307,用于每隔目标时间阈值,更新所述服务器的散列表。
[0109] 可选的,所述获取单元305,还用于获取指定神经网络模型集中每一指定神经网络模型的运算需求和所述多个计算装置中每一计算装置的硬件属性得到多个运算需求和多个硬件属性;
[0110] 所述服务器还包括部署单元308,用于根据所述多个运算需求和所述多个硬件属性将所述指定神经网络模型集中每一指定神经网络模型对应的指定计算装置上部署对应的指定神经网络模型。
[0111] 可选的,所述计算装置包括至少一个计算载体,所述计算载体包括至少一个计算单元。
[0112] 可选的,所述计算装置包括至少一个计算载体,所述计算载体包括至少一个计算单元,所述计算单元对训练的多层神经网络中一层或多层的输入数据与权值数据执行运算,或对正向运算的多层神经网络中一层或多层的输入数据与权值数据执行运算,所述运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏置运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
[0113] 可选的,所述计算单元包括:主处理电路、分支处理电路与基础处理电路,所述主处理电路与分支处理电路连接,所述基础处理电路与分支处理电路连接,其中:
[0114] 所述主处理电路,用于获取所述计算单元以外的数据,并将该数据划分成广播数据和分发数据,将所述广播数据以广播方式发送给所有分支处理电路,将所述分发数据选择性的分发给不同的分支处理电路;
[0115] 所述分支处理电路,用于在所述主处理电路与所述基础处理电路之间转发数据;
[0116] 所述基础处理电路,用于接收所述分支处理电路转发的广播数据和分发数据,并对该广播数据和分发数据执行运算得到运算结果,将该运算结果发送至所述分支处理电路;
[0117] 所述主处理电路,还用于接收分支处理电路转发的所述基础处理电路的与运算结果,将该运算结果进行处理得到计算结果。
[0118] 可选的,所述主处理电路具体用于将所述广播数据以一次广播或多次广播发送给所有分支处理电路。
[0119] 可选的,所述基础处理电路具体用于对该广播数据和分发数据执行内积运算、乘积运算或向量运算得到运算结果。
[0120] 可以理解,基于接收到的运算请求从服务器中包括的M个多个计算装置中选取执行M个运算请求的目标计算装置,并基于目标计算装置根据其对应的运算请求进行运算,并将每一运算请求对应的最终运算结果发送至对应的电子设备,即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的运算效率。
[0121] 在一个实施例里,如图4所示,本申请公开了另一种服务器400包括处理器401、存储器402、通信接口403以及一个或多个程序404,其中,一个或多个程序404被存储在存储器402中,并且被配置由处理器执行,所述程序404包括用于执行上述调度方法中所描述的部分或全部步骤的指令。
[0122] 在本发明的另一实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时使上述处理器执行调度方法中所描述的实现方式。
[0123] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0124] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0125] 在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
[0126] 上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
[0127] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0128] 上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0129] 需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
[0130] 以上的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。