CN116802646A - 数据处理的方法和装置 - Google Patents

数据处理的方法和装置 Download PDF

Info

Publication number
CN116802646A
CN116802646A CN202180092506.8A CN202180092506A CN116802646A CN 116802646 A CN116802646 A CN 116802646A CN 202180092506 A CN202180092506 A CN 202180092506A CN 116802646 A CN116802646 A CN 116802646A
Authority
CN
China
Prior art keywords
tensor
node
input
output
neural network
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
CN202180092506.8A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116802646A publication Critical patent/CN116802646A/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/08Learning methods
    • 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
    • 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/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)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了人工智能领域中的一种数据处理的方法与装置。该数据处理的方法包括:获取神经网络图中第一节点的编号信息,该编号信息包括张量编号与轴编号,张量编号所指示的张量为待切分张量,轴编号所指示的轴为待切分张量的切分轴;沿轴编号指示的轴对第一节点的张量编号指示的待切分张量进行切分,神经网络图用于表征一个神经网络,第一节点是该神经网络的一个计算单元。通过在神经网络图中标注每个节点的编号信息,以及获取该节点的编号信息,并基于该编号信息完成对该节点的张量的切分,本申请实施例能够实现完成对任意神经网络图中节点的切分,并能够增强神经网络图的切分方案的适用性,从而可以直接切分任意的神经网络图。

Description

