CN110503195A - 利用人工智能处理器执行任务的方法及其相关产品 - Google Patents

利用人工智能处理器执行任务的方法及其相关产品 Download PDF

Info

Publication number
CN110503195A
CN110503195A CN201910750829.6A CN201910750829A CN110503195A CN 110503195 A CN110503195 A CN 110503195A CN 201910750829 A CN201910750829 A CN 201910750829A CN 110503195 A CN110503195 A CN 110503195A
Authority
CN
China
Prior art keywords
neural network
network computing
node
split
fractionation
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.)
Pending
Application number
CN201910750829.6A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201910750829.6A priority Critical patent/CN110503195A/zh
Publication of CN110503195A publication Critical patent/CN110503195A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供了一种利用人工智能处理器执行任务的方法和装置、电子设备以及非瞬时性计算机可读存储介质;其中,电子设备包括中央处理器、人工智能处理器和存储器,人工智能处理器与中央处理器通信连接,并包括多个功能模块;存储器存储有计算机程序,当计算机程序被中央处理器执行时,使得中央处理器执行利用人工智能处理器执行任务的方法。

Description

利用人工智能处理器执行任务的方法及其相关产品
技术领域
本申请涉及计算机领域,具体涉及一种利用人工智能处理器执行任务的方法和装置、电子设备和非瞬时性计算机可读存储介质。
背景技术
人工智能(Artificial Intelligence,缩写AI)是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
神经网络是当前机器学习领域中非常流行的算法。近年来,随着深度学习技术的快速发展,基于神经网络的模型和算法已经在许多领域取得了突破。例如,在语音技术、人脸识别、自动驾驶、机器翻译等领域,基于深度神经网络的算法研究越来越深入。
发明内容
基于此,本申请提供了一种利用人工智能处理器执行任务的方法,包括:
将待执行任务对应的神经网络模型解析为包含多个神经网络运算节点的计算拓扑图;
将所述计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由所述功能模块执行。
根据本申请的另一方面,提供了一种利用人工智能处理器执行任务的装置,包括:
解析单元,将待执行任务对应的神经网络模型解析为包含多个神经网络运算节点的计算拓扑图;
调度单元,将所述计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由所述功能模块执行。
根据本申请的另一方面,提供了一种电子设备,包括:
中央处理器;
人工智能处理器,与所述中央处理器通信连接,并包括多个功能模块;
存储器,存储有计算机程序,当所述计算机程序被所述中央处理器执行时,使得所述中央处理器执行如上所述的方法。
根据本申请的另一方面,提供了一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上所述的方法。
本申请提供的利用人工智能处理器执行任务的方法和装置,可利用人工智能处理器实现对神经网络模型的并行处理,将整个神经网络模型中可以并行处理的神经网络运算操作运行在不同的功能模块上,以此减少总的运行时间,从而提高系统性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了人工智能处理器的一个示例性模型。
图2示出了根据本申请一个实施方式利用人工智能处理器执行任务的方法的流程图;
图3示出了神经网络模型示意图;
图4示出了根据本申请另一实施方式利用人工智能处理器执行任务的方法的流程图;
图5示出了对神经网络运算节点进行拆分的示意图;
图6示例性地示出了对神经网络运算操作不同的拆分方式;
图7示出了根据本申请另一实施方式利用人工智能处理器执行任务的方法的流程图;
图8示出了根据本申请一个实施方式的迭代拆分算法的流程图;
图9示出了根据本申请一个实施方式将关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点的流程图;
图10示出了根据本申请一个实施方式在关键路径中计算不同拆分方式的拆分收益的流程图;
图11A和图11B分别示出了根据本申请实施方式的IPS算法和PSC算法的一个程序实例;
图12示出了根据本申请一个实施方式利用人工智能处理器执行任务的装置的示意图;
图13示出了根据本申请一个实施方式的电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,本申请的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本申请的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本申请。如在本申请说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本申请说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本申请中,人工智能处理器:也称之为专用处理器,针对特定应用或者领域的处理器。例如:图形处理器(Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的专用处理器。又例如:神经网络处理器(Neural ProcessingUnit,缩写:NPU),是一种在人工智能领域的应用中针对矩阵乘法运算的专用处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。随着人工智能技术的发展,目前已可利用计算机来完成许多复杂的任务,例如人脸识别、自动驾驶、机器翻译等。为了更好地完成这些任务,可利用神经网络模型来实现这些任务。然而,与传统算法不同,神经网络模型的一个重要特征是高内存访问和计算密集度的共存。对于通用处理器来说是一个巨大的挑战。为了应对这一挑战,提出人工智能处理器来执行神经网络加速的方案。目前,执行神经网络加速的方案大致可分为三种类型。分别是:图形处理单元(GPU),现场可编程门阵列(FPGA)和应用特定集成电路(ASIC)。其中,GPU具有强大的并行计算能力,但面临严重的功率效率问题,而FPGA具有灵活性但峰值性能较差。与GPU和FPGA不同,ASIC是专用的定制硬件架构。多核和内存计算设计有助于它们在人工智能计算领域超越GPU和FPGA。
在实际应用中,传统地通用处理器的任务调度无法直接适用于人工智能处理器,理由在于:将通用处理器内部的功能逻辑进行抽象,通用处理器内部包含多个相同的功能模块,每个功能模块执行的计算任务没有本质的区别。但是在从本质上讲没有任何区别,每个功能模块可以相互替代。这样,导致通用处理器在执行神经网络模型对应的任务时速度慢,且功耗大。对于人工智能处理器来说,将人工智能处理器内部的功能逻辑进行抽象,人工智能处理内部包含多个功能模块,每个功能模块智能执行相应的计算任务。每个功能模块之间不能相互替代。因此,人工智能处理器在执行神经网络模型对应的任务时如何任务调度是本申请所要解决的技术问题。
为了解决该技术问题,对神经网络模型中的运算操作进行分析,根据人工智能处理器的运算操作特征,神经网络模型中的操作可分为多种类型,例如:可通过矩阵乘法以及求和运算来完成的卷积和全连接操作,可通过查找表的方式来完成的激活操作。本申请所指的人工智能处理器指的是包含了多个功能模块的人工智能处理器,各个功能模块适于执行神经网络模型中不同类型的运算操作。例如:人工智能处理器包括专用于执行矩阵乘法运算的功能模块以及专用于执行查找表运算的功能模块,这些根据运算特征定制的功能模块不限于一个。因此,人工智能处理器可实现对神经网络模型的并行处理,从而提高系统性能。另外,人工智能处理器的各功能模块可相互直接通信。对于神经网络模型来说,数据流在人工智能处理器中的各功能模块之间直接传输,而无需缓存。图1示出了人工智能处理器的一个示例性模型。在图1中,人工智能处理器抽象为包含有多个功能模块的人工智能处理器,不同的功能模块适于执行神经网络模型中不同类型的运算操作。例如:矩阵乘法运算、表格查找运算、池化运算、向量运算等。此外,在图1所示的人工智能处理器中还包括各功能模块之间的互连数据传输路径。不同的应用场景对人工智能处理器会有不同的要求。例如,在边缘计算(edge computing)领域,主要关注的是计算的功率效率和时间延迟;而对于云服务器而言,主要关注的是计算吞吐量和并行度。根据实际应用,可对人工智能处理器的功能模块的数量、计算速度、连接度及相应的带宽进行配置。
前文已经提及,利用人工智能处理器的不同功能模块加速不同类型的运算操作,那么,将整个神经网络模型中可以并行处理的神经网络运算操作运行在不同的功能模块上,以此减少总的运行时间。举例子:一个神经网络模型中,首先计算节点A,然后利用节点A的输出计算节点B和节点C,最后再利用节点B和节点C的输出计算节点D。其中,节点A、节点B、节点C、节点D都是神经网络模型中的不同的节点,在该例子中,节点B和节点C是可以并行执行的,如果节点B执行对应运算操作所需时间为4s,节点C执行对应运算操作所需时间为3s,节点B和节点C都完成对应的运算操作才能执行节点D的运算操作。则并行计算所需时间是并行运算操作中所需时间最长的运算操作对应的时间。因此在此例中,节点A、节点B、节点D即是关键路径上的节点。在执行神经网络模型对应的任务过程中,确定并行运算操作中所需时间最长的运算操作,根据人工智能处理器内部的功能模块的资源利用情况,对这类运算操作进行优化,减少所需时间,使得并行计算所需时间相应减少,解决了人工智能处理器执行神经网络模型对应任务的任务调度优化问题。
基于上述工作原理的描述,图2示出了根据本申请一个实施方式利用人工智能处理器执行任务的方法的流程图。如图2所示,该方法100可包括:
步骤S110:将待执行任务对应的神经网络模型解析为包含多个神经网络运算节点的计算拓扑图。
通常地,根据神经网络模型的特点,可将一项待执行任务解析为包含多个运算节点的计算拓扑图。图3示出了神经网络模型示意图。如图3所示,在该神经网络模型中,包含了多个神经网络运算节点,每个节点(node)即代表了一个神经网络运算操作。在执行该任务的过程中,输入数据经大量的神经网络运算最终得到结果。
步骤S130:将计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由该功能模块执行。步骤S130完成了对计算拓扑图中各节点的调度(scheduling),将其分配给人工智能处理器中的各功能模块来处理。如上所述,人工智能处理器包含了适用于不同类型的神经网络运算操作的多个功能模块。那么,对于每个类型的神经网络运算操作,在人工智能处理器中都有一个或多个类型匹配的功能模块来执行该操作。基于此,可将神经网络模型中的神经网络运算节点根据其运算类型,在人工智能处理器中找到类型匹配的功能模块来执行。例如,可将神经网络模型中并行的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的不同功能模块来执行。
由此,可利用人工智能处理器实现对神经网络模型的并行处理,将整个神经网络模型中可以并行处理的神经网络运算操作运行在不同的功能模块上,以此减少总的运行时间,从而提高系统性能。
例如:对于某个神经网络模型来说,该神经网络模型包含m组运算操作,该运算操作称为神经网络模型的节点,分别标记为:op1、op2、op3……、opm。对应地,所配置的人工智能处理器包括n个功能模块,每个功能模块执行的运算操作的函数表达分别标记为fu1、fu2、……fun。那么,对于每个功能模块而言,可利用函数g(fui)来表征第i个功能模块fui的计算速度,并利用函数h(fui,fuj)来表征功能模块fui与fuj之间的带宽。函数h(fui,fuj)可采用下式表示:
神经网络模型可以由有向无环图(DAG)表示,即:G=(V,E)。其中,V表示神经网络模型中的节点,每个节点vi∈V表示运算操作,并且每个边ei,j∈E表示vi和vj之间的数据依赖性。假设运算规模是cp(vi),并且选择的功能模块的函数表达为f(vi)。可以将计算时间cpt(vi)根据cp(vi)/g(f(vi))确定。假设从节点vi到节点vj的数据规模是io(vi,vj),并且相应的通信时间iot(vi,vj)由io(vi,vj)/h(f(vi),f(vj))定义。
人工智能处理器用于对神经网络加速的处理器,人工智能处理器内部设置不同类型的功能模块,每个类型的功能模块执行对应类型的任务,不同类型的功能模块之间不能相互替代。既然是加速神经网络中某种类型的任务,就要对神经网络模型中分配给同一功能模块的节点设置优先级。假如:节点vi的优先级是s(vi),那么按照优先级顺序执行同一功能模块上的节点。假设节点vi的开始时间是st(vi),并且完成时间是ft(vi)。对于同一功能模块上的节点vi和vj,有公式(2)、公式(3)的约束。
st(vi)≥ft(vj) if s(vi)<s(vj) (2)
具体而言,在神经网络模型中,对于没有前继节点的入口节点vi,如果vj也是入口节点,且f(vi)等于f(vj),则st(vi)等于0或ft(vj)。对于神经网络模型中的其他节点,式(3)为开始时间的表达式,并且节点vi执行相应的运算操作的完成时间是ft(vi)=st(vi)+cpt(vi)。
根据上述定义,调度问题是从人工智能处理器的功能模块集合中匹配出合适的功能模块,并确定节点的优先级,从而找到功能单元分配函数f和优先级设置函数s以最小化执行时间。
图4示出了根据本申请另一实施方式利用人工智能处理器执行任务的方法的流程图。如图4所示,除了步骤S110和S130之外,该方法100还可包括步骤S120。为了简要起见,以下将仅描述图4所示的实施方式与图1的不同之处,并将略去其相同之处的详细描述。
在步骤S120中,确定计算拓扑图中的关键路径,并将关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点。由此,在步骤S130中,不仅可将计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,还可将拆分得到的多个神经网络运算子节点分别分配给人工智能处理器中类型匹配的多个功能模块。
如上所述,关键路径是指神经网络模型中从输入到输出经过的延时最长的逻辑路径,在关键路径中包含了多个运算节点。另一方面,人工智能处理器包含了适用于不同类型的神经网络运算操作的多个功能模块。那么,对于每个类型的神经网络运算操作,在人工智能处理器中都有一个或多个类型匹配的功能模块来执行该操作。基于此,可将神经网络模型中无论是未拆分的神经网络运算节点,还是已拆分得到的神经网络运算子节点,都可以根据其运算类型,在人工智能处理器中找到类型匹配的功能模块来执行。由于类型匹配的功能模块可能具有多个,因此对于一个运算节点来说,可通过拆分来实现并行执行,而对于整个运算过程来说,则通过对至少一部分运算节点进行拆分而提高了运算并行度,从而能够大大节省任务处理时间,提高运算效率。根据本实施方式的方法可视为基于神经网络模型的拆分调度算法。该方法利用了神经网络运算操作的可拆分性以及人工智能处理器中包含了适于处理不同类型的运算操作的多个功能模块,从而在执行一项任务时,先对该任务关键路径中的部分或全部节点进行拆分,再将未拆分的节点和已拆分得到的子节点共同分配给(即,调度给)人工智能处理器中类型匹配的多个功能模块,以实现并行处理,提高任务执行速度,也提高了硬件利用效率。
如上所述,神经网络运算操作通常是类似于矩阵乘法或查表的运算操作,而这类操作的特点是可以拆分。例如,可将两个维度较大的矩阵之间的乘法转化为(即,拆分为)多个维度较小的矩阵之间的乘法。此即神经网络运算操作的可拆分性(detachability)。根据可拆分性,可将在步骤S110中确定的任务的关键路径中的至少一部分神经网络运算节点拆分(partition)为多个神经网络运算子节点。图5示出了对神经网络运算节点进行拆分的示意图。如图5所示,在拆分之前,原神经网络节点的运算顺序为从节点A至节点B,再至节点C。在对节点B进行拆分之后,将节点B拆分为子节点B1、B2、B3,则拆分后的神经网络节点运算顺序为从节点A至并行的子节点B1、B2、B3,再至节点C。可见,拆分的过程可提高神经网络模型中的运算并行度。
在异构系统(heterogeneous system)中,已提出了多种任务调度算法(taskscheduling algorithm)。例如,在列表调度试探算法(list scheduling heuristicalgorithm)中,会基于所有任务建立优先级序列,然后周期性地进行任务选择和处理器选择,直至所有任务调度完成。映射试探(Mapping Heuristic)算法和最早时间优先(Earliest Time First)算法即为列表调度试探算法的两个实例。此外,在后续描述中将提到的HEFT(Heterogeneous-Earliest-Finish-Time,异构最早完成时间)算法和CPOP(Critical-Path-on-a-Processor,处理器上关键路径)算法也属于列表调度算法。对于任务的向上排序(Upward Rank)和向下排序(Downward Rank)是这两个算法中的重要部分,将在后续进行详细描述。
然而,在传统的异构系统中提出的任务调度算法均没有考虑任务是否可拆分,或者说,都是基于任务不可分割的情况,并且处理器对于所有任务也是通用的。但是,对于神经网络运算操作,神经网络任务具有可拆分性,而且诸如神经网络加速芯片的人工智能处理器可具有多个定制化模块。
图6示例性地示出了对神经网络运算操作不同的拆分方式。如图6中(a)所示为原始未被拆分的神经网络运算操作,其类型为卷积运算(conv)。上一层节点的输出数据为一个四维张量out[2,256,101,101],上一层节点的输出即为本层节点的输入in[2,256,101,101],通过本层节点的卷积操作后,所输出的数据仍为一个四维张量out[2,512,50,50],其作为下一层节点的输入数据in[2,512,50,50]。
图6中(b)示出了在批量方向进行拆分的方式,即将张量中的2字节拆分为两个1字节。图6中(c)示出了在宽度方向进行拆分的方式,即将张量中的101字节拆分为两个51字节。图6中(d)示出了在输入通道方向进行拆分的方式,即将张量中的256字节拆分为两个128字节。图6中(e)示出了在输出通道方向进行拆分的方式,即将输入数据的大小由5222912字节拆分为两个2637312字节。由于卷积运算的特殊性,在图6(d)中在输入通道方向进行拆分的方式,还需要将拆分后两个运算的结果再做一次运算,而图6的其他拆分方式可直接将拆分后的结果拼接即可。
由于神经网络操作可通过向量化的操作来完成,因此可将神经网络操作进行拆分,以提高任务的并行度。基于不同操作的特性,可采取诸如图6所示的不同拆分策略。例如,基于拆分方向,对于一个二维卷积操作而言,可具有以下五种拆分方式。在批量方向上进行拆分,这种方式不会增加额外的负担,但是如果该操作的批量数量为1,则无法采用这种方式(不能提高并行度)。在输入通道方向上进行拆分,这种方式需要增加额外的加法运算,以将来自于所拆分出的子节点的部分结果相加。在输出通道方向上进行拆分,这种方式需要每个拆分出的子节点获取全部的输入数据,这会增加数据传输量。在高度或宽度方向上进行拆分,这种方式将在每个拆分出的子节点上由于重复的输入而产生额外的数据传输消耗。另一方面,对于批量归一化操作,拆分不会导致额外的工作量。因此,在本申请中,可对每个神经网络操作构建以下拆分原则。
根据本申请,神经网络应用(即,待执行任务)可表示为有计算拓扑图,例如,如图3所示的有向无环图(directed acyclic graph,DAG),可用G=(V,E)表示。其中的每个节点vi∈V均代表一个操作,每两个节点之间的边ei,j∈E均代表节点vi和节点vj之间的数据依赖性。对于节点vi的拆分过程pi,节点vi将由所拆分出的新的节点(即,子节点)和与这些新节点相关的边(edge)所取代。在这些新的边上的数据传输量与该节点vi的操作和参数相关,如下式所示:
G’(V’,E’)=pi(G(V,E)) (5)
对于所有可拆分的节点,可得到节点的拆分序列p=(p1,p2……pk),那么基于拆分的调度过程可由下式表示:
图7示出了根据本申请另一实施方式利用人工智能处理器执行任务的方法的流程图。如图7所示,除了步骤S110、S120、S130之外,该方法100还可包括步骤S140。为了简要起见,以下将仅描述图7所示的实施方式与图4的不同之处,并将略去其相同之处的详细描述。
在步骤S140中,确定分配给同一功能模块的所有神经网络运算节点和神经网络运算子节点的优先级,以使该功能模块按所确定的优先级的顺序执行神经网络运算节点和神经网络运算子节点。通过步骤S120和S130的拆分和调度之后,未被拆分的神经网络运算节点和拆分得到的神经网络运算子节点均已被分配给人工智能处理器中类型匹配的功能模块,而每个功能模块都有可能被分配了不止一个运算节点或子节点。那么,该功能模块将按照怎样的先后顺序来执行调度来的各节点和子节点,可依据各节点和子节点的优先级来确定。优先级较高的节点或子节点,将被功能模块排在前面处理,而优先级较低的节点或子节点,将排在后面处理。由此,在人工智能处理器的每个功能模块内,将按照被调度来的各个操作的优先级顺序来进行处理,从而确保任务的有序执行,并减少任务的整体执行时间。
根据本申请一个实施方式,可利用向上排序(Upward Rank)算法和/或向下排序(Downward Rank)算法确定分配给同一功能模块的所有神经网络运算节点和神经网络运算子节点的优先级。
具体地,在向上排序算法中,根据神经网络运算节点和神经网络运算子节点的开始时刻与待执行任务的开始时刻之间的时间差确定优先级。例如,将待执行任务的开始时刻设为t0,分配给人工智能处理器中某个功能模块的一个神经网络运算节点A的开始时刻为t1,一个神经网络运算子节点B1的开始时刻为t2。那么,如果t1-t0>t2-t0,则说明节点A的开始时刻比子节点B1的开始时刻晚,因此子节点B1的优先级比节点A的优先级高。反之,如果t1-t0<t2-t0,则说明节点A的开始时刻比子节点B1的开始时刻早,因此子节点A的优先级比节点B1的优先级高。在传统的异构系统中所采用的HEFT(Heterogeneous-Earliest--Finish-Time)调度算法中,即采用了Upward Rank的优先级排序方式。但本申请的不同之处在于,将该算法用于人工智能处理器中的功能模块,以对分配给功能模块的各节点和子节点进行优先级排序。如上所述,在传统的异构系统中提出的任务调度算法(例如HEFT算法)均没有考虑任务是否可拆分,或者说,都是基于任务不可分割的情况,因此其并不适用于根据本申请的人工智能处理器。在本申请中,为了适应于神经网络应用的需求,对传统的HEFT算法和CPOP算法进行了改进。改进后的HEFT算法首先利用Upward Rank的优先级排序方式,设定每个节点vi的优先级,其中每个节点的Upward Rank值ranku(vi)由平均计算时间和平均通信时间计算得到,其中节点vj是节点vi的后级节点。那么,与传统的HEFT算法不同,在本申请中,改进后的HEFT算法中的由下式确定:
其中,ni表示人工智能处理器中所包含的能够处理节点vi的功能模块的数量。由此,使得根据本申请的调度算法能够无缝迁移到人工智能处理器上。
另一方面,在向下排序算法中,根据神经网络运算节点和神经网络运算子节点的结束时刻与待执行任务的结束时刻之间的时间差确定优先级。例如,将待执行任务的结束时刻设为T0,分配给人工智能处理器中某个功能模块的一个神经网络运算节点A的结束时刻为T1,一个神经网络运算子节点B1的结束时刻为T2。那么,如果T0–T1>T0–T2,则说明节点A的结束时刻比子节点B1的结束时刻早,因此子节点A的优先级比节点B1的优先级高。反之,如果T0–T1<T0–T2,则说明节点A的结束时刻比子节点B1的结束时刻晚,因此子节点B1的优先级比节点A的优先级高。
此外,还可综合考虑Upward Rank和Downward Rank来确定分配给同一功能模块的神经网络运算节点和神经网络运算子节点的优先级。例如,在传统的异构系统中所采用的CPOP(Critical-Path-on-a-Processor)调度算法中,即采用了Upward Rank和DownwardRank相结合的优先级排序方式,其利用这两种算法之和来选择和优化关键路径。但本申请的不同之处在于,将该算法用于人工智能处理器中的功能模块,以对分配给功能模块的各节点和子节点进行优先级排序。在传统的CPOP算法中,关键路径中的各节点必须采用相同的处理器来处理。在本申请中,为了适应于神经网络应用的需求,对传统的CPOP算法进行了改进。改进后的CPOP算法也并不存在具有相同类型的各节点必须分配给同一个功能模块的约束。
根据本申请一个实施方式,将由同一神经网络运算节点拆分得到的多个神经网络运算子节点分配给人工智能处理器中类型匹配的不同功能模块。参见图5,在对神经网络运算节点B进行拆分之前,该节点可由人工智能处理器中类型匹配的功能模块b1执行。而在对神经网络运算节点B进行拆分之后,拆分得到的子节点B1、B2、B3将可分别分配给人工智能处理器中类型匹配的不同功能模块b1、b2、b3执行。因此,可提高任务执行过程的并行度,加快运算时间,并提高硬件利用效率。
根据本申请一个实施方式,在步骤S120中,对神经网络运算节点的拆分即可以是数据规模上的拆分(即,拆分前后,不改变运算操作的类型),也可以是对运算逻辑的拆分(即,拆分前后的运算操作类型发生变化)。也就是说,拆分得到的神经网络运算子节点中的至少一部分子节点的运算类型可以与拆分前的节点的运算类型不同。例如,全连接运算操作拆分后,可以通过乘法操作和加法操作协作完成全连接运算操作。从而能够更进一步地提高并行运算效果。
根据本申请一个实施方式,在步骤S130中,除了根据功能模块的类型,还根据人工智能处理器中的功能模块的计算速度和/或通信代价进行分配。
首先,在将神经网络运算节点和神经网络运算子节点调度给人工智能处理器中的功能模块时,需要考虑其类型是否匹配,即,该功能模块是否能够处理该类型的运算操作。
其次,当人工智能处理器中包含多个类型匹配的功能模块时,则需要考虑这些功能模块哪一个计算速度快,则优先选择其来处理该节点或子节点。
另一方面,还可考虑功能模块的通信代价。例如,类型匹配的两个功能模块都可以处理某个神经网络运算节点,然而其中一个功能模块与处理该节点的下游节点的功能模块之间的通信代价比另一个功能模块与处理该节点的下游节点的功能模块之间的通信代价小,则优先选择通信代价较小的功能模块来处理该节点。本申请所述的通信代价指的是两功能模块之间传输的通信规模除以平均通信速度所得到的值。可见,通信代价越小,则通信的耗时越少,从而缩短了任务执行的时间。
根据本申请的一个实施方式,在上述步骤S120中,可利用迭代拆分算法(Iterative Partition Scheduling Algorithm,简称IPS算法)对神经网络运算节点进行拆分。
图8示出了根据本申请一个实施方式的迭代拆分算法的流程图。如图8所示,上述步骤S120可包括子步骤S121和S122。在子步骤S121中,将关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点。随后,在子步骤S122中,确定拆分后的拆分收益,并更新关键路径。在本申请中所述的拆分收益指的是,对于被拆分的神经网络运算节点而言,拆分后相对于拆分前使得执行整个任务缩短的时间,即为拆分该神经网络运算节点所获得的拆分收益。
在迭代拆分算法中,根据本申请一个实施例,可重复执行上述子步骤S121和S122预定次数,以实现对整个任务中多个神经网络运算节点的拆分操作。根据另一实施例,可预设用于迭代拆分的时间,在该预定时间内不断重复执行上述子步骤S121和S122,以实现对整个任务中多个神经网络运算节点的拆分操作。在上述两个实施例中,通过预定迭代拆分的次数或预定迭代拆分的时间,既能够实现整个计算拓扑图中多个运算节点的拆分,又能够有效地控制迭代拆分所消耗的时间,不至于在此过程中耗费过多时间。
根据另一实施例,还可不断重复执行上述子步骤S121和S122,由于在子步骤S122中,在每次拆分步骤结束后,会更新任务的关键路径。因此,可监控每次拆分后关键路径是否发生变化,即在子步骤S122中比较更新前与更新后的关键路径是否发生变化。如果连续重复上述子步骤S121和S122预定的次数,关键路径都未发生变化时,则说明在整个计算拓扑图中已没有节点可供拆分,则可结束该迭代过程。由此,既能够实现整个计算拓扑图中多个运算节点的拆分,又能够有效地控制迭代拆分所消耗的时间,不至于在此过程中浪费过多时间。
图9示出了根据本申请一个实施方式将关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点的流程图。如图9所示,上述子步骤S121可包括子步骤S121A至S121C。在子步骤S121A中,在关键路径中,计算不同拆分方式的拆分收益。可以理解,在对整个计算拓扑图进行拆分时,可有多种不同的拆分方式,例如,选择哪个或哪些节点进行拆分,而且即便选定了所要拆分的节点后,对每个节点的拆分方式也可能具有多种方式,如图6所示。因此,需要计算不同拆分方式的拆分收益。如上所述,在本申请中所述的拆分收益指的是,对于被拆分的神经网络运算节点而言,拆分后相对于拆分前使得执行整个任务缩短的时间,即为拆分该神经网络运算节点所获得的拆分收益。
在子步骤S121B中,从不同拆分方式中确定出拆分收益最大的拆分方式。随后,在子步骤S121C中,基于拆分收益最大的拆分方式对神经网络运算节点进行拆分。由此,在迭代拆分算法中的每次迭代,都选择了拆分收益最大的拆分方式进行拆分,从而更加有利于减少任务的整体执行时间。
图10示出了根据本申请一个实施方式在关键路径中计算不同拆分方式的拆分收益的流程图。如图10所示,上述子步骤S121A可包括子步骤S121A1至S121A4。在子步骤S121A1中,根据每种拆分方式,对关键路径中的至少一个神经网络运算节点进行预拆分。对于一个计算拓扑图中的神经网络运算节点而言,由于通常具有多种拆分方式可供选择,因此需要计算每种拆分方式的拆分收益。那么,在确定所采用的拆分方式之前,可对每种拆分方式进行评估,即可根据每种拆分方式对关键路径中的至少一个神经网络运算节点先进行预拆分。
在子步骤S121A2中,根据每种拆分方式的预拆分结果,对关键路径进行预更新。对于每种拆分方式,在对关键路径中的至少一个神经网络运算节点进行预拆分之后,可预更新关键路径。
在子步骤S121A3中,将根据每种拆分方式预更新的关键路径中的神经网络运算节点和神经网络运算子节点进行预调度,并预测预调度后执行整个任务所需的时间。在进行运算节点的预拆分和关键路径的预调度之后,可对关键路径中的神经网络运算节点和神经网络运算子节点进行预调度,在每种拆分方式下预调度的结果就是将运算节点和子节点分配给人工智能处理器中的功能模块的分配方案。基于此,在每个分配方案中由于每个功能模块所需处理的运算节点和运算子节点已确定,因此可预测出预调度后执行整个任务所需的时间。
在子步骤S121A4中,根据每种拆分方式预测的时间,计算每种拆分方式的拆分收益。由此,通过对运算节点的预拆分、对关键路径的预更新以及对运算节点/子节点的预调度,可计算出每种拆分方式的拆分收益,从而确定采用哪种拆分方式。
根据本申请的一个实施方式,在上述步骤S120中,可利用拆分合并算法(Partition Scheduling Combination Algorithm,简称PSC算法)对神经网络运算节点进行拆分。
根据拆分合并算法,可根据人工智能处理器中与不同类型相匹配的功能模块的硬件并行度进行拆分。在本申请中,功能模块的硬件并行度指的是,与同种类型节点相匹配的功能模块的数量。例如,如图5所示,在对神经网络运算节点进行拆分时,可将一个节点拆分为多个子节点。具体拆分出的子节点的数量,可根据与该类型相匹配的功能模块的数量来确定。例如,如果在人工智能处理器中包含与该节点的操作类型相匹配的功能模块数量为X,那么在拆分时,可将该节点拆分为X个子节点,从而利用X个功能模块实现X个子节点的并行运算。也就是说,如果与某种类型节点相匹配的功能模块数量有限,则对节点的拆分也收到该数量限制而不能无限度地拆分。如果拆分出的子节点的数量大于类型匹配的功能模块的数量,则在同一个功能模块中将会处理由同一个节点拆分出的多个子节点,这将对运算并行度没有任何提升意义。
根据本申请一个实施方式,可根据人工智能处理器中的功能模块的硬件并行度一次将所有可拆分的神经网络运算节点进行拆分。也就是说,PSC算法相较于IPS算法,并不采取迭代拆分的方式,PSC算法可一次将所有可拆分的神经网络运算节点进行拆分。当然,这种拆分操作也需要遵循上述原则,需要考虑人工智能处理器中功能模块的硬件并行度。
根据PSC算法一次将所有可拆分的神经网络运算节点进行拆分之后,由于计算拓扑图的复杂性,有可能并不是所有的拆分得到的神经网络运算子节点都能够实现并行运算。也就是说,有可能出现由同一个神经网络运算节点拆分得到的多个子节点被分配给人工智能处理器的同一个功能模块来执行的情况。对于这种情况,在PSC算法中,可根据分配给每个功能模块的神经网络运算节点和神经网络运算子节点,对拆分得到的神经网络运算子节点进行合并。当判断出分配给某个功能模块的神经网络运算子节点中包含由同一个神经网络运算节点拆分得到的多个子节点时,则将这些子节点进行合并。
例如,在人工智能处理器中具有与神经网络节点A类型匹配的三个功能模块a1、a2、a3,那么在拆分时就将节点A拆分为三个子节点A1、A2、A3。然后,再对拆分后的所有节点和子节点进行调度,以分配给各功能模块。合并的过程是指,如果发现通过调度后将子节点A1和A2调度到同一个功能模块上(这是因为可能原来的神经网络结果中还存在与节点A相同类型的另一节点A’,因此拆分出来的子节点数量多于类型匹配的功能模块的数量),则再将子节点A1和A2合并起来。
PSC算法和IPS算法的共同点都是将计算拓扑图拆分为一个新的计算拓扑图,使其更加适合调度。不同点在于,IPS算法是严格的计算拆分收益,并根据拆分收益不断地迭代拆分,它是一种较为稳定的拆分方法,但所需的操作时间相对较长。而PSC算法是一种相较IPS算法更为激进的拆分方法,其并不计算拆分收益和代价,只是启发性的进行拆分,并根据拆分结果进行一次性的合并来尽量减少拆分代价。PSC算法的效果没有IPS算法稳定,但运行时间更短。图11A和图11B分别示出了根据本申请实施方式的IPS算法和PSC算法的一个程序实例。
根据本申请一个实施方式,可通过如下方式对拆分得到的神经网络运算子节点进行合并。首先,检测每个功能模块是否分配有从同一神经网络运算节点拆分出的神经网络运算子节点。然后,根据检测结果,如果有,则将该功能模块上从同一神经网络运算节点拆分出的神经网络运算子节点进行合并。由此,实现了对神经网络运算节点的拆分和合并。
图12示出了根据本申请一个实施方式利用人工智能处理器执行任务的装置的示意图。如图12所示,该装置200可包括解析单元210和调度单元230。解析单元210将待执行任务对应的神经网络模型解析为包含多个神经网络运算节点的计算拓扑图。调度单元230将所述计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由所述功能模块执行。
图13示出了根据本申请一个实施方式的电子设备的示意图。如图13所示,该电子设备300可包括中央处理器310、人工智能处理器320和存储器330。人工智能处理器320与中央处理器310通信连接,并包括多个功能模块321。存储器330存储有计算机程序。当存储在存储器330中的计算机程序被中央处理器310执行时,能够使得中央处理器310执行如以上任一个实施方式所述的利用人工智能处理器执行任务的方法。
根据本申请的另一方面,提供了一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当该指令被处理器执行时,能够使得该处理器执行如以上任一个实施方式所述的利用人工智能处理器执行任务的方法。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本申请中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本申请的方法及其核心思想。同时,本领域技术人员依据本申请的思想,基于本申请的具体实施方式及应用范围上做出的改变或变形之处,都属于本申请保护的范围。综上所述,本说明书内容不应理解为对本申请的限制。

Claims (27)

1.一种利用人工智能处理器执行任务的方法,其特征在于,包括:
将待执行任务对应的神经网络模型解析为包含多个神经网络运算节点的计算拓扑图;
将所述计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由所述功能模块执行。
2.根据权利要求1所述的方法,其特征在于,将所述计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由所述功能模块执行包括:
将所述计算拓扑图中并行的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的不同功能模块。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定所述计算拓扑图中的关键路径,并将所述关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点;
其中,将所述计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由所述功能模块执行包括:
将拆分得到的多个神经网络运算子节点分别分配给人工智能处理器中类型匹配的多个功能模块。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
确定分配给同一功能模块的所有神经网络运算节点和神经网络运算子节点的优先级,以使所述功能模块按所确定的优先级的顺序执行神经网络运算节点和神经网络运算子节点。
5.根据权利要求4所述的方法,其特征在于,利用向上排序算法和/或向下排序算法确定分配给同一功能模块的所有神经网络运算节点和神经网络运算子节点的优先级。
6.根据权利要求5所述的方法,其特征在于,在所述向上排序算法中,根据神经网络运算节点和神经网络运算子节点的开始时刻与所述待执行任务的开始时刻之间的时间差确定优先级。
7.根据权利要求5所述的方法,其特征在于,在所述向下排序算法中,根据神经网络运算节点和神经网络运算子节点的结束时刻与所述待执行任务的结束时刻之间的时间差确定优先级。
8.根据权利要求3所述的方法,其特征在于,将由同一神经网络运算节点拆分得到的多个神经网络运算子节点分配给所述人工智能处理器中类型匹配的不同功能模块。
9.根据权利要求3所述的方法,其特征在于,拆分得到的神经网络运算子节点中的至少一部分子节点的运算类型与拆分前的节点的运算类型不同。
10.根据权利要求3所述的方法,其特征在于,将拆分得到的多个神经网络运算子节点分别分配给人工智能处理器中类型匹配的多个功能模块包括:
除了根据功能模块的类型,还根据功能模块的计算速度和/或通信代价进行分配。
11.根据权利要求3所述的方法,其特征在于,确定所述计算拓扑图中的关键路径,并将所述关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点包括:
利用迭代拆分算法进行拆分。
12.根据权利要求3所述的方法,其特征在于,确定所述计算拓扑图中的关键路径,并将所述关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点包括:
A、将所述关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点;
B、确定拆分后的拆分收益,并更新所述关键路径。
13.根据权利要求12所述的方法,其特征在于,所述拆分收益为拆分后相对于拆分前执行所述任务缩短的时间。
14.根据权利要求12所述的方法,其特征在于,步骤A包括:
在所述关键路径中,计算不同拆分方式的拆分收益;
从不同拆分方式中确定出拆分收益最大的拆分方式;
基于拆分收益最大的拆分方式进行拆分。
15.根据权利要求14所述的方法,其特征在于,在所述关键路径中,计算不同拆分方式的拆分收益包括:
根据每种拆分方式,对所述关键路径中的至少一个神经网络运算节点进行预拆分;
根据每种拆分方式的预拆分结果,对所述关键路径进行预更新;
将根据每种拆分方式预更新的关键路径中的神经网络运算节点和神经网络运算子节点进行预调度,并预测预调度后的执行所述任务所需的时间;
根据每种拆分方式预测的时间,计算每种拆分方式的拆分收益。
16.根据权利要求12所述的方法,其特征在于,重复执行步骤A和B预定次数。
17.根据权利要求12所述的方法,其特征在于,在预定时间内重复执行步骤A和B。
18.根据权利要求12所述的方法,其特征在于,重复执行步骤A和B,并在连续重复预定次数所述关键路径均未发生变化时,结束重复执行的过程。
19.根据权利要求3所述的方法,其特征在于,确定所述计算拓扑图中的关键路径,并将所述关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点包括:
利用拆分合并算法进行拆分。
20.根据权利要求3所述的方法,其特征在于,确定所述计算拓扑图中的关键路径,并将所述关键路径中的至少一个神经网络运算节点拆分为多个神经网络运算子节点包括:
根据所述人工智能处理器中与不同类型相匹配的功能模块的硬件并行度进行拆分。
21.根据权利要求20所述的方法,其特征在于,所述硬件并行度为与同种类型节点相匹配的功能模块的数量。
22.根据权利要求20所述的方法,其特征在于,根据所述硬件并行度一次将所有可拆分的神经网络运算节点进行拆分。
23.根据权利要求22所述的方法,其特征在于,将所述关键路径中的至少一部分神经网络运算节点拆分为多个神经网络运算子节点还包括:
根据分配给每个功能模块的神经网络运算子节点,对拆分得到的神经网络运算子节点进行合并。
24.根据权利要求23所述的方法,其特征在于,根据分配给每个功能模块的神经网络运算子节点,对拆分得到的神经网络运算子节点进行合并包括:
检测每个功能模块是否分配有从同一神经网络运算节点拆分出的神经网络运算子节点;
根据检测结果,将每个功能模块上从同一神经网络运算节点拆分出的神经网络运算子节点进行合并。
25.一种利用人工智能处理器执行任务的装置,其特征在于,包括:
解析单元,将待执行任务对应的神经网络模型解析为包含多个神经网络运算节点的计算拓扑图;
调度单元,将所述计算拓扑图中的多个神经网络运算节点分别分配给人工智能处理器中类型匹配的多个功能模块,以由所述功能模块执行。
26.一种电子设备,其特征在于,包括:
中央处理器;
人工智能处理器,与所述中央处理器通信连接,并包括多个功能模块;
存储器,存储有计算机程序,当所述计算机程序被所述中央处理器执行时,使得所述中央处理器执行如权利要求1-24中任一项所述的方法。
27.一种非瞬时性计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如权利要求1-24中任一项所述的方法。
CN201910750829.6A 2019-08-14 2019-08-14 利用人工智能处理器执行任务的方法及其相关产品 Pending CN110503195A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910750829.6A CN110503195A (zh) 2019-08-14 2019-08-14 利用人工智能处理器执行任务的方法及其相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910750829.6A CN110503195A (zh) 2019-08-14 2019-08-14 利用人工智能处理器执行任务的方法及其相关产品

Publications (1)

Publication Number Publication Date
CN110503195A true CN110503195A (zh) 2019-11-26

Family

ID=68587419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910750829.6A Pending CN110503195A (zh) 2019-08-14 2019-08-14 利用人工智能处理器执行任务的方法及其相关产品

Country Status (1)

Country Link
CN (1) CN110503195A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309479A (zh) * 2020-02-14 2020-06-19 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质
CN111813539A (zh) * 2020-05-29 2020-10-23 西安交通大学 一种基于优先级与协作的边缘计算资源分配方法
CN111915016A (zh) * 2020-07-10 2020-11-10 深圳云天励飞技术有限公司 一种基于tvm编译器的异构平台的部署方法及装置
WO2021129619A1 (zh) * 2019-12-27 2021-07-01 中兴通讯股份有限公司 基于激光雷达的检测方法、装置及计算机可读存储介质
WO2022021073A1 (zh) * 2020-07-28 2022-02-03 嘉楠明芯(北京)科技有限公司 神经网络模型的多算子运算方法以及装置
WO2022087785A1 (zh) * 2020-10-26 2022-05-05 华为技术有限公司 检索装置和检索方法
CN111813539B (zh) * 2020-05-29 2024-06-28 西安交通大学 一种基于优先级与协作的边缘计算资源分配方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094166A1 (en) * 2002-08-05 2007-04-26 Edwin Addison Knowledge-based methods for genetic network analysis and the whole cell computer system based thereon
CN108804077A (zh) * 2017-04-28 2018-11-13 英特尔公司 用来执行用于机器学习的浮点和整数操作的指令和逻辑
CN110084295A (zh) * 2019-04-19 2019-08-02 广东石油化工学院 一种多智能体系统分组包围控制方法及控制系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094166A1 (en) * 2002-08-05 2007-04-26 Edwin Addison Knowledge-based methods for genetic network analysis and the whole cell computer system based thereon
CN108804077A (zh) * 2017-04-28 2018-11-13 英特尔公司 用来执行用于机器学习的浮点和整数操作的指令和逻辑
CN110084295A (zh) * 2019-04-19 2019-08-02 广东石油化工学院 一种多智能体系统分组包围控制方法及控制系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAOBING CHEN ET AL.: "Partition and Scheduling Algorithms for Neural Network Accelerators", 《SPRINGER》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021129619A1 (zh) * 2019-12-27 2021-07-01 中兴通讯股份有限公司 基于激光雷达的检测方法、装置及计算机可读存储介质
US11994593B2 (en) 2019-12-27 2024-05-28 Zte Corporation Detection method and device based on laser radar, and computer readable storage medium
CN111309479A (zh) * 2020-02-14 2020-06-19 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质
CN111309479B (zh) * 2020-02-14 2023-06-06 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质
US11954522B2 (en) 2020-02-14 2024-04-09 Beijing Baidu Netcom Science And Technology Co., Ltd. Method for processing tasks in parallel, device and storage medium
CN111813539A (zh) * 2020-05-29 2020-10-23 西安交通大学 一种基于优先级与协作的边缘计算资源分配方法
CN111813539B (zh) * 2020-05-29 2024-06-28 西安交通大学 一种基于优先级与协作的边缘计算资源分配方法
CN111915016A (zh) * 2020-07-10 2020-11-10 深圳云天励飞技术有限公司 一种基于tvm编译器的异构平台的部署方法及装置
CN111915016B (zh) * 2020-07-10 2022-03-25 深圳云天励飞技术股份有限公司 一种基于tvm编译器的异构平台的部署方法及装置
WO2022021073A1 (zh) * 2020-07-28 2022-02-03 嘉楠明芯(北京)科技有限公司 神经网络模型的多算子运算方法以及装置
WO2022087785A1 (zh) * 2020-10-26 2022-05-05 华为技术有限公司 检索装置和检索方法

Similar Documents

Publication Publication Date Title
CN110490322A (zh) 运算节点的拆分方法和装置、电子设备和存储介质
CN110503195A (zh) 利用人工智能处理器执行任务的方法及其相关产品
US11769061B2 (en) Processing computational graphs
US20200042856A1 (en) Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit
CN110503199A (zh) 运算节点的拆分方法和装置、电子设备和存储介质
CN112084038B (zh) 神经网络的内存分配方法及装置
CN110674936A (zh) 一种神经网络处理方法、装置、计算机设备及存储介质
CN110633153A (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN103347055B (zh) 云计算平台中的任务处理系统、设备及方法
Fan et al. Research on Web service selection based on cooperative evolution
CN110826708B (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN112154462A (zh) 高性能流水线并行深度神经网络训练
EP4209972A1 (en) Ai model training method and apparatus, and computing device and storage medium
WO2019239254A1 (en) Parallel computational architecture with reconfigurable core-level and vector-level parallelism
CN112084037A (zh) 神经网络的内存分配方法及装置
Sanchez-Gomez et al. Parallelizing a multi-objective optimization approach for extractive multi-document text summarization
Guo et al. A delay-sensitive resource allocation algorithm for container cluster in edge computing environment
CN108985449A (zh) 一种对卷积神经网络处理器的控制方法及装置
Rawson et al. Old or heavy? Decaying gracefully with age/weight shapes
CN103685492A (zh) Hadoop集群系统的调度方法、调度装置及其应用
Hosseini et al. Resource allocation optimization in cloud computing using the whale optimization algorithm
Rossant et al. Playdoh: a lightweight Python library for distributed computing and optimisation
Roeder et al. GCN-based reinforcement learning approach for scheduling DAG applications
CN115599522A (zh) 一种云计算平台任务调度方法、装置和设备
Hu et al. Requirement-aware strategies for scheduling real-time divisible loads on clusters

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
CB02 Change of applicant information

Address after: Room 644, scientific research complex building, No. 6, South Road, Academy of Sciences, Haidian District, Beijing 100086

Applicant after: Zhongke Cambrian Technology Co.,Ltd.

Address before: Room 644, scientific research complex building, No. 6, South Road, Academy of Sciences, Haidian District, Beijing 100086

Applicant before: Beijing Zhongke Cambrian Technology Co.,Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191126