CN113313241A - 确定深度学习模型的张量信息的方法和计算装置 - Google Patents

确定深度学习模型的张量信息的方法和计算装置 Download PDF

Info

Publication number
CN113313241A
CN113313241A CN202010125260.7A CN202010125260A CN113313241A CN 113313241 A CN113313241 A CN 113313241A CN 202010125260 A CN202010125260 A CN 202010125260A CN 113313241 A CN113313241 A CN 113313241A
Authority
CN
China
Prior art keywords
tensor
processable
node
subgraph
input
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
CN202010125260.7A
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.)
Pingtouge Shanghai Semiconductor Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010125260.7A priority Critical patent/CN113313241A/zh
Publication of CN113313241A publication Critical patent/CN113313241A/zh
Pending legal-status Critical Current

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Machine Translation (AREA)

Abstract

公开一种计算装置和确定深度学习模型的张量信息的方法。该计算装置包括存储器和调度单元,存储器存储指令,调度单元读取指令,以执行:针对未提供完备的张量信息的深度学习模型,确定至少一个可处理子图;以虚拟张量数据作为深度学习模型的输入执行深度学习模型,并在此过程中,记录可处理子图的输入张量数据和输出张量数据,所述虚拟张量数据根据所述深度学习模型的输入张量信息构建;根据可处理子图的输入张量数据和输出张量数据推算可处理子图的各个节点的张量信息。这种方法适用于具有任意模型结构的深度学习模型,并且尤其适用于获取那些无法通过软件平台获得张量信息的节点或者用户自定义节点的张量信息。

Description

确定深度学习模型的张量信息的方法和计算装置
技术领域
本公开涉及神经网络领域,具体而言,涉及确定深度学习模型的张量信息的方法和计算装置。
背景技术
在神经网络领域,深度学习模型一般经过两个阶段:训练阶段和推理阶段。在训练阶段,根据训练结果不断调整深度学习模型的权重参数。在推理阶段,在编译环节和执行环节系统会对深度学习模型做一些优化操作,以提高深度学习模型的推理性能。
但是这些优化操作一般都需要深度学习模型提供完备的张量信息,完备的张量信息包括深度学习模型的各个节点的输入和输出张量信息,但是在一些情况下,深度学习模型提供的张量信息并不完备,而且也无法通过其他手段得到完备的张量信息,例如一些大型复杂模型一般不提供完备的张量信息,也不大容易根据已有机制得到完备的张量信息。
发明内容
基于此,本公开的目的是提供一种确定深度学习模型的张量信息的方法和计算装置。
本公开实施例提供一种计算装置,包括存储器和调度单元,所述存储器存储指令,所述调度单元读取所述指令,以执行:
针对未提供完备的张量信息的深度学习模型,确定至少一个可处理子图,所述可处理子图由所述深度学习模型的多个连续节点组成且能够为所述指定加速单元处理;
以虚拟张量数据作为所述深度学习模型的输入执行所述深度学习模型,并在此过程中,记录所述可处理子图的输入张量数据和输出张量数据,所述虚拟张量数据根据所述深度学习模型的输入张量信息构建;
根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息。
可选地,所述确定多个可处理子图包括:
针对所述指定加速单元,以不能为所述指定加速单元处理的节点作为分隔符,将所述深度学习模型分为多个子图;
在所述多个子图中,筛除部分子图,并将剩余子图作为至少一个所述可处理子图。
可选地,所述筛除部分子图包括:
筛除可经由所述深度学习模型的软件平台获得各个节点的张量信息的子图;和/或
筛除无法优化的子图,所述无法优化的子图为在所述指定加速单元上的计算优化效果小于设定阈值的子图。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
根据所述可处理子图的输入张量数据确定所述可处理子图的输入边界节点的输入张量数据;
针对所述可处理子图,基于各个节点的具体功能和所述可处理子图的输入边界节点的输入张量数据,从所述输入边界节点开始到输出边界节点为止,逐一推算各个节点的张量信息。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
比较所述可处理子图的输出边界节点的输出张量信息是否与所述可处理子图的输出张量数据相符,以确定推算过程是否正确。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
当所述可处理子图的输出边界节点的输出张量信息与所述可处理子图的输出张量数据不符时,基于所述可处理子图的输出张量数据进行反向推算,以校正所述可处理子图的各个节点的张量信息。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
如果所述可处理子图中包含不可识别节点,执行以下步骤:
根据所述可处理子图的输入张量数据和输出张量数据确定所述可处理子图的输入边界节点的输入张量数据和输出边界节点的输出张量数据;
从所述可处理子图的输入边界节点开始到所述不可识别节点之前节点为止,逐一推算各个节点的张量信息;
从所述输出边界节点开始到所述不可识别节点之后节点为止,逐一反向推算各个节点的张量信息;
根据所述不可识别节点之前节点的张量信息和所述不可识别节点之后节点的张量信息确定所述不可识别节点的张量信息。
可选地,还包括:利用各个节点的张量信息对所述深度学习模型进行编译时调优。
可选地,所述指定加速单元在执行所述深度学习模型,利用各个节点的张量信息对所述深度学习模型的可执行指令进行判别并分发给对应的硬件算子。
可选地,所述可处理子图的各个节点的张量信息被存储为所述可处理子图的各个节点的属性数据。
可选地,所述各个节点的张量信息包括:各个节点的输入张量和输出张量的形状和类型。
第二方面,本公开实施例提供一种确定深度学习模型的张量信息的方法,包括:
针对未提供完备的张量信息的深度学习模型,确定多个可处理子图,所述可处理子图由所述深度学习模型的多个连续节点组成;
以虚拟张量数据作为所述深度学习模型的输入执行所述深度学习模型,并在此过程中,记录所述可处理子图的输入边界张量数据和输出数据,所述虚拟张量数据根据所述深度学习模型的输入张量信息构建;
根据所述可处理子图的输入边界张量数据和输出数据推算所述可处理子图的各个节点的张量信息。
可选地,所述确定至少一个可处理子图包括:
针对所述指定加速单元,以不能为所述指定加速单元处理的节点作为分隔符,将所述深度学习模型分为多个子图;
在所述多个子图中,筛除部分子图,并将剩余子图作为至少一个所述可处理子图。
可选地,所述筛除部分子图包括:
筛除可经由所述深度学习模型的软件平台获得各个节点的张量信息的子图;和/或
筛除无法优化的子图,所述无法优化的子图为在所述指定加速单元上的计算优化效果小于设定阈值的子图。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
根据所述可处理子图的输入张量数据确定所述可处理子图的输入边界节点的输入张量数据;
针对所述可处理子图,基于各个节点的具体功能和所述可处理子图的输入边界节点的输入张量数据,从所述输入边界节点开始到输出边界节点为止,逐一推算各个节点的张量信息。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
比较所述可处理子图的输出边界节点的输出张量信息是否与所述可处理子图的输出张量数据相符,以确定推算过程是否正确。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
当所述可处理子图的输出边界节点的输出张量信息与所述可处理子图的输出张量数据不符时,基于所述可处理子图的输出张量数据进行反向推算,以校正所述可处理子图的各个节点的张量信息。
可选地,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
如果所述可处理子图中包含不可识别节点,执行以下步骤:
根据所述可处理子图的输入张量数据和输出张量数据确定所述可处理子图的输入边界节点的输入张量数据和输出边界节点的输出张量数据;
从所述可处理子图的输入边界节点开始到所述不可识别节点之前节点为止,逐一推算各个节点的张量信息;
从所述输出边界节点开始到所述不可识别节点之后节点为止,逐一反向推算各个节点的张量信息;
根据所述不可识别节点之前节点的张量信息和所述不可识别节点之后节点的张量信息确定所述不可识别节点的张量信息。
可选地,还包括:利用各个节点的张量信息对所述深度学习模型进行编译时调优。
可选地,所述指定加速单元在执行所述深度学习模型,利用各个节点的张量信息对所述深度学习模型的可执行指令进行判别并分发给对应的硬件算子。
可选地,所述可处理子图的各个节点的张量信息被存储为所述可处理子图的各个节点的属性数据。
可选地,所述各个节点的张量信息包括:各个节点的输入张量和输出张量的形状和类型。
第三方面,本公开实施例提供一种数据中心,包括上述计算装置。
在本实施例中,以虚拟张量数据在调度单元上执行深度学习模型,并记录各个可处理子图的输入张量数据和输出张量数据,后续利用这些输入张量数据和输出张量数据推算每个可处理子图中的各个节点的张量信息,以达到尽快确定深度学习模型的张量信息的目的。这种方法可应用于具有任意模型结构的深度学习模型,并可在处理器等通用设备上运行,尤其适用于获取那些通过软件平台无法获取的张量信息或者用户自定义节点的张量信息。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出本公开一个实施例所应用的数据中心的层级结构图;
图2是本公开一个实施例所应用的数据中心的结构图;
图3是本公开一个实施例的数据中心中一个服务器的内部结构框图;
图4是根据本公开一个实施例服务器内部的中央处理单元(CPU)和神经网络加速单元(NPU)的控制关系图;
图5是根据本公开一个实施例的NPU核的内部结构图;
图6是示例性的用于深度学习模型的编译优化的软件平台的架构图;
图7是本公开一个实施例的确定深度学习模型的张量信息的方法的流程图;
图8是本公开另一个实施例的确定深度学习模型的张量信息的方法的流程图;
图9是本公开第三实施例的确定深度学习模型的张量信息的方法的流程图;
图10是包含一个子图的深度学习模型的示意图;
图11是包含多个子图的深度学习模型的示意图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
加速单元:也称为神经网络加速单元,针对通用处理器在一些专门用途的领域(例如,处理图像、处理神经网络的各种运算,等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,它往往与通用处理器CPU配套使用,接受通用处理器的控制,执行一些特定用途或特定领域的处理,提高在特定用途或特定领域中的计算机处理效率。
片上内存:在主核或副核内单独使用,不能被共享的存储器。
命令处理器:在加速单元和驱动该加速单元工作的中央处理单元之间的命令接口。命令处理器接收中央处理单元让加速单元执行的指令,将这些指令分给加速单元中的各个核去执行。另外,它还负责加速单元中各个核的同步。
生命周期:操作数在指令序列中并不是在全部过程中都会涉及到,在指令序列中其第一次出现和最后一次用到的指令之间的部分,就是该操作数的生命周期。也就是说,过了该生命周期后,它就不再使用,没有必要留在片上内存中。
神经网络:一般指人工神经网络(Artificial Neural Network,简写为ANN),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法网络。一个经典的神经网络,也是最简单的神经网络结构,包含三个层次:输入层、输出层和中间层(又称隐藏层)。输入层、输出层和中间层又各自包括多个节点。节点是神经网络中的最小处理单元。经由大量、简单功能的神节点的广泛的互相连接能够形成非常复杂的神经网络结构。
神经网络模型:在神经网络中,将节点数学化,产生节点的数学模型,神经网络中的大量的节点的数学模型构成了神经网络模型。
深度学习模型:深度学习的概念源于神经网络的研究,将含有多个中间层的神经网络称为深度学习网络。因此,从这个意义上将,深度学习模型也是一种神经网络模型。深度学习模型和神经网络模型都必须经由训练产生。将样本数据输入到设计好的网络结构(即网络结构已经确定)中,经由多个中间层提取特征信息,并基于输出层的输出结果不断地修正神经元的权重参数,使输出层的输出结果愈来愈趋向于预设结果,直至确定最终的权重参数。训练好的深度学习模型可以真正地应用于实际场景中,同时还可以收集深度学习模型在实际场景中的使用情况,反过来优化深度学习模型。
硬件算子:为加速单元中用于执行对应指令的硬件模块。当神经网络模型经由源代码编译得到可执行指令序列时,每个可执行指令会被分配给相应的硬件算子执行。节点、可执行指令和硬件算子具有对应关系。当然,但不一定是一对一的关系,也可以是多对一的关系。例如,多个节点在同一硬件算子中执行,或者多个可执行指令由同一个硬件算子执行。
子图:是深度学习模型的多个连续节点组成的一组节点。
输入边界节点和输出边界节点:每个子图的输入边界节点是指用于接收该子图的输入张量数据并进行处理的第一节点,第一节点可以为一个或多个,每个子图的输出边界节点是指输出该子图的输出张量数据的最后节点,最后节点可以为一个或多个节点。
图1示出作为本公开实施例所应用的一种场景的数据中心的分层结构图。
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,人工智能等越来越多地应用到数据中心。而神经网络作为人工智能的重要技术,已经大量应用到数据中心大数据分析运算中。
在传统的大型数据中心,网络结构通常是图1所示的三层结构,即分级的互连网络模型(hierarchical inter-networking model)。这个模型包含了以下三层:
接入层(Access Layer)103:有时也称为边缘层,包括接入交换机130和接入交换机所连接的各服务器140。各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。接入交换机130是用来让这些服务器接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(Top of Rack)交换机,它们物理连接服务器。
汇聚层(Aggregation Layer)102:有时候也称为分发层,包括汇聚交换机120。每台汇聚交换机120连接多台接入交换机,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
核心层(Core Layer)101:包括核心交换机110。核心交换机110为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性。整个数据中心的网络分为L3层路由网络和L2层路由网络,核心交换机110为通常为整个数据中心的网络提供一个弹性的L3层路由网络。
通常情况下,汇聚交换机120是L2和L3层路由网络的分界点,汇聚交换机120以下的是L2网络,以上是L3网络。每组汇聚交换机管理一个传送点(POD,Point Of Delivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。
汇聚交换机120和接入交换机130之间通常使用生成树协议(STP,Spanning TreeProtocol)。STP使得对于一个VLAN网络只有一个汇聚层交换机120可用,其他的汇聚层交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚层,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
图2示出了图1的分层的数据中心中各部件的物理连接。如图2所示,一个核心交换机110连接多个汇聚交换机120,一个汇聚交换机120连接多个接入交换机130,一个接入交换机130接入多个服务器140。
服务器
由于服务器140才是数据中心真实的计算装置,图3示出了一个服务器140内部的结构框图。服务器140包括有总线连接的存储器210、中央处理器(CPU)220和各种加速单元。这些加速单元包括神经网络加速单元(NPU)230、数据传输单元(DTU)260、图形处理单元(GPU,未示)、专用集成电路(ASIC,未示)和现场可编程门阵列(FPGA,未示)。
传统的处理器的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。因此,开发出了各种专门的加速单元,用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理。本公开提出的加速单元可以是它们中的任一种,下面对这些加速单元分别进行介绍。
神经网络加速单元(NPU)230:它是采用数据驱动并行计算的架构,用于处理各神经网络节点的大量运算(例如卷积、池化等)的处理单元。由于各神经网络节点的大量运算(例如卷积、池化等)中的数据和中间结果在整个计算过程中紧密联系,会被经常用到,用现有的CPU构架,由于CPU核内的内存容量很小,因此要大量频繁访问核外存储器,造成处理的低效。采用NPU,每个核中具有适于神经网络计算用到的存储容量的片上内存,避免频繁访问核外部的存储器,就能大大提高处理效率,提高计算性能。
数据传输单元(DTU)260:它是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备。DTU的主要功能是把远端设备的数据通过无线的方式传送回后台中心。在前端,DTU和客户的设备通过接口相连。DTU上电运行后先注册到移动的GPRS网络,然后去和设置在DTU中的后台中心建立套接字连接。后台中心作为套接字连接的服务端,DTU是套接字连接的客户端。因此DTU和后台软件配合一起使用,在建立连接后,前端的设备和后台的中心就可以通过DTU进行无线数据传输。
图形处理单元(GPU):是专门做图像和图形相关运算工作的微处理器。GPU开发了CPU中计算单元的空间过少的缺点,采用大量用于专门做图形计算的计算单元,使显卡减少了对CPU的依赖,承担了CPU原来承担的一些计算密集的图形图像处理工作。
专用集成电路(ASIC):是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。由于这种集成电路是按照用户要求定制的,其结构往往与特定用户要求相适应。
现场可编程门阵列(FPGA):是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
加速单元虽然有对于特定的应用或领域来说,执行效率大大高于普通处理器的优点,但也要接受调度单元220的控制。以NPU为例,存储器210中存储有各种深度学习模型,包括这些模型的神经元和神经元的权重数据等。这些深度学习模型当需要时被图3中的一个调度单元220部署到一个加速单元230。具体地,调度单元220可以通过指令的形式向加速单元230告知加速单元230深度学习模型在存储器210的存储位置。加速单元230然后可以根据这些位置进行寻址,将待执行指令存储在其片上内存中。调度单元220也可以通过指令的形式向加速单元230发送加速单元230的待执行指令,加速单元230接收指令并存储到到片上内存中。同理,加速单元230也可以通过上述方式获取输入数据。加速单元230获取待执行指令和输入数据,以进行推理计算。节点的权重参数可以包含在深度学习模型的指令序列中,由加速单元230一并从存储器210中取出。当然节点的权重参数也可以独立存储,由加速单元230在需要时从存储器210中取出。此处调度单元220可以理解为具有调度和控制能力的硬件单元,一般可为中央处理器(CPU)、微控制器、微处理器等硬件单元。
调度单元和加速单元的内部结构
下面结合图4的调度单元与加速单元的内部结构图,具体说明调度单元是如何控制加速单元进行工作的。
如图4所示,调度单元220内包含多个处理器核222和被多个处理器核222共享的高速缓存221。每个处理器核222包括取指令单元203、指令译码单元224、指令发射单元225、指令执行单元226。
取指令单元223用于将要执行的指令从存储器210中搬运到指令寄存器(可以是图4示出的寄存器堆229中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,调度单元220进入指令译码阶段,指令译码单元224按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元225的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元225位于指令译码单元224与指令执行单元226之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元226,使得多个指令的并行操作成为可能。
指令发射单元225将指令发射到指令执行单元226后,指令执行单元226开始执行指令。但如果该指令执行单元226判断该指令应该是加速单元执行的,则将其转发到相应的加速单元执行。例如,如果该指令是一条神经网络推理(inference)的指令,指令执行单元226不再执行该指令,而是将该指令通过总线发送到加速单元230,由加速单元230执行。
加速单元230内部包括多个核236(图4中示出了4个核,但本领域技术人员应当理解,加速单元230中也可以包含其它数目的核236)、命令处理器237、直接存储访问机制235、和总线通道231。
总线通道231是指令从总线进出加速单元230的通道。按照不同的机制,总线通道231可以包括PCIE通道232、I2C通道233、JTAG通道234。
PCIE即PCI-Express,是一种高速串行计算机扩展总线标准,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。PCIE属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量等功能。它的主要优势就是数据传输速率高,而且还有相当大的发展潜力。目前,PCIE的总线大多是PCIE GEN3,但本公开实施例也可以采用PCIE GEN4,即遵循PCI-Express4.0标准的总线通道。
I2C通道233是由Philips公司开发的一种简单、双向二线制同步串行总线通道。它只需要两根线即可在连接于总线上的器件之间传送信息。
JTAG是联合测试工作组(Joint Test Action Group)的简称,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称。此标准用于验证设计与测试生产出的印刷电路板功能。1990年JTAG正式由IEEE的1149.1-1990号文档标准化,在1994年,加入了补充文档对边界扫描描述语言(BSDL)进行了说明。从那时开始,这个标准被全球的电子企业广泛采用。边界扫描几乎成为了JTAG的同义词。JTAG通道234即是遵循该标准的总线通道。
直接内存访问(DMA,Direct Memory Access)机制235是一些计算机总线架构提供的功能,它能使数据从附加设备(例如外部的存储器)直接写入到加速单元230的片上内存中。这种方式相比于设备之间所有的数据传输都要通过命令处理器237的方式,大大提高了数据访问的效率。正是因为有这样的机制,加速单元230的核可以直接访问存储器210,读取深度学习模型中的参数(例如各节点的权重参数)等,大大提高了数据访问效率。虽然图上示出直接内存访问机制235位于处理器237和总线通道231之间,但是加速单元230的设计不局限于此。在某些硬件设计中,每个NPU核236都可以包含一个直接内存访问机制235,从而NPU核236无需经由命令处理器237,而是直接从附加设备上读取数据并写入到加速单元230的片上内存中。
命令处理器237将由调度单元220送至加速单元230的指令分配给核236执行。指令执行单元226将需要加速单元230执行的待执行指令发送给加速单元230或者指令执行单元226告知待执行指令在存储器210上的存储位置。待执行指令序列从总线通道231进入后,缓存在命令处理器237,由命令处理器237选择核236,将指令序列分配给其执行。待执行指令来自编译好的深度学习模型。需要明白的是,待执行指令序列中,可以包括在调度单元220执行的待执行指令和需要在加速单元230执行的待执行指令。
NPU核
图5是根据本公开一个实施例的NPU核的内部结构图。
在一个实施例中,如图5所示,NPU核236包括张量引擎310、池化算子320、卷积算子330、relu算子380、定序器350、指令缓存器340、片上内存360、常数缓冲器370。其中,张量引擎310、池化算子320、卷积算子330和激活操作算子380都被归类为硬件算子。硬件算子是加速单元中真正用于执行各项运算的硬件模块。还有一些硬件算子未在图上示出。
命令处理器237分配给NPU核236的指令序列首先进入指令缓存器340缓存。然后,定序器350从指令缓存器340中按照先进先出的顺序取指令,根据指令的性质分配给各个硬件算子执行。张量引擎310负责处理深度学习模型中的张量相关操作。池化算子320负责处理深度学习模型中的池化操作。卷积算子330负责深度学习模型中的卷积操作。激活操作算子380用于执行深度学习模型中的激活函数所对应的操作。定序器350根据取出的指令是卷积、矩阵乘法还是池化等操作性质,决定将指令分配给各个硬件算子执行。
片上内存360是存储深度学习模型中的权重参数以及深度学习模型实际使用时的输入和各种中间结果的核内存储器。常数缓冲器370是存储深度学习模型中除权重参数之外的其它常量参数(例如,深度学习模型中的超参)的缓冲器。如上所述,在调度单元220将深度学习模型预先配置在加速单元230的过程中,调度单元220可以通过指令的形式向加速单元230发送模型中的参数在存储器210中的位置。这些参数包括节点的权重和其它参数(例如超参)。对于权重,加速单元230需要时就会从存储器210相应的位置取出,放在片上内存360中。对于其它参数,加速单元230需要时就会从存储器210相应的位置取出,放在常数缓冲器370中。另外,当实际开始推理(inference)的指令由命令处理器237分配给核236执行后,指令中的输入参数(给深度学习模型的输入)也存储在片上内存360。另外,当张量引擎310和池化算子320进行卷积或池化运算后,得到的各种中间结果也存放在片上内存360中。
适用于深度学习模型的软件平台
深度学习模型的改进不仅需要上述硬件层的支持,而且需要软件层和算法层持续的改进。只能将底层最好的硬件支持和上面最好的深度学习算法结构结合起来,才能交付一个强大的计算引擎。
图6示出了示例性的深度学习模型的软件平台。该软件平台部署在研发人员的终端设备,提供适用于深度学习模型的各种环境,包括编辑环境、编译环境、量化运行环境、模拟运行环境,研发人员能够基于该平台实现深度学习模型的代码编辑、代码编译、参数调整、量化、模拟运行(即在CPU上运行模型)等一系列的操作。
参见图上所示,从上往下,架构图包括应用层401,框架层402,功能层403。
应用层401是深度学习模型在特定场景下的应用,例如视觉405,自然语言406,推荐407等方面的应用。这些应用使用本架构构建,也可以在应用中调用架构提供运行接口,以在应用中获得推理能力。
框架层402整合TensorFlow 408,MXNet 409,Caffe 410等开源平台,并且提供算子库和工具,使得可以继续对各种算法进行优化和改进。TensorFlow408是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现。MXNet 409是亚马逊(Amazon)选择的深度学习库。Caffe 410,全称ConvolutionalArchitecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。
功能层403包括编译栈403和运行栈404。编译栈403用于对各种模型进行转化(converter)411、量化(quantization)412、优化(optimization)413和编译(compile)414。转化411是提供模型的内部数据转化为中间(IR)格式。量化412是将深度学习模型中的权重参数以及给深度学习模型的输入参数从高精度数据类型转换为低精度数据类型。优化413包括模型内部的算子进行融合,多模型优化链接等操作。编译414是根据加速单元对模型进行优化,生成硬件能够识别的二进制模型。运行栈404包括运行API 415、执行管理器416、用户模式驱动器417和内核模式驱动器418。执行管理器416执行的资源分配,批量调度。优化运行API 415用于提供各种运行时可以调用的接口。用户模式驱动器417和用于提供内核模式下的硬件命令,资源调度。内核模式驱动器418用于提供内核模式下的任务调度和硬件控制等。
应理解,图6所示的为一个通用型的软件平台。市面上还有一些专用于构建特定类型的深度学习模型的软件平台。当然,本公开实施例并不依赖于特定软件平台。
本文所指的张量数据和张量信息
从概念上将,张量(tensor)是对标量,矢量,矩阵的推广。标量是只有大小没有方向的数据,即一个数值。矢量是既有大小又有方向的数据,即一串数值。矩阵是好几个矢量组成行和量得到的数据,即一堆数值。张量是任意多个维度上排列得到的数据,即多堆数值。从广泛意义上讲,张量包括标量、矢量和矩阵,即,标量数据是零维的张量,矢量是一维的张量,矩阵是二维的张量。张量可以通过形状(shape)和类型(type)两个指标表示。张量的形状定义了各个维度上的数值数量,张量的类型定义了各个维度上的数据类型。
下面以具体示例进一步说明张量的类型和形状。
1、数值1是0维张量,形状为[],类型为8位无符号整数;
2、[1,2,3]为1维张量,形状为[3],表示该张量在第一维度上有3个数值,类型为8位无符号整数;
3、[[1,2],[3,4]]为2维张量,形状为[2,2],表示该张量在第一维度上有两个数据,在第二维度上有两个数据,类型为8位无符号整数;
4、[[[1,2],[3,4],[5,6]],[[1,2],[3,4],[5,6]]]为三维向量,形状为[2,3,2],表示该张量在第一维度上有两个数据,在第二维度上有三个数据,在第三维度上有两个数据,类型为8位无符号整数。
张量的数据类型包括但不局限于以下数据类型:32位浮点数、64位浮点数、64位有符号整型、32位由符号整型、16位有符号整型、8位有符号整型、8位无符号整型、可变长度的字节数组、布尔型、两个32位浮点数组成的复数、32位有符号整型、8位有符号整型和8位无符号整型。
为了方便说明,在本文中,将与张量相关的数据称为张量数据,张量数据既可以是单一张量,也可以是张量序列,就此延伸的名称术语有:虚拟张量数据、输入张量数据、输出张量数据,将张量的形状和/或类型称为张量信息,延伸的名称术语有:输入张量信息、输出张量信息。当只提及张量信息时,包括输入张量信息和输出张量信息。输入张量数据和输出张量数据既可以是深度学习模型的输入张量数据和输出张量数据,也可以是各个节点或各个子图的输入张量数据和输出张量数据。输入张量信息和输出张量信息既可以深度学习模型的输入张量信息和输出张量信息,也可以是各个节点或各个子图的输入张量信息和输出张量信息。
现有技术张量信息的确定策略
一般来说,编译器在编译环节会利用深度学习模型的张量信息对深度学习模型进行一些优化操作,以加速模型结构在加速单元上的执行。现有技术中,编译器可以经由以下途径获取深度学习模型的张量信息:第一种,深度学习模型会提供部分或全部节点的张量信息;第二种,经由深度学习模型提供的函数获知部分或全部节点的张量信息;第三种,通过如图6所示的软件平台提供的框架函数获知深度学习模型的部分或全部节点的张量信息;第四种,如果节点是标准节点,例如conv,则基于节点规范获知该节点的张量信息。同样,加速单元在执行时也要根据深度学习模型的张量信息对深度学习模型进行一些优化操作。但是上述方法无法确保编译器能够获知每个节点的张量信息,对于具有大型、复杂的模型结构的深度学习模型,更是如此。
本公开张量信息的确定策略
图7是本公开一个实施例的确定深度学习模型的张量信息的方法的流程图。本方法应用于算法层面,更具体地,在对深度学习模型进行编译优化之前,由调度单元220执行本方法。具体包括以下步骤。
步骤S701,针对未提供完备张量信息的深度学习模型,确定至少一个可处理子图。未提供完备张量信息的深度学习模型指的是那些未提供所有节点的张量信息的深度学习模型。子图是将深度学习模型的多个连续节点组合,得到的一组节点。可处理子图是指能够被指定加速单元处理的子图。深度学习模型可以看作一个大的静态全图,然后针对指定加速单元,在这个静态全图上获取至少一个可处理子图。
步骤S702,以虚拟张量数据作为深度学习模型的输入执行深度学习模型,并在此过程中,记录每个可处理子图的输入张量数据和输出张量数据。该步骤首先获知深度学习模型的输入张量信息,然后根据深度学习模型的输入张量信息构建一个虚拟张量数据,由此,虚拟张量数据的张量信息与深度学习模型的输入张量信息保持一致,以该虚拟张量数据作为深度学习模型的输入在调度单元上执行深度学习模型,并记录每个可处理子图的输入张量数据和输出张量数据。
步骤S703,根据每个可处理子图的输入张量数据和输出张量数据推算每个可处理子图的各个节点的张量信息。在每个可处理子图的输入张量数据已知的情况下,可以得到每个可处理子图的输入张量信息,每个可处理子图的输入张量数据也是该可处理子图的输入边界节点的输入张量数据,因此每个可处理子图的输入边界节点的输入张量信息与该可处理子图的输入张量信息相同,从而得到每个可处理子图的输入边界节点的输入张量信息,然后根据输入边界数据的具体功能和输入张量信息判断出输入边界节点的输出张量信息,重复按照上述步骤判断后面各个节点的输入张量信息和输出张量信息,以此类推,直到输出边界节点。最终得到各个节点的输入和输出张量信息。
在本实施例中,以虚拟张量数据作为深度学习模型的输入在调度单元上执行深度学习模型,并记录各个可处理子图的输入张量数据和输出张量数据,后续利用这些输入张量数据和输出张量数据推算每个可处理子图中的各个节点的张量信息,以达到尽快确定深度学习模型的张量信息的目的。这种方法可应用于具有任意模型结构的深度学习模型,并可在处理器等通用设备上运行,尤其适用于获取那些通过软件平台无法获取的张量信息或者用户自定义节点的张量信息。
图8是本公开另一个实施例的确定深度学习模型的张量信息的方法的流程图。具体包括以下步骤。
步骤S801,针对未提供完备张量信息的深度学习模型,以不能为指定加速单元处理的节点作为分隔符,将深度学习模型分为多个子图。本步骤先确定深度学习模型中那些不能被指定加速单元处理的节点,将不能被指定加速单元处理的节点作为分隔符,将两个分隔符之间的连续节点作为一个子图,从而得到多个子图。
步骤S802,在多个子图中,筛除部分子图,并将剩余子图作为可处理子图。本步骤从步骤S801得到的多个子图中筛除一部分子图。筛除方式可以任意选择。例如,筛除可经由深度学习模型的软件平台获得各个节点的张量信息的子图。再例如,将计算优化效果不突出,无需在指定加速单元上执行的子图筛除,既然不需要在指定加速单元上执行,则自然也就不需要知道各个节点的张量信息了,作为具体实施方式,例如可根据编译器反馈信息,找到那些优化效果小于设定阈值的子图,并将这些子图作为后续无法优化的子图在本步骤中筛除。
步骤S803,以虚拟张量数据作为深度学习模型的输入执行深度学习模型,并在此过程中,记录每个可处理子图的输入张量数据和输出张量数据。该步骤首先获知深度学习模型的输入张量信息,然后根据深度学习模型的输入张量信息任意构建一个虚拟张量数据,该虚拟张量数据可以是单一张量,也可以是张量序列,以该虚拟张量数据作为深度学习模型的输入在调度单元上执行深度学习模型,并记录每个可处理子图的输入张量数据和输出张量数据。
步骤S804,根据每个可处理子图的输入张量数据和输出张量数据确定深度学习模型的每个可处理子图的输入边界节点的输入张量数据和输出张量数据。每个可处理子图的输入张量数据即为该子图的输入边界节点的输入数据,每个可处理子图的输出张量数据即为该子图的输出边界节点的输出张量数据,由此得到每个可处理子图的输入边界节点的输入张量数据和输出边界节点的输出张量数据。
步骤S805,判断所有可处理子图是否都处理完毕。如果所有子图都已经处理完毕,则结束循环,否则继续处理下一个子图。
步骤S806,对于每个可处理子图,基于各个节点的具体功能和可处理子图的输入边界节点的输入张量数据,从输入边界节点开始到输出边界节点为止,逐一推算各个节点的张量信息。具体地,可处理子图的输入张量数据即该可处理子图的输入边界节点的输入张量数据,由此得到输入边界节点的输入张量信息,然后根据输入边界节点的具体功能和输入边界节点的输入张量信息判断出输入边界节点的输出张量信息,重复上述步骤以得到后面的输入张量信息和输出张量信息,以此类推,直到推算出输出边界节点的输入张量信息和输出张量信息。最终得到各个节点的输入和输出张量信息。
步骤S807,判断可处理子图的输出边界节点的张量信息与可处理子图的输出边界节点的输出数据是否一致。本步骤首先根据可处理子图的输出张量数据得到的输出张量信息,然后将其与通过上述推算步骤得到的输出边界节点的张量信息是否一致,如果一致,说明上述推算过程式正确的,如果不一致,说明上述推算过程错误。在推算过程有误的情况下,可选地,可以执行步骤S808,如果推算过程正确,则跳转到步骤S805。
步骤S808,基于可处理子图的输出边界节点的输出数据进行反向推算,以校正通过上述步骤推算得到的各个节点的张量信息。本步骤即根据输出边界节点的具体功能和输出边界节点的输出张量数据进行反向推算,并根据推算结果校正上述步骤推算得到的各个节点的张量信息。
本实施例以那些无法被指定加速单元处理的节点作为分隔符,将深度学习模型分成多个子图,然后筛除其中不重要的子图,只对剩余子图推算各个节点的张量信息,由此减少了需要推算的子图数量,这样可在接下来推算时减少些需要存储的输入和输出张量数据从而减少内存使用,同时加快获取深度学习模型的关键节点的张量信息。
图9是本公开第三实施例的确定深度学习模型的张量信息的方法的流程图。该方法包括以下步骤S901-S909。其中,步骤S901-S905与上述步骤S801至S805相同,这里就不在赘述。下面详细介绍步骤S906-S909。
步骤S906,判断当前可处理子图中是否包含不可识别节点。如果是,则执行步骤S907,如果否,则采用执行上述步骤S906-S908。不可识别节点即为通过现有技术无法获知其具体功能和张量信息的节点。不可识别节点一般为用户自定义节点,并且无法通过例如软件平台等其他手段获得该节点的张量信息。
步骤907至步骤S909在当前可处理子图包含不可识别节点的情况下,首先从当前可处理子图的输入边界节点开始到不可识别节点之前节点为止,逐一推算各个节点的输入张量信息和输出张量信息。具体地,根据可处理子图的输入张量数据即该可处理子图的输入边界节点的输入张量数据,判断出输入边界节点的输入张量信息,然后根据输入边界节点的具体功能和输入边界节点的输入张量信息判断出输入边界节点的输出张量信息,重复按照上述步骤判断后面各个节点的输入张量信息和输出张量信息,以此类推,直到不可识别节点之前节点为止。最终得到输入边界节点开始到不可识别节点之前节点为止的各个节点的输入和输出张量信息。然后,从输出边界节点开始到不可识别节点之后节点为止,逐一反向推算各个节点的张量信息。具体地,根据可处理子图的输出张量数据即该可处理子图的输出边界节点的输出张量数据,判断出输出边界节点的输出张量信息,然后根据输出边界节点的具体功能和输出边界节点的输出张量信息判断出输出边界节点的输入张量信息,重复按照上述步骤判断前面各个节点的输入张量信息和输出张量信息,以此类推,直到不可识别节点之后节点为止。最后根据不可识别节点之前节点的输出张量信息和之后节点的输入张量信息。
本实施例将无法识别的节点作为分隔符,将可处理子图分成多个可推算子图,然后分别推算可推算子图的各个节点的张量信息,再根据与无法识别的节点相邻的两个节点获知该无法识别节点的张量信息,从而达到确定各个节点的张量信息的目的。
下面以图10和11所示进一步说明本公开实施例。
如图10所示,如图上所示,左图中的深度学习模型10中包括可优化的子图11,子图11中包括多个节点。以一个张量数据TensorData作为深度学习模型的输入在调度单元上至少执行一次深度学习模型10,然后记录子图11的输入张量数据和输出张量数据。本示例中,由于TensorData也是子图11的输入张量数据,因此图上子图11的输入张量数据记为TensorData,输入张量数据记为OutputTensor。对于子图11而言,TensorData同时是子图11的输入边界节点Conv的输入张量数据,根据TensorData能够获得TensorData的张量信息,则子图11的输入边界节点Conv的输入张量信息就此确定,然后根据节点conv的具体功能推算conv的输出张量信息,conv的输出张量数据为BatchNorm的输入张量数据,由此可以确定BatchNorm的输入张量信息,然后根据BatchNorm的具体功能推算BatchNorm的输出张量信息,以此类推,直到推算出最后一个节点FC的输出张量信息。一般情况下,该输出张量信息与子图11的输出张量数据OutputTensor的张量信息一致。如果两者不一致,则表明之前的推算有误。可以基于outputData反向推导子图11中的各个节点的张量信息,最终根据反向推算的张量信息校正根据正向推算的各个节点的张量信息。如果上述步骤依然不能确定各个节点的张量信息,则可以继续将深度学习模型划分为更小尺寸的子图,以确定各个节点的张量信息。
图11中划分了三个可优化的子图12-13。在子图之外的节点例如ToFloat(转换为浮点数据)和Tensor Array Stack(张量数据堆叠)为无法在加速单元上执行的节点,因此没有放在可优化子图中。划分子图之后,以虚拟张量数据TensorData作为深度学习模型1000的输入执行模型,在执行过程中分别记录子图12-14各自的输入张量数据和输出张量数据。图上示出了记录的子图12的输入张量数据InputData和输出张量数据OutputData。下面以子图12为例说明推算过程。InputData是子图12中的sub的输入张量数据,根据InpuData得到sub的输入张量信息,sub的功能是张量相减,然后得到sub的输出张量信息,例如,从InpuData得到输入张量信息为形状为[2,3,2],类型为无符号整型,然后得到的sub的输出张量信息也为:形状为[2,3,2],类型为无符号整型,然后再推算conv的输入张量信息和输出张量信息,以此类推,直到得到输出边界节点Flatter的输入张量信息和输出张量信息。由于outputData是输出边界节点Flatter的输出张量数据,将该数据和上面推算得到的Flatter的输出张量信息比较,能够确定上述推算过程是否正确。如果不正确,可以基于outputData反向推导子图12中的各个节点的张量信息,最终根据反向推导的张量信息校正根据正向推导的各个节点的张量信息。如果上述步骤依然不能确定各个节点的张量信息,则可以继续将深度学习模型划分为更小尺寸的子图,以确定各个节点的张量信息。
需要明白的是,一般情况下,我们可以通过现有技术提供的各种方式确定大多数节点的张量信息,对于剩余节点,则可以通过本公开实施例,通过推导得到每个子图内的各个节点的张量信息。
可选地,最终获得的各个节点的张量信息都可以保存在深度学习模型中。例如,各个节点的张量信息分别作为各个节点的属性数据保存在深度学习模型中。当深度学习模型处于编译环节时,编译器利用各个节点的张量信息对深度学习模型进行编译时调优,例如可以调整指令顺序。编译器将深度学习模型的源代码编译得到可执行指令序列。这些张量信息可以保存在可执行指令序列中。当指定加速单元从存储器中读取到包含这些张量信息的可执行指令序列时,指定加速单元的命令处理器可以参考张量信息将可执行指令分发给不同NPU核,NPU核也可以参考这些张量信息将可执行指令分发给不同的硬件算子。
本公开实施例提供的确定张量深度学习模型的张量信息的方法可以在任意具有一般处理能力的计算装置上执行,因此具有一定的通用性。该方法的实现仅依赖于计算装置的硬件架构,和执行模型的硬件架构无任何关联。在计算装置上处理后的模型可以用于各种执行模型的硬件设备,例如,用于数据中心、用于人工智能(AI)加速单元,用于图形处理单元(GPU)、用于能执行深度学习模型的物联网设备,用于嵌入式设备、等等。在计算装置上处理后的模型可以执行包括自然语言处理、语音识别、生物特征识别、目标检测、网络防御、知识工作辅助等诸多任务,并且目前已经在很多领域上取得了很好的应用效果。
因此,和现有技术相比,本公开实施例不仅具有实用价值,而且具有广泛的应用场景。
本公开实施例的商业价值
众所周知,深度学习模型目前已经具有广泛而且成功的应用场景,每个应用场景都具有强大的商业价值。以人脸识别领域为例,通过摄像头收集视频监控,通过神经网络模型识别人脸图像,将人脸图像和云存储的人脸比对,能够识别监控视频中犯罪人员。再在语音识别领域,通过神经网络模型进行语音识别,实现同声传译。这些应用场景都能够带来巨大的经济利益。但是这同时要求研发人员能够快速响应各种应用需求并解决问题。本公开实施例的目的就是帮助研发人员在无需或者无法了解深度学习模型的各个节点的细节内容的条件下,快速确定各个节点尤其是关键节点的张量信息,进而根据张量信息进行优化、编译等后续工作。
本领域的技术人员能够理解,本公开可以实现为系统、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (23)

1.一种计算装置,包括存储器和调度单元,所述存储器存储指令,所述调度单元读取所述指令,以执行:
针对未提供完备的张量信息的所述深度学习模型,确定至少一个可处理子图,所述可处理子图由所述深度学习模型的多个连续节点组成且能够为所述指定加速单元处理;
以虚拟张量数据作为所述深度学习模型的输入执行所述深度学习模型,并在此过程中,记录所述可处理子图的输入张量数据和输出张量数据,所述虚拟张量数据根据所述深度学习模型的输入张量信息构建;
根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息。
2.根据权利要求1所述的计算装置,其中,所述确定至少一个可处理子图包括:
以不能为所述指定加速单元处理的节点作为分隔符,将所述深度学习模型分为多个子图;
在所述多个子图中,筛除部分子图,并将剩余子图作为至少一个所述可处理子图。
3.根据权利要求2所述的计算装置,其中,所述筛除部分子图包括:
筛除可经由所述深度学习模型的软件平台获得各个节点的张量信息的子图;和/或
筛除无法优化的子图,所述无法优化的子图为在所述指定加速单元上的计算优化效果小于设定阈值的子图。
4.根据权利要求1所述的计算装置,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
根据所述可处理子图的输入张量数据确定所述可处理子图的输入边界节点的输入张量数据;
针对所述可处理子图,基于各个节点的具体功能和所述可处理子图的输入边界节点的输入张量数据,从所述输入边界节点开始到输出边界节点为止,逐一推算各个节点的张量信息。
5.根据权利要求4所述的计算装置,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
比较所述可处理子图的输出边界节点的输出张量信息是否与所述可处理子图的输出张量数据相符,以确定推算过程是否正确。
6.根据权利要求4所述的计算装置,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
当所述可处理子图的输出边界节点的输出张量信息与所述可处理子图的输出张量数据不符时,基于所述可处理子图的输出张量数据进行反向推算,以校正所述可处理子图的各个节点的张量信息。
7.根据权利要求1所述的计算装置,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
如果所述可处理子图中包含不可识别节点,执行以下步骤:
根据所述可处理子图的输入张量数据和输出张量数据确定所述可处理子图的输入边界节点的输入张量数据和输出边界节点的输出张量数据;
从所述可处理子图的输入边界节点开始到所述不可识别节点之前节点为止,逐一推算各个节点的张量信息;
从所述输出边界节点开始到所述不可识别节点之后节点为止,逐一反向推算各个节点的张量信息;
根据所述不可识别节点之前节点的张量信息和所述不可识别节点之后节点的张量信息确定所述不可识别节点的张量信息。
8.根据权利要求1所述的计算装置,其中,还包括:利用各个节点的张量信息对所述深度学习模型进行编译时调优。
9.根据权利要求1所述的计算装置,其中,所述指定加速单元在执行所述深度学习模型时,利用各个节点的张量信息对所述深度学习模型的可执行指令进行判别并分发给对应的硬件算子。
10.根据权利要求1所述的计算装置,其中,所述可处理子图的各个节点的张量信息被存储为所述可处理子图的各个节点的属性数据。
11.根据权利要求1至10任一项所述的计算装置,其中,所述各个节点的张量信息包括:各个节点的输入张量数据和输出张量数据的形状和类型。
12.一种确定深度学习模型的张量信息的方法,包括:
针对未提供完备的张量信息的所述深度学习模型,确定至少一个可处理子图,所述可处理子图由所述深度学习模型的多个连续节点组成;
以虚拟张量数据作为所述深度学习模型的输入执行所述深度学习模型,并在此过程中,记录所述可处理子图的输入张量数据和输出张量数据,所述虚拟张量数据根据所述深度学习模型的输入张量信息构建;
根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息。
13.根据权利要求12所述的方法,其中,所述确定至少一个可处理子图包括:
以不能为所述指定加速单元处理的节点作为分隔符,将所述深度学习模型分为多个子图;
在所述多个子图中,筛除部分子图,并将剩余子图作为至少一个所述可处理子图。
14.根据权利要求13所述的方法,其中,所述筛除部分子图包括:
筛除可经由所述深度学习模型的软件平台获得各个节点的张量信息的子图;和/或
筛除无法优化的子图,所述无法优化的子图为在所述指定加速单元上的计算优化效果小于设定阈值的子图。
15.根据权利要求12所述的方法,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
根据所述可处理子图的输入张量数据确定所述可处理子图的输入边界节点的输入张量数据;
针对所述可处理子图,基于各个节点的具体功能和所述可处理子图的输入边界节点的输入张量数据,从所述输入边界节点开始到输出边界节点为止,逐一推算各个节点的张量信息。
16.根据权利要求15所述的方法,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
比较所述可处理子图的输出边界节点的输出张量信息是否与所述可处理子图的输出张量数据相符,以确定推算过程是否正确。
17.根据权利要求15所述的方法,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息还包括:
当所述可处理子图的输出边界节点的输出张量信息与所述可处理子图的输出张量数据不符时,基于所述可处理子图的输出张量数据进行反向推算,以校正所述可处理子图的各个节点的张量信息。
18.根据权利要求12所述的方法,其中,所述根据所述可处理子图的输入张量数据和输出张量数据推算所述可处理子图的各个节点的张量信息包括:
如果所述可处理子图中包含不可识别节点,执行以下步骤:
根据所述可处理子图的输入张量数据和输出张量数据确定所述可处理子图的输入边界节点的输入张量数据和输出边界节点的输出张量数据;
从所述可处理子图的输入边界节点开始到所述不可识别节点之前节点为止,逐一推算各个节点的张量信息;
从所述输出边界节点开始到所述不可识别节点之后节点为止,逐一反向推算各个节点的张量信息;
根据所述不可识别节点之前节点的张量信息和所述不可识别节点之后节点的张量信息确定所述不可识别节点的张量信息。
19.根据权利要求12所述的方法,其中,还包括:利用各个节点的张量信息对所述深度学习模型进行编译时调优。
20.根据权利要求12所述的方法,其中,所述指定加速单元在执行所述深度学习模型,利用各个节点的张量信息对所述深度学习模型的可执行指令进行判别并分发给对应的硬件算子。
21.根据权利要求12所述的方法,其中,所述可处理子图的各个节点的张量信息被存储为所述可处理子图的各个节点的属性数据。
22.根据权利要求12至21任一项所述的方法,其中,所述各个节点的张量信息包括:各个节点的输入张量和输出张量的形状和类型。
23.一种数据中心,包括根据权利要求1至11任一项所述的计算装置。
CN202010125260.7A 2020-02-27 2020-02-27 确定深度学习模型的张量信息的方法和计算装置 Pending CN113313241A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010125260.7A CN113313241A (zh) 2020-02-27 2020-02-27 确定深度学习模型的张量信息的方法和计算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010125260.7A CN113313241A (zh) 2020-02-27 2020-02-27 确定深度学习模型的张量信息的方法和计算装置

Publications (1)

Publication Number Publication Date
CN113313241A true CN113313241A (zh) 2021-08-27

Family

ID=77370798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010125260.7A Pending CN113313241A (zh) 2020-02-27 2020-02-27 确定深度学习模型的张量信息的方法和计算装置

Country Status (1)

Country Link
CN (1) CN113313241A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114172908A (zh) * 2022-02-10 2022-03-11 浙江大学 一种端云协同处理方法及设备
CN114186687A (zh) * 2022-02-17 2022-03-15 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
CN114461351A (zh) * 2022-04-13 2022-05-10 之江实验室 一种用于神经网络计算的动态图执行方法及装置
CN114598631A (zh) * 2022-04-28 2022-06-07 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
CN115080240A (zh) * 2022-06-29 2022-09-20 美的集团(上海)有限公司 语音处理模型的部署方法、电子设备及存储介质

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114172908A (zh) * 2022-02-10 2022-03-11 浙江大学 一种端云协同处理方法及设备
CN114186687A (zh) * 2022-02-17 2022-03-15 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
US11823053B2 (en) 2022-02-17 2023-11-21 Zhejiang Lab Method of neural network model computation-oriented intermediate representation by constructing physical computation graph, inferring information of input and output tensor edges of each node therein, performing memory optimization on tensor edges, and optimizing physical computation graph
CN114461351A (zh) * 2022-04-13 2022-05-10 之江实验室 一种用于神经网络计算的动态图执行方法及装置
WO2023082567A1 (zh) * 2022-04-13 2023-05-19 之江实验室 一种用于神经网络计算的动态图执行方法及装置
US11861505B2 (en) 2022-04-13 2024-01-02 Zhejiang Lab Method and apparatus of executing dynamic graph for neural network computation
CN114598631A (zh) * 2022-04-28 2022-06-07 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
CN114598631B (zh) * 2022-04-28 2022-08-09 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
WO2023082576A1 (zh) * 2022-04-28 2023-05-19 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
US11805025B1 (en) 2022-04-28 2023-10-31 Zhejiang Lab Neural network computing-oriented modeling method and apparatus for distributed data routing
CN115080240A (zh) * 2022-06-29 2022-09-20 美的集团(上海)有限公司 语音处理模型的部署方法、电子设备及存储介质
CN115080240B (zh) * 2022-06-29 2023-10-10 美的集团(上海)有限公司 语音处理模型的部署方法、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN113313241A (zh) 确定深度学习模型的张量信息的方法和计算装置
JP6946572B2 (ja) 加速された量子化積和演算
EP4123515A1 (en) Data processing method and data processing device
US20190286972A1 (en) Hardware accelerated neural network subgraphs
US10366009B2 (en) Methods and systems for handling data received by a state machine engine
KR101606622B1 (ko) Fsm을 구현하기 위한 특수 목적 요소의 이용
WO2019221965A1 (en) Unsupervised cross-domain distance metric adaptation with feature transfer network
JP7012689B2 (ja) コマンド実行方法及び装置
US20230023303A1 (en) Machine learning network implemented by statically scheduled instructions
CN113642734A (zh) 一种深度学习模型的分布式训练方法、装置以及计算设备
US11789733B2 (en) Instruction processing apparatus, acceleration unit, and server
CN113191479A (zh) 联合学习的方法、系统、节点及存储介质
WO2020231005A1 (ko) 영상 처리 장치 및 그 동작방법
CN113269319A (zh) 深度学习模型的调优方法、编译方法及计算装置
CN113139650A (zh) 深度学习模型的调优方法和计算装置
CN112099882B (zh) 一种业务处理方法、装置及设备
US20210319307A1 (en) Heterogeneous computing on a system-on-chip, including machine learning inference
US10152674B2 (en) Accelerated decision tree execution
CN115495677A (zh) 视频的时空定位方法和存储介质
CN115222014A (zh) 用于神经网络模型执行的加速单元及服务器
CN114997380A (zh) 采样器以及用于图神经网络模型执行的装置
CN113642721A (zh) 处理单元、计算装置及深度学习模型的计算图处理方法
CN113705799A (zh) 处理单元、计算装置及深度学习模型的计算图处理方法
CN113705800A (zh) 处理单元、相关装置和方法
CN111966399A (zh) 指令处理方法、装置及相关产品

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240228

Address after: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, Pudong New Area Free Trade Pilot Zone, Shanghai

Applicant after: Pingtouge (Shanghai) semiconductor technology Co.,Ltd.

Country or region after: China

Address before: 847, 4 / F, capital tower 1, Grand Cayman, British Cayman Islands

Applicant before: ALIBABA GROUP HOLDING Ltd.

Country or region before: United Kingdom