数据处理的方法和装置 技术领域
本申请实施例涉及人工智能领域,更具体地,涉及一种数据处理的方法和装置。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
在深度学习领域中,神经网络编译器在计算神经网络模型时,会以计算图的形式对其进行处理,但由于需要计算的数据量很大,经常出现内存限制(memory bound)导致性能无法提升的问题。神经网络图的切分方案可以有效解决因数据量过大而引入的内存限制问题,但由于神经网络图中的算子类别多样,导致神经网络图的切分方案的定制属性过强,而无法实现将其应用到对其他神经网络图的切分操作,制约了神经网络图的切分方案的应用和发展。
因此,如何增强神经网络图的切分方案的适用性以达到可以直接切分任意的神经网络图是一个亟待解决的问题。
发明内容
本申请实施例提供了一种数据处理的方法和装置,能够增强神经网络图的切分方案的适用性,从而可以直接切分任意的神经网络图。
第一方面,提供了一种数据处理的方法,包括:获取神经网络图中第一节点的编号信息,该编号信息包括张量编号与轴编号,该张量编号所指示的张量为待切分张量,该轴编号所指示的轴为待切分张量的切分轴;沿轴编号指示的切分轴,对第一节点的张量编号指示的待切分张量进行切分,该神经网络图用于表征神经网络,该第一节点用于表征神经网络的一个计算单元。
通过将每个节点的编号信息标注在神经网络图中,该每个节点所对应的编号信息与每个节点的具体类型与具体操作是解耦的,如此,在编号信息与节点的具体类型和具体操作呈解耦关系的情况下,在切分任意的具体的神经网络图时,通过应用本申请实施例的技术方案,即在任意的具体的神经网络图中将该神经网络图中的每个节点的编号信息标注在神经网络图中然后再进行切分,这样,本申请实施例就能够实现完成对任意神经网络图中节点的切分,并能够提升神经网络图的切分方案的适用性。并且,经由编号信息所实现的网 络切分可以完美替代过去需要人为分析网络才能实现的切分方法。同时,由于流程完全自动,经由编号信息实现的神经网络切分可以通过多次尝试找到性能最优的切分方式,大大提升神经网络图切分的效率和性能收益,促进神经网络图的切分方案的应用与发展。
在一种可能的实现方式中,该待切分张量是第一节点的输入张量时,该编号信息还包括指示值,该指示值用于指示待切分张量沿切分轴切分得到的相邻子张量是否存在重叠。
通过在编号信息中携带指示值,本申请实施例的数据处理装置在对神经网络图的节点进行切分时会灵活地选择编号信息,由于某些算子的轴在进行切分后会产生数据交叠,导致数据量变大引起性能收益降低,本申请实施例会优先选择不存在重叠的编号信息。
在一种可能的实现方式中,该编号信息还包括指示值,该指示值用于指示待切分张量沿切分轴切分得到的相邻子张量是否存在重叠。
通过在编号信息中携带指示值,本申请实施例能够确定该编号信息中轴编号所指示的轴是否对应重叠,并会优先选择不存在重叠的编号信息。
在一种可能的实现方式中,该待切分张量是第一节点的输入张量时,该指示值用于指示待切分张量沿切分轴切分得到的相邻子张量存在重叠,或者,该待切分张量是第一节点的输入张量时,该指示值用于指示待切分张量沿切分轴切分得到的相邻子张量不存在重叠;或者,该待切分张量是第一节点的输出张量时,该指示值用于指示待切分张量沿切分轴切分得到的相邻子张量不存在重叠。
在一种可能的实现方式中,第二节点是第一节点的前级节点,第二节点属于神经网络图,该方法还包括:确定第一节点的第一输入张量对应的M个输入区间,M是第一输入张量的切分数;获取第二节点的第二输出张量的切分数K;基于该M个输入区间与K,确定第二节点的第二输出张量对应的K个输出区间,其中,M与K均为正整数。
通过基于第一节点的输入张量对应的M个输入区间和第二节点的输出张量的切分数K,且以反推的方式确定第二节点的输出张量所对应的K个输出区间,并以区间的表达形式,通过此种方式,本申请实施例可以解决神经网络中存在不同切分数的情况下引起的切分聚合(无论在并行计算还是核(core)内缓冲(buffer)优化场景,切分的聚合都代表一次优化动作的结束,而在这些场景中,通常越长的优化动作带来的性能收益也越明显)因此,通过此种方案可以一定程度上提升神经网络切分的效果。
在一种可能的实现方式中,基于M个输入区间与K,确定第二节点的第二输出张量对应的K个输出区间,包括:若M大于K,M个输入区间聚合成K个输出区间;或者,若M等于K,M个输入区间与K个输出区间一一对应;或者,若M小于K,M个输入区间分成K个输出区间。
在一种可能的实现方式中,确定第一节点的第一输入张量对应的M个输入区间,包括:确定第一节点的第一输出张量对应的M个输出区间,其中,M为第一节点的第一输出张量对应的切分数;对第一节点的第一输出张量对应的M个输出区间进行反向推导,确定第一节点的第一输入张量对应的M个输入区间。
通过以反向推导的方式确定第一节点的输入张量所对应的M个输入区间,本申请实施例能够基于该M个输入区间确定第二节点的输出张量所对应的多个输出区间,如此便完成了数据的分组依赖,避免了数据的强制聚合,可以提升神经网络切分带来的性能收益。
在一种可能的实现方式中,第二节点是第一节点与第三节点的前级节点,第二节点与 第三节点属于神经网络图,方法还包括:确定第一节点的第一输入张量对应的M个输入区间以及第三节点的第三输入张量对应的Y个输入区间,M是第一输入张量的切分数,Y是第三输入张量的切分数;获取第二节点的第二输出张量的切分数K;基于M个输入区间、Y个输入区间与K,确定第二节点的输出张量对应的K个输出区间,其中,M、K与Y均为正整数。
通过上述技术方案,当第二节点对应多个后级节点时,且由不同支线得到不同的第二节点的输出张量所对应的多个输出区间时,通过取不同支线推导得到的对应两个区间的并集,继而最终确定第二节点的输出张量所对应的多个输出区间,如此,本申请实施例能够避免多个后继节点无法取到完整数据的问题,由于取得的数据为各个后继结点的区间并集,可以保证每个后集结点都能取得自身需要的数据块大小,避免了由于数据踩踏导致的神经网络推理结果异常或训练无法收敛。
第二方面,提供了一种数据处理的装置,包括:获取单元,用于获取神经网络图中第一节点的编号信息,该编号信息包括张量编号与轴编号,该张量编号所指示的张量为待切分张量,该轴编号所指示的轴为待切分张量的切分轴;切分单元,用于沿轴编号指示的切分轴,对第一节点的张量编号指示的待切分张量进行切分,该神经网络图用于表征神经网络,该第一节点用于表征神经网络的一个计算单元。
在一种可能的实现方式中,待切分张量是第一节点的输入张量时,编号信息还包括指示值,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量是否存在重叠。
在一种可能的实现方式中,编号信息还包括指示信息,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量是否存在重叠。
在一种可能的实现方式中,待切分张量是第一节点的输入张量时,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量存在重叠,或者,待切分张量是第一节点的输入张量时,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量不存在重叠;或者,待切分张量是第一节点的输出张量时,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量不存在重叠。
在一种可能的实现方式中,第二节点是第一节点的前级节点,第二节点属于神经网络图,装置还包括处理单元,处理单元,用于确定第一节点的第一输入张量对应的M个输入区间,M是所述输入张量的切分数;获取单元,还用于获取第二节点的第二输出张量的切分数K;处理单元,还用于基于M个输入区间与K,确定第二节点的第二输出张量对应的K个输出区间,其中,M与K均为正整数。
在一种可能的实现方式中,所述处理单元用于:若M大于K,将M个输入区间聚合成K个输出区间;或者,若M等于K,M个输入区间与K个输出区间一一对应;或者,若M小于K,将M个输入区间分成K个输出区间。
在一种可能的实现方式中,所述处理单元,还用于:确定第一节点的第一输出张量对应的M个输出区间,其中,M为第一节点的第一输出张量对应的切分数;对第一节点的第一输出张量对应的M个输出区间进行反向推导,确定第一节点的第一输入张量对应的M个输入区间。
在一种可能的实现方式中,第二节点是第一节点与第三节点的前级节点,第二节点与第三节点属于神经网络图,装置还包括处理单元,处理单元,用于确定第一节点的第一输 入张量对应的M个输入区间以及第三节点的第二输入张量对应的Y个输入区间,M是第一输入张量的切分数,Y是第二输入张量的切分数;获取单元,还用于获取第二节点的第二输出张量的切分数K;处理单元,还用于基于M个输入区间、Y个输入区间与所述K,确定第二节点的输出张量对应的K个输出区间,其中,M、Y与K均为正整数。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机或者处理器上运行时,使得所述计算机或所述处理器执行如第一方面以及第一方面的任一种可能实现方式中任一项所述的方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被运行时,实现如第一方面以及第一方面的任一种可能实现方式中任一项所述的方法。
附图说明
图1是本申请实施例提供的一种人工智能主体框架示意图。
图2是本申请实施例提供的一种应用环境示意图。
图3是本申请实施例提供的一种卷积神经网络结构示意图。
图4是本申请实施例提供的另一种卷积神经网络结构示意图。
图5是本申请实施例提供的一种芯片的硬件结构的示意图。
图6是本申请实施例提供的一种系统架构的示意图。
图7是本申请实施例提供的一种数据处理的方法的示意流程图。
图8是本申请实施例提供的另一种数据处理的方法的示意流程图。
图9是本申请实施例提供的节点推导的关系示意图。
图10是本申请实施例提供的再一种数据处理的方法的示意流程图。
图11是本申请实施例提供的另一种节点推导的关系示意图。
图12是本申请实施例的一种数据处理的装置的示意性结构图。
图13是本申请实施例的一种数据处理的装置的硬件结构示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
本申请的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”、和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是本申请实施例提供的一种人工智能主体框架的示意图,该主体框架描述了人工智能系统的总体工作流程,适用于通用的人工智能领域需求。
下面从“智能信息链”(水平轴)和“信息技术(information technology,IT)价值链”(垂直轴)两个维度对上述人工智能主题框架进行详细的阐述。
“智能信息链”反映从数据的获取到处理的一系列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个 过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
“IT价值链”从人工智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施:
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。
基础设施可以通过传感器与外部沟通,基础设施的计算能力可以由智能芯片提供。
这里的智能芯片可以是中央处理器(central processing unit,CPU)、神经网络处理器(neural-network processing unit,NPU)、图形处理器(graphics processing unit,GPU)、专门应用的集成电路(application specific integrated circuit,ASIC)以及现场可编程门阵列(field programmable gate array,FPGA)等硬件加速芯片。
基础设施的基础平台可以包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。
例如,对于基础设施来说,可以通过传感器和外部沟通获取数据,然后将这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据:
基础设施的上一层的数据用于表示人工智能领域的数据来源。该数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理:
上述数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等处理方式。其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力:
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用:
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
本申请实施例可以应用在人工智能中的很多领域,例如,智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市等领域。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络(neural network,NN)可以是由神经单元组成的,神经单元可以是指以x s和截距1为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,W s为x s的权重,b为神经单元的偏置。
f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号变换为输出信号。该激活函数的输出信号可以作为下一层的输入。
神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式: 其中, 是输入向量, 是输出向量, 是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量 经过如此简单的操作得到输出向量。由于DNN层数多,系数W和偏移向量 的数量也比较多。这些参数在DNN中的定义如下所述:以系数W为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为 上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
综上,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络(convolutional neuron network,CNN)
卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。
卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方 式与位置无关。卷积核可以以随机大小的矩阵的形式化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(5)前向传播算法
前向传播算法,也可以称为正向传播算法,是由前向后进行计算的算法。利用前向传播算法,从输入层开始,一层层向后计算,直到运算到输出层,得到输出结果。前向传播算法通过一层层从前向后的运算,得到输出层结果。
(6)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
(7)张量(tensor)
张量是一个多维的数据存储形式,数据的维度被称为张量的阶。它可以看成是向量和矩阵在多维空间中的推广,向量可以看成是一维张量,矩阵可以看成是两维的张量。在深度学习中,张量是用于存储高阶数组对应的数据。张量包括以下几个基本属性:
形状(shape):用于统计各个维度的元素数量;
秩(rank):用于表示维度的总数;
轴(axis):是用于指示具体的一个维度。
一般地,一个张量的秩指示了张量的轴的个数。在轴是可以切分的情况下,该轴可以被称为切分轴或者可切分轴。
图2是本申请实施例提供的一种系统架构的示意图。在图2中,数据采集设备260用于采集训练数据。针对本申请实施例的数据处理的方法来说,若训练数据为图像数据,则训练数据可以包括训练图像以及训练图像对应的处理结果。例如,训练图像对应的分类结果,训练图像的分类结果可以是人工预先标注的结果。
在采集到训练数据之后,数据采集设备260将这些训练数据存入数据库230,训练设备220基于数据库230中维护的训练数据训练得到目标模型/规则201。
下面对训练设备220基于训练数据得到目标模型/规则201进行描述,训练设备220对输入的训练输入数据进行处理,将输出的结果与该训练输入数据对应的训练标识进行对比,直到根据训练设备220输出的结果与该训练标识的差值小于一定的阈值,从而完成目标模型/规则201的训练。
本申请实施例中的目标模型/规则201具体可以为神经网络模型或者神经网络图。例如,卷积神经网络等。需要说明的是,在实际的应用中,数据库230中维护的训练数据不一定都来自于数据采集设备260的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备220也不一定完全基于数据库230维护的训练数据进行目标模型/规则201的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备220训练得到的目标模型/规则201可以应用于不同的系统或设备中,如应用于图2所示的执行设备210,所述执行设备210可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)AR/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端等。在图2中,执行设备210配置输入/输出(input/output,I/O)接口212,用于与外部设备进行数据交互,用户可以通过客户设备240向I/O接口212输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理数据。
预处理模块213和预处理模块214用于根据I/O接口212接收到的输入数据(如待处理数据)进行预处理,在本申请实施例中,也可以没有预处理模块213和预处理模块214(也可以只有其中的一个预处理模块),而直接采用计算模块211对输入数据进行处理。
在执行设备210对输入数据进行预处理,或者在执行设备210的计算模块211执行计算等相关的处理过程中,执行设备210可以调用数据存储系统250中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统250中。
最后,I/O接口212将处理结果,如上述得到的数据的处理结果返回给客户设备240,从而提供给用户。
值得说明的是,训练设备220可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则201,该相应的目标模型/规则201即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图2所示的情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口212提供的界面进行操作。另一种情况下,客户设备240可以自动地向I/O接口212发送输入数据,如果要求客户设备240自动发送输入数据需要获得用户的授权,则用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端,采集如图所示输入I/O接口212的输入数据及输出I/O接口212的输出结果作为新的样本数据,并存入数据库230。当然,也可以不经过客户设备240进行采集,而是由I/O接口212直接将如图所示输入I/O接口212的输入数据及输出I/O接口212的输出结果,作为新的样本数据存入数据库230。
值得注意的是,图2仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储系统250相对 执行设备210是外部存储器,在其它情况下,也可以将数据存储系统250置于执行设备210中。
如图2所示,根据训练设备220训练得到目标模型/规则201,该目标模型/规则201在本申请实施例中可以是本申请中的神经网络,具体的,本申请实施例使用神经网络可以为CNN,深度卷积神经网络(deep convolutional neural networks,DCNN),循环神经网络(recurrent neural network,RNN)等等。
由于CNN是一种非常常见的神经网络,下面结合图3重点对CNN的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的数据作出响应。
本申请实施例的数据处理的方法具体采用的神经网络的结构可以如图3所示。在图3中,卷积神经网络(CNN)300可以包括输入层310,卷积层/池化层320(其中池化层为可选的),以及神经网络层330。其中,输入层310可以获取待处理数据,并将获取到的待处理数据交由卷积层/池化层320以及后面的神经网络层330进行处理,可以得到数据的处理结果。下面对图3中的CNN 300中内部的层结构进行详细的介绍。
卷积层/池化层320:
卷积层:
如图3所示卷积层/池化层320可以包括如示例321-326层,举例来说:在一种实现中,321层为卷积层,322层为池化层,323层为卷积层,324层为池化层,325为卷积层,326为池化层;在另一种实现方式中,321、322为卷积层,323为池化层,324、325为卷积层,326为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
下面将以卷积层321为例,介绍一层卷积层的内部工作原理。
卷积层321可以包括很多个卷积算子,卷积算子也称为核,其在数据处理中的作用相当于一个从输入数据矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入数据中提取信息,从而使得卷积神经网络300进行正确的预测。
当卷积神经网络300有多个卷积层的时候,初始的卷积层(例如321)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络300深度的加深,越往后的卷积层(例如326)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图3中320所示例的321-326各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在数据处理过程中,池化层的唯一目的就是减少数 据的空间大小。
神经网络层330:
在经过卷积层/池化层320的处理后,卷积神经网络300还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层320只会提取特征,并减少输入数据带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络300需要利用神经网络层330来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层330中可以包括多层隐含层(如图3所示的331、332至33n)以及输出层340,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括识别、分类等等。
在神经网络层330中的多层隐含层之后,也就是整个卷积神经网络300的最后层为输出层340,该输出层340具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络300的前向传播(如图3由310至340方向的传播为前向传播)完成,反向传播(如图3由340至310方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络300的损失,及卷积神经网络300通过输出层输出的结果和理想结果之间的误差。
本申请实施例的神经网络图的切分处理方法具体采用的神经网络的结构可以如图4所示。在图4中,卷积神经网络(CNN)300可以包括输入层310,卷积层/池化层320(其中池化层为可选的),以及神经网络层330。与图3相比,图4中的卷积层/池化层320中的多个卷积层/池化层并行,将分别提取的特征均输入给神经网络层330进行处理。
需要说明的是,图3和图4所示的卷积神经网络仅作为一种本申请实施例的神经网络图的切分方法的两种可能的卷积神经网络的示例,在具体的应用中,本申请实施例的神经网络图的切分方法所采用的卷积神经网络还可以以其他网络模型的形式存在。
图5为本申请实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器50。该芯片可以被设置在如图2所示的执行设备210中,用以完成计算模块211的计算工作。该芯片也可以被设置在如图2所示的训练设备220中,用以完成训练设备220的训练工作并输出目标模型/规则201。如图3和图4所示的卷积神经网络中各层的算法均可在如图5所示的芯片中得以实现。
神经网络处理器NPU 50作为协处理器挂载到主中央处理器(central processing unit,CPU)(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路503,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路503内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)508中。
向量计算单元507可以对运算电路的输出做进一步处理,如向量乘,向量加,指数 运算,对数运算,大小比较等等。例如,向量计算单元507可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
在一些实现中,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器506用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器505(direct memory access controller,DMAC)将外部存储器中的输入数据搬运到输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)510,用于通过总线实现主CPU、DMAC和取指存储器509之间进行交互。
与控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令;
控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random access memory,简称DDR SDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
其中,图3和图4所示的卷积神经网络中各层的运算可以由运算电路503或向量计算单元507执行。
上文中介绍的图2中的执行设备210能够执行本申请实施例的数据处理方法的各个步骤,图3和图4所示的CNN模型和图5所示的芯片也可以用于执行本申请实施例的神经网络图的切分方法的各个步骤。下面结合附图对本申请实施例的神经网络图的切分方法进行介绍。
如图6所示,本申请实施例提供了一种系统架构600。该系统架构包括本地设备601、本地设备602以及执行设备610和数据存储系统650,其中,本地设备601和本地设备602通过通信网络与执行设备610连接。
执行设备610可以由一个或多个服务器实现。可选的,执行设备610可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备610可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备610可以使用数据存储系统650中的数据,或者调用数据存储系统650中的程序代码来实现本申请实施例的神经网络图的切分方法。
用户可以操作各自的用户设备(例如本地设备601和本地设备602)与执行设备610进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能 手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备610进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
在一种实现方式中,本地设备601、本地设备602从执行设备610获取到目标神经网络的相关参数,将目标神经网络部署在本地设备601、本地设备602上,利用该目标神经网络进行数据分类或者识别等等。
在另一种实现中,执行设备610上可以直接部署目标神经网络,执行设备610通过从本地设备601和本地设备602获取待处理数据,并根据目标神经网络对待处理数据进行分类或者其他类型的数据处理。
上述执行设备610也可以为云端设备,此时,执行设备610可以部署在云端;或者,上述执行设备610也可以为终端设备,此时,执行设备610可以部署在用户终端侧,本申请实施例对此并不限定。
目前,在对神经网络图进行计算处理时,通过对神经网络图中每个节点的张量(tensor)进行切分,且由神经网络图的首节点从片外存储器中读入待处理数据,尾结点将最终结果保存至外部存储器,且中间的多个节点之间通过读写片内缓冲器进行数据交互,从而减少访问外部存储器的次数,提升存储空间的利用率。
但是在实际操作时,神经网络图的切分方案与神经网络图中的算子类型呈强相关的关系,一张神经网络图通常具有与其他神经网络不同的一种或几种切分方式。特别地,神经网络中的不同算子(在本申请实施例中,该算子也可以称之为节点)经常具有不同的形状(format),这会导致神经网络的切分方案无法被简单表达。因此一个神经网络图往往对应一种切分方案。当出现新的神经网络图时,需要重新定制新的切分方案,这就会导致神经网络图的切分方案的定制属性过强,而无法实现将其应用到对其他神经网络图的切分操作,制约了神经网络图的切分方案的应用和发展。
鉴于上述技术问题,本申请实施例提供一种数据处理的方法和装置,能够增强神经网络图的切分方法的适用性以达到可以直接切分任意的神经网络图。
下文将结合图7对本申请实施例提供的数据处理的方法做进一步的描述。
图7是本申请实施例提供的一种数据处理的方法的示意流程图。具体如图7所示。
S710,获取神经网络图中第一节点的编号信息,编号信息包括张量编号与轴编号,张量编号所指示的张量为待切分张量,轴编号所指示的轴为待切分张量的切分轴;
S720,沿轴编号指示的切分轴,对第一节点的张量编号指示的待切分张量进行切分。
应理解,一个神经网络图用于表征一个神经网络,一个节点用于表示神经网络图中的一个计算单元。第一节点是神经网络图多个切分节点中的任意一个节点。例如,第一节点是神经网络图的多个切分节点中的首节点、尾结点,还可以是中间节点。又或者,该第一节点是神经网络图中的任意一个切分节点,该第一节点可以是神经网络图中的首节点、中间节点或者尾节点,本申请实施例对此不做限定。
应理解,一个神经网络图包括多个节点(node),一个节点可以视为一次基本计算的公式,张量(tensor)即为该公式的输入或输出数据。当一个神经网络图有一个或多个输入张量时,则每个节点有对应的一个或多个输出张量,且一个节点的输出张量是下一个节 点的输入张量,或者说,一个节点的输出张量是作为下一个节点的输入。
应理解,在本申请实施例中,若第一节点的张量个数为5个,则第一节点的每个张量分别被配置了一个张量编号。例如,tensor_idx=0,tensor_idx=1,tensor_idx=2,tensor_idx=3,tensor_idx=4。其中,tensor_idx=0用于表示第一节点的第一个张量,tensor_idx=1用于表示第一节点的第二个张量,tensor_idx=2用于表示第一节点的第三个张量,tensor_idx=3用于表示第一节点的第四个张量,tensor_idx=4用于表示第一节点的第五个张量。
应理解,第一节点的每个张量的形状是可以是相同的,也可以是不同的。例如,第一个张量的形状是[2,6,3],第二个张量的形状是[2,6],第三个张量的形状是[2,6,3,10],第四个张量的形状是[2,6,3,20],第五个张量的形状是[2,6,3,9,10]。因此,在为第一节点的每个张量配置了一个张量编号之外,本申请实施例为第一节点的每个张量的每个轴各自配置一个轴编号。例如,{tensor_idx=0,axis=2}用于表示第一节点的第一个张量以及该第一个张量的第三个轴。
应理解,第一节点的五个张量可以全是待切分张量,也可以是其中的部分张量是待切分张量。还应理解,第一节点的每个张量的轴可以全是切分轴,也可以是其中的部分轴是切分轴。这具体依场景而确定,本申请实施例不做具体限定。
应理解,在本申请实施例中,在标注神经网络图中的每个节点的编号信息时,该编号信息中的张量编号对应一个张量,轴编号对应张量编号所对应的张量的轴;但是在切分神经网络图中的节点时,本申请实施例的数据处理的装置从神经网络图中所获取的编号信息中的张量编号所指示的张量为待切分张量,轴编号所指示的轴为待切分张量的切分轴。
作为一种可能的实现方式,本申请实施例仅对神经网络图中每个节点的待切分张量进行编号,以及对该待切分张量的切分轴进行编号,因此,该编号信息中的张量编号所指示的张量为待切分张量,轴编号所指示的轴是该待切分张量的切分轴。
为便于描述本申请实施例的技术方案,本申请实施例以张量编号指示的张量为待切分张量,轴编号指示的轴为待切分张量的切分轴,但是该描述方式不具备限定作用。
具体而言,在具体的切分过程中,本申请实施例的数据处理装置通过获取第一节点的编号信息,从而确定第一节点的待切分张量是第一节点的哪一个张量,以及确定待切分张量的切分轴是待切分张量的哪一个轴。
需要说明的是,在本申请实施例中,神经网络图中每个节点的所有张量中的部分或者全部张量分别被配置了一个张量编号,以及每个张量的所有轴中的部分或者全部轴分别被配置了一个轴编号,但是该张量编号所指示的轴为待切分张量一般地在切分过程中才成立。本申请实施例的数据处理装置在切分过程中所获取的第一节点的编号信息是用于确定第一节点的待切分张量是哪一个张量,以及该待切分张量的切分轴是哪一个,并基于该编号信息完成对第一节点的张量的切分。
应理解,在本申请实施例中,该神经网络图中每个节点的编号信息是被标注在神经网络图中的。具体的,该标注过程可以是:
神经网络图可被理解为算子实例和对应属性(attribute)经过序列化得到的包含拓扑关系的图示。切分信息(在本申请实施例中,该编号信息也可以理解为切分信息)即可被理解为算子的固有属性,通过设定切分信息的固定格式,切分信息可以以字符串的方式标记在算子实例上作为一个属性(attribute)。该固定格式可以为实际切分过程中的解析提 供方便。
应理解,在本申请实施例中,神经网络图的多个切分节点中的每个切分节点的类型可以是不同的,也可以是相同的,也可以是部分切分节点的类型是相同的。神经网络图的切分节点数量为多个时,神经网络图还包括与每个切分节点对应的至少一个编号信息,且不同切分节点对应的编号信息之间可以存在至少一个相同的编号信息,也可以存在全部不同的编号信息。例如,第一节点对应三个编号信息,分别是编号信息A、B和C,第二节点对应三个编号信息,分别是编号信息A、C和D,则第一节点和第二节点均对应一个相同的编号信息A。
具体而言,本申请实施例的数据处理装置获取神经网络图中第一节点的编号信息的个数可以是一个,也可以是多个。例如,当编号信息是两个时,例如,{tensor_idx=2,axis=2},{tensor_idx=4,axis=0},这表示本申请实施例的数据处理装置需要分别对两个编号信息中对应的张量编号所指示的张量进行切分。但应理解,无论该数据处理装置获取的编号信息的个数是几个,该数据处理装置所具体执行的方法是一致的,即根据该编号信息中张量编号确定第一节点的待切分张量是哪一个,并基于该编号信息中轴编号所指示的轴对该待切分张量进行切分,并得到至少两个子张量。
应理解,第一节点的编号信息可以是多个。例如,第一节点的张量为两个时,且每个张量的轴是两个,即第一个张量的形状为[2,16],第二个张量的形状为[2,56],因此,第一节点所对应的编号信息为四个,具体的:
第一编号信息={tensor_idx=0,axis=[0]}。
第二编号信息={tensor_idx=0,axis=[1]}。
第三编号信息={tensor_idx=1,axis=[0]}。
第四编号信息={tensor_idx=1,axis=[1]}。
其中,tensor_idx=0表示第一节点的第一个张量,tensor_idx=1表示第一节点的第二个张量。axis=[0]表示对应的待切分张量的第一个切分轴,axis=[1]表示该对应的待切分张量的第二个切分轴。
具体地,第一编号信息指示张量编号为0的张量为待切分张量,且切分轴为轴编号为0所指示的轴;第二编号信息指示张量编号为0的张量为待切分张量,且切分轴为轴编号为1所指示的轴。第三编号信息指示张量编号为1的张量为待切分张量,且切分轴为轴编号为0所指示的轴;第四编号信息指示张量编号为1的张量为待切分张量,且切分轴为轴编号为1所指示的轴。
概括而言,编号信息的个数与第一节点的张量数量关联。每个编号信息中的轴编号可以是统一的,但是统一的轴编号所具体指示的轴可以是不一样的。例如,第一张量的轴编号为0,即表示沿第一张量的第一个轴对第一张量进行切分,该0轴可以指示第一张量的H轴;第二张量的轴编号是0,即表示沿第二张量的第一个轴对第二张量进行切分,该0轴可以指示第二张量的W轴;第三张量的轴编号是0,即表示沿第三张量的第一个轴对第三张量进行切分,该0轴可以指示第三张量的N轴。因此,多个编号信息可以对应一个统一的轴编号,即,不同的编号信息中所包括的轴编号是相同的,但是对于不同的张量而言,相同的轴编号可以指示不同的切分轴,轴编号的具体含义与对应的张量的形状相关。
应理解,一个编号信息用于表示对第一节点的一个张量的切分。其中,该编号信息中 包括的张量编号指示了需要切分的张量是哪一个,轴编号指示了待切分张量的切分轴是哪一个,并沿轴编号所指示的切分轴对该张量进行切分。
具体地,第一节点对应至少一个编号信息,不同的编号信息用于表示该第一节点的不同切分方式。例如,当第一节点是卷积算子时,该第一节点的同一个张量可以对应四个切分方式,每个编号信息表示第一节点的一种切分方式;或者说,一个编号信息用于表示第一节点的一种切分策略。
应理解,在本申请实施例中,该编号信息中的张量编号所指示的张量可以是第一节点的输入张量,也可以是第一节点的输出张量。示例性地,编号信息中的张量编号所指示的张量是第一节点的输出张量时,沿编号信息中轴编号所指示的轴对输出张量进行切分;相应的,第一节点与输出张量对应的输入张量也会以相同的方式得到切分。例如,沿输出张量的轴编号所指示的切分轴对该输出张量进行切分;则相应的,该输出张量对应的输入张量也会沿输入张量的对应切分轴进行切分。又示例性地,编号信息中的张量编号所指示的张量是第一节点的输入张量时,沿编号信息中轴编号所指示的轴对输入张量进行切分;相应的,第一节点中与输入张量对应的输出张量也会以相同的方式得到切分。例如,沿输入张量的轴编号所指示的切分轴对输入张量进行切分;则相应的,输入张量对应的输出张量也会沿输出张量的对应切分轴进行切分。因此,在本申请实施例中,第一节点的张量可以是第一节点的输入张量,也可以是第一节点的输出张量,但是在切分第一节点的输入张量时,其对应的输出张量也会以相同的方式进行切分。
作为一种可能的实现方式,第一节点对应的不同编号信息可以组合在一起。例如,在本申请实施例中,该数据处理装置获取第一节点的编号信息组,所述编号信息组包括至少两个编号信息,其中,不同编号信息中的张量编号所指示的张量是不同的。例如,该编号信息组包括第一编号信息与第二编号信息,其中,第一编号信息中的张量编号所指示的张量不同于第二编号信息中的张量编号所指示的张量。如此,本申请实施例可以完成对不同的张量的同时切分或者有序切分。
通过将每个节点的编号信息标注在神经网络图中,且该每个节点所对应的编号信息与每个节点的具体类型与具体操作是解耦的,如此,在编号信息与节点的具体类型和具体操作呈解耦关系的情况下,在切分任意的具体的神经网络图时,通过应用本申请实施例的技术方案,即在任意的具体的神经网络图中将该神经网络图中的每个节点的编号信息标注在神经网络图中然后再进行切分,这样,本申请实施例就能够实现完成对任意神经网络图中节点的切分,并能够提升神经网络图的切分方案的适用性。并且,经由编号信息所实现的网络切分可以完美替代过去需要人为分析网络才能实现的切分方法。同时,由于流程完全自动,经由编号信息实现的神经网络切分可以通过多次尝试找到性能最优的切分方式,大大提升神经网络图切分的效率和性能收益,促进神经网络图的切分方案的应用与发展。
作为一种可能的实现方式,待切分张量是第一节点的输入张量时,该编号信息还包括指示值,该指示值用于指示待切分张量沿切分轴进行切分得到的相邻子张量是否存在重叠。
应理解,待切分张量沿切分轴切分得到的相邻子张量之间可能会存在重叠(overlap),也可能不会存在重叠,这取决于待切分张量的切分轴的类型。例如,第一节点是一个卷子算子,第一节点的四维张量包括四个切分轴(例如,H/N/W/C),其中,切分轴H和W会存在重叠,切分轴N和C不会存在重叠。
具体而言,该指示值可以是一个具体的数值,例如,0、1、-1,或者,该指示值可以是一个字母,例如,a、c,等等。
示例性地,指示值为0时,该指示值用于指示待切分张量在沿轴编号指示的切分轴切分后所得到的相邻子张量之间存在重叠;或者,指示值为1时,该指示值用于指示待切分张量在沿轴编号所指示的切分轴切分后得到的相邻子张量之间存在重叠;或者,指示值为a时,该指示值用于指示待切分张量在沿轴编号指示的切分轴切分后得到的相邻子张量之间存在重叠。又示例性地,指示值为0时,该指示值用于指示待切分张量在沿轴编号指示的切分轴切分后所得到的相邻子张量之间不存在重叠;或者,指示值为1时,该指示值用于指示待切分张量在沿轴编号所指示的切分轴切分后得到的相邻子张量之间不存在重叠;或者,指示值为a时,该指示值用于指示待切分张量在沿轴编号指示的切分轴切分后得到的相邻子张量之间不存在重叠。
下文将描述该编号信息携带指示值的示例性的表达形式。具体地,
编号信息1{tensor_idx=0,axis=[0]}。
编号信息2{tensor_idx=1,axis=[1],overlap=[-1]}。
编号信息3{tensor_idx=2,axis=[1],overlap=[1]}。
编号信息4{tensor_idx=3,axis=[1]}。
具体的,编号信息1中张量编号所指示的张量为第一节点的输出张量,因此,该编号信息1不需要携带指示值。编号信息2中张量编号所指示的张量为第一节点的输入张量,因此,该编号信息2需要携带指示值。编号信息3中张量编号所指示的张量为第一节点的输出张量,因此,该编号信息3需要携带指示值。编号信息4中张量编号所指示的张量为第一节点的输出张量,因此,该编号信息4不需要携带指示值。其中,overlap=[1]表示该张量编号指示的待切分张量沿轴编号指示的切分轴切分后得到的相邻子张量之间存在重叠;overlap=[-1]表示该张量编号指示的待切分张量沿轴编号指示的切分轴切分后得到的相邻子张量之间不存在重叠。
作为另一个示例,该overlap=[1]可以表示该切分轴所对应的相邻子张量之间不存在overlap现象;overlap=[-1]表示该张量编号指示的待切分张量沿轴编号指示的切分轴切分后得到的相邻子张量之间存在重叠。
通过在编号信息中携带指示值,本申请实施例的数据处理装置在对神经网络图的节点进行切分时会灵活地选择编号信息,由于某些算子的轴在进行切分后会产生数据交叠,导致数据量变大引起性能收益降低,本申请实施例会优会优先选择不存在重叠的编号信息。
作为一种可能的实现方式,编号信息还包括指示值,指示值用于指示待切分张量沿切分轴切分后得到的相邻子张量是否存在重叠。
具体而言,无论该编号信息中张量编号所指示的张量为第一节点的输入张量还是输出张量,该编号信息均还携带指示值。通过在编号信息中携带指示值,本申请实施例的数据处理装置能够确定该编号信息中轴编号所指示的轴是否对应重叠,并会优先选择不存在重叠的编号信息。
示例性地,该编号信息携带指示值的示例性的表达形式为:
编号信息#1{tensor_idx=0,axis=[0],overlap=[1]}。
编号信息#2{tensor_idx=1,axis=[1],overlap=[-1]}。
编号信息#3{tensor_idx=2,axis=[1],overlap=[1]}。
编号信息#4{tensor_idx=3,axis=[1],overlap=[1]}。
具体的,编号信息#1中张量编号所指示的张量为第一节点的输出张量或者输入张量。编号信息#2中张量编号所指示的张量为第一节点的输入张量或者输出张量。编号信息#3中张量编号所指示的张量为第一节点的输出张量或者输入张量。编号信息#4中张量编号所指示的张量为第一节点的输出张量或者输入张量。
作为一种可能的实现方式,待切分张量是第一节点的输入张量时,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量存在重叠,或者,待切分张量是第一节点的输入张量时,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量不存在重叠;或者,待切分张量是第一节点的输出张量时,指示值用于指示待切分张量沿切分轴切分得到的相邻子张量不存在重叠。
示例性地,编号信息#1中的张量编号所指示的张量为第一节点的输出张量时,该overlap=[1]用于表示不存在重叠;编号信息#2中的张量编号所指示的张量为第一节点的输入张量时,该overlap=[-1]用于表示存在重叠;编号信息#3中的张量编号所指示的张量为第一节点的输入张量时,该overlap=[1]用于表示不存在重叠;编号信息#4中的张量编号所指示的张量为第一节点的输出张量时,该overlap=[1]用于表示不存在重叠。
需要说明的是,在本申请实施例中,编号信息中张量编号与轴编号的具体编号值可以是以数字形式表达,也可以是以字母形式表达,或者是以其他的方式,本申请实施例对此不作具体限定。
通过在编号信息中携带指示值,本申请实施例的数据处理装置在对神经网络图的节点进行切分时会灵活地选择编号信息,支持通过多次尝试选取性能最好的切分方案,以达到最大性能收益。
应理解,在完成了对神经网络图中第一节点的张量的切分之后,由于神经网络中滑动窗口类算子的特殊性,算子切分后会产生额外的数据依赖。(举例:正向卷积类算子沿H,W方向切分后输入数据通常会在对应方向两端依赖更多的数据)由于切分后的算子的输入/输出数据依赖关系发生改变,该第一节点的张量所对应的多个子张量之间的数据依赖关系也发生了更改。如果不对切分后的张量属性进行对应的修正,可能会发生意想不到的结果(包括但不限于计算结果异常,训练不能收敛等)。由于深度神经网络层数较多,由切分带来的多层的数据依赖变化会带来更严重的后果,导致神经网络精度受到严重损失,以至于无法支撑计算。
鉴于该技术问题,本申请实施例提供了另一种数据处理的方法,根据切分的特征(输出数据拼接后与原始数据保持一致),本申请实例通过反向推导数据依赖,逐层更新切分后的张量属性。通过这种方法解决多个切分节点的每个节点的输出结果拼接后与原始输入数据不一致的问题。
下文将结合图8对本申请实施例提供的另一种数据处理的方法作进一步的描述。
S810,确定第一节点的第一输入张量对应的M个输入区间,M为第一节点的输入张量的切分数;
S820,获取第二节点的第二输出张量的切分数K;
S830,基于M个输入区间与K,确定第二节点的第二输出张量对应的K个输出区间。
具体地,本申请实施例以一个区间表示一个节点的张量在切分之后所得到的一个子张量的数据范围。例如,第一节点的第一输入张量的形状为[2,6,16,3],本申请实施例则以区间表征第一节点的输入张量,即第一输入张量的表达形式为[0 1 0 5 0 15 0 2]。每两个数字表示一个切分轴对应的区间。例如,[0 1]表示该第一输入张量的第一个切分轴对应的区间,[0 5]表示该第一输入张量的第二个切分轴对应的区间,[0 15]表示该第一输入张量的第三个切分轴对应的区间,[0 2]表示该输入张量的第四个切分轴对应的区间。当沿某个切分轴对输入张量进行切分时,则仅改变该切分轴对应的区间表达。例如,沿第一输入张量的第三个切分轴进行切分,得到四个子张量(即该第一输入张量的切分数是4),则第一个子张量的区间为[0,4](形状为[2,6,5,3]),第二个子张量的区间为[5,8](形状为[2,6,4,3]),第三个子张量的区间为[9,12](形状为[2,6,4,3]),第四个子张量的区间为[13,15](形状为[2,6,3,3])。换言之,第一节点的第一输入张量对应四个输入区间,且一个输入区间对应于该第一输入张量的一个子张量。
又应理解,当第一节点的第一输入张量对应的四个输入区间的相邻区间之间存在重叠时,即第一个子张量的区间为[0,4](形状为[2,6,5,3]),第二个子张量的区间为[2,8](形状为[2,6,7,3]),第三个子张量的区间为[7,12](形状为[2,6,6,3]),第四个子张量的区间为[10,15](形状为[2,6,6,3])。通过以区间表示第一输入张量的每个子张量的数据范围,本申请实施例在数字上体现相邻子张量之间(子张量也可以称之为子节点或者切片)是否存在重叠,可以简化复杂神经网络图切分过程中的子张量的偏移计算。
应理解,第二节点是第一节点的前级节点,这表示在数据的处理顺序上第二节点位于第一节点之前,具体可以参见图9所示的第二节点、第三节点和第一节点之间的关系示意图。应理解,图9所示的实线箭头是指数据处理的顺序,虚线箭头用于指示推导的顺序。
具体而言,第二节点的输出张量是第一节点的输入张量。当确定了第一节点的第一输入张量所对应的M个输入区间之后,并获取了第二节点的第二输出张量的切分数K,如此,可以通过M个输入区间与K,确定第二节点的第二输出张量对应的K个输出区间,且每个输出区间与第二节点的输出张量的每个子张量一一对应。
示例性地,第一节点的第一输入张量所对应的四个输入区间分别为[0,4]、[5,8]、[9,12]和[13,15],第二节点的第二输出张量的切分数为2,则基于四个输入区间和切分数2,确定第二节点的第二输出张量所对应的2个输出区间。例如,将第一节点的两个输入区间[0,4]和[5,8]聚合成区间[0,8],将第一节点的另外两个输入区间[9,12]和[13,15]聚合成区间[9,15]。又或者,将第一节点的第一输入张量所对应的四个输入区间聚合成一个区间,即[0,15],并将该新的区间重新划分为两个区间,分别得到[0,8]和[9,15],或者[0,6]和[7,15],等等。本申请实施例对此不作具体限定。
需要说明的是,在上述图8所示的技术方案中,第一节点的第一输入张量和第二节点的第二输出张量实际是以子张量的形态存在的,而非以未被切分的张量形态存在。换言之,第一节点的第一输入张量在被切分之后对应M个子张量,且每个子张量与每个输入区间一一对应;第二节点的第二输出张量在被切分之后对应K个子张量,且每个子张量与每个输出区间一一对应。
具体而言,第一节点的第一输入张量是一个被切分后的一个概念。另外,图8所示的 方案是基于对神经网络图进行切分之后对每个切分节点的各个子张量之间的数据依赖关系进行推导而确定的技术方案。因此,在推导过程中,第一节点的第一输入张量是以子张量的形态存在,而非以一个未被切分的张量形态而存在,第二节点的输出张量亦是如此。
通过基于第一节点的输入张量对应的M个输入区间和第二节点的输出张量的切分数K,且以反推的方式确定第二节点的输出张量所对应的K个输出区间,并以区间的表达形式,通过此种方式,本申请实施例可以解决神经网络中存在不同切分数的情况下引起的切分聚合(无论在并行计算还是核(core)内缓冲(buffer)优化场景,切分的聚合都代表一次优化动作的结束,而在这些场景中,通常越长的优化动作带来的性能收益也越明显)因此,通过此种方案可以一定程度上提升神经网络切分的效果。
作为一种可能的实现方式,基于M个输入区间和切分数K,确定第二节点的第二输出张量对应的K个输出区间,包括:
若M大于K,M个输入区间聚合成K个输出区间;或者,
若M等于K,M个输入区间与K个输出区间一一对应;或者,
若M小于K,M个输入区间分成K个输出区间。
具体而言,当M大于K时,例如,M=4,K=2,则需要将第一节点的四个输入区间聚合成两个输出区间。该聚合方式包括:1)将四个输入区间中第一个输入区间和第二个输入区间聚合成一个输出区间,将第三个输入区间和第四个输入区间聚合成一个输出区间;2)将四个输入区间聚合成一个区间,并将该新的区间重新化成两个输出区间;3)将四个输入区间中的第一个输入区间和第三输入区间聚合成一个区间,将第二个输入区间和第四个输入区间聚合成一个区间。当M=K时,则M个输入区间与K个输出区间一一对应,即第一个输入区间对应第一个输出区间,第二个输入区间对应第二个输出区间,第三个输入区间对应第三个输出区间,第四个输入区间对应第四个输出区间。当M小于K时,例如,M=4,K=8,则需要将第一节点的四个输入区间分成八个输出区间。该划分方式可以包括:1)将四个输入区间中的第一个输入区间划分成两个输出区间,将第二个输入区间划分成两个输出区间,将第三个输入区间划分成两个输出区间,将第四个输入区间划分成两个输出区间;2)将四个输入区间聚合成一个区间,并将该新的区间划分成八个输出区间;3)将四个输入区间中的第一个输入区间划分成三个输出区间,将第二个输入区间划分成两个输出区间,将第三个输入区间划分成两个输出区间,第四个输入区间不做划分,并作为对应的一个输出区间。
应理解,上述方案中涉及划分和聚合等方式可以是均匀地划分或者聚合,也可以是以非均匀地划分或者聚合。
作为一种可能的实现方式,确定第一节点的第一输入张量对应的M个区间,包括:
确定第一节点的第一输出张量对应的M个输出区间,M是第一节点的第一输出张量对应的切分数;
对第一节点的第一输出张量对应的M个输出区间进行反向推导,确定第一节点的第一输入张量对应的M个输入区间。
具体而言,在确定了第一节点的第一输出张量以及该第一输出张量对应的切分数M之后,将该第一输出张量所对应的区间划分成M个区间,且每个区间与该第一输出张量的子张量一一对应,并通过反向推导确定第一节点的第一输入张量所对应的M个输入区 间。示例性地,若第一节点的第一输出张量的形状是[2,6,16,3],且第一节点的第一输出张量的切分数为2(切分轴是第一输出张量的第三个轴),因此,第一节点的第一输出张量对应的区间表达形式为[0,15],则基于切分数2,将该区间划分成两个区间,分别是[0,7]和[8,15],并基于反向推导,获得第一节点的第一输入张量所对应的第一输入张量的两个区间,分别是[0,7]和[8,15]。在第一节点的第一输入张量的相邻子张量之间存在重叠时,且重叠量为1,相应地,该第一节点的第一输入张量所对应的两个区间分别是[0,8]和[7,15]。
通过以反向推导的方式确定第一节点的输入张量所对应的M个输入区间,本申请实施例能够基于该M个输入区间确定第二节点的输出张量所对应的多个输出区间,如此便完成了数据的分组依赖,避免了数据的强制聚合,可以提升神经网络切分带来的性能收益。
为了更好的理解前述方案,本申请实施例将以第一节点为一个神经网络图的尾节点为例以及各个节点的输入张量的相邻子张量之间存在重叠为例对该方案做进一步的描述。
示例性地,一个神经网络图包括四个节点,由上至下分别是第四节点、第三节点、第二节点和第一节点。第一节点是神经网络图的尾节点,第四节点是神经网络图的首节点,第二节点和第三节点是神经网络图的中间节点。其中,第一节点的切分数是2,第二节点的切分数是4,第三节点的切分数是4,第四节点的切分数是2。
第一节点的输出张量的形状是[2,6,16,3],第一节点的输出张量的切分数为2,第一节点的输出张量需要分为两个子张量,分别是第一子张量和第二子张量,第一子张量的形状是[2,6,8,3](区间为[0,7]),第二子张量的形状是[2,6,8,3](区间为[8,15])。其中,第一节点的切分轴是待切分张量的第三个切分轴。在确定将第一节点的输出张量按照切分数划分成两个输出子张量(或者得到两个输出区间)之后,本申请实施例的数据处理装置通过反向推导获取该第一节点的两个输入子张量,即第二节点的输出张量(或者得到两个输入区间)。
由于第一节点的待切分张量沿切分轴切分之后得到的相邻子张量之间存在重叠,则假设相邻子张量之间的重叠值为1,第一节点的两个输入子张量为[2,6,9,3](区间为[0,8])和[2,6,9,3](区间为[7,15])。在推导第二节点的输出张量时,由于第二节点的输出张量的切分数是4,且第一节点的输出张量的切分数是2,因此,第一节点的两个输入子张量需要分别划分为两个子张量,即:[2,6,9,3](区间为[0,8])→[2,6,5,3](区间为[0,4])和[2,6,4,3](区间为[5,8]),[2,6,9,3](区间为[7,15])→[2,6,5,3](区间为[7,11])和[2,6,4,3](区间为[12,15]),但由于存在重叠,因此第二节点的四个输出子张量最终对应的形状是[2,6,6,3](区间为[0,5])、[2,6,6,3](区间为[4,9])、[2,6,7,3](区间为[6,12])和[2,6,5,3]区间为[11,15])。由于第二节点的切分数和第三节点的切分数相同,因此,第二节点的每个输入子张量可以赋值给第三节点的输出张量的每个输出子张量,不需要再继续切分。基于前述内容,第三节点的四个输入子张量为[2,6,7,3](区间为[0,6])、[2,6,8,3](区间为[3,10])、[2,6,9,3](区间为[5,13])和[2,6,6,3](区间为[10,15])。因为第四节点的切分数为2,第三节点的切分数为4,因此第三节点的四个输入子张量需要聚合为两个输出子张量,即[2,6,7,3](区间为[0,6])+[2,6,8,3](区间为[3,10])→[2,6,11,3](区间为[0,10]),[2,6,9,3](区间为[5,13])+[2,6,6,3](区间为[10,15]) →[2,6,11,3](区间为[5,15])。继而,第四节点的两个输入子张量为[2,6,12,3](区间为[0,11])和[2,6,12,3](区间为[4,15])。
作为一个示例,第一节点是神经网络图的尾结点,本申请实施例的数据处理装置先以遍历的方式获取该神经网络图中每个节点的切分数信息,并确定第一节点的输出张量以及第一节点的输出张量的切分数,并按照上述方案获得第一节点的前级节点的输出张量;第一节点是神经网络图的尾结点的前级节点,在确定该神经网络图的尾节点的输出张量的前提下,通过前述方法逆推得到该尾结点的前级节点的输入张量;若第一节点是该神经网络图的中间节点,则在确定该神经网络图的尾节点的输出张量的前提下,通过前述方法逆推得到该尾结点的前级节点的输出张量的情况下,本申请实施例进一步地通过循环逆推获得第一节点的输入张量对应的M个输入区间。
图10是本申请实施例提供的再一种数据处理的方法,具体内容如图10所示。
S1010,确定第一节点的第一输入张量对应的M个输入区间以及第三节点的第三输入张量对应的Y个输入区间;
S1020,获取第二节点的切分数K;
S1030,基于M个输入区间、Y个输入区间与K,确定第二节点的第二输出张量对应的K个输出区间。
具体而言,第二节点是第一节点的前级节点,第二节点也是第三节点的前级节点,即第一节点、第二节点与第三节点均属于同一个神经网络图。
应理解,第二节点的输出张量是第一节点的输入张量,同时,也是第三节点的输入张量,具体可以参见图11所示的第二节点、第三节点和第一节点之间的关系示意图。应理解,图11所示的实线箭头是指数据处理的顺序,虚线箭头用于指示推导的顺序。
应理解,本申请实施例基于第二节点的后级节点的输入张量对应的多个输入区间反向推导第二节点的第二输出张量对应的多个输出区间时,会分别经由两条支路进行推导,即从第一节点的第一输入张量对应的四个输入区间反向推导第二节点的第二输出张量对应的两个输出区间,以及从第三节点的第三输入张量对应的六个输入区间反向推导第二节点的第二输出张量对应的两个输出区间。但是,第一节点与第二节点这一支线和第三节点与第二节点这一支线在第二节点汇聚,因此,为了最终确定第二节点的第二输出张量对应的两个输出区间,本申请实施例需要从第一节点的四个输入区间所确定的第二节点的第二输出张量对应的两个输出区间和由第三节点的六个输入区间所确定的第二节点的第二输出张量对应的两个输出区间等四个输出区间中的对应两个输出区间做并集处理,继而确定最终的第二节点的第二输出张量对应的两个输出区间。
示例性地,第一节点的第一输入张量的切分数是4,第三节点的第三输入张量的切分数是6,第二节点的第二输出张量的切分数是2。基于第一节点的四个输入区间(例如,分别是[0,6]、[3,10]、[5,13]和[10,15])确定的第二节点的第二输出张量对应的两个输出区间分别是[0,10]和[5,15],基于第三节点的六个输入区间(例如,分别是[0,3]、[2,6]、[5,9]、[6,10]、[9,13]和[12,15])所确定的第二节点的第二输出张量对应的两个输出区分别是[0,9]和[6,15],则取区间[0,10]和[0,9]的并集即得到区间[0,10],取区间[5,15]和[6,15]的并集即得到区间[5,15];或者,基于第一节点的四个输入区间确定的第二节点的第二输出张量对应的两个输出区间分别是[0,9]和[5,15],基于第三节 点的六个输入区间所确定的第二节点的第二输出张量对应的两个输出区间分别是[0,10]和[6,15],则取区间[0,9]和[0,10]的并集即得到区间[0,10],取区间[5,15]和[6,15]的并集即得到区间[5,15]。
应理解,基于第一节点的第一输入张量对应的M个输入区间确定第二节点的第二输出张量对应的K个输出区间的具体过程可以参考前述描述,在此不再赘述。
通过上述技术方案,当第二节点对应多个后级节点时,且由不同支线得到不同的第二节点的输出张量所对应的多个输出区间时,通过取不同支线推导得到的对应两个区间的并集,继而最终确定第二节点的输出张量所对应的多个输出区间,如此,本申请实施例能够避免多个后继节点无法取到完整数据的问题,由于取得的数据为各个后继结点的区间并集,可以保证每个后集结点都能取得自身需要的数据块大小,避免了由于数据踩踏导致的神经网络推理结果异常或训练无法收敛。
需要说明的是,前述方案还可以应用于数据并行计算等场景中,其方案同前述方案保持一致。
上文结合图1至图11描述了本申请实施例提供的数据处理系统和数据处理方法,下面结合图12至图13,描述本申请实施例的装置实施例。
应理解,数据处理方法的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见上文的描述。
图12是本申请实施例提供的一种数据处理的装置的示意性结构图。数据处理装置1200可以位于图1所示的执行设备110或其他设备中。数据处理装置1200包括获取单元1210和切分单元1220。
获取单元1210,用于获取神经网络图中第一节点的编号信息。
切分单元1220,用于基于编号信息对第一节点的张量进行切分。
可选地,该数据处理装置还包括处理单元1230,用于执行图8和图10所示的方案中有关的步骤或者方法。
应理解,上述内容仅是一种示例性描述,该数据处理装置是用于执行前述方法实施例所提及的方法或者步骤,因此,该数据处理装置与前述的方法实施例是对应的。具体内容可以参考前述方法实施例的描述,在此不再赘述。
图13是本申请实施例的数据处理装置的硬件结构示意图。图13所示的数据处理装置1300包括存储器1301、处理器1302、通信接口1303以及总线1304。其中,存储器1301、处理器1302、通信接口1303通过总线1304实现彼此之间的通信连接。
存储器1301可以是ROM,静态存储设备和RAM。存储器1301可以存储程序,当存储器1301中存储的程序被处理器1302执行时,处理器1302和通信接口1303用于执行本申请实施例的数据处理方法的各个步骤。
处理器1302可以采用通用的,CPU,微处理器,ASIC,GPU或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的数据处理装置中的单元所需执行的功能,或者执行本申请方法实施例的数据处理方法。
处理器1302还可以是一种集成电路芯片,具有信号的处理能力,例如,可以是图4所示的芯片。在实现过程中,本申请实施例的数据处理方法的各个步骤可以通过处理器4002中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器1302还可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1301,处理器1302读取存储器1301中的信息,结合其硬件完成本申请实施例的数据处理装置中包括的单元所需执行的功能,或者执行本申请方法实施例的数据处理方法。
通信接口1303使用例如但不限于收发器一类的收发装置,来实现装置1300与其他设备或通信网络之间的通信。例如,可以通过通信接口1303获取待处理图像。
总线1304可包括在装置1300各个部件(例如,存储器1301、处理器1302、通信接口1303)之间传送信息的通路。
应注意,尽管上述装置1300仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,装置1300还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,装置1300还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,装置1300也可仅仅包括实现本申请实施例所必须的器件,而不必包括图12中所示的全部器件。
应理解,本申请实施例中的处理器可以为中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机 可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
本申请实施例提供一种计算机可读存储介质,其用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如前述方法实施例中的数据处理的方法。
本申请实施例提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当所述计算机程序代码被运行时,实现如前述方法实施例中的数据处理的方法。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

  1. 一种数据处理的方法,其特征在于,包括:
    获取神经网络图中第一节点的编号信息,所述编号信息包括张量编号与轴编号,所述张量编号指示的张量为待切分张量,所述轴编号指示的轴为所述待切分张量的切分轴;
    沿所述轴编号指示的切分轴,对所述第一节点的所述张量编号指示的待切分张量进行切分,所述神经网络图用于表征神经网络,所述第一节点用于表征所述神经网络的一个计算单元。
  2. 根据权利要求1所述的方法,其特征在于,
    所述编号信息还包括指示值,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量是否存在重叠。
  3. 根据权利要求2所述的方法,其特征在于,
    所述待切分张量是所述第一节点的输入张量时,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量存在重叠,或者,
    所述待切分张量是所述第一节点的输入张量时,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量不存在重叠;或者,
    所述待切分张量是所述第一节点的输出张量时,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量不存在重叠。
  4. 根据权利要求1至3中任一项所述的方法,其特征在于,第二节点是所述第一节点的前级节点,所述第二节点属于所述神经网络图,所述方法还包括:
    确定所述第一节点的第一输入张量对应的M个输入区间,所述M是所述第一输入张量的切分数;
    获取所述第二节点的第二输出张量的切分数K;
    基于所述M个输入区间与所述K,确定所述第二节点的第二输出张量对应的K个输出区间,其中,所述M与K均为正整数。
  5. 根据权利要求4所述的方法,其特征在于,所述基于所述M个输入区间与所述K,确定所述第二节点的第二输出张量对应的K个输出区间,包括:
    若所述M大于所述K,所述M个输入区间聚合成所述K个输出区间;或者,
    若所述M等于所述K,所述M个输入区间与所述K个输出区间一一对应;或者,
    若所述M小于所述K,所述M个输入区间分成所述K个输出区间。
  6. 根据权利要求4或5所述的方法,其特征在于,所述确定所述第一节点的第一输入张量对应的M个输入区间,包括:
    确定所述第一节点的第一输出张量对应的M个输出区间,其中,所述M为所述第一节点的所述第一输出张量对应的切分数;
    对所述第一节点的第一输出张量对应的M个输出区间进行反向推导,确定所述第一节点的第一输入张量对应的M个输入区间。
  7. 根据权利要求1至3中任一项所述的方法,其特征在于,第二节点是所述第一节点与第三节点的前级节点,所述第二节点与所述第三节点属于所述神经网络图,所述方法 还包括:
    确定所述第一节点的第一输入张量对应的M个输入区间以及所述第三节点的第三输入张量对应的Y个输入区间,所述M是所述第一输入张量的切分数,所述Y是所述第三输入张量的切分数;
    获取所述第二节点的第二输出张量的切分数K;
    基于所述M个输入区间、所述Y个输入区间与所述K,确定所述第二节点的输出张量对应的K个输出区间,其中,所述M、K与Y均为正整数。
  8. 一种数据处理的装置,其特征在于,包括:
    获取单元,用于获取神经网络图中第一节点的编号信息,所述编号信息包括张量编号与轴编号,所述张量编号所指示的张量为待切分张量,所述轴编号所指示的轴为所述待切分张量的切分轴;
    切分单元,用于沿所述轴编号指示的切分轴,对所述第一节点的所述张量编号指示的待切分张量进行切分,所述神经网络图用于表征神经网络,所述第一节点用于表征所述神经网络的一个计算单元。
  9. 根据权利要求8所述的装置,其特征在于,
    所述编号信息还包括指示值,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量是否存在重叠。
  10. 根据权利要求9所述的装置,其特征在于,
    所述待切分张量是所述第一节点的输入张量时,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量存在重叠,或者,
    所述待切分张量是所述第一节点的输入张量时,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量不存在重叠;或者,
    所述待切分张量是所述第一节点的输出张量时,所述指示值用于指示所述待切分张量沿所述切分轴切分得到的相邻子张量不存在重叠。
  11. 根据权利要求8至10中任一项所述的装置,其特征在于,第二节点是所述第一节点的前级节点,所述第二节点属于所述神经网络图,所述装置还包括处理单元,
    所述处理单元,用于确定所述第一节点的第一输入张量对应的M个输入区间,所述M是所述输入张量的切分数;
    所述获取单元,还用于获取所述第二节点的第二输出张量的切分数K;
    所述处理单元,还用于基于所述M个输入区间与所述K,确定所述第二节点的第二输出张量对应的K个输出区间,其中,所述M与K均为正整数。
  12. 根据权利要求11所述的装置,其特征在于,所述处理单元用于:
    若所述M大于所述K,将所述M个输入区间聚合成所述K个输出区间;或者,
    若所述M等于所述K,所述M个输入区间与所述K个输出区间一一对应;或者,
    若所述M小于所述K,将所述M个输入区间分成所述K个输出区间。
  13. 根据权利要求11或12所述的装置,其特征在于,所述处理单元,还用于:
    确定所述第一节点的第一输出张量对应的M个输出区间,其中,所述M为所述第一节点的所述第一输出张量对应的切分数;
    对所述第一节点的第一输出张量对应的M个输出区间进行反向推导,确定所述第一 节点的第一输入张量对应的M个输入区间。
  14. 根据权利要求8至10中任一项所述的装置,其特征在于,第二节点是所述第一节点与第三节点的前级节点,所述第二节点与所述第三节点属于所述神经网络图,所述装置还包括处理单元,
    所述处理单元,用于确定所述第一节点的第一输入张量对应的M个输入区间以及所述第三节点的第二输入张量对应的Y个输入区间,所述M是所述第一输入张量的切分数,所述Y是所述第二输入张量的切分数;
    所述获取单元,还用于获取所述第二节点的第二输出张量的切分数K;
    所述处理单元,还用于基于所述M个输入区间、所述Y个输入区间与所述K,确定所述第二节点的输出张量对应的K个输出区间,其中,所述M、Y与K均为正整数。
  15. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机或处理器上运行时,使得所述计算机或所述处理器执行如权利要求1至7中任一项所述的方法。
  16. 一种计算机程序产品,其特征在于,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被运行时,实现如权利要求1至7中任一项所述的方法。
