CN109976887A - 调度方法及相关装置 - Google Patents
调度方法及相关装置 Download PDFInfo
- Publication number
- CN109976887A CN109976887A CN201711467741.0A CN201711467741A CN109976887A CN 109976887 A CN109976887 A CN 109976887A CN 201711467741 A CN201711467741 A CN 201711467741A CN 109976887 A CN109976887 A CN 109976887A
- Authority
- CN
- China
- Prior art keywords
- computing device
- target
- instruction
- network model
- serial
- 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
- 238000000034 method Methods 0.000 title claims abstract description 138
- 210000005036 nerve Anatomy 0.000 claims description 68
- 238000004422 calculation algorithm Methods 0.000 claims description 46
- 238000003062 neural network model Methods 0.000 claims description 34
- 238000012549 training Methods 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 9
- 238000012360 testing method Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012423 maintenance Methods 0.000 claims description 4
- 210000004218 nerve net Anatomy 0.000 claims description 4
- 239000012141 concentrate Substances 0.000 claims description 3
- 230000008569 process Effects 0.000 description 65
- 238000010586 diagram Methods 0.000 description 21
- 238000013528 artificial neural network Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 19
- 238000009826 distribution Methods 0.000 description 14
- 239000011159 matrix material Substances 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000013527 convolutional neural network Methods 0.000 description 7
- 210000004205 output neuron Anatomy 0.000 description 7
- 230000005611 electricity Effects 0.000 description 6
- 210000002364 input neuron Anatomy 0.000 description 6
- 210000002569 neuron Anatomy 0.000 description 5
- 238000000605 extraction Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000011773 genetically engineered mouse model Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
Abstract
本申请实施例公开了一种调度方法及相关装置,其中方法基于包含多个计算装置的服务器,包括:接收M个运算请求;根据所述M个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令;根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述M个运算请求对应的运算数据进行计算得到M个最终运算结果;将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。本申请实施例,可选取服务器中的计算装置执行运算请求,提高了服务器的运行效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种调度方法及相关装置。
背景技术
神经网络是目前许多人工智能应用的基础,随着神经网络的应用范围的进一步扩大,采用服务器或云计算服务对各种各样的神经网络模型进行存储,并针对用户提交的运算请求进行运算。面对众多的神经网络模型和大批量的请求,如何提高服务器的运算效率是本领域技术人员待解决的技术问题。
发明内容
本申请实施例提出了一种调度方法及相关装置,可选取服务器中的计算装置执行运算请求,提高了服务器的运行效率。
第一方面,本申请实施例提供了一种调度方法,基于多个计算装置的服务器,所述方法包括:
接收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所示,上述服务器包括多个计算装置,计算装置包括但不限于服务器计算机,还可以是个人计算机(personal computer,PC)、网络PC、小型计算机、大型计算机等。
在本申请中,服务器中包含的每一计算装置之间通过有线或无线建立连接并传输数据,且每一计算装置包括至少一个计算载体,例如:中央处理器(Central ProcessingUnit,CPU)、图像处理器(graphics processing unit,GPU)、处理器板卡等。且本申请所涉及的服务器还可以是云服务器,为电子设备提供云计算服务。
其中,每一计算载体可包括至少一个用于神经网络运算的计算单元,例如:处理芯片等。对于计算单元的具体结构不作限定,请参阅图1a,图1a为一种计算单元的结构示意图。如图1a所示,该计算单元包括:主处理电路、基本处理电路和分支处理电路。具体的,主处理电路与分支处理电路连接,分支处理电路连接至少一个基本处理电路。
该分支处理电路,用于收发主处理电路或基本处理电路的数据。
参阅图1b,图1b为主处理电路的一种结构示意图,如图1b所示,主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑电路)电路、累加器电路、DMA(Direct MemoryAccess,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路。
主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;
具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据,即广播数据可以包括所有基础处理电路均需要接收到的数据。分发数据可以包括:部分基础处理电路需要接收到的数据。主处理电路可以通过一次或多次广播将该广播数据发送给所有分支处理电路,分支处理电路该广播数据转发给所有的基础处理电路。
可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。
每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
分支处理电路和基础电路的连接结构可以是任意的,不局限在图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所述的计算装置包括至少一个计算载体,其中计算载体又包括至少一个计算单元,即本申请中所选取的目标计算装置依赖于各个计算装置之间的连接关系和每一计算装置中部署的神经网络模型、网络资源等具体的物理硬件支持情况和运算请求的属性信息,则可将同类型的计算载体部署于同一个计算装置,例如将用于前向传播的计算载体部署于同一个计算装置,而不是不同的计算装置,有效地减少了计算装置之间通信的开销,便于提高运算效率;也可将特定神经网络模型部署于特定的计算载体,即服务器在接收到针对指定神经网络的运算请求时,调用上述指定神经网络对应的计算载体执行上述运算请求即可,节省了确定处理任务的时间,提高了运算效率。
在本申请中,将公开的,且广泛被使用的神经网络模型作为指定神经网络模型(例如:卷积神经网络(convolutional neural network,CNN)中的LeNet、AlexNet、ZFnet、GoogleNet、VGG、ResNet)。
可选的,获取指定神经网络模型集中每一指定神经网络模型的运算需求和所述多个计算装置中每一计算装置的硬件属性得到多个运算需求和多个硬件属性;根据所述多个运算需求和所述多个硬件属性将所述指定神经网络模型集中每一指定神经网络模型对应的指定计算装置上部署对应的指定神经网络模型。
其中,指定神经网络模型集包括多个指定神经网络模型,计算装置的硬件属性包括计算装置本身的网络带宽、存储容量、处理器主频率等,还包括计算装置中计算载体或计算单元的硬件属性。也就是说,根据每一计算装置的硬件属性选择与指定神经网络模型的运算需求对应的计算装置,可避免处理不及时导致服务器故障,提高服务器的运算支持能力。
本申请中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
上文中提到的运算都是神经网络中一层的运算,对于多层神经网络,其实现过程如图1e所示,图中虚线的箭头表示反向运算,实线的箭头表示正向运算。在正向运算中,当上一层人工神经网络执行完成之后,将上一层得到的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值。在反向运算中,当上一层人工神经网络的反向运算执行完成后,将上一层得到的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
神经网络的正向运算为输入数据输入至最终输出数据的运算过程,反向运算与正向运算的传播方向相反,为最终输出数据与期望输出数据的损失或损失对应的损失函数反向通过正向运算的运算过程。通过周而复始的信息正向运算和反向运算,按照损失或损失函数梯度下降的方式修正各层权值,对各层权值进行调整,也是神经网络学习训练的过程,可减少网络输出的损失。
请参见图2,图2是本申请实施例提供的一种调度方法的流程示意图,如图2所示,该方法应用于如图1所示的服务器,且该方法涉及上述允许访问上述服务器的电子设备,该电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS),终端设备(terminal device)等等。
201:接收M个运算请求。
在本申请中,M为正整数,服务器接收允许访问的电子设备发送的M个运算请求,对于电子设备的数量和每一电子设备发送的运算请求的数量不作限定,即上述M个运算请求可以是一个电子设备发送的,也可以是多个电子设备发送的。
运算请求包括运算任务(训练任务还是测试任务)、运算所涉及的目标神经网络模型等属性信息。其中,训练任务用于对目标神经网络模型进行训练,即对该神经网络模型进行正向运算和反向运算,直至训练完成;而测试任务用于根据目标神经网络模型进行一次正向运算。
上述目标神经网络模型可以是用户通过电子设备发送运算请求时上传的神经网络模型、也可以是服务器中所存储的神经网络模型等,本申请对于目标神经网络模型的数量也不作限定,即每一运算请求可对应至少一个目标神经网络模型。
202:根据所述M个运算请求中每一运算请求的属性信息从多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令。
本申请对于如何选取目标计算装置不作限定,可根据运算请求的数量和目标神经网络模型的数量选取,例如:若存在一个运算请求,且该运算请求对应一个目标神经网络模型时,可对运算请求对应的运算指令进行分类得到并行指令和串行指令,将并行指令分配给不同的目标计算装置进行运算,将串行指令分配给擅长处理的目标计算装置进行运算,提高每一指令的运算效率,从而提高运算效率;若存在多个运算请求,且多个运算请求对应一个目标神经网络模型时,可采用包含目标神经网络模型的目标计算装置对多个运算请求对应的运算数据进行批处理,避免反复运算造成的时间浪费,且避免了不同计算装置之间的通信产生的额外开销,从而提高运算效率;若存在多个运算请求,且多个运算请求对应多个目标神经网络模型时,可分别查找擅长处理该目标神经网络模型的计算装置或之前部署了该目标神经网络模型的计算装置完成运算请求,即省去了网络初始化的时间,提高了运算效率。
可选的,若目标运算请求的运算任务为测试任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算的计算装置得到第一目标计算装置;若所述目标运算请求的运算任务为训练任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算和后向训练的计算装置得到所述第一目标计算装置;确定所述第一目标计算装置对应的运算指令为完成所述目标运算请求。
其中,目标运算请求为所述M个运算请求中的任一运算请求,第一目标计算装置为所述至少一个目标计算装置中与所述目标运算请求对应的目标计算装置。
也就是说,若目标运算请求的运算任务为测试任务,第一目标计算装置为可用于执行目标神经网络模型的前向运算的计算装置;而当运算任务为训练任务时,第一目标计算装置为可用于执行目标神经网络模型的前向运算和后向训练的计算装置,即通过专用计算装置处理运算请求可提高运算的准确率和运算效率。
举例来说,服务器中包括第一计算装置和第二计算装置,其中,第一计算装置只包含用于指定神经网络模型的前向运算,第二计算装置既可以执行上述指定神经网络模型的前向运算,又可以执行上述指定神经网络模型的后向训练运算。当接收到的目标运算请求中的目标神经网络模型为上述指定神经网络模型,且运算任务为测试任务时,确定第一计算装置执行上述目标运算请求。
203:根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述M个运算请求对应的运算数据进行计算得到M个最终运算结果。
本申请对于每一运算请求对应的运算数据不作限定,可以是用于图像识别的图像数据,也可以是用于语音识别的声音数据等;当运算任务为测试任务时,运算数据为用户上传的数据,而当运算任务为训练任务时,运算数据可以是用户上传的训练集,也可以是服务器中存储的与目标神经网络模型对应的训练集。
运算指令的计算过程中可产生多个中间运算结果,根据多个中间运算结果可获取每一运算请求对应的最终运算结果。
204:将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。
可以理解,基于接收到的运算请求的属性信息从服务器中包括的M个多个计算装置中选取执行M个运算请求的目标计算装置,并确定目标计算装置对应的运算指令,目标计算装置根据其对应的运算指令完成运算请求,并将每一运算请求对应的最终运算结果发送至对应的电子设备,即根据运算请求统一分配计算资源,以使服务器中的多个计算装置进行有效地协作,从而提高服务器的运算效率。
可选的,所述方法还包括:等待第一预设时长,检测所述至少一个目标计算装置中每一目标计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的目标计算装置作为延迟计算装置;根据所述延迟计算装置对应的运算指令从所述多个计算装置的空闲计算装置中选取备用计算装置;通过所述备用计算装置执行所述延迟计算装置对应的运算指令。
也就是说,在第一预设时长到达时,将未完成运算指令的计算装置作为延迟计算装置,根据延迟计算装置执行的运算指令从空闲计算装置中选取备用计算装置,从而提高运算效率。
可选的,在所述通过所述备用计算装置执行所述延迟计算装置对应的运算指令之后,所述方法还包括:获取所述延迟计算装置和所述备用计算装置之间最先返回的最终运算结果;向所述延迟计算装置和所述备用计算装置之间未返回最终运算结果的计算装置发送暂停指令。
其中,暂停指令用于指示延迟计算装置和所述备用计算装置之间未返回最终运算结果的计算装置暂停执行对应的运算指令。也就是说,通过备用计算装置执行延迟计算装置对应的运算指令,并选取备用计算装置和延迟计算装置之间最先返回最终运算结果作为运算指令对应的最终运算结果,且向通过延迟计算装置和备用计算装置之间未返回最终运算结果的计算装置发送暂停指令,即暂停未完成运算指令的计算装置的运算,从而节省功耗。
可选的,所述方法还包括:等待第二预设时长,检测所述延迟计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的延迟计算装置作为故障计算装置,发送故障指令。
其中,故障指令用于告知运维人员故障计算装置发生故障,第二预设时长大于所述第一预设时长。也就是说,在第二预设时长到达时,若未接收到延迟计算装置返回的最终运算结果,则判断执行延迟计算装置发生故障,并告知对应的运维人员,从而提高故障的处理能力。
可选的,所述方法还包括:每隔目标时间阈值,更新所述多个计算装置的散列表。
其中,散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。在本申请中,将多个计算装置的IP地址作为关键码值,通过散列函数(映射函数)将其映射到散列表中的一个位置,即在确定目标计算装置之后,可快速查找到目标计算装置所分配的物理资源。对于散列表的具体形式不作限定,可以是人为地设置静态的散列表,也可以是根据IP地址分配的硬件资源。每隔目标时间阈值,对多个计算装置的散列表进行更新,提高了查找的准确性和查找效率。
请参照图3,图3为本申请实施例提供的另一种调度方法的流程示意图,如图3所示,该方法应用于如图1所示的服务器,且该方法涉及允许访问上述服务器的电子设备。
301:接收一个运算请求。
即上述步骤201中服务器中接收的运算请求的数量为1,即M=1。
302:获取所述运算请求对应的目标神经网络模型的指令流。
其中,指令流指明了目标神经网络模型的运算顺序和每一顺序对应的指令,即指令序列,通过上述指令流可实现目标神经网络模型的运算。每一目标神经网络模型对应一个基本操作序列,即通过解析目标神经网络模型获取描述目标神经网络模型运算的数据结构。本申请对于基本操作序列和指令描述符之间的解析规则不作限定,根据基本操作序列和指令描述符之间的解析规则获取目标神经网络模型对应的指令描述符流。
本申请对于指令描述符流中每一指令描述符流的预设格式也不作限定。根据预设格式的网络结构可生成指令描述符流对应的指令。上述指令包括cambricon指令集中的所有指令,例如矩阵运算指令、卷积运算指令、全连接层正向运算指令、池化运算指令、归一化指令、向量运算指令以及标量运算指令。
可选的,所述获取所述运算请求对应的目标神经网络模型的指令流包括:根据所述目标神经网络模型对应的基本操作序列获取第一指令描述符流;对所述第一指令描述符流进行简化得到第二指令描述符流;根据所述第二指令描述符流获取所述指令流。
也就是说,通过对第一指令描述符流的简化消除了第一指令描述符流中多余的指令描述符,从而缩短了指令流。再根据第二指令描述符流获取可被计算装置执行的指令流,根据指令和输入数据运算得到输出数据,克服了用卷积、池化、激活等细粒度的原子操作组成的完整神经网络进行运算时产生的冗余的输入、输出或其他操作,从而进一步提高了服务器的运算速度。
需要说明的是,若运算请求对应多个目标神经网络模型,则需要获取多个目标神经网络模型的指令流,再进行拆分,从而完成运算请求。
303:将所述指令流拆分为多个并行指令和多个串行指令。
本申请对于如何拆分指令流不作限定,并行指令为可分配给多个计算装置同时进行运算的指令,而串行指令为只能由单个计算装置完成运算的指令。例如:视频识别、理解等运算请求,一般包括特征提取指令和特征识别指令,其中特征提取指令需要对连续几帧图像进行卷积处理,特征识别指令一般需要对特征提取指令得到的特征进行循环神经网络的计算。上述的特征提取指令可分配给多个计算装置,而特征识别指令只能由单个计算装置进行处理。
304:从多个计算装置中选取与所述多个并行指令对应的多个并行计算装置和与所述多个串行指令对应的至少一个串行计算装置。
将指令流进行拆分得到多个并行指令和多个串行指令,从服务器中包含的多个计算装置中选取执行每一并行指令对应的并行计算装置和执行多个串行指令对应的串行计算装置,以得到多个并行计算装置和至少一个串行计算装置,即上述步骤202中至少一个目标计算装置为多个并行计算装置和至少一个串行计算装置,且每一并行计算装置的运算指令为该并行计算装置对应的并行指令,每一串行计算装置的运算指令为对应的串行指令。
本申请对于串行计算装置和并行计算装置的选取方法不作限定。
可选的,若所述运算任务为训练任务时,基于所述训练任务对应的训练方法对所述运算请求对应的运算数据进行分组得到多组运算数据;根据所述多组运算数据和所述多个并行指令从所述多个计算装置中选取所述多个并行计算装置。
根据具体的训练方法将运算请求对应的运算数据进行分组得到多组运算数据,可以以运算数据的数据类型进行分组,也可以将运算数据分为多组,在此不做限定。分组之后再选择合适的计算装置进行并行运算,即进一步减小了每一计算装置的运算量,从而提高运算效率。
例如:对于批量梯度下降算法(Batch Gradient Descent,BGD),认为存在一个训练集(batch),可以将一个batch分为多个子集,并分配给多个计算装置,其中每一计算装置对一个子集进行训练,每一子集为一组运算数据;对于随机梯度下降算法(StochasticGradient Descent,SGD),认为每个训练集(batch)中只有一个运算数据,可以将不同的训练集分配给不同的计算装置;对于小批量梯度下降算法(mini-batch SGD),可以将每个batch的不同数据分配给不同的计算装置来计算,也可以将每个batch分为更小的子集,再分配给不同的计算装置进行计算。
在本申请中,串行计算装置可以是多个并行计算装置中的一个计算装置或多个计算装置,也可以是其他空闲的计算装置等。
针对串行指令对应的部分,且串行指令中每一部分之间的计算特性差距较大的情况,可选的,所述从所述多个计算装置中选取与所述多个串行指令对应的所述至少一个串行计算装置,包括:对所述多个串行指令进行分组得到至少一组串行指令序列;从所述多个计算装置中选取与所述至少一组串行指令序列中每组串行指令序列对应的计算装置得到所述至少一个串行计算装置。
对多个串行指令进行分组得到多组指令序列,再选择与每组指令序列对应的计算装置进行运算,通过善于处理的计算装置执行对应的指令,提高每一部分的运算效率,从而提高整体运算效率。
以快速区域卷积神经网络(faster region-based convolution neuralnetwork,Faster R-CNN)为例,Faster R-CNN由卷积层、候选区域神经网络(regionproposal network,RPN)层和兴趣区域池化(region of interest pooling,ROI pooling)层组成,且每一层之间的计算特性差距很大,则可以将卷积层和RPN部署在善于处理卷积的神经网络计算装置上,而ROI pooling则可以部署在善于处理卷积的神经网络计算装置上,如更为通用的处理器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)算法、加权轮询(Weighted Round Robin)算法、最少链接(LeastConnections)算法、加权最少链接(Weighted Least Connections)算法、基于局部性的最少链接(Locality-Based Least Connections)算法、带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)算法、目标地址散列(Destination Hashing)算法、源地址散列(Source Hashing)算法。
本申请对于如何根据属性信息选取辅助调度算法不作限定,举例来说,若多个目标计算装置处理同种运算请求,则辅助调度算法可以是轮询调度算法;若不同的目标计算装置的抗压能力不同,应该给配置高、负载低的目标计算装置分配更多的运算请求,则辅助调度算法可以是加权轮询算法;若多个目标计算装置中每个目标计算装置分配到的工作量不尽相同,则辅助调度算法可以是最少链接调度算法,动态地选取其中当前积压连接数最少的一台目标计算装置来处理当前的请求,尽可能地提高目标计算装置的利用效率,也可以是加权最少链接调度算法。
也就是说,在如上述图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-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
以上的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (18)
1.一种调度方法,其特征在于,所述方法基于包含多个计算装置的服务器,所述方法包括:
接收M个运算请求,所述M为正整数;
根据所述M个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令;
根据所述至少一个目标计算装置中每一目标计算装置对应的运算指令对所述M个运算请求对应的运算数据进行计算,得到M个最终运算结果;
将所述M个最终运算结果中每一最终运算结果发送至对应的电子设备。
2.根据权利要求1所述的方法,其特征在于,所述属性信息包括目标神经网络模型,所述至少一个目标计算装置为多个并行计算装置和至少一个串行计算装置,所述根据所述M个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令,包括:
若所述M为1,获取所述运算请求对应的目标神经网络模型的指令流;
将所述指令流拆分为多个并行指令和多个串行指令;
从所述多个计算装置中选取与所述多个并行指令对应的所述多个并行计算装置和与所述多个串行指令对应的所述至少一个串行计算装置,并确定所述多个并行计算装置中每一并行计算装置的运算指令为对应的并行指令,确定所述至少一个串行计算装置中每一串行计算装置的运算指令为对应的串行指令。
3.根据权利要求2所述的方法,其特征在于,所述获取所述运算请求对应的目标神经网络模型的指令流,包括:
根据所述目标神经网络模型对应的基本操作序列获取第一指令描述符流;
对所述第一指令描述符流进行简化,得到第二指令描述符流;
根据所述第二指令描述符流获取所述指令流。
4.根据权利要求2或3所述的方法,其特征在于,所述从所述多个计算装置中选取与所述多个串行指令对应的所述至少一个串行计算装置,包括:
对所述多个串行指令进行分组,得到至少一组串行指令序列;
从所述多个计算装置中选取与所述至少一组串行指令序列中每组串行指令序列对应的计算装置,得到所述至少一个串行计算装置。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述从所述多个计算装置中选取与所述多个并行指令对应的所述多个并行计算装置,包括:
若所述运算请求为训练任务,基于所述运算请求对应的训练方法对所述运算请求对应的运算数据进行分组,得到多组运算数据;
根据所述多组运算数据和所述多个并行指令从所述多个计算装置中选取所述多个并行计算装置。
6.根据权利要求1所述的方法,其特征在于,所述属性信息包括目标神经网络模型,所述至少一个目标计算装置为一个目标并行计算装置,所述根据所述M个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令,包括:
若所述M大于1,且所述M个运算请求对应一个目标神经网络模型,从所述多个计算装置中选取与所述目标神经网络模型对应的所述目标并行计算装置,并确定所述目标并行计算装置的运算指令为并行运算所述M个运算请求。
7.根据权利要求1所述的方法,其特征在于,所述属性信息包括目标神经网络模型,所述至少一个目标计算装置为多个目标串行计算装置,所述根据所述M个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令,包括:
若所述M大于1,且所述M个运算请求对应多个目标神经网络模型,从所述多个计算装置中选取与多个目标神经网络模型中每一目标神经网络模型对应的所述多个目标串行计算装置,并确定所述多个目标串行计算装置中每一目标串行计算装置对应的运算指令为执行该目标串行计算装置对应的目标神经网络模型所对应的运算请求。
8.根据权利要求1所述的方法,其特征在于,所述属性信息包括运算任务,所述根据所述M个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令,包括:
若目标运算请求的运算任务为测试任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算的计算装置,得到第一目标计算装置,所述目标运算请求为所述M个运算请求中的任一运算请求,所述第一目标计算装置为所述至少一个目标计算装置中与所述目标运算请求对应的目标计算装置;
若所述目标运算请求的运算任务为训练任务,从所述多个计算装置中选取包括所述目标运算任务对应的目标神经网络模型的前向运算和后向训练的计算装置,得到所述第一目标计算装置;
确定所述第一目标计算装置对应的运算指令为完成所述目标运算请求。
9.根据权利要求1所述的方法,其特征在于,所述根据所述M个运算请求中每一运算请求的属性信息从所述多个计算装置中选取至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令,包括:
根据所述M个运算请求中每一运算请求的属性信息从辅助调度算法集中选取辅助调度算法,所述辅助调度算法集包括以下至少一项:轮询调度算法、加权轮询算法、最少链接算法、加权最少链接算法、基于局部性的最少链接算法、带复制的基于局部性最少链接算法、目标地址散列算法、源地址散列算法;
根据所述辅助调度算法从所述多个计算装置中选取所述至少一个目标计算装置,并确定所述至少一个目标计算装置中每一目标计算装置对应的运算指令。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:
等待第一预设时长,检测所述至少一个目标计算装置中每一目标计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的目标计算装置作为延迟计算装置;
根据所述延迟计算装置对应的运算指令从所述多个计算装置的空闲计算装置中选取备用计算装置;
通过所述备用计算装置执行所述延迟计算装置对应的运算指令。
11.根据权利要求10所述的方法,其特征在于,在所述通过所述备用计算装置执行所述延迟计算装置对应的运算指令之后,所述方法还包括:
获取所述延迟计算装置和所述备用计算装置之间最先返回的最终运算结果;
向所述延迟计算装置和所述备用计算装置之间未返回最终运算结果的计算装置发送暂停指令。
12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:
等待第二预设时长,检测所述延迟计算装置是否返回对应运算指令的最终运算结果,若否,将所述未返回最终运算结果的延迟计算装置作为故障计算装置,发送故障指令,所述故障指令用于告知运维人员所述故障计算装置发生故障,所述第二预设时长大于所述第一预设时长。
13.根据权利要求1-12任一项所述的方法,其特征在于,所述方法还包括:
每隔目标时间阈值,更新所述服务器的散列表。
14.根据权利要求1-13任一项所述的方法,其特征在于,所述方法还包括:
获取指定神经网络模型集中每一指定神经网络模型的运算需求和所述多个计算装置中每一计算装置的硬件属性得到多个运算需求和多个硬件属性;
根据所述多个运算需求和所述多个硬件属性将所述指定神经网络模型集中每一指定神经网络模型对应的指定计算装置上部署对应的指定神经网络模型。
15.根据权利要求1-14任一项所述的方法,其特征在于,所述计算装置包括至少一个计算载体,所述计算载体包括至少一个计算单元。
16.一种服务器,其特征在于,所述服务器包括多个计算装置,所述服务器还包括:用于执行如权利要求1-15任一项所述的方法的单元。
17.一种服务器,其特征在于,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行权利要求1-15任一项方法中的步骤的指令。
18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-15任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711467741.0A CN109976887B (zh) | 2017-12-28 | 2017-12-28 | 调度方法及相关装置 |
CN202010118354.1A CN111338776B (zh) | 2017-12-28 | 2017-12-28 | 调度方法及相关装置 |
US16/767,415 US11568269B2 (en) | 2017-12-28 | 2018-08-02 | Scheduling method and related apparatus |
EP18895350.9A EP3731089B1 (en) | 2017-12-28 | 2018-08-02 | Scheduling method and related apparatus |
PCT/CN2018/098324 WO2019128230A1 (zh) | 2017-12-28 | 2018-08-02 | 调度方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711467741.0A CN109976887B (zh) | 2017-12-28 | 2017-12-28 | 调度方法及相关装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010118354.1A Division CN111338776B (zh) | 2017-12-28 | 2017-12-28 | 调度方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109976887A true CN109976887A (zh) | 2019-07-05 |
CN109976887B CN109976887B (zh) | 2020-03-24 |
Family
ID=67075506
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010118354.1A Active CN111338776B (zh) | 2017-12-28 | 2017-12-28 | 调度方法及相关装置 |
CN201711467741.0A Active CN109976887B (zh) | 2017-12-28 | 2017-12-28 | 调度方法及相关装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010118354.1A Active CN111338776B (zh) | 2017-12-28 | 2017-12-28 | 调度方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111338776B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111738404A (zh) * | 2020-05-08 | 2020-10-02 | 深圳市万普拉斯科技有限公司 | 模型训练任务处理方法、装置、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071412A (zh) * | 2006-05-10 | 2007-11-14 | 何千军 | 一种基于自定义模型的神经网络分析系统及方法 |
CN102360309A (zh) * | 2011-09-29 | 2012-02-22 | 中国科学技术大学苏州研究院 | 片上多核异构系统的调度系统与调度执行方法 |
CN106022468A (zh) * | 2016-05-17 | 2016-10-12 | 成都启英泰伦科技有限公司 | 人工神经网络处理器集成电路及该集成电路的设计方法 |
CN107018184A (zh) * | 2017-03-28 | 2017-08-04 | 华中科技大学 | 分布式深度神经网络集群分组同步优化方法及系统 |
CN107169560A (zh) * | 2017-04-19 | 2017-09-15 | 清华大学 | 一种自适应可重构的深度卷积神经网络计算方法和装置 |
CN107315571A (zh) * | 2016-04-27 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行全连接层神经网络正向运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223652B2 (en) * | 2014-04-08 | 2019-03-05 | Capital One Services, Llc | Systems and methods for an attribute generator tool workflow |
CN105791381A (zh) * | 2015-12-30 | 2016-07-20 | 东莞市青麦田数码科技有限公司 | 访问控制的方法及装置 |
CN107169485B (zh) * | 2017-03-28 | 2020-10-09 | 北京捷通华声科技股份有限公司 | 一种数学公式识别方法和装置 |
CN107491811A (zh) * | 2017-09-01 | 2017-12-19 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和系统及神经网络处理器 |
-
2017
- 2017-12-28 CN CN202010118354.1A patent/CN111338776B/zh active Active
- 2017-12-28 CN CN201711467741.0A patent/CN109976887B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071412A (zh) * | 2006-05-10 | 2007-11-14 | 何千军 | 一种基于自定义模型的神经网络分析系统及方法 |
CN102360309A (zh) * | 2011-09-29 | 2012-02-22 | 中国科学技术大学苏州研究院 | 片上多核异构系统的调度系统与调度执行方法 |
CN107315571A (zh) * | 2016-04-27 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行全连接层神经网络正向运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN106022468A (zh) * | 2016-05-17 | 2016-10-12 | 成都启英泰伦科技有限公司 | 人工神经网络处理器集成电路及该集成电路的设计方法 |
CN107018184A (zh) * | 2017-03-28 | 2017-08-04 | 华中科技大学 | 分布式深度神经网络集群分组同步优化方法及系统 |
CN107169560A (zh) * | 2017-04-19 | 2017-09-15 | 清华大学 | 一种自适应可重构的深度卷积神经网络计算方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111738404A (zh) * | 2020-05-08 | 2020-10-02 | 深圳市万普拉斯科技有限公司 | 模型训练任务处理方法、装置、电子设备和存储介质 |
CN111738404B (zh) * | 2020-05-08 | 2024-01-12 | 深圳市万普拉斯科技有限公司 | 模型训练任务处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111338776B (zh) | 2023-11-28 |
CN111338776A (zh) | 2020-06-26 |
CN109976887B (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liu et al. | Adaptive asynchronous federated learning in resource-constrained edge computing | |
CN109426549A (zh) | 针对虚拟环境的加速器互连分配 | |
TWI547817B (zh) | 叢集運算架構的資源規劃方法、系統及裝置 | |
CN105393240B (zh) | 具有辅助异步向量处理器的异步处理器的方法和装置 | |
CN106951926A (zh) | 一种混合架构的深度学习系统方法及装置 | |
US20190042915A1 (en) | Procedural neural network synaptic connection modes | |
CN105518625A (zh) | 具有高带宽存储器接口的计算硬件 | |
CN108416433A (zh) | 一种基于异步事件的神经网络异构加速方法和系统 | |
CN112866059A (zh) | 一种基于人工智能应用的无损网络性能测试方法和装置 | |
CN108694089A (zh) | 使用非贪婪调度算法的并行计算架构 | |
CN103729257A (zh) | 一种分布式并行计算方法以及系统 | |
US11568269B2 (en) | Scheduling method and related apparatus | |
JP7412489B2 (ja) | 連合学習方法及び装置、電子機器、記憶媒体ならびにコンピュータプログラム | |
CN108038009A (zh) | 基于Web应用的前后端交互方法、装置及计算机设备 | |
CN109978129A (zh) | 调度方法及相关装置 | |
CN109117949A (zh) | 用于人工智能设备的灵活数据流处理器和处理方法 | |
CN109976887A (zh) | 调度方法及相关装置 | |
CN108540405A (zh) | 网络资源迁移方法及装置 | |
CN109976809A (zh) | 调度方法及相关装置 | |
CN108509256A (zh) | 调度运行设备的方法、设备和运行设备 | |
CN111935005B (zh) | 数据传输方法、装置、处理设备及介质 | |
CN109978149A (zh) | 调度方法及相关装置 | |
CN110019243A (zh) | 物联网中数据的传输方法及装置、设备、存储介质 | |
CN116541338A (zh) | 一种计算系统、模型训练方法、装置及产品 | |
CN104468379B (zh) | 基于最短逻辑距离的虚拟Hadoop集群节点选择方法及装置 |
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 | ||
CB02 | Change of applicant information |
Address after: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |