调度方法及相关装置与流程

文档序号:18100826发布日期:2019-07-06 11:20阅读:111来源:国知局
本申请涉及计算机
技术领域
:,具体涉及一种调度方法及相关装置。
背景技术
::神经网络是目前许多人工智能应用的基础,随着神经网络的应用范围的进一步扩大,采用服务器或云计算服务对各种各样的神经网络模型进行存储,并针对用户提交的运算请求进行运算。面对众多的神经网络模型和大批量的请求,如何提高服务器的运算效率是本领域技术人员待解决的技术问题。技术实现要素:本申请实施例提出了一种调度方法及相关装置,可选取服务器中的计算装置执行运算请求,提高了服务器的运行效率。第一方面,本申请实施例提供了一种调度方法,基于多个计算装置的服务器,所述方法包括:接收m个运算请求;根据所述m个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令,所述属性信息包括运算任务和目标神经网络模型;根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述m个运算请求对应的运算数据进行计算,得到m个最终运算结果;将所述m个最终运算结果中每一运算结果发送至对应的电子设备。第二方面,本申请实施例提供了一种服务器,所述服务器包括多个计算装置,其中:接收单元,用于接收m个运算请求;调度单元,用于根据所述m个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令,所述属性信息包括运算任务和目标神经网络模型;运算单元,用于根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述m个运算请求对应的运算数据进行计算,得到m个最终运算结果;发送单元,用于将所述m个最终运算结果中每一最终运算结果发送至对应的电子设备。第三方面,本申请实施例提供了另一种服务器,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于如第一方面中所描述的部分或全部步骤的指令。第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。采用了上述的调度方法及相关装置之后,基于接收到的m个运算请求的属性信息从服务器中包括的多个计算装置中选取执行m个运算请求的目标计算装置,并确定目标计算装置对应的运算指令,目标计算装置根据其对应的运算指令完成运算请求,并将每一运算请求对应的最终运算结果发送至对应的电子设备,即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的运算效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:图1是本申请实施例提供的一种服务器的结构示意图;图1a是本申请实施例提供的一种计算单元的结构示意图;图1b是本申请实施例提供的一种主处理电路的结构示意图;图1c是本申请实施例提供的一种计算单元的数据分发示意图;图1d是本申请实施例提供的一种计算单元的数据回传示意图;图1e是本申请实施例提供的一种神经网络结构的运算示意图;图2是本申请实施例提供的一种调度方法的流程示意图;图3是本申请实施例提供的另一种调度方法的流程示意图;图4是本申请实施例提供的另一种调度方法的流程示意图;图5是本申请实施例提供的另一种调度方法的流程示意图;图6是本申请实施例提供的另一种服务器的结构示意图;图7是本申请实施例提供的另一种服务器的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。本申请实施例提出了一种调度方法及相关装置,可选取服务器中的计算装置执行运算请求,提高了服务器的运行效率。以下结合具体实施例,并参照附图,对本申请进一步详细说明。请参照图1,图1是本申请实施例提供的一种服务器的结构示意图。如图1所示,上述服务器包括多个计算装置,计算装置包括但不限于服务器计算机,还可以是个人计算机(personalcomputer,pc)、网络pc、小型计算机、大型计算机等。在本申请中,服务器中包含的每一计算装置之间通过有线或无线建立连接并传输数据,且每一计算装置包括至少一个计算载体,例如:中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)、处理器板卡等。且本申请所涉及的服务器还可以是云服务器,为电子设备提供云计算服务。其中,每一计算载体可包括至少一个用于神经网络运算的计算单元,例如:处理芯片等。对于计算单元的具体结构不作限定,请参阅图1a,图1a为一种计算单元的结构示意图。如图1a所示,该计算单元包括:主处理电路、基本处理电路和分支处理电路。具体的,主处理电路与分支处理电路连接,分支处理电路连接至少一个基本处理电路。该分支处理电路,用于收发主处理电路或基本处理电路的数据。参阅图1b,图1b为主处理电路的一种结构示意图,如图1b所示,主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、alu(arithmeticandlogicunit,算数逻辑电路)电路、累加器电路、dma(directmemoryaccess,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路。主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据,即广播数据可以包括所有基础处理电路均需要接收到的数据。分发数据可以包括:部分基础处理电路需要接收到的数据。主处理电路可以通过一次或多次广播将该广播数据发送给所有分支处理电路,分支处理电路该广播数据转发给所有的基础处理电路。可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。分支处理电路和基础电路的连接结构可以是任意的,不局限在图1b的h型结构。可选的,主处理电路到基础电路是广播或分发的结构,基础电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下:所述主处理电路到基础电路的数据传递方式可以包括:主处理电路与多个分支处理电路分别相连,每个分支处理电路再与多个基础电路分别相连。主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再与多个基础电路分别相连。主处理电路与多个分支处理电路分别相连,每个分支处理电路再串联多个基础电路。主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再串联多个基础电路。分发数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到的数据可以不同;广播数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到相同的数据。收集数据时,部分或全部基础电路向主处理电路传输数据。需要说明的,如图1a所示的计算单元可以是一个单独的物理芯片,当然在实际应用中,该计算单元也可以集成在其他的芯片内(例如cpu,gpu),本申请具体实施方式并不限制上述芯片装置的物理表现形式。参阅图1c,图1c为一种计算单元的数据分发示意图,如图1c的箭头所示,该箭头为数据的分发方向,如图1c所示,主处理电路接收到外部数据以后,将外部数据拆分以后,分发至多个分支处理电路,分支处理电路将拆分数据发送至基本处理电路。参阅图1d,图1d为一种计算单元的数据回传示意图,如图1d的箭头所示,该箭头为数据的回传方向,如图1d所示,基本处理电路将数据(例如内积计算结果)回传给分支处理电路,分支处理电路在回传至主处理电路。对于输入数据,具体的可以为向量、矩阵、多维(三维或四维及以上)数据,对于输入数据的一个具体的值,可以称为该输入数据的一个元素。本披露实施例还提供一种如图1a所示的计算单元的计算方法,该计算方法应用与神经网络计算中,具体的,该计算单元可以用于对多层神经网络中一层或多层的输入数据与权值数据执行运算。具体的,上述所述计算单元用于对训练的多层神经网络中一层或多层的输入数据与权值数据执行运算;或所述计算单元用于对正向运算的多层神经网络中一层或多层的输入数据与权值数据执行运算。上述运算包括但不限于:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏置运算、全连接运算、gemm运算、gemv运算、激活运算中的一种或任意组合。gemm计算是指:blas库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:c=alpha*op(s)*op(p)+beta*c,其中,s和p为输入的两个矩阵,c为输出矩阵,alpha和beta为标量,op代表对矩阵s或p的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的s和p的宽高;gemv计算是指:blas库中的矩阵-向量乘法的运算。该运算的通常表示形式为:c=alpha*op(s)*p+beta*c,其中,s为输入矩阵,p为输入的向量,c为输出向量,alpha和beta为标量,op代表对矩阵s的某种操作。本申请对于计算装置中计算载体之间的连接关系不作限定,可以是同构或异构的计算载体,对于计算载体中计算单元之间的连接关系也不作限定,通过上述异构的计算载体或计算单元执行并行任务,可提高运算效率。如图1所述的计算装置包括至少一个计算载体,其中计算载体又包括至少一个计算单元,即本申请中所选取的目标计算装置依赖于各个计算装置之间的连接关系和每一计算装置中部署的神经网络模型、网络资源等具体的物理硬件支持情况和运算请求的属性信息,则可将同类型的计算载体部署于同一个计算装置,例如将用于前向传播的计算载体部署于同一个计算装置,而不是不同的计算装置,有效地减少了计算装置之间通信的开销,便于提高运算效率;也可将特定神经网络模型部署于特定的计算载体,即服务器在接收到针对指定神经网络的运算请求时,调用上述指定神经网络对应的计算载体执行上述运算请求即可,节省了确定处理任务的时间,提高了运算效率。在本申请中,将公开的,且广泛被使用的神经网络模型作为指定神经网络模型(例如:卷积神经网络(convolutionalneuralnetwork,cnn)中的lenet、alexnet、zfnet、googlenet、vgg、resnet)。可选的,获取指定神经网络模型集中每一指定神经网络模型的运算需求和所述多个计算装置中每一计算装置的硬件属性得到多个运算需求和多个硬件属性;根据所述多个运算需求和所述多个硬件属性将所述指定神经网络模型集中每一指定神经网络模型对应的指定计算装置上部署对应的指定神经网络模型。其中,指定神经网络模型集包括多个指定神经网络模型,计算装置的硬件属性包括计算装置本身的网络带宽、存储容量、处理器主频率等,还包括计算装置中计算载体或计算单元的硬件属性。也就是说,根据每一计算装置的硬件属性选择与指定神经网络模型的运算需求对应的计算装置,可避免处理不及时导致服务器故障,提高服务器的运算支持能力。本申请中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有l层,k=1,2,...,l-1,对于第k层和第k+1层来说,将第k层称为输入层,其中的神经元为所述输入神经元,第k+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。上文中提到的运算都是神经网络中一层的运算,对于多层神经网络,其实现过程如图1e所示,图中虚线的箭头表示反向运算,实线的箭头表示正向运算。在正向运算中,当上一层人工神经网络执行完成之后,将上一层得到的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值。在反向运算中,当上一层人工神经网络的反向运算执行完成后,将上一层得到的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。神经网络的正向运算为输入数据输入至最终输出数据的运算过程,反向运算与正向运算的传播方向相反,为最终输出数据与期望输出数据的损失或损失对应的损失函数反向通过正向运算的运算过程。通过周而复始的信息正向运算和反向运算,按照损失或损失函数梯度下降的方式修正各层权值,对各层权值进行调整,也是神经网络学习训练的过程,可减少网络输出的损失。请参见图2,图2是本申请实施例提供的一种调度方法的流程示意图,如图2所示,该方法应用于如图1所示的服务器,且该方法涉及上述允许访问上述服务器的电子设备,该电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(userequipment,ue),移动台(mobilestation,ms),终端设备(terminaldevice)等等。201:接收m个运算请求。在本申请中,m为正整数,服务器接收允许访问的电子设备发送的m个运算请求,对于电子设备的数量和每一电子设备发送的运算请求的数量不作限定,即上述m个运算请求可以是一个电子设备发送的,也可以是多个电子设备发送的。运算请求包括运算任务(训练任务还是测试任务)、运算所涉及的目标神经网络模型等属性信息。其中,训练任务用于对目标神经网络模型进行训练,即对该神经网络模型进行正向运算和反向运算,直至训练完成;而测试任务用于根据目标神经网络模型进行一次正向运算。上述目标神经网络模型可以是用户通过电子设备发送运算请求时上传的神经网络模型、也可以是服务器中所存储的神经网络模型等,本申请对于目标神经网络模型的数量也不作限定,即每一运算请求可对应至少一个目标神经网络模型。202:根据所述m个运算请求中每一运算请求的属性信息从多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令。本申请对于如何选取目标计算装置不作限定,可根据运算请求的数量和目标神经网络模型的数量选取,例如:若存在一个运算请求,且该运算请求对应一个目标神经网络模型时,可对运算请求对应的运算指令进行分类得到并行指令和串行指令,将并行指令分配给不同的目标计算装置进行运算,将串行指令分配给擅长处理的目标计算装置进行运算,提高每一指令的运算效率,从而提高运算效率;若存在多个运算请求,且多个运算请求对应一个目标神经网络模型时,可采用包含目标神经网络模型的目标计算装置对多个运算请求对应的运算数据进行批处理,避免反复运算造成的时间浪费,且避免了不同计算装置之间的通信产生的额外开销,从而提高运算效率;若存在多个运算请求,且多个运算请求对应多个目标神经网络模型时,可分别查找擅长处理该目标神经网络模型的计算装置或之前部署了该目标神经网络模型的计算装置完成运算请求,即省去了网络初始化的时间,提高了运算效率。可选的,若目标运算请求的运算任务为测试任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算的计算装置得到第一目标计算装置;若所述目标运算请求的运算任务为训练任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算和后向训练的计算装置得到所述第一目标计算装置;确定所述第一目标计算装置对应的运算指令为完成所述目标运算请求。其中,目标运算请求为所述m个运算请求中的任一运算请求,第一目标计算装置为所述至少一个目标计算装置中与所述目标运算请求对应的目标计算装置。也就是说,若目标运算请求的运算任务为测试任务,第一目标计算装置为可用于执行目标神经网络模型的前向运算的计算装置;而当运算任务为训练任务时,第一目标计算装置为可用于执行目标神经网络模型的前向运算和后向训练的计算装置,即通过专用计算装置处理运算请求可提高运算的准确率和运算效率。举例来说,服务器中包括第一计算装置和第二计算装置,其中,第一计算装置只包含用于指定神经网络模型的前向运算,第二计算装置既可以执行上述指定神经网络模型的前向运算,又可以执行上述指定神经网络模型的后向训练运算。当接收到的目标运算请求中的目标神经网络模型为上述指定神经网络模型,且运算任务为测试任务时,确定第一计算装置执行上述目标运算请求。203:根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述m个运算请求对应的运算数据进行计算得到m个最终运算结果。本申请对于每一运算请求对应的运算数据不作限定,可以是用于图像识别的图像数据,也可以是用于语音识别的声音数据等;当运算任务为测试任务时,运算数据为用户上传的数据,而当运算任务为训练任务时,运算数据可以是用户上传的训练集,也可以是服务器中存储的与目标神经网络模型对应的训练集。运算指令的计算过程中可产生多个中间运算结果,根据多个中间运算结果可获取每一运算请求对应的最终运算结果。204:将所述m个最终运算结果中每一最终运算结果发送至对应的电子设备。可以理解,基于接收到的运算请求的属性信息从服务器中包括的m个多个计算装置中选取执行m个运算请求的目标计算装置,并确定目标计算装置对应的运算指令,目标计算装置根据其对应的运算指令完成运算请求,并将每一运算请求对应的最终运算结果发送至对应的电子设备,即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的运算效率。可选的,所述方法还包括:等待第一预设时长,检测所述至少一个目标计算装置中每一目标计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的目标计算装置作为延迟计算装置;根据所述延迟计算装置对应的运算指令从所述多个计算装置的空闲计算装置中选取备用计算装置;通过所述备用计算装置执行所述延迟计算装置对应的运算指令。也就是说,在第一预设时长到达时,将未完成运算指令的计算装置作为延迟计算装置,根据延迟计算装置执行的运算指令从空闲计算装置中选取备用计算装置,从而提高运算效率。可选的,在所述通过所述备用计算装置执行所述延迟计算装置对应的运算指令之后,所述方法还包括:获取所述延迟计算装置和所述备用计算装置之间最先返回的最终运算结果;向所述延迟计算装置和所述备用计算装置之间未返回最终运算结果的计算装置发送暂停指令。其中,暂停指令用于指示延迟计算装置和所述备用计算装置之间未返回最终运算结果的计算装置暂停执行对应的运算指令。也就是说,通过备用计算装置执行延迟计算装置对应的运算指令,并选取备用计算装置和延迟计算装置之间最先返回最终运算结果作为运算指令对应的最终运算结果,且向通过延迟计算装置和备用计算装置之间未返回最终运算结果的计算装置发送暂停指令,即暂停未完成运算指令的计算装置的运算,从而节省功耗。可选的,所述方法还包括:等待第二预设时长,检测所述延迟计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的延迟计算装置作为故障计算装置,发送故障指令。其中,故障指令用于告知运维人员故障计算装置发生故障,第二预设时长大于所述第一预设时长。也就是说,在第二预设时长到达时,若未接收到延迟计算装置返回的最终运算结果,则判断执行延迟计算装置发生故障,并告知对应的运维人员,从而提高故障的处理能力。可选的,所述方法还包括:每隔目标时间阈值,更新所述多个计算装置的散列表。其中,散列表(hashtable,也叫哈希表),是根据关键码值(keyvalue)而直接进行访问的数据结构。在本申请中,将多个计算装置的ip地址作为关键码值,通过散列函数(映射函数)将其映射到散列表中的一个位置,即在确定目标计算装置之后,可快速查找到目标计算装置所分配的物理资源。对于散列表的具体形式不作限定,可以是人为地设置静态的散列表,也可以是根据ip地址分配的硬件资源。每隔目标时间阈值,对多个计算装置的散列表进行更新,提高了查找的准确性和查找效率。请参照图3,图3为本申请实施例提供的另一种调度方法的流程示意图,如图3所示,该方法应用于如图1所示的服务器,且该方法涉及允许访问上述服务器的电子设备。301:接收一个运算请求。即上述步骤201中服务器中接收的运算请求的数量为1,即m=1。302:获取所述运算请求对应的目标神经网络模型的指令流。其中,指令流指明了目标神经网络模型的运算顺序和每一顺序对应的指令,即指令序列,通过上述指令流可实现目标神经网络模型的运算。每一目标神经网络模型对应一个基本操作序列,即通过解析目标神经网络模型获取描述目标神经网络模型运算的数据结构。本申请对于基本操作序列和指令描述符之间的解析规则不作限定,根据基本操作序列和指令描述符之间的解析规则获取目标神经网络模型对应的指令描述符流。本申请对于指令描述符流中每一指令描述符流的预设格式也不作限定。根据预设格式的网络结构可生成指令描述符流对应的指令。上述指令包括cambricon指令集中的所有指令,例如矩阵运算指令、卷积运算指令、全连接层正向运算指令、池化运算指令、归一化指令、向量运算指令以及标量运算指令。可选的,所述获取所述运算请求对应的目标神经网络模型的指令流包括:根据所述目标神经网络模型对应的基本操作序列获取第一指令描述符流;对所述第一指令描述符流进行简化得到第二指令描述符流;根据所述第二指令描述符流获取所述指令流。也就是说,通过对第一指令描述符流的简化消除了第一指令描述符流中多余的指令描述符,从而缩短了指令流。再根据第二指令描述符流获取可被计算装置执行的指令流,根据指令和输入数据运算得到输出数据,克服了用卷积、池化、激活等细粒度的原子操作组成的完整神经网络进行运算时产生的冗余的输入、输出或其他操作,从而进一步提高了服务器的运算速度。需要说明的是,若运算请求对应多个目标神经网络模型,则需要获取多个目标神经网络模型的指令流,再进行拆分,从而完成运算请求。303:将所述指令流拆分为多个并行指令和多个串行指令。本申请对于如何拆分指令流不作限定,并行指令为可分配给多个计算装置同时进行运算的指令,而串行指令为只能由单个计算装置完成运算的指令。例如:视频识别、理解等运算请求,一般包括特征提取指令和特征识别指令,其中特征提取指令需要对连续几帧图像进行卷积处理,特征识别指令一般需要对特征提取指令得到的特征进行循环神经网络的计算。上述的特征提取指令可分配给多个计算装置,而特征识别指令只能由单个计算装置进行处理。304:从多个计算装置中选取与所述多个并行指令对应的多个并行计算装置和与所述多个串行指令对应的至少一个串行计算装置。将指令流进行拆分得到多个并行指令和多个串行指令,从服务器中包含的多个计算装置中选取执行每一并行指令对应的并行计算装置和执行多个串行指令对应的串行计算装置,以得到多个并行计算装置和至少一个串行计算装置,即上述步骤202中至少一个目标计算装置为多个并行计算装置和至少一个串行计算装置,且每一并行计算装置的运算指令为该并行计算装置对应的并行指令,每一串行计算装置的运算指令为对应的串行指令。本申请对于串行计算装置和并行计算装置的选取方法不作限定。可选的,若所述运算任务为训练任务时,基于所述训练任务对应的训练方法对所述运算请求对应的运算数据进行分组得到多组运算数据;根据所述多组运算数据和所述多个并行指令从所述多个计算装置中选取所述多个并行计算装置。根据具体的训练方法将运算请求对应的运算数据进行分组得到多组运算数据,可以以运算数据的数据类型进行分组,也可以将运算数据分为多组,在此不做限定。分组之后再选择合适的计算装置进行并行运算,即进一步减小了每一计算装置的运算量,从而提高运算效率。例如:对于批量梯度下降算法(batchgradientdescent,bgd),认为存在一个训练集(batch),可以将一个batch分为多个子集,并分配给多个计算装置,其中每一计算装置对一个子集进行训练,每一子集为一组运算数据;对于随机梯度下降算法(stochasticgradientdescent,sgd),认为每个训练集(batch)中只有一个运算数据,可以将不同的训练集分配给不同的计算装置;对于小批量梯度下降算法(mini-batchsgd),可以将每个batch的不同数据分配给不同的计算装置来计算,也可以将每个batch分为更小的子集,再分配给不同的计算装置进行计算。在本申请中,串行计算装置可以是多个并行计算装置中的一个计算装置或多个计算装置,也可以是其他空闲的计算装置等。针对串行指令对应的部分,且串行指令中每一部分之间的计算特性差距较大的情况,可选的,所述从所述多个计算装置中选取与所述多个串行指令对应的所述至少一个串行计算装置,包括:对所述多个串行指令进行分组得到至少一组串行指令序列;从所述多个计算装置中选取与所述至少一组串行指令序列中每组串行指令序列对应的计算装置得到所述至少一个串行计算装置。对多个串行指令进行分组得到多组指令序列,再选择与每组指令序列对应的计算装置进行运算,通过善于处理的计算装置执行对应的指令,提高每一部分的运算效率,从而提高整体运算效率。以快速区域卷积神经网络(fasterregion-basedconvolutionneuralnetwork,fasterr-cnn)为例,fasterr-cnn由卷积层、候选区域神经网络(regionproposalnetwork,rpn)层和兴趣区域池化(regionofinterestpooling,roipooling)层组成,且每一层之间的计算特性差距很大,则可以将卷积层和rpn部署在善于处理卷积的神经网络计算装置上,而roipooling则可以部署在善于处理卷积的神经网络计算装置上,如更为通用的处理器cpu,则提高了每一部分的运算效率,从而提高整体运算效率。305:根据所述多个并行计算装置中每一并行计算装置对应的并行指令和所述至少一个串行计算装置中每一串行计算装置对应的串行指令对所述运算请求对应的运算数据进行计算得到一个最终运算结果。306:将所述最终运算结果发送至发送所述运算请求的电子设备。也就是说,当服务器中接收电子设备发送的单个运算请求时,将运算请求对应的目标神经网络模型的指令流进行拆分,并选取与并行指令对应的并行计算装置和串行指令对应的串行计算装置,选取善于处理串行指令的串行计算装置单独执行对应的串行指令,并将该运算请求对应的最终运算结果发送至电子设备。也就是说,通过多个并行计算装置集中的计算装置并行执行对应的并行指令,节省了并行指令的执行时间,通过串行计算装置提高了每一串行指令之间的计算效率。即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的整体运算效率。请参照图4,图4为本申请实施例提供的另一种调度方法的流程示意图,如图4所示,该方法应用于如图1所示的服务器,且该方法涉及允许访问上述服务器的电子设备。401:接收多个运算请求。即上述步骤201中服务器中接收的运算请求的数量大于1,即m>1。402:若所述多个运算请求对应一个目标神经网络模型时,从多个计算装置中选取与所述目标神经网络模型对应的目标并行计算装置,并确定所述目标并行计算装置的运算指令为并行运算所述多个运算请求。也就是说,若存在多个运算请求,且多个运算请求针对的都是同一个目标神经网络模型,则可从多个计算装置中选取目标神经网络模型对应的目标并行计算装置,便于采用目标并行计算装置对多个运算请求对应的运算数据进行并行运算,避免反复使用目标神经网络模型进行运算造成的时间浪费。403:根据所述目标并行计算装置的运算指令对所述多个运算请求对应的运算数据进行计算得到多个最终运算结果。404:将所述多个最终运算结果中每一最终运算结果发送至对应的电子设备。可以理解,若服务器中存在多个运算请求,且多个运算请求针对的都是同一个目标神经网络模型,则可从多个计算装置中选取目标神经网络模型对应的一个目标并行计算装置,采用目标并行计算装置对多个运算请求对应的运算数据进行批运算,再对运算得到的最终运算结果进行区分以得到每一运算请求对应的最终运算结果,并发送给对应的电子设备,避免反复使用目标神经网络模型进行运算造成的时间浪费,从而提高服务器的整体运算效率。请参照图5,图5为本申请实施例提供的另一种调度方法的流程示意图,如图5所示,该方法应用于如图1所示的服务器,且该方法涉及允许访问上述服务器的电子设备。501:接收多个运算请求。即上述步骤201中服务器中接收的运算请求的数量大于1,即m>1。502:若所述多个运算请求对应多个目标神经网络模型,从多个计算装置中选择与所述多个目标神经网络模型中每一目标神经网络模型对应的多个目标串行计算装置,并确定所述多个目标串行计算装置中每一目标串行计算装置对应的运算指令为执行该目标串行计算装置对应的目标神经网络模型所对应的运算请求。也就是说,若存在多个运算请求,且多个运算请求针对多个目标神经网络模型,则可从多个计算装置中分别选取与目标神经网络模型对应的目标串行计算装置,便于提高每一运算请求的运算效率。且上述目标串行计算装置已部署了对应目标神经网络模型,即省去了网络初始化的时间,提高了运算效率。503:根据所述多个目标串行计算装置中每一目标串行计算装置对应的运算指令对所述多个运算请求对应的运算数据进行计算得到多个最终运算结果。504:将所述多个最终运算结果中每一最终运算结果发送至对应的电子设备。可以理解,若服务器中存在多个运算请求,且多个运算请求针对多个目标神经网络模型,则可从多个计算装置中分别选取与目标神经网络模型对应的目标串行计算装置,通过目标串行计算装置分别执行对应的运算请求,可提高每一运算请求的运算效率。且上述目标串行计算装置已部署了对应目标神经网络模型,即省去了网络初始化的时间,提高了运算效率。可选的,根据所述m个运算请求中每一运算请求的属性信息从辅助调度算法集中选取辅助调度算法;根据所述辅助调度算法从所述多个计算装置中选取所述至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令。其中,辅助调度算法集包括但不限于以下一项:轮询调度(round-robinscheduling)算法、加权轮询(weightedroundrobin)算法、最少链接(leastconnections)算法、加权最少链接(weightedleastconnections)算法、基于局部性的最少链接(locality-basedleastconnections)算法、带复制的基于局部性最少链接(locality-basedleastconnectionswithreplication)算法、目标地址散列(destinationhashing)算法、源地址散列(sourcehashing)算法。本申请对于如何根据属性信息选取辅助调度算法不作限定,举例来说,若多个目标计算装置处理同种运算请求,则辅助调度算法可以是轮询调度算法;若不同的目标计算装置的抗压能力不同,应该给配置高、负载低的目标计算装置分配更多的运算请求,则辅助调度算法可以是加权轮询算法;若多个目标计算装置中每个目标计算装置分配到的工作量不尽相同,则辅助调度算法可以是最少链接调度算法,动态地选取其中当前积压连接数最少的一台目标计算装置来处理当前的请求,尽可能地提高目标计算装置的利用效率,也可以是加权最少链接调度算法。也就是说,在如上述图2、图3、图4或图5中实施例中涉及的调度方法的基础上,结合辅助调度算法选取最终执行运算请求的计算装置,从而进一步提高服务器的运算效率。与上述图2、图3、图4或图5中实施例一致,请参照图6,图6为本申请所提供的另一种服务器的结构示意图,上述服务器包括多个计算装置。如图6所示,上述服务器600包括:接收单元601,用于接收m个运算请求,所述m为正整数;调度单元602,用于根据所述m个运算请求中每一运算请求的属性信息从多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令;运算单元603,用于根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述m个运算请求对应的运算数据进行计算,得到m个最终运算结果;发送单元604,用于将所述m个最终运算结果中每一最终运算结果发送至对应的电子设备。可选的,所述属性信息包括目标神经网络模型,所述至少一个目标计算装置为多个并行计算装置和至少一个串行计算装置,所述服务器600还包括:获取单元605,用于若所述m为1,获取所述运算请求对应的目标神经网络模型的指令流;分组单元606,用于将所述指令流拆分为多个并行指令和多个串行指令;由所述调度单元602从所述多个计算装置中选取与所述多个并行指令对应的所述多个并行计算装置和与所述多个串行指令对应的所述至少一个串行计算装置,并确定所述多个并行计算装置中每一并行计算装置的运算指令为对应的并行指令,确定所述至少一个串行计算装置中每一串行计算装置的运算指令为对应的串行指令。可选的,所述获取单元605具体用于根据所述目标神经网络模型对应的基本操作序列获取第一指令描述符流;对所述第一指令描述符流进行简化,得到第二指令描述符流;根据所述第二指令描述符流获取所述指令流。可选的,所述分组单元606具体用于对所述多个串行指令进行分组,得到至少一组串行指令序列;所述调度单元602具体用于从所述多个计算装置中选取与所述至少一组串行指令序列中每组串行指令序列对应的计算装置,得到所述至少一个串行计算装置。可选的,所述分组单元606具体用于若所述运算请求为训练任务,基于所述运算请求对应的训练方法对所述运算请求对应的运算数据进行分组,得到多组运算数据;所述调度单元602具体用于根据所述多组运算数据和所述多个并行指令从所述多个计算装置中选取所述多个并行计算装置。可选的,所述属性信息包括目标神经网络模型,所述至少一个目标计算装置为一个目标并行计算装置,所述调度单元602具体用于若所述m大于1,且所述m个运算请求对应一个目标神经网络模型,从所述多个计算装置中选取与所述目标神经网络模型对应的所述目标并行计算装置,并确定所述目标并行计算装置的运算指令为并行运算所述m个运算请求。可选的,所述属性信息包括目标神经网络模型,所述至少一个目标计算装置为多个目标串行计算装置,所述调度单元602具体用于若所述m大于1,且所述m个运算请求对应多个目标神经网络模型,从所述多个计算装置中选取与多个目标神经网络模型中每一目标神经网络模型对应的所述多个目标串行计算装置,并确定所述多个目标串行计算装置中每一目标串行计算装置对应的运算指令为执行该目标串行计算装置对应的目标神经网络模型所对应的运算请求。可选的,所述属性信息包括运算任务,所述调度单元602具体用于若目标运算请求的运算任务为测试任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算的计算装置,得到第一目标计算装置,所述目标运算请求为所述m个运算请求中的任一运算请求,所述第一目标计算装置为所述至少一个目标计算装置中与所述目标运算请求对应的目标计算装置;若所述目标运算请求的运算任务为训练任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算和后向训练的计算装置,得到所述第一目标计算装置;确定所述第一目标计算装置对应的运算指令为完成所述目标运算请求。可选的,所述调度单元602具体用于根据所述m个运算请求中每一运算请求的属性信息从辅助调度算法集中选取辅助调度算法,所述辅助调度算法集包括以下至少一项:轮询调度算法、加权轮询算法、最少链接算法、加权最少链接算法、基于局部性的最少链接算法、带复制的基于局部性最少链接算法、目标地址散列算法、源地址散列算法;根据所述辅助调度算法从所述多个计算装置中选取所述至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令。可选的,所述服务器还包括检测单元607,用于等待第一预设时长,检测所述至少一个目标计算装置中每一目标计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的目标计算装置作为延迟计算装置;由所述调度单元602根据所述延迟计算装置对应的运算指令从所述多个计算装置的空闲计算装置中选取备用计算装置;由所述运算单元603通过所述备用计算装置执行所述延迟计算装置对应的运算指令。可选的,所述获取单元605,还用于获取所述延迟计算装置和所述备用计算装置之间最先返回的最终运算结果;由所述发送单元604向所述延迟计算装置和所述备用计算装置之间未返回最终运算结果的计算装置发送暂停指令。可选的,所述检测单元607,还用于等待第二预设时长,检测所述延迟计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的延迟计算装置作为故障计算装置;由所述发送单元604发送故障指令,所述故障指令用于告知运维人员所述故障计算装置发生故障,所述第二预设时长大于所述第一预设时长。可选的,所述服务器还包括更新单元608,用于每隔目标时间阈值,更新所述服务器的散列表。可选的,所述获取单元605,还用于获取指定神经网络模型集中每一神经网络模型的运算需求和所述多个计算装置中每一计算装置的硬件属性得到多个运算需求和多个硬件属性;所述服务器还包括部署单元609,用于根据所述多个运算需求和所述多个硬件属性将所述指定神经网络模型集中每一指定神经网络模型对应的指定计算装置上部署对应的指定神经网络模型。可选的,所述计算装置包括至少一个计算载体,所述计算载体包括至少一个计算单元。可以理解,基于接收到的m个运算请求的属性信息从服务器中包括的多个计算装置中选取执行m个运算请求的目标计算装置,并确定目标计算装置对应的运算指令,目标计算装置根据其对应的运算指令完成运算请求,并将每一运算请求对应的最终运算结果发送至对应的电子设备,即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的运算效率。在一个实施例里,如图7所示,本申请公开了另一种服务器700包括处理器701、存储器702、通信接口703以及一个或多个程序704,其中,一个或多个程序704被存储在存储器702中,并且被配置由处理器执行,所述程序704包括用于执行上述调度方法中所描述的部分或全部步骤的指令。在本发明的另一实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时使上述处理器执行调度方法中所描述的实现方式。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属
技术领域
:中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。以上的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1