CN202180092506.8A 2021-12-27 2021-12-27 数据处理的方法和装置 Pending CN116802646A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/141461 WO2023122854A1 (zh) 2021-12-27 2021-12-27 数据处理的方法和装置

Publications (1)

Publication Number Publication Date
CN116802646A true CN116802646A (zh) 2023-09-22

Family

ID=86996758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180092506.8A Pending CN116802646A (zh) 2021-12-27 2021-12-27 数据处理的方法和装置

Country Status (3)

Country Link
EP (1) EP4439390A1 (zh)
CN (1) CN116802646A (zh)
WO (1) WO2023122854A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118503205A (zh) * 2024-07-17 2024-08-16 北京壁仞科技开发有限公司 用于处理张量数据的方法和装置
CN118503205B (zh) * 2024-07-17 2024-10-25 北京壁仞科技开发有限公司 用于处理张量数据的方法和装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117172289B (zh) * 2023-09-01 2024-09-06 苏州亿铸智能科技有限公司 张量切分方法、装置以及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018217092A1 (de) * 2018-10-05 2020-04-09 Robert Bosch Gmbh Verfahren, künstliches neuronales Netz, Vorrichtung, Computerprogramm und maschinenlesbares Speichermedium zur semantischen Segmentierung von Bilddaten
CN111062467B (zh) * 2019-12-18 2023-05-12 开放智能机器(上海)有限公司 一种应用于ai异构编译器的自动切分神经网络子图方法
CN113449859A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种数据处理方法及其装置
CN112507173B (zh) * 2020-12-15 2024-05-31 无锡灵汐类脑科技有限公司 张量切分方法、装置、芯片及介质
CN112799598B (zh) * 2021-02-08 2022-07-15 清华大学 一种数据处理方法、处理器及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118503205A (zh) * 2024-07-17 2024-08-16 北京壁仞科技开发有限公司 用于处理张量数据的方法和装置
CN118503205B (zh) * 2024-07-17 2024-10-25 北京壁仞科技开发有限公司 用于处理张量数据的方法和装置

Also Published As

Publication number Publication date
WO2023122854A1 (zh) 2023-07-06
EP4439390A1 (en) 2024-10-02

Similar Documents

Publication Publication Date Title
CN110175671B (zh) 神经网络的构建方法、图像处理方法及装置
US20230095606A1 (en) Method for training classifier, and data processing method, system, and device
WO2022001805A1 (zh) 一种神经网络蒸馏方法及装置
CN112215332B (zh) 神经网络结构的搜索方法、图像处理方法和装置
CN110309856A (zh) 图像分类方法、神经网络的训练方法及装置
CN112418392A (zh) 一种神经网络构建方法以及装置
CN113011575A (zh) 神经网络模型更新方法、图像处理方法及装置
CN111797970B (zh) 训练神经网络的方法和装置
CN111898636B (zh) 一种数据处理方法及装置
CN112801265A (zh) 一种机器学习方法以及装置
CN111368656A (zh) 一种视频内容描述方法和视频内容描述装置
US20240135174A1 (en) Data processing method, and neural network model training method and apparatus
CN113011568B (zh) 一种模型的训练方法、数据处理方法及设备
CN111612215A (zh) 训练时间序列预测模型的方法、时间序列预测方法及装置
CN111340190A (zh) 构建网络结构的方法与装置、及图像生成方法与装置
WO2022156475A1 (zh) 神经网络模型的训练方法、数据处理方法及装置
WO2021136058A1 (zh) 一种处理视频的方法及装置
CN111931901A (zh) 一种神经网络构建方法以及装置
CN113191241A (zh) 一种模型训练方法及相关设备
CN113536970A (zh) 一种视频分类模型的训练方法及相关装置
WO2022227024A1 (zh) 神经网络模型的运算方法、训练方法及装置
CN116802646A (zh) 数据处理的方法和装置
CN114900435B (zh) 一种连接关系预测方法及相关设备
CN116362301A (zh) 一种模型的量化方法以及相关设备
CN116343004A (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