CN113449859A - 一种数据处理方法及其装置 - Google Patents
一种数据处理方法及其装置 Download PDFInfo
- Publication number
- CN113449859A CN113449859A CN202010232274.9A CN202010232274A CN113449859A CN 113449859 A CN113449859 A CN 113449859A CN 202010232274 A CN202010232274 A CN 202010232274A CN 113449859 A CN113449859 A CN 113449859A
- Authority
- CN
- China
- Prior art keywords
- tensor
- operator
- sub
- tensors
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 195
- 238000000034 method Methods 0.000 claims abstract description 509
- 238000003062 neural network model Methods 0.000 claims abstract description 193
- 230000011218 segmentation Effects 0.000 claims abstract description 121
- 230000008707 rearrangement Effects 0.000 claims abstract description 82
- 230000015654 memory Effects 0.000 claims description 120
- 238000012545 processing Methods 0.000 claims description 109
- 238000004891 communication Methods 0.000 claims description 86
- 230000008569 process Effects 0.000 claims description 56
- 238000010586 diagram Methods 0.000 claims description 34
- 238000003860 storage Methods 0.000 claims description 26
- 238000005520 cutting process Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 16
- 238000013473 artificial intelligence Methods 0.000 abstract description 10
- 238000012549 training Methods 0.000 description 55
- 238000013528 artificial neural network Methods 0.000 description 44
- 239000011159 matrix material Substances 0.000 description 35
- 238000013527 convolutional neural network Methods 0.000 description 33
- 238000011176 pooling Methods 0.000 description 22
- 238000004364 calculation method Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 19
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000000605 extraction Methods 0.000 description 11
- 230000008602 contraction Effects 0.000 description 10
- 230000008030 elimination Effects 0.000 description 10
- 238000003379 elimination reaction Methods 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 9
- 238000013507 mapping Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 238000011022 operating instruction Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000010187 selection method Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
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
技术领域
本申请涉及人工智能领域,尤其涉及一种数据处理方法及其装置。
背景技术
深度神经网络在近几年的得到了很大发展,表现在视觉、翻译等任务上的高准确率。然而,有高准确率表现的神经网络需要巨大的训练开销,该开销来源于大量的训练数据和模型参数。
为了解决大量训练数据的挑战,一个解决方案便是数据并行,每台运算设备中拥有待训练模型的全量副本,同时,每台运算设备只负责训练张量的一部分切片。在训练过程中,设备需要在每次迭代结束后同步本地的模型参数。当待训练模型的参数较少,且模型是由计算开销较大的算子(如卷积操作)构成时,数据并行能够达到较好的性能。
然而,现有技术中,运算设备进行某一算子对应的运算后,为了保证之后的算子可以继续进行运算,整个网络的所有层中的张量只按照相同的模式进行切分,这使得现有技术的切分策略具有很大的局限性。
发明内容
第一方面,本申请提供了一种数据处理方法,通过将进行算子对应的运算得到的张量进行一次张量的重排布,使得之后的算子的输入张量的切分方法有更多的选择,相应的,可以提升数据流图的处理效率,所述数据处理方法包括:
获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子;
根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量所述M为大于1的正整数。
由于切分后的张量通过算子对应的运算后得到的子张量,其每个维度包括的参数数量可能远远小于未被切分的张量通过算子对应的运算后得到的张量,因此,子张量被后续算子的输入张量对应的切分方法的选择很有限,本实施例中,由于对通过算子对应的运算后得到的子张量进行了重排,相当于还原出了未被切分的张量通过算子对应的运算后得到的张量,此时,相比于子张量被后续算子的输入张量对应的切分方法的选择,重排后的张量被后续算子的输入张量对应的切分方法的选择是更多的,即,通过重排布的定义,可以使得算子的输入张量的切分方法选择更多,相应的,可以作为候选的处理方法也就更多,这样不同的算子就可以使用与对应的不同的切分方法来切分输入张量,也就是各自使用适合自己的切分方法。这对于提升数据流图的处理效率是很有帮助的,也能减少设备在计算数据流图中的开销。因为一个数据流图中往往包括有不同的算子,而不同的算子所适合的对输入数据的切分方法可能不同,一种算子只有使用最适合它的方式切分输入数据,才能保障这个算子的计算效率,可是不同的算子如果采用不同的方式切分输入数据,得到的输出数据格式就会各不相同,而数据流图的执行过程中,往往一个算子的输出数据是另一个算子的输入数据,因此,为了能够执行整个数据流图,现有技术选择让数据流图中的所有算子使用相同的方法进行切分。
在第一方面的一种可能的实现中,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量在对应的运算设备上进行所述第一算子对应的运算得到的。
在第一方面的一种可能的实现中,第一切分方法和第二切分方法是不同的切分方法。
在第一方面的一种可能的实现中,所述张量重排布方法,用于通过将所述M个第二子张量传输至同一个运算设备上进行重排,以得到所述第一张量。
在第一方面的一种可能的实现中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
应当理解,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果可以与所述第一张量完全相同,或者,只是张量中各个维度的数据的排布不同,但是整体上包括的数据内容是相同的。
在第一方面的一种可能的实现中,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
在第一方面的一种可能的实现中,所述神经网络模型包括N个算子,所述N个算子包括所述第一算子和所述第二算子,所述根据所述数据流图确定所述神经网络模型对应的处理方法,包括:
根据所述数据流图确定所述神经网络模型对应的多种候选处理方法;其中,所述多种候选处理方法中的每种候选处理方法包括用于切分所述N个算子中每个算子的输入张量的一种张量切分方法、以及用于重排布所述N个算子中至少两个算子之间的张量的一种重排布方法,所述张量切分方法用于切分对应算子的输入张量,所述张量重排布方法用于将进行算子对应的运算后得到的运算结果传输至一个运算设备后进行重排;
根据所述多种候选处理方法中每种候选处理方法对应的开销值从所述多种候选处理方法中确定所述处理方法,其中,所述开销值包括所述N个算子中每个算子的张量切分方法对应的内存开销值以及每种候选处理方法包括的张量重排布方法对应的第一通信开销值,所述内存开销值表示进行算子对应的运算时产生的内存开销,所述第一通信开销值表示将所述运算结果传输至一个运算设备的过程中产生的通信开销,所述处理方法为所述至少一种候选处理方法中开销值最小的候选处理方法。
本申请实施例中,还可以对确定所述处理方法的过程增加一个约束条件:确定的所述处理方法的内存开销小于每个运算设备能承受的内存开销上限。
本申请定义了重排布方法,允许前后算子能够出现输入张量的切分方法不同的情况。这使得模型并行转数据并行,或者数据并行转模型并行的混合并行方式成为可能,使得策略搜索空间更大。此外,本申请实现了计算内存代价和通信代价的功能。在给定处理方法的前提下,能够计算出算子和重排布所消耗的内存开销和通信开销,开销值的定义同时包含了内存开销和通信开销。能够对最优化内存开销和通信开销建模。
在第一方面的一种可能的实现中,所述N个算子包括第三算子,每种候选处理方法包括用于切分所述第三算子的输入张量的目标切分方法,所述第三算子用于将经过所述目标切分方法切分所述第三算子的输入张量得到的子张量进行第一运算,并将运算得到的运算结果传输到一个运算设备上进行第二运算,所述开销值还包括第二通信开销,所述第二通信开销表示运行所述第三算子时将运算结果传输到一个运算设备的过程中产生的通信开销。
在第一方面的一种可能的实现中,所述内存开销值与所述M个第一子张量包括的参数数量以及参数类型有关。
在第一方面的一种可能的实现中,所述第一通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。
在第一方面的一种可能的实现中,所述第二通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。
在第一方面的一种可能的实现中,所述开销值为所述内存开销值、所述第一通信开销值以及所述第二通信开销的平均值。
在第一方面的一种可能的实现中,所述方法还包括:
根据所述数据流图确定所述神经网络模型对应的多种处理方法;
根据所述多种处理方法中每种处理方法对应的内存开销值或第一通信开销值从所述多种处理方法中确定所述多种候选处理方法,其中,所述多种候选处理方法为所述多种处理方法中的一部分处理方法。
本申请实施例中,能够在处理方法生成之后,按照内存占用量非递减的顺序将其排列,按照固定步长选择其中的策略。这样的选法能在一定程度上保持精度的前提下有效地减少处理方法的搜索时间。
在第一方面的一种可能的实现中,所述数据流图还包括所述神经网络模型的第三算子,所述第三算子的输出张量为所述第二算子的输入张量,所述方法还包括:
将所述第一算子合并至所述第二算子,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系。
本申请实施例中,将所述第一算子合并至所述第二算子,同时,第一算子的输入张量对应的第一切分方法和以及第一算子和第二算子之间的重排布方法也合并至第二算子,并形成一条包括所述第一切分方法、所述张量重排布方法和所述第二切分方法的数据(即建立所述第一切分方法、所述张量重排布方法和所述第二切分方法之间的关联)。
在第一方面的一种可能的实现中,所述数据流图还包括所述神经网络模型的第四算子,所述第一算子的输出张量为所述第四算子的输入张量,所述方法还包括:
将所述第二算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述张量重排布方法和所述第二切分方法建立关联关系。
本申请实施例中,将所述第二算子合并至所述第一算子,同时,第二算子的输入张量对应的第二切分方法和以及第一算子和第二算子之间的重排布方法也合并至第一算子,并形成一条包括所述第一切分方法、所述张量重排布方法和所述第二切分方法的数据(即建立所述第一切分方法、所述张量重排布方法和所述第二切分方法之间的关联)。
在第一方面的一种可能的实现中,所述数据流图还包括所述神经网络模型的第五算子和第六算子,其中,所述第一张量为所述第二算子的第一输入张量以及所述第五算子的第一输入张量,所述第六算子的输出张量为所述第二算子的第二输入张量以及所述第五算子的第二输入张量,所述方法还包括:
获取用于切分所述第六算子的输入张量的第三切分方法、用于切分所述第二算子的第二输入张量的第四切分方法以及用于重排布所述第四算子和所述第二算子之间的张量的第一张量重排布方法;所述第三切分方法用于切分所述第六算子的第二输入张量,以得到多个第三子张量,所述第一张量重排布方法用于将所述多个第三子张量进行所述第六算子对应的运算后的得到的多个第四子张量进行重排,以得到第三张量,所述第四切分方法用于对所述第三张量进行切分;
将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法、所述第四切分方法以及所述第一张量重排布方法建立第一关联关系。
在第一方面的一种可能的实现中,所述方法还包括:
将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法以及所述第二切分方法建立第二关联关系。
本申请新增了三种图收缩操作,以支持更复杂神经网络的策略搜索。增加了MergeElimination合并消除操作,Contract Elimination关联消除操作,Star Elimination星型消除操作,并给出了经过收缩后的开销值计算方法;
其中,Merge Elimination合并消除操作可以表示上述的将所述第一算子合并至所述第二算子,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系;
Contract Elimination关联消除操作可以表示上述的将所述第二算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述张量重排布方法和所述第二切分方法建立关联关系;
Star Elimination星型消除操作可以表示上述的将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法、所述第四切分方法以及所述第一张量重排布方法建立第一关联关系。
在第一方面的一种可能的实现中,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
第二方面,本申请提供了一种数据处理方法,所述方法包括:
获取神经网络模型以及所述神经网络模型对应的切分方法,所述神经网络模型包括第一算子和第二算子;所述切分方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
本申请实施例中,运算设备可以通过调用第一算子对应的代码,并基于调用的代码对处理第一目标子张量。
接收至少一个运算设备发送的至少一个第二子张量;其中,每个第二子张量为对应的运算设备对所述M个第一子张量中除所述第一目标子张量之外的一个第一子张量进行所述第一算子对应的运算得到的;
通过所述重排布方法将所述第二目标子张量和所述至少一个第二子张量进行重排,以得到第一张量;
通过所述第二切分方法对所述第一张量进行切分。
在第二方面的一种可能的实现中,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量传输到对应的运算设备,并在对应的运算设备上进行所述第一算子对应的运算得到的。
在第二方面的一种可能的实现中,所述张量重排布方法,用于通过将所述M个第二子张量传输至同一个运算设备上进行重排,以得到所述第一张量。
在第二方面的一种可能的实现中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
在第二方面的一种可能的实现中,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
在第二方面的一种可能的实现中,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
第三方面,本申请提供了一种数据处理方法,其特征在于,所述方法包括:
获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法以及用于切分所述第二算子的输入张量的第二切分方法;
通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
向运算设备发送所述第二目标子张量;
接收所述运算设备发送的第一张量,所述第一张量为所述运算设备通过重排布方法将多个第二子张量进行重排得到的,多个第二子张量包括所述第二目标子张量;
通过所述第二切分方法对所述第一张量进行切分。
在第三方面的一种可能的实现中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
在第三方面的一种可能的实现中,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
在第三方面的一种可能的实现中,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
第四方面,本申请提供了一种数据处理装置,所述装置包括:
获取模块,用于获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子;
确定模块,用于根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量所述M为大于1的正整数。
在第四方面的一种可能的实现中,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量传输到对应的运算设备,并在对应的运算设备上进行所述第一算子对应的运算得到的。
在第四方面的一种可能的实现中,所述张量重排布方法,用于通过将所述M个第二子张量传输至同一个运算设备上进行拼接,以得到所述第一张量。
在第四方面的一种可能的实现中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
在第四方面的一种可能的实现中,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
在第四方面的一种可能的实现中,所述神经网络模型包括N个算子,所述N个算子包括所述第一算子和所述第二算子,所述确定模块,具体用于:
根据所述数据流图确定所述神经网络模型对应的多种候选处理方法;其中,所述多种候选处理方法中的每种候选处理方法包括用于切分所述N个算子中每个算子的输入张量的一种张量切分方法、以及用于重排布所述N个算子中至少两个算子之间的张量的一种重排布方法,所述张量切分方法用于切分对应算子的输入张量,所述张量重排布方法用于将进行算子对应的运算后得到的运算结果传输至一个运算设备后进行重排;
根据所述多种候选处理方法中每种候选处理方法对应的开销值从所述多种候选处理方法中确定所述处理方法,其中,所述开销值包括所述N个算子中每个算子的张量切分方法对应的内存开销值以及每种候选处理方法包括的张量重排布方法对应的第一通信开销值,所述内存开销值表示进行算子对应的运算时产生的内存开销,所述第一通信开销值表示将所述运算结果传输至一个运算设备的过程中产生的通信开销,所述处理方法为所述至少一种候选处理方法中开销值最小的候选处理方法。
在第四方面的一种可能的实现中,所述N个算子包括第三算子,每种候选处理方法包括用于切分所述第三算子的输入张量的目标切分方法,所述第三算子用于将经过所述目标切分方法切分所述第三算子的输入张量得到的子张量进行第一运算,并将运算得到的运算结果传输到一个运算设备上进行第二运算,所述开销值还包括第二通信开销,所述第二通信开销表示运行所述第三算子时将运算结果传输到一个运算设备的过程中产生的通信开销。
在第四方面的一种可能的实现中,所述内存开销值与所述M个第一子张量包括的参数数量以及参数类型有关。
在第四方面的一种可能的实现中,所述第一通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。
在第四方面的一种可能的实现中,所述第二通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。
在第四方面的一种可能的实现中,所述开销值为所述内存开销值、所述第一通信开销值以及所述第二通信开销的平均值。
在第四方面的一种可能的实现中,所述确定模块,还用于:
根据所述数据流图确定所述神经网络模型对应的多种处理方法;
根据所述多种切分方法中每种处理方法对应的内存开销值或第一通信开销值从所述多种处理方法中确定所述多种候选处理方法,其中,所述多种候选处理方法为所述多种处理方法中的一部分处理方法。
在第四方面的一种可能的实现中,所述数据流图还包括所述神经网络模型的第三算子,所述第三算子的输出张量为所述第二算子的输入张量,所述装置还包括:
合并模块,用于将所述第一算子合并至所述第二算子,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系。
在第四方面的一种可能的实现中,所述数据流图还包括所述神经网络模型的第四算子,所述第一算子的输出张量为所述第四算子的输入张量,所述装置还包括:
合并模块,用于将所述第二算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述张量重排布方法和所述第二切分方法建立关联关系。
在第四方面的一种可能的实现中,所述数据流图还包括所述神经网络模型的第五算子和第六算子,其中,所述第一张量为所述第二算子的第一输入张量以及所述第五算子的第一输入张量,所述第六算子的输出张量为所述第二算子的第二输入张量以及所述第五算子的第二输入张量,所述获取模块,用于:
获取用于切分所述第六算子的输入张量的第三切分装置、用于切分所述第二算子的第二输入张量的第四切分装置以及用于重排布所述第四算子和所述第二算子之间的张量的第一张量重排布装置;所述第三切分装置用于切分所述第六算子的第二输入张量,以得到多个第三子张量,所述第一张量重排布装置用于将所述多个第三子张量进行所述第六算子对应的运算后的得到的多个第四子张量进行重排,以得到第三张量,所述第四切分装置用于对所述第三张量进行切分;
所述装置还包括:
合并模块,用于将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法、所述第四切分方法以及所述第一张量重排布方法建立第一关联关系。
在第四方面的一种可能的实现中,所述装置还包括:
合并模块,用于将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法以及所述第二切分方法建立第二关联关系。
在第四方面的一种可能的实现中,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
第五方面,本申请提供了一种数据处理装置,所述装置包括:
获取模块,用于获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
第一切分模块,用于通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
运算模块,用于使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
接收模块,用于接收至少一个运算设备发送的至少一个第二子张量;其中,每个第二子张量为对应的运算设备对所述M个第一子张量中除所述第一目标子张量之外的一个第一子张量进行所述第一算子对应的运算得到的;
重排布模块,用于通过所述重排布方法将所述第二目标子张量和所述至少一个第二子张量进行重排,以得到第一张量;
第二切分模块,用于通过所述第二切分方法对所述第一张量进行切分。
在第五方面的一种可能的实现中,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量传输到对应的运算设备,并在对应的运算设备上进行所述第一算子对应的运算得到的。
在第五方面的一种可能的实现中,所述张量重排布方法,用于通过将所述M个第二子张量传输至同一个运算设备上进行重排,以得到所述第一张量。
在第五方面的一种可能的实现中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
在第五方面的一种可能的实现中,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
在第五方面的一种可能的实现中,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
第六方面,本申请实施例提供了一种数据处理装置,所述装置包括:
获取模块,用于获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法以及用于切分所述第二算子的输入张量的第二切分方法;
第一切分模块,用于通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
运算模块,用于使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
发送模块,用于向运算设备发送所述第二目标子张量;
接收模块,用于接收所述运算设备发送的第一张量,所述第一张量为所述运算设备通过重排布方法将多个第二子张量进行重排得到的,多个第二子张量包括所述第二目标子张量;
第二切分模块,用于通过所述第二切分方法对所述第一张量进行切分。
在第六方面的一种可能的实现中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
在第六方面的一种可能的实现中,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
在第六方面的一种可能的实现中,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
第七方面,本申请实施例提供了一种数据处理装置,可以包括存储器、处理器以及总线***,其中,存储器用于存储程序,处理器用于执行存储器中的程序,以执行如上述第一方面及第一方面任一可选的方法。
第八方面,本申请实施例提供了一种数据处理装置,可以包括存储器、处理器以及总线***,其中,存储器用于存储程序,处理器用于执行存储器中的程序,以执行如上述第二方面及第二方面任一可选的方法。
第九方面,本申请实施例提供了一种数据处理装置,可以包括存储器、处理器以及总线***,其中,存储器用于存储程序,处理器用于执行存储器中的程序,以执行如上述第三方面及第三方面任一可选的方法。
第十方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面或其任一可选的方法。
第十一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第二方面或第二方面任一可选的方法。
第十二方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第三方面或第三方面及其任一可选的方法。
第十三方面,本申请实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面及其任一可选的方法。
第十四方面,本申请实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第二方面及其任一可选的方法。
第十五方面,本申请实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第三方面及其任一可选的方法。
第十六方面,本申请提供了一种芯片***,该芯片***包括处理器,用于支持执行设备实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据;或,信息。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存执行设备或训练设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包括芯片和其他分立器件。
本申请提供了一种数据处理方法,其特征在于,所述方法包括:获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子;根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于重排布所述第一算子和所述第二算子之间的张量的重排布方法。由于切分后的张量通过算子对应的运算后得到的子张量,其每个维度包括的参数数量可能远远小于未被切分的张量通过算子对应的运算后得到的张量,因此,子张量被后续算子的输入张量对应的切分方法的选择很有限,本实施例中,由于对通过算子对应的运算后得到的子张量进行了重排,相当于还原出了未被切分的张量通过算子对应的运算后得到的张量,此时,相比于子张量被后续算子的输入张量对应的切分方法的选择,重排后的张量被后续算子的输入张量对应的切分方法的选择是更多的,通过重排布的定义,可以使得算子的输入张量的切分方法选择更多,这样不同的算子就可以使用与对应的不同的切分方法来切分输入张量,也就是各自使用适合自己的切分方法。这对于提升数据流图的处理效率是很有帮助的,也能减少设备在计算数据流图中的开销。因为一个数据流图中往往包括有不同的算子,而不同的算子所适合的对输入数据的切分方法可能不同,一种算子只有使用最适合它的方式切分输入数据,才能保障这个算子的计算效率,可是不同的算子如果采用不同的方式切分输入数据,得到的输出数据格式就会各不相同,而数据流图的执行过程中,往往一个算子的输出数据是另一个算子的输入数据,因此,为了能够执行整个数据流图,现有技术选择让数据流图中的所有算子使用相同的方法进行切分。
附图说明
图1为人工智能主体框架的一种结构示意图;
图2为一种张量切分方法示意;
图3为一种深度学习框架软件栈示意;
图4a为本申请实施例提供的一种应用架构示意;
图4b为本申请实施例提供的一种应用架构示意;
图5为本申请实施例提供的一种***架构示意;
图6为一种卷积层/池化层示意;
图7为一种卷积神经网络示意;
图8为本申请实施例提供的一种芯片的硬件结构;
图9为本申请实施例提供的一种数据处理方法的流程示意;
图10为本申请实施例中一种数据处理方法的流程示意;
图11为本申请实施例中一种数据处理方法的流程示意;
图12为本申请实施例中一种重排布方法示意;
图13为本申请实施例中一种图收缩示意;
图14为本申请实施例中一种图收缩示意;
图15为本申请实施例中一种图收缩示意;
图16为本申请实施例中一种图收缩示意;
图17为本申请实施例中一种图收缩示意;
图18为本申请实施例提供的一种数据处理方法的流程示意;
图19为本申请实施例提供的一种数据处理方法的流程示意;
图20为本申请实施例提供的一种数据处理装置的结构示意;
图21为本申请实施例提供的一种数据处理装置的结构示意;
图22为本申请实施例提供的一种数据处理装置的结构示意;
图23为本申请实施例提供的执行设备的一种结构示意图;
图24是本申请实施例提供的训练设备一种结构示意图;
图25为本申请实施例提供的芯片的一种结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、***、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
首先对人工智能***总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到***的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能***提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(CPU、NPU、GPU、ASIC、FPGA等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算***中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有***的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能***中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用***,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能***在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、平安城市等。
在进行数据处理时,数据并行可看做是把算子的输入张量在批维度(batch)进行切分,切分后的张量由对应的运算设备进行运算,将设备组织成高维的网状结构,每一维度都有相应的命名,相应地,将张量也有命名,以便于表达张量到设备的映射。在图2的例子中,MatMul(x,w)=h,MatMul(h,v)=y,MatMul表示矩阵乘法,x,w,h,v,y是矩阵(二维张量);x的维度可表示为(b,d_io),w的维度可表示为(d_io,d_h);4台运算设备同样可表示为矩阵(r,c)。张量到设备的切分规则可表示为[(b,r),(d_h,c)]。若待切分的张量的总的维度是N,而设备组成的网格的维度为M,那么可能的总的映射方式有M^N种。Mesh-TensorFlow采用的整数规划的建模方式,然后利用已有的求解器求得最优的映射。
上述实施例能够实现数据并行和模型并行的归一化处理,实现同时切分训练数据和模型参数,并且能够在特定硬件设备上实际训练神经网络。但是整个网络的所有层中的张量只能按照相同的模式进行切分,无法实现混合并行。如图2中,由于映射关系(d_h,c),张量w的第二维、张量h的第二维、张量v的第一维都要映射到设备矩阵的第二维上。这样的映射方式存在局限性,不允许出现不同算子的张量的相应维度映射到不同设备维度上。无法实现数据并行到模型并行,或模型并行到数据并行的混合切分,即不支持张量的重排布。且在利用整数规划求解映射关系时以最小化内存使用量为目标,可能导致训练性能较差。因为拖慢训练过程的因素之一便是网络通信数据量大,单独优化内存使用量可能会导致通信量的增加,如矩阵乘算子,切分第一个张量的最后一维会导致正向的计算引入AllReduce,从而触发通信开销。
本申请可以应用于深度学习领域。深度学习框架软件栈可以如图3所示,用户向框架提交编写的脚本程序,框架经过前端表达的解析后,得到有算子构成的数据流图;该数据流图经过并行策略搜索后为每个算子标记其并行策略;而后的图切分流程将整个数据流图按照并行策略进行切分,分配给每台设备一张计算子图;该子图会下发到运算设备上执行。
接下来描述本申请实施例的一种应用架构,参照图4a,图4a为本申请实施例提供的一种应用架构示意,如图4a示出的那样,计算机***可以为包括CPU以及多个GPU的多核***,在该***内,CPU或GPU可以调用对应的memory中的代码并执行,其中,CPU以及多个GPU之间可以通过总线实现互联。
本申请实施例中,各个GPU可以从对应的memory中获取到与神经网络模型对应的数据流图,该数据流图包括该神经网络模型中的各个算子以及神经网络模型对应的切分方法,各个GPU可以基于数据流图进行数据处理。关于各个GPU如何基于数据流图进行数据处理将在之后的实施例中描述,这里不再赘述。
在后文中,GPU和/或CPU等处理模块可以描述为运算设备。
接下来描述本申请实施例的另一种应用架构,参照图4b,图4b为本申请实施例提供的一种应用架构示意,如图4b示出的那样,计算机***可以为包括多个运算设备,该运算设备可以为独立的计算设备,例如独立的计算机或者终端设备等等,在该***内,多个运算设备之间可以通过总线实现互联。
本申请实施例中,各个运算设备可以获取到与神经网络模型对应的数据流图,该数据流图包括该神经网络模型中的各个算子以及神经网络模型对应的切分方法,各个运算设备可以基于数据流图进行数据处理。关于各个运算设备如何基于数据流图进行数据处理将在之后的实施例中描述,这里不再赘述。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络等相关概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元。
(2)深度神经网络
深度神经网络(Deep Neural Network,DNN),可以理解为具有很多层隐含层的神经网络,这里的“很多”并没有特别的度量标准,我们常说的多层神经网络和深度神经网络其本质上是同一个东西。从DNN按不同层的位置划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
(3)卷积神经网络(Convosutionas Neuras Network,CNN)是一种带有卷积结构的深度神经网络。
(4)反向传播算法
卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。
(5)循环神经网络(recurrent neural networks,RNN)是用来处理序列数据的。
RNN旨在让机器像人一样拥有记忆的能力。因此,RNN的输出就需要依赖当前的输入信息和历史的记忆信息。
(6)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(7)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
下面介绍本申请实施例提供***架构。
参见图5,本申请实施例提供了一种***架构100。如所述***架构100所示,数据采集设备160用于采集训练数据,本申请实施例中训练数据包括:物体的图像或者图像块及物体的类别;并将训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到CNN特征提取模型(解释说明:这里的特征提取模型就是前面介绍的经训练阶段训练得到的模型,可以是用于特征提取的神经网络等)。下面将以实施例一更详细地描述训练设备120如何基于训练数据得到CNN特征提取模型,该CNN特征提取模型能够用于实现本申请实施例提供的神经网络,即,将待识别图像或图像块通过相关预处理后输入该CNN特征提取模型,即可得到待识别图像或图像块感兴趣物体的2D、3D、Mask、关键点等信息。本申请实施例中的CNN特征提取模型具体可以为CNN卷积神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行CNN特征提取模型的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备120训练得到的目标模型/规则可以应用于不同的***或设备中,如应用于图5所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)AR/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端等。在图5中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据,所述输入数据在本申请实施例中可以包括:待识别图像或者图像块或者图像。
在执行设备120对输入数据进行预处理,或者在执行设备120的计算模块111执行计算等相关的处理(比如进行本申请中神经网络的功能实现)过程中,执行设备120可以调用数据存储***150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储***150中。
最后,I/O接口112将处理结果,如上述得到的图像或图像块或者图像中感兴趣物体的2D、3D、Mask、关键点等信息返回给客户设备140,从而提供给用户。
可选地,客户设备140,可以是自动驾驶***中的规划控制单元、手机终端中的美颜算法模块。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则,该相应的目标模型/规则即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图5中所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向I/O接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由I/O接口112直接将如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果,作为新的样本数据存入数据库130。
值得注意的是,图5仅是本申请实施例提供的一种***架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图5中,数据存储***150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储***150置于执行设备110中。
如图5所示,根据训练设备120训练得到CNN特征提取模型,该CNN特征提取模型在本申请实施例中可以是CNN卷积神经网络也可以是下面实施例即将介绍的的神经网络。
由于CNN是一种非常常见的神经网络,下面结合图5重点对CNN的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。
本申请实施例采用的卷积神经网络的结构可以如图6所示。在图6中,卷积神经网络(CNN)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及神经网络层230。其中,输入层210可以获取待处理图像,并将获取到的待处理图像交由卷积层/池化层220以及后面的神经网络层230进行处理,可以得到图像的处理结果。下面对图6中的CNN200中内部的层结构进行详细的介绍。
本申请中的一个算子可以表示一个整体的层结构,或者层架构中的部分运算。
卷积层/池化层220:
卷积层:
如图6所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图6中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。
神经网络层230:
在经过卷积层/池化层220的处理后,卷积神经网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络200需要利用神经网络层230来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层230中可以包括多层隐含层(如图6所示的231、232至23n)以及输出层240,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
需要说明的是,如图2所示的卷积神经网络210仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。
本申请实施例的卷积神经网络的结构可以如图7所示。在图7中,卷积神经网络(CNN)200可以包括输入层110,卷积层/池化层120(其中池化层为可选的),以及神经网络层130。与图6相比,图7中的卷积层/池化层120中的多个卷积层/池化层并行,将分别提取的特征均输入给全神经网络层130进行处理。
图8为本申请实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器NPU50。该芯片可以被设置在如图5所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图5所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则。如图6和图7所示的卷积神经网络中各层的算法均可在如图8所示的芯片中得以实现。
神经网络处理器NPU 50,NPU作为协处理器挂载到主中央处理器(centralprocessing unit,CPU)(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路503,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。
向量计算单元507可以对运算电路的输出做进一步处理。
统一存储器506用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器505(direct memory accesscontroller,DMAC)将外部存储器中的输入数据搬运到输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)510,用于通过总线实现主CPU、DMAC和取指存储器509之间进行交互。
与控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令;
控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。
参见图9,图9为本申请实施例提供的一种数据处理方法的流程示意,如图9中示出的那样,本申请实施例提供的数据处理方法包括:
901、获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子。
本申请实施例中,可以获取到神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子。
本申请实施例中,数据流图可以包括多个算子,多个算子包括第一算子和第二算子。
本申请实施例中,第一算子的输出张量为所述第二算子的输入张量。
902、根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量所述M为大于1的正整数。
本申请实施例中,在获取到数据流图之后,可以根据所述数据流图确定所述神经网络模型对应的处理方法。
本申请实施例中,数据流图包括多个算子,可以确定数据流图中包括的多个算子中的每个算子的输入张量的可能的切分方法,该切分方法包括将张量的各个维度切分的份数,其与运算设备的数量、算子中各个维度的大小以及算子的类型有关。其中,运算设备的数量决定着各个维度切分的份数的上限,即切分的份数的数量不超过运算设备的数量;算子中各个维度的大小决定着各个维度切分的份数,例如各个维度切分的份数可以为对应的维度的张量尺寸的整数倍;算子的类型决定着各个维度切分的份数的切分规则,例如,针对于MatMul算子,有两个输入张量:B张量和C张量,对B张量进行切分后的每个子张量的第二个维度的尺寸大小与对C张量进行切分后的每个子张量的第一个维度的尺寸大小相同。
需要说明的是本实施例中,张量在一个维度上的尺寸可以理解为张量在该维度上的规格,其可以表示该维度上张量包括多少个元素。
示例性的,以算子类型为MatMul为例,A=MatMul(B,C),其中,B张量的形状为[8,32],C张量的形状为[32,16],运算设备数量为4,可以产生如下几种切分方法:
[1,1],[1,1],其表示将B张量的第一个维度切分为1份,即不切分B张量的第一个维度,将C张量的第一个维度切分为1份,即不切分C张量的第一个维度,将B张量的第二个维度切分为1份,即不切分B张量的第二个维度,将C张量的第二个维度切分为1份,即不切分C张量的第二个维度;
[1,1],[1,2],其表示将B张量的第一个维度切分为1份,即不切分B张量的第一个维度,将C张量的第一个维度切分为1份,即不切分C张量的第一个维度,将B张量的第二个维度切分为1份,即不切分B张量的第二个维度,将C张量的第二个维度切分为2份;C张量切分后得到两个子张量,每个子张量的尺寸为[32,8];
[1,1],[1,4],其表示将B张量的第一个维度切分为1份,即不切分B张量的第一个维度,将C张量的第一个维度切分为1份,即不切分C张量的第一个维度,将B张量的第二个维度切分为1份,即不切分B张量的第二个维度,将C张量的第二个维度切分为4份;C张量切分后得到四个子张量,每个子张量的尺寸为[32,4];
[1,2],[2,1],其表示将B张量的第一个维度切分为1份,即不切分B张量的第一个维度,将C张量的第一个维度切分为2份,将B张量的第二个维度切分为2份,将C张量的第二个维度切分为1份,即不切分C张量的第二个维度;B张量切分后得到两个子张量,每个子张量的尺寸为[8,16];C张量切分后得到两个子张量,每个子张量的尺寸为[16,16];
[1,2],[2,2],其表示将B张量的第一个维度切分为1份,即不切分B张量的第一个维度,将C张量的第一个维度切分为2份,将B张量的第二个维度切分为2份,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的尺寸为[8,16];C张量切分后得到两个子张量,每个子张量的尺寸为[16,8];
[1,4],[4,1],其表示将B张量的第一个维度切分为1份,即不切分B张量的第一个维度,将C张量的第一个维度切分为4份,将B张量的第二个维度切分为4份,将C张量的第二个维度切分为1份,即不切分C张量的第二个维度;B张量切分后得到两个子张量,每个子张量的尺寸为[8,8];C张量切分后得到两个子张量,每个子张量的尺寸为[8,16];
[2,1],[1,1],其表示将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,即不切分C张量的第一个维度,将B张量的第二个维度切分为1份,即不切分B张量的第二个维度,将C张量的第二个维度切分为1份,即不切分C张量的第二个维度;B张量切分后得到两个子张量,每个子张量的尺寸为[4,32];
[2,1],[1,2],其表示将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,即不切分C张量的第一个维度,将B张量的第二个维度切分为1份,即不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的尺寸为[4,32];C张量切分后得到两个子张量,每个子张量的尺寸为[32,8];
[2,2],[2,1],其表示将B张量的第一个维度切分为2份,将C张量的第一个维度切分为2份,将B张量的第二个维度切分为2份,将C张量的第二个维度切分为1份,即不切分C张量的第二个维度;B张量切分后得到两个子张量,每个子张量的尺寸为[4,16];C张量切分后得到两个子张量,每个子张量的尺寸为[16,16];
[4,1],[1,1],其表示将B张量的第一个维度切分为4份,将C张量的第一个维度切分为1份,即不切分C张量的第一个维度,将B张量的第二个维度切分为1份,即不切分B张量的第二个维度,将C张量的第二个维度切分为1份,即不切分C张量的第二个维度;B张量切分后得到两个子张量,每个子张量的尺寸为[2,32];
本申请实施例中,数据流图可以包括多个算子,以及算子之间的连接关系,连接关系可以表示张量的流向,其中,数据流图包括第一算子和第二算子,第一算子和第二算子连接,且第一算子的输出张量为第二算子的输入张量,即使用第一算子对输入张量进行运算后,得到的输出张量可以作为第二算子的输入张量。
本申请实施例中,可以遍历数据流图中包括的各个算子,并确定神经网络模型对应的处理方法,其中处理方法可以包括用于切分所述第一算子的输入张量的第一切分方法,其中第一切分方法为对第一算子的输入张量的一种切分方法。处理方法可以包括用于切分所述第二算子的输入张量的第二切分方法,其中第人切分方法为对第人算子的输入张量的一种切分方法。
本申请实施例中,处理方法还可以包括用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量所述M为大于1的正整数。
本申请实施例中,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量在对应的运算设备上进行所述第一算子对应的运算得到的,具体的,可以使用第一算子对第一算子的输入张量进行切分,可以得到M个第一子张量,M个第一子张量中的每个第一子张量可以经过所述第一算子处理后得到第二子张量,即M个第一子张量经过所述第一算子处理后得到M个第二子张量,进而可以通过重排布方法用于将M个第二子张量进行重排,其中重排可以理解为将M个第二子张量进行拼接,以得到第一张量,其中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量与相同。具体的,所述张量重排布方法,可以用于通过将所述M个第二子张量传输至同一个运算设备上进行拼接,以得到所述第一张量,第二切分方法用于切分第一张量。
本申请实施例中,在如图4a示出的架构中,M个GPU可以从memory中获取到第一算子的输入张量,每个GPU可以使用第一切分方法对第一算子的输入张量进行切分,以得到M个第一子张量,每个GPU可以选择其中的一个第一子张量进行所述第一算子对应的运算,以得到第二子张量,此时M个GPU中的每个GPU可以得到一个第二子张量,之后,M-1个GPU可以通过重排布方法将各自的第二子张量发送到一个GPU上,该GPU可以对接收到的M-1个第一子张量和自身计算得到的第二子张量进行重排,其中重排可以理解为将M个第二子张量进行拼接,以得到第一张量,其中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量与相同,之后,该GPU可以将重排得到的第一张量发送到其余的M-1个GPU上,每个GPU可以使用第二切分方法切分第一张量。
本申请实施例中,在如图4b示出的架构中,M个运算设备可以获取到第一算子的输入张量,每个运算设备可以使用第一切分方法对第一算子的输入张量进行切分,以得到M个第一子张量,每个运算设备可以选择其中的一个第一子张量进行所述第一算子对应的运算,以得到第二子张量,此时M个运算设备中的每个运算设备可以得到一个第二子张量,之后,M-1个运算设备可以通过重排布方法将各自的第二子张量发送到一个运算设备上,该运算设备可以对接收到的M-1个第一子张量和自身计算得到的第二子张量进行重排,其中重排可以理解为将M个第二子张量进行拼接,以得到第一张量,其中,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量与相同,之后,该运算设备可以将重排得到的第一张量发送到其余的M-1个运算设备上,每个运算设备可以使用第二切分方法切分第一张量。
本申请实施例中,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。即,M个第一子张量中的每个第一子张量可以经过所述第一算子处理后得到第二子张量,在一个GPU上,第二子张量无法被切分以得到所述第二切分方法切分所述第一张量后得到的子张量。此时,若将多个第二子张量进行重排,得到第一张量,则第一张量可以在一个GPU上按照第二切分方法进行切分。
参照图10,图10为本申请实施例中一种数据处理方法的流程示意,如图10中示出的那样,计算机***包括GPU1、GPU2、GPU3和GPU4,GPU1可以获取到两个张量(张量B和张量C),并对获取到的张量做矩形乘运算:A=MatMul(B,C),B张量的形状为[8,32],C张量的形状为[32,16],运算设备数量为4。
需要说明的是,本实施例中,张量的形状可以理解为张量的规格,可以表示出每个维度包括多少个元素。
具体的,GPU1可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];GPU1可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。GPU2可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];GPU2可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。GPU3可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];GPU3可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。GPU4可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];GPU4可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。
之后,GPU2、GPU3和GPU4可以将各自得到的结果张量发送至GPU1,GPU1可以接收到GPU2、GPU3和GPU4可以将各自得到的结果张量,并将GPU2、GPU3和GPU4可以将各自得到的结果张量和自身得到的结果张量进行重排,即将四个结果张量拼接在一起,得到第一张量,该第一张量的形状为[8,16],且第一张量与直接将B张量和C张量进行矩阵乘运算后的到的结果相同。
之后,GPU1可以将第一张量发送至GPU2、GPU3和GPU4,相应的,GPU2、GPU3和GPU4接收到第一张量后,可以对第一张量进行切分操作。
需要说明的是,可以是汇总到GPU1、GPU2、GPU3和GPU4中的任意一个,或者是汇总至其他的GPU,本申请并不限定。
在一种实施例中,计算机***可以包括运算设备1、运算设备2、运算设备3和运算设备4,运算设备1可以获取到两个张量(张量B和张量C),并对获取到的张量做矩形乘运算:A=MatMul(B,C),B张量的形状为[8,32],C张量的形状为[32,16],运算设备数量为4。
具体的,运算设备1可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];运算设备1可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。运算设备2可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];运算设备2可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。运算设备3可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];运算设备3可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。运算设备4可以将B张量的第一个维度切分为2份,将C张量的第一个维度切分为1份,不切分C张量的第一个维度,不切分B张量的第二个维度,将C张量的第二个维度切分为2份;B张量切分后得到两个子张量,每个子张量的形状为[4,32];C张量切分后得到两个子张量,每个子张量的形状为[32,8];运算设备4可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的形状为[4,8]。
之后,运算设备2、运算设备3和运算设备4可以将各自得到的结果张量发送至运算设备1,运算设备1可以接收到运算设备2、运算设备3和运算设备4可以将各自得到的结果张量,并将运算设备2、运算设备3和运算设备4可以将各自得到的结果张量和自身得到的结果张量进行重排,即将四个结果张量拼接在一起,得到第一张量,该第一张量的形状为[8,16],且第一张量与直接将B张量和C张量进行矩阵乘运算后的到的结果相同。
之后,运算设备1可以将第一张量发送至运算设备2、运算设备3和运算设备4,相应的,运算设备2、运算设备3和运算设备4接收到第一张量后,可以对第一张量进行切分操作。
需要说明的是,可以是汇总到运算设备1、运算设备2、运算设备3和运算设备4中的任意一个,或者是汇总至其他的运算设备,本申请并不限定。
接下来描述,如何根据所述数据流图确定所述神经网络模型对应的处理方法:
本申请实施例中,可以根据所述数据流图确定所述神经网络模型对应的多种候选处理方法;其中,所述多种候选处理方法中的每种候选处理方法包括用于切分所述N个算子中每个算子的输入张量的一种张量切分方法、以及用于重排布所述N个算子中至少两个算子之间的张量的一种重排布方法,所述张量切分方法用于切分对应算子的输入张量,所述张量重排布方法用于将进行算子对应的运算后得到的运算结果传输至一个运算设备后进行重排,根据所述多种候选处理方法中每种候选处理方法对应的开销值从所述多种候选处理方法中确定所述处理方法,其中,所述开销值包括所述N个算子中每个算子的张量切分方法对应的内存开销值以及每种候选处理方法包括的张量重排布方法对应的第一通信开销值,所述内存开销值表示进行算子对应的运算时产生的内存开销,所述第一通信开销值表示将所述运算结果传输至一个运算设备的过程中产生的通信开销,所述处理方法为所述至少一种候选处理方法中开销值最小的候选处理方法。
本申请实施例中,每个算子的输入张量可以对应于多个切分方法,当出现上述无法进行切分的情况时,算子和算子之间也可以包括张量重排布方法。
本申请实施例中,可以遍历数据流图来确定所述神经网络模型对应的多种候选处理方法,其中每种候选处理方法包括用于切分所述N个算子中每个算子的输入张量的一种张量切分方法、以及用于重排布所述N个算子中至少两个算子之间的张量的一种重排布方法。
为了选择多种候选处理方法较优的处理方法,需要确定多种候选处理方法中的每种候选处理方法的开销值,其中,开销值包括所述N个算子中每个算子的张量切分方法对应的内存开销值以及每种候选处理方法包括的张量重排布方法对应的第一通信开销值,所述内存开销值表示进行算子对应的运算时产生的内存开销,所述第一通信开销值表示将所述运算结果传输至一个运算设备的过程中产生的通信开销。
本申请实施例中,所述N个算子包括第三算子,每种候选处理方法包括用于切分所述第三算子的输入张量的目标切分方法,所述第三算子用于将经过所述目标切分方法切分所述第三算子的输入张量得到的子张量进行第一运算,并将运算得到的运算结果传输到一个运算设备上进行第二运算,所述开销值还包括第二通信开销,所述第二通信开销表示运行所述第三算子时将运算结果传输到一个运算设备的过程中产生的通信开销。
参照图11,图11为本申请实施例中一种数据处理方法的流程示意,如图11中示出的那样,计算机***包括GPU1、GPU2、GPU3和GPU4,GPU1可以获取到两个张量(张量B和张量C),并对获取到的张量做矩形乘运算:A=MatMul(B,C),B张量的形状为[8,32],C张量的形状为[32,16],运算设备数量为4。
具体的,GPU1可以将B张量的第二个维度切分为2份,将C张量的第一个维度切分为2份;B张量切分后得到两个子张量,每个子张量的尺寸为[8,16];C张量切分后得到两个子张量,每个子张量的尺寸为[16,16];GPU1可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的尺寸为[8,16]。GPU2可以将B张量的第二个维度切分为2份,将C张量的第一个维度切分为2份;B张量切分后得到两个子张量,每个子张量的尺寸为[8,16];C张量切分后得到两个子张量,每个子张量的尺寸为[16,16];GPU2可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的尺寸为[8,16]。GPU3可以将B张量的第二个维度切分为2份,将C张量的第一个维度切分为2份;B张量切分后得到两个子张量,每个子张量的尺寸为[8,16];C张量切分后得到两个子张量,每个子张量的尺寸为[16,16];GPU3可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的尺寸为[8,16]。GPU4可以将B张量的第二个维度切分为2份,将C张量的第一个维度切分为2份;B张量切分后得到两个子张量,每个子张量的尺寸为[8,16];C张量切分后得到两个子张量,每个子张量的尺寸为[16,16];GPU4可以对一个B张量切分后得到的子张量以及一个C张量切分后得到的子张量进行矩阵乘运算,得到结果张量,该结果张量的尺寸为[8,16]。
之后,GPU2、GPU3和GPU4可以将各自得到的结果张量发送至GPU1,GPU1可以接收到GPU2、GPU3和GPU4可以将各自得到的结果张量,并将GPU2、GPU3和GPU4可以将各自得到的结果张量和自身得到的结果张量进行逐元素相加,得到第一张量,该第一张量的尺寸为[8,16],且第一张量与直接将B张量和C张量进行矩阵乘运算后的到的结果相同。
之后,GPU1可以将第一张量发送至GPU2、GPU3和GPU4,相应的,GPU2、GPU3和GPU4接收到第一张量后,可以对第一张量进行切分操作。
需要说明的是,可以是汇总到GPU1、GPU2、GPU3和GPU4中的任意一个,或者是汇总至其他的GPU,本申请并不限定。
本申请实施例中,所述开销值还包括第二通信开销,所述第二通信开销表示运行所述第三算子时将运算结果传输到一个运算设备的过程中产生的通信开销,以上述示例为例,第二通信开销可以表示上述GPU2、GPU3和GPU4可以将各自得到的结果张量发送至GPU1的过程中产生的通信开销。
本申请实施例中,所述第二通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。以上述示例为例,第二通信开销值与GPU2、GPU3和GPU4可以将各自得到的结果张量包括的参数数量(张量中包括的元素的数量)以及参数类型(例如整形或者是浮点型)有关。
本申请实施例中,所述内存开销值与所述M个第一子张量包括的参数数量以及参数类型有关。所述第一通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。所述开销值为所述内存开销值、所述第一通信开销值以及所述第二通信开销的平均值。平均值可以是算术平均值,几何平均值,平方平均值(均方根平均值,rms),调和平均值,加权平均值等等,本申请并不限定。
本申请实施例中,开销值的具体的计算公式可以为:
内存开销=(0 or 1)*(M个第一子张量包括的参数数量)*参数类型,通信开销=(0 or 1)*(M个第二子张量包括的参数数量)*参数类型。以A=MatMul(B,C)为例,B矩阵形状为[8,32],C矩阵形状为[32,16],设备数为4;若B或C中有一个是需要梯度更新的参数,当策略是[[4,1],[1,1]]时,内存开销=(2*32+32*16)*参数类型权值=768*参数类型,通信代价=0,当策略是[[1,4],[4,1]]时,内存代价=(8*8+8*16+8*16)*参数类型=321*参数类型权值,通信代价=(8*16)*参数类型权值=128*参数类型。
需要说明的是,本申请中若算子的输入张量在神经网络模型的训练过程中不需要进行梯度更新,那么无论对应的切分方法是什么,都不会产生内存开销。
当算子策略产生及稀疏化后,需要为重排布生成策略,重排布的策略定义为边的策略,其是由前一算子的策略和本算子的策略构成的二元组,如图12所示。若节点1的可用策略有N个,节点2的可用策略有M个,则边的策略有N*M个。重排布的每种策略也会有代价,其计算方式与算子的代价计算类似。
本申请实施例中,还可以根据所述数据流图确定所述神经网络模型对应的多种处理方法;根据所述多种处理方法中每种处理方法对应的内存开销值或第一通信开销值从所述多种处理方法中确定所述多种候选处理方法,其中,所述多种候选处理方法为所述多种处理方法中的一部分处理方法。
本申请实施例中,可以在处理方法生成后进行精简:例如可以将处理方法按照其内存占用量非递减的顺序排列,而后按照保留1/epsilon的目标,计算出步长,从中选取1/epsilon个处理方法。这样做的好处是在稀疏化后,保留下的处理方法数与张量形状和设备数无关,当形状很大或设备数很大时,这是很大的简化;另一方面,epsilon是用户可配置的选项,若用户希望快速搜索出一个性能可接受的策略,那么将epsilon调大即可,若用户希望搜索出性能最佳的处理方法,那么需要将epsilon调小。
本申请实施例中,能够在处理方法生成之后,按照内存占用量非递减的顺序将其排列,按照固定步长选择其中的策略。这样的选法能在一定程度上保持精度的前提下有效地减少处理方法的搜索时间。
本申请实施例中,所述数据流图还包括所述神经网络模型的第三算子,所述第三算子的输出张量为所述第二算子的输入张量,可以将所述第一算子合并至所述第二算子,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系。
本申请实施例中,提出了Merge Elimination操作,可以处理复杂的图结构。
如图13所示,当遇到图中有这种子结构时,会将第一算子的第一切分方法N2连同张量重排布方法E2一起收缩到第二算子中,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系。收缩时会遍历N2和E2中所有策略,将对应的代价值相加,伪代码可以如下所示。
整个计算过程的伪代码可以如下所示。
本申请实施例中,所述数据流图还包括所述神经网络模型的第四算子,所述第一算子的输出张量为所述第四算子的输入张量,可以将所述第二算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述张量重排布方法和所述第二切分方法建立关联关系。
本申请实施例中,提出了Contract Elimination操作,可以处理复杂的图结构。
如图14所示,当遇到数据流图中有这种子结构时,可以将第二切分方法N2连同张量重排布方法E1一起收缩到第一算子中。收缩时会遍历第二切分方法N2和张量重排布方法E1中所有策略,将对应的代价值相加,伪代码可以如下所示。
本申请实施例中,所述数据流图还包括所述神经网络模型的第五算子和第六算子,其中,所述第一张量为所述第二算子的第一输入张量以及所述第五算子的第一输入张量,所述第六算子的输出张量为所述第二算子的第二输入张量以及所述第五算子的第二输入张量,获取用于切分所述第六算子的输入张量的第三切分方法、用于切分所述第二算子的第二输入张量的第四切分方法以及用于重排布所述第四算子和所述第二算子之间的张量的第一张量重排布方法;所述第三切分方法用于切分所述第六算子的第二输入张量,以得到多个第三子张量,所述第一张量重排布方法用于将所述多个第三子张量进行所述第六算子对应的运算后的得到的多个第四子张量进行重排,以得到第三张量,所述第四切分方法用于对所述第三张量进行切分;将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法、所述第四切分方法以及所述第一张量重排布方法建立第一关联关系。
如图15所示,当遇到数据流图中有这种子结构时,可以将第三切分方法N4收缩到第一算子N1中,同时更新第一张量重排布方法E3为(第一张量重排布方法和第一切分方法)E3’,同理,更新E4为E4’。在收缩第三切分方法N4到第一算子N1中时,需要将第一算子N1包括的各个切分分方法及代价更新,使其更新后的代码包含第三切分方法N4的策略。
示例性的,在图16的例子中,经过Star Elimination后的图再依次进行两次边收缩、一次Contract Elimination和一次Merge Elimination将图收缩成只有一个点的最终图。
伪代码如下:
本申请实施例中,在将数据流图收缩成只有一个点的最终图后,如何从候选的代价列表中选出最优的一个,定义了开销值模型f(memory,communication)=alpha*memory(内存开销)+beta*communication(通信开销);其中alpha和beta是可配置的参数。这个模型比现有技术一和三更具有一般性,因为同时考虑了内存和通信代价。alpha和beta并未设置为固定值,这是因为不同硬件和处理器速度和网卡传输速度不同,导致这两个值的设定可能不同。
在图16的例子中,依次进行NodeElimination,EdgeElimination,MergeElimination后将图收缩为只有一个节点的最终图。在最终图选择了最优策略后,由于栈顶元素存储着MergeElimination涉及到的两点一边的图和最终图的一个节点,将会进一步对两点一边图进行策略设置;如此操作,直至恢复出原图,使得每个算子的策略都被设置。
如图17所示,以包括MatMul算子、两个Mul算子、Onehot算子和Add算子构成的小网络为例,该网络是ReID神经网络的一个子结构,ReID是用来判断图像或者视频序列中是否存在特定行人的技术。
说明在此小网络上应用提出的支持重排布的动态规划算法,具体流程如下:
首先确定可以进行Star Elimination的子结构,故将Onehot算子收缩到Matmul中去,按照图15所述的方式StarEliminationCostCalculation更新MatMul算子的处理方法开销值。确定两组可以进行Edge Elimination的边,E1与E2可以合并成新边,E3与E4可以合并成另一条新边;新边的代价时相应边在相同策略下的和。确定两组可以进行NodeElimination的结构,分别收缩两个Mul算子,新边E5的候选策略包含左侧Mul算子的所有的候选策略,同理,新边E6的候选策略包含右侧Mul算子的所有的候选策略。确定可以进行Edge Elimination的结构,故将E5和E6可以合并成新边,同样地,新边的代价时相应边在相同策略下的和。确定可以进行Merge Elimination的结构,进而将MatMul算子收缩进Add算子中,收缩时会遍历MatMul算子和边中所有策略,将对应的代价值相加,如图13的MergeEliminationCostCalculation所示。
本申请实施例中,所述神经网络模型可以用于处理图像数据、音频数据、视频数据或者文本数据;所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
本申请实施例中,新增了多种图操作,从而可以解决复杂图结构的策略搜索问题;新增了重排布的策略,故可以解决无法搜索最优策略的问题;新增了目标函数的设计,故解决得出的策略无法缩短端到端训练时间的问题。
本申请实施例提供了数据处理方法,所述方法包括:获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子;根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量所述M为大于1的正整数。本申请定义了重排布方法,允许前后算子能够出现输入张量的切分方法不同的情况。这使得模型并行转数据并行,或者数据并行转模型并行的混合并行方式成为可能,使得策略搜索空间更大。由于切分后的张量通过算子对应的运算后得到的子张量,其每个维度包括的参数数量可能远远小于未被切分的张量通过算子对应的运算后得到的张量,因此,子张量被后续算子的输入张量对应的切分方法的选择很有限,本实施例中,由于对通过算子对应的运算后得到的子张量进行了重排,相当于还原出了未被切分的张量通过算子对应的运算后得到的张量,此时,相比于子张量被后续算子的输入张量对应的切分方法的选择,重排后的张量被后续算子的输入张量对应的切分方法的选择是更多的,通过重排布的定义,可以使得算子的输入张量的切分方法选择更多,这样不同的算子就可以使用与对应的不同的切分方法来切分输入张量,也就是各自使用适合自己的切分方法。这对于提升数据流图的处理效率是很有帮助的,也能减少设备在计算数据流图中的开销。因为一个数据流图中往往包括有不同的算子,而不同的算子所适合的对输入数据的切分方法可能不同,一种算子只有使用最适合它的方式切分输入数据,才能保障这个算子的计算效率,可是不同的算子如果采用不同的方式切分输入数据,得到的输出数据格式就会各不相同,而数据流图的执行过程中,往往一个算子的输出数据是另一个算子的输入数据,因此,为了能够执行整个数据流图,现有技术选择让数据流图中的所有算子使用相同的方法进行切分。
此外,本申请新增了三种图收缩操作,以支持更复杂神经网络的策略搜索。增加了Merge Elimination,Contract Elimination,Star Elimination操作,并给出了经过收缩后的开销值计算方法。
此外,本申请实现了计算内存代价和通信代价的功能。在给定处理方法的前提下,能够计算出算子和重排布所消耗的内存开销和通信开销。
此外,本申请能够在处理方法生成之后,按照内存占用量非递减的顺序将其排列,按照固定步长选择其中的处理方法。这样的选法能在一定程度上保持精度的前提下有效地减少策略搜索时间。
此外,本申请开销值的定义同时包含了内存开销和通信开销。能够对最优化内存开销和通信开销建模。
参照图18,图18为本申请实施例提供的一种数据处理方法的流程示意,如图18中示出的那样,本申请实施例提供的数据处理方法包括:
1801、获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法。
本申请实施例中,用户向框架提交编写的脚本程序,框架经过前端表达的解析后,得到有算子构成的数据流图;该数据流图经过并行策略搜索后为每个算子标记其并行策略;而后的图切分流程将整个数据流图按照并行策略进行切分,分配给每台设备一张计算子图;该子图会下发到运算设备上执行,每个子图可以包括上述所述神经网络模型对应的处理方法。
1802、通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量。
步骤1802的具体描述可以参照上述实施例中与第一切分方法有关的描述,这里不再赘述。
1803、使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量。
1804、接收至少一个运算设备发送的至少一个第二子张量;其中,每个第二子张量为对应的运算设备对所述M个第一子张量中除所述第一目标子张量之外的一个第一子张量进行所述第一算子对应的运算得到的。
1805、通过所述重排布方法将所述第二目标子张量和所述至少一个第二子张量进行拼接,以得到第一张量;
步骤1805的具体描述可以参照上述实施例中与重排布方法有关的描述,这里不再赘述。
1806、通过所述第二切分方法对所述第一张量进行切分。
步骤1806的具体描述可以参照上述实施例中与第二切分方法有关的描述,这里不再赘述。
可选地,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量传输到对应的运算设备,并在对应的运算设备上进行所述第一算子对应的运算得到的。
可选地,所述张量重排布方法,用于通过将所述M个第二子张量传输至同一个运算设备上进行重排,以得到所述第一张量。
可选地,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
可选地,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
可选地,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
本申请实施例提供了一种数据处理方法,所述方法包括:获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量;通过所述重排布方法将所述M个第一子张量进行所述第一算子对应的运算后的得到的M个第二子张量进行拼接,以得到第一张量,所述M为大于1的正整数;通过所述第二切分方法对所述第一张量进行切分。通过上述方式,切分后张量进行算子对应的运算之后,可以进行一次张量的重排布,使得之后的算子的输入张量的切分方法有更多的选择。
参照图19,图19为本申请实施例提供的一种数据处理方法的流程示意,如图19中示出的那样,本申请实施例提供的数据处理方法包括:
1901、获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法以及用于切分所述第二算子的输入张量的第二切分方法;
本申请实施例中,用户向框架提交编写的脚本程序,框架经过前端表达的解析后,得到有算子构成的数据流图;该数据流图经过并行策略搜索后为每个算子标记其并行策略;而后的图切分流程将整个数据流图按照并行策略进行切分,分配给每台设备一张计算子图;该子图会下发到运算设备上执行,每个子图可以包括上述所述神经网络模型对应的处理方法。
1902、通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
步骤1902的具体描述可以参照上述实施例中与第一切分方法有关的描述,这里不再赘述。
1903、对所述第一目标子张量进行所述第一算子对应的运算,以得到第二目标子张量;
1904、向运算设备发送所述第二目标子张量;
1905、接收所述运算设备发送的第一张量,所述第一张量为所述运算设备通过重排布方法将多个第二子张量进行拼接得到的,多个第二子张量包括所述第二目标子张量;
1906、通过所述第二切分方法对所述第一张量进行切分。
步骤1906的具体描述可以参照上述实施例中与第二切分方法有关的描述,这里不再赘述。
可选地,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
可选地,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
可选地,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
本申请实施例提供了一种数据处理方法,所述方法包括:获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法以及用于切分所述第二算子的输入张量的第二切分方法;通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;向运算设备发送所述第二目标子张量;接收所述运算设备发送的第一张量,所述第一张量为所述运算设备通过重排布方法将多个第二子张量进行重排得到的,多个第二子张量包括所述第二目标子张量;通过所述第二切分方法对所述第一张量进行切分。通过上述方式,切分后张量进行算子对应的运算之后,可以进行一次张量的重排布,使得之后的算子的输入张量的切分方法有更多的选择。
参照图20,图20为本申请实施例提供的一种数据处理装置的结构示意,如图20中示出的那样,本申请实施例提供的数据处理装置2000包括:
获取模块2001,用于获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子;
确定模块2002,用于根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量所述M为大于1的正整数。
可选地,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量传输到对应的运算设备,并在对应的运算设备上进行所述第一算子对应的运算得到的。
可选地,所述张量重排布方法,用于通过将所述M个第二子张量传输至同一个运算设备上进行拼接,以得到所述第一张量。
可选地,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量与相同。
可选地,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
可选地,所述神经网络模型包括N个算子,所述N个算子包括所述第一算子和所述第二算子,所述确定模块,具体用于:
根据所述数据流图确定所述神经网络模型对应的多种候选处理方法;其中,所述多种候选处理方法中的每种候选处理方法包括用于切分所述N个算子中每个算子的输入张量的一种张量切分方法、以及用于重排布所述N个算子中至少两个算子之间的张量的一种重排布方法,所述张量切分方法用于切分对应算子的输入张量,所述张量重排布方法用于将进行算子对应的运算后得到的运算结果传输至一个运算设备后进行重排;
根据所述多种候选处理方法中每种候选处理方法对应的开销值从所述多种候选处理方法中确定所述处理方法,其中,所述开销值包括所述N个算子中每个算子的张量切分方法对应的内存开销值以及每种候选处理方法包括的张量重排布方法对应的第一通信开销值,所述内存开销值表示进行算子对应的运算时产生的内存开销,所述第一通信开销值表示将所述运算结果传输至一个运算设备的过程中产生的通信开销,所述处理方法为所述至少一种候选处理方法中开销值最小的候选处理方法。
可选地,所述N个算子包括第三算子,每种候选处理方法包括用于切分所述第三算子的输入张量的目标切分方法,所述第三算子用于将经过所述目标切分方法切分所述第三算子的输入张量得到的子张量进行第一运算,并将运算得到的运算结果传输到一个运算设备上进行第二运算,所述开销值还包括第二通信开销,所述第二通信开销表示运行所述第三算子时将运算结果传输到一个运算设备的过程中产生的通信开销。
可选地,所述内存开销值与所述M个第一子张量包括的参数数量以及参数类型有关。
可选地,所述第一通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。
可选地,所述第二通信开销值与所述M个第二子张量包括的参数数量以及参数类型有关。
可选地,所述开销值为所述内存开销值、所述第一通信开销值以及所述第二通信开销的平均值。
可选地,所述确定模块,还用于:
根据所述数据流图确定所述神经网络模型对应的多种处理方法;
根据所述多种切分方法中每种处理方法对应的内存开销值或第一通信开销值从所述多种处理方法中确定所述多种候选处理方法,其中,所述多种候选处理方法为所述多种处理方法中的一部分处理方法。
可选地,所述数据流图还包括所述神经网络模型的第三算子,所述第三算子的输出张量为所述第二算子的输入张量,所述装置还包括:
合并模块,用于将所述第一算子合并至所述第二算子,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系。
可选地,所述数据流图还包括所述神经网络模型的第四算子,所述第一算子的输出张量为所述第四算子的输入张量,所述装置还包括:
合并模块,用于将所述第二算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述张量重排布方法和所述第二切分方法建立关联关系。
可选地,所述数据流图还包括所述神经网络模型的第五算子和第六算子,其中,所述第一张量为所述第二算子的第一输入张量以及所述第五算子的第一输入张量,所述第六算子的输出张量为所述第二算子的第二输入张量以及所述第五算子的第二输入张量,所述获取模块,用于:
获取用于切分所述第六算子的输入张量的第三切分装置、用于切分所述第二算子的第二输入张量的第四切分装置以及用于重排布所述第四算子和所述第二算子之间的张量的第一张量重排布装置;所述第三切分装置用于切分所述第六算子的第二输入张量,以得到多个第三子张量,所述第一张量重排布装置用于将所述多个第三子张量进行所述第六算子对应的运算后的得到的多个第四子张量进行重排,以得到第三张量,所述第四切分装置用于对所述第三张量进行切分;
所述装置还包括:
合并模块,用于将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法、所述第四切分方法以及所述第一张量重排布方法建立第一关联关系。
可选地,所述装置还包括:
合并模块,用于将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法以及所述第二切分方法建立第二关联关系。
可选地,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
参照图21,图21为本申请实施例提供的一种数据处理装置的结构示意,如图21中示出的那样,本申请实施例提供的数据处理装置2100包括:
获取模块2101,用于获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
第一切分模块2102,用于通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
运算模块2103,用于使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
接收模块2104,用于接收至少一个运算设备发送的至少一个第二子张量;其中,每个第二子张量为对应的运算设备对所述M个第一子张量中除所述第一目标子张量之外的一个第一子张量进行所述第一算子对应的运算得到的;
重排布模块2105,用于通过所述重排布方法将所述第二目标子张量和所述至少一个第二子张量进行重排,以得到第一张量;
第二切分模块2106,用于通过所述第二切分方法对所述第一张量进行切分。
可选地,所述M个第二子张量中的每个第二子张量为所述M个第一子张量中对应的第一子张量传输到对应的运算设备,并在对应的运算设备上进行所述第一算子对应的运算得到的。
可选地,所述张量重排布方法,用于通过将所述M个第二子张量传输至同一个运算设备上进行重排,以得到所述第一张量。
可选地,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
可选地,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
可选地,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
参照图22,图22为本申请实施例提供的一种数据处理装置的结构示意,如图22中示出的那样,本申请实施例提供的数据处理装置2200包括:
获取模块2201,用于获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法以及用于切分所述第二算子的输入张量的第二切分方法;
第一切分模块2202,用于通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
运算模块2203,用于使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
发送模块2204,用于向运算设备发送所述第二目标子张量;
接收模块2205,用于接收所述运算设备发送的第一张量,所述第一张量为所述运算设备通过重排布方法将多个第二子张量进行重排得到的,多个第二子张量包括所述第二目标子张量;
第二切分模块2206,用于通过所述第二切分方法对所述第一张量进行切分。
可选地,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
可选地,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
可选地,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
接下来介绍本申请实施例提供的一种执行设备,请参阅图23,图23为本申请实施例提供的执行设备的一种结构示意图,执行设备2300具体可以表现为手机、平板、笔记本电脑、智能穿戴设备、服务器等,此处不做限定。具体的,执行设备2300包括:接收器2301、发射器2302、处理器2303和存储器2304(其中执行设备2300中的处理器2303的数量可以一个或多个,图23中以一个处理器为例),其中,处理器2303可以包括应用处理器23031和通信处理器23032。在本申请的一些实施例中,接收器2301、发射器2302、处理器2303和存储器2304可通过总线或其它方式连接。
存储器2304可以包括只读存储器和随机存取存储器,并向处理器2303提供指令和数据。存储器2304的一部分还可以包括非易失性随机存取存储器(non-volatile randomaccess memory,NVRAM)。存储器2304存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
处理器2303控制执行设备的操作。具体的应用中,执行设备的各个组件通过总线***耦合在一起,其中总线***除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线***。
上述本申请实施例揭示的方法可以应用于处理器2303中,或者由处理器2303实现。处理器2303可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2303中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2303可以是通用处理器、数字信号处理器(digital signal processing,DSP)、微处理器或微控制器,还可进一步包括专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器2303可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器2304,处理器2303读取存储器2304中的信息,结合其硬件完成上述方法的步骤。
接收器2301可用于接收输入的数字或字符信息,以及产生与执行设备的相关设置以及功能控制有关的信号输入。发射器2302可用于通过第一接口输出数字或字符信息;发射器2302还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器2302还可以包括显示屏等显示设备。
本申请实施例中,在一种情况下,处理器2303,用于执行上述实施例中的数据处理方法。
本申请实施例还提供了一种训练设备,请参阅图24,图24是本申请实施例提供的训练设备一种结构示意图,具体的,训练设备2400由一个或多个服务器实现,训练设备2400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(centralprocessing units,CPU)2424(例如,一个或一个以上处理器)和存储器2432,一个或一个以上存储应用程序2442或数据2444的存储介质2430(例如一个或一个以上海量存储设备)。其中,存储器2432和存储介质2430可以是短暂存储或持久存储。存储在存储介质2430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对训练设备中的一系列指令操作。更进一步地,中央处理器2424可以设置为与存储介质2430通信,在训练设备2400上执行存储介质2430中的一系列指令操作。
训练设备2400还可以包括一个或一个以上电源2426,一个或一个以上有线或无线网络接口2450,一个或一个以上输入输出接口2458;或,一个或一个以上操作***2441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
本申请实施例中,中央处理器2424,用于执行上述实施例中的感知网络训练方法相关的步骤。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例提供的执行设备、训练设备或终端设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使执行设备内的芯片执行上述实施例描述的数据处理方法,或者,以使训练设备内的芯片执行上述实施例描述的数据处理方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体的,请参阅图25,图25为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 2500,NPU 2500作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路2503,通过控制器2504控制运算电路2503提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路2503内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路2503是二维脉动阵列。运算电路2503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路2503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器2502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器2501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)2508中。
统一存储器2506用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(Direct Memory Access Controller,DMAC)2505,DMAC被搬运到权重存储器2502中。输入数据也通过DMAC被搬运到统一存储器2506中。
BIU为Bus Interface Unit即,总线接口单元2510,用于AXI总线与DMAC和取指存储器(Instruction Fetch Buffer,IFB)2509的交互。
总线接口单元2510(Bus Interface Unit,简称BIU),用于取指存储器2509从外部存储器获取指令,还用于存储单元访问控制器2505从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器2506或将权重数据搬运到权重存储器2502中或将输入数据数据搬运到输入存储器2501中。
向量计算单元2507包括多个运算处理单元,在需要的情况下,对运算电路2503的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如Batch Normalization(批归一化),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元2507能将经处理的输出的向量存储到统一存储器2506。例如,向量计算单元2507可以将线性函数;或,非线性函数应用到运算电路2503的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元2507生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路2503的激活输入,例如用于在神经网络中的后续层中的使用。
控制器2504连接的取指存储器(instruction fetch buffer)2509,用于存储控制器2504使用的指令;
统一存储器2506,输入存储器2501,权重存储器2502以及取指存储器2509均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (36)
1.一种数据处理方法,其特征在于,所述方法包括:
获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子;
根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量,所述M为大于1的正整数。
2.根据权利要求1所述的方法,其特征在于,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
3.根据权利要求1或2所述的方法,其特征在于,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
4.根据权利要求1至3任一所述的方法,其特征在于,所述神经网络模型包括N个算子,所述N个算子包括所述第一算子和所述第二算子,所述根据所述数据流图确定所述神经网络模型对应的处理方法,包括:
根据所述数据流图确定所述神经网络模型对应的多种候选处理方法;其中,所述多种候选处理方法中的每种候选处理方法包括用于切分所述N个算子中每个算子的输入张量的一种张量切分方法、以及用于重排布所述N个算子中至少两个算子之间的张量的一种重排布方法,所述张量切分方法用于切分对应算子的输入张量,所述张量重排布方法用于将进行算子对应的运算后得到的运算结果传输至一个运算设备后进行重排;
根据所述多种候选处理方法中每种候选处理方法对应的开销值从所述多种候选处理方法中确定所述处理方法,其中,所述开销值包括所述N个算子中每个算子的张量切分方法对应的内存开销值以及每种候选处理方法包括的张量重排布方法对应的第一通信开销值,所述内存开销值表示进行算子对应的运算时产生的内存开销,所述第一通信开销值表示将所述运算结果传输至一个运算设备的过程中产生的通信开销,所述处理方法为所述至少一种候选处理方法中开销值最小的候选处理方法。
5.根据权利要求4所述的方法,其特征在于,所述N个算子包括第三算子,每种候选处理方法包括用于切分所述第三算子的输入张量的目标切分方法,所述第三算子用于将经过所述目标切分方法切分所述第三算子的输入张量得到的子张量进行第一运算,并将运算得到的运算结果传输到一个运算设备上进行第二运算,所述开销值还包括第二通信开销,所述第二通信开销表示运行所述第三算子时将运算结果传输到一个运算设备的过程中产生的通信开销。
6.根据权利要求1至5任一所述的方法,其特征在于,所述数据流图还包括所述神经网络模型的第三算子,所述第三算子的输出张量为所述第二算子的输入张量,所述方法还包括:
将所述第一算子合并至所述第二算子,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系。
7.根据权利要求1至5任一所述的方法,其特征在于,所述数据流图还包括所述神经网络模型的第四算子,所述第一算子的输出张量为所述第四算子的输入张量,所述方法还包括:
将所述第二算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述张量重排布方法和所述第二切分方法建立关联关系。
8.根据权利要求1至5任一所述的方法,其特征在于,所述数据流图还包括所述神经网络模型的第五算子和第六算子,其中,所述第一张量为所述第二算子的第一输入张量以及所述第五算子的第一输入张量,所述第六算子的输出张量为所述第二算子的第二输入张量以及所述第五算子的第二输入张量,所述方法还包括:
获取用于切分所述第六算子的输入张量的第三切分方法、用于切分所述第二算子的第二输入张量的第四切分方法以及用于重排布所述第四算子和所述第二算子之间的张量的第一张量重排布方法;所述第三切分方法用于切分所述第六算子的第二输入张量,以得到多个第三子张量,所述第一张量重排布方法用于将所述多个第三子张量进行所述第六算子对应的运算后的得到的多个第四子张量进行重排,以得到第三张量,所述第四切分方法用于对所述第三张量进行切分;
将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法、所述第四切分方法以及所述第一张量重排布方法建立第一关联关系。
9.根据权利要求1至8任一所述的方法,其特征在于,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
10.一种数据处理方法,其特征在于,所述方法包括:
获取神经网络模型以及所述神经网络模型对应的切分方法,所述神经网络模型包括第一算子和第二算子;所述切分方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
接收至少一个运算设备发送的至少一个第二子张量;其中,每个第二子张量为对应的运算设备对所述M个第一子张量中除所述第一目标子张量之外的一个第一子张量进行所述第一算子对应的运算得到的;
通过所述重排布方法将所述第二目标子张量和所述至少一个第二子张量进行重排,以得到第一张量;
通过所述第二切分方法对所述第一张量进行切分。
11.根据权利要求10所述的方法,其特征在于,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
12.根据权利要求10或11所述的方法,其特征在于,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
13.根据权利要求10至12任一所述的方法,其特征在于,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
14.一种数据处理方法,其特征在于,所述方法包括:
获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法以及用于切分所述第二算子的输入张量的第二切分方法;
通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
向运算设备发送所述第二目标子张量;
接收所述运算设备发送的第一张量,所述第一张量为所述运算设备通过重排布方法将多个第二子张量进行重排得到的,多个第二子张量包括所述第二目标子张量;
通过所述第二切分方法对所述第一张量进行切分。
15.根据权利要求14所述的方法,其特征在于,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
16.根据权利要求14或15所述的方法,其特征在于,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
17.根据权利要求14至16任一所述的方法,其特征在于,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
18.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取神经网络模型的数据流图,所述数据流图包括所述神经网络模型的第一算子和第二算子;
确定模块,用于根据所述数据流图确定所述神经网络模型对应的处理方法,所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
其中,所述第一切分方法用于对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述重排布方法用于将M个第二子张量进行重排,以得到第一张量,所述M个第二子张量为所述M个第一子张量经过所述第一算子处理后得到的输出,所述第一张量为所述第二算子的输入张量所述M为大于1的正整数。
19.根据权利要求18所述的装置,其特征在于,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
20.根据权利要求18或19所述的装置,其特征在于,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
21.根据权利要求18至20任一所述的装置,其特征在于,所述神经网络模型包括N个算子,所述N个算子包括所述第一算子和所述第二算子,所述确定模块,具体用于:
根据所述数据流图确定所述神经网络模型对应的多种候选处理方法;其中,所述多种候选处理方法中的每种候选处理方法包括用于切分所述N个算子中每个算子的输入张量的一种张量切分方法、以及用于重排布所述N个算子中至少两个算子之间的张量的一种重排布方法,所述张量切分方法用于切分对应算子的输入张量,所述张量重排布方法用于将进行算子对应的运算后得到的运算结果传输至一个运算设备后进行重排;
根据所述多种候选处理方法中每种候选处理方法对应的开销值从所述多种候选处理方法中确定所述处理方法,其中,所述开销值包括所述N个算子中每个算子的张量切分方法对应的内存开销值以及每种候选处理方法包括的张量重排布方法对应的第一通信开销值,所述内存开销值表示进行算子对应的运算时产生的内存开销,所述第一通信开销值表示将所述运算结果传输至一个运算设备的过程中产生的通信开销,所述处理方法为所述至少一种候选处理方法中开销值最小的候选处理方法。
22.根据权利要求21所述的装置,其特征在于,所述N个算子包括第三算子,每种候选处理方法包括用于切分所述第三算子的输入张量的目标切分方法,所述第三算子用于将经过所述目标切分方法切分所述第三算子的输入张量得到的子张量进行第一运算,并将运算得到的运算结果传输到一个运算设备上进行第二运算,所述开销值还包括第二通信开销,所述第二通信开销表示运行所述第三算子时将运算结果传输到一个运算设备的过程中产生的通信开销。
23.根据权利要求18或22所述的装置,其特征在于,所述数据流图还包括所述神经网络模型的第三算子,所述第三算子的输出张量为所述第二算子的输入张量,所述装置还包括:
合并模块,用于将所述第一算子合并至所述第二算子,以使得所述第二算子对应的所述第二切分方法与所述第一切分方法和所述张量重排布方法建立关联关系。
24.根据权利要求18至22任一所述的装置,其特征在于,所述数据流图还包括所述神经网络模型的第四算子,所述第一算子的输出张量为所述第四算子的输入张量,所述装置还包括:
合并模块,用于将所述第二算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述张量重排布方法和所述第二切分方法建立关联关系。
25.根据权利要求18至22任一所述的装置,其特征在于,所述数据流图还包括所述神经网络模型的第五算子和第六算子,其中,所述第一张量为所述第二算子的第一输入张量以及所述第五算子的第一输入张量,所述第六算子的输出张量为所述第二算子的第二输入张量以及所述第五算子的第二输入张量,所述获取模块,用于:
获取用于切分所述第六算子的输入张量的第三切分装置、用于切分所述第二算子的第二输入张量的第四切分装置以及用于重排布所述第四算子和所述第二算子之间的张量的第一张量重排布装置;所述第三切分装置用于切分所述第六算子的第二输入张量,以得到多个第三子张量,所述第一张量重排布装置用于将所述多个第三子张量进行所述第六算子对应的运算后的得到的多个第四子张量进行重排,以得到第三张量,所述第四切分装置用于对所述第三张量进行切分;
所述装置还包括:
合并模块,用于将所述第六算子合并至所述第一算子,以使得所述第一算子对应的所述第一切分方法与所述第三切分方法、所述第四切分方法以及所述第一张量重排布方法建立第一关联关系。
26.根据权利要求18至25任一所述的装置,其特征在于,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
27.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法、用于切分所述第二算子的输入张量的第二切分方法以及用于重排布所述第一算子和所述第二算子之间的张量的重排布方法;
第一切分模块,用于通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
运算模块,用于使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
接收模块,用于接收至少一个运算设备发送的至少一个第二子张量;其中,每个第二子张量为对应的运算设备对所述M个第一子张量中除所述第一目标子张量之外的一个第一子张量进行所述第一算子对应的运算得到的;
重排布模块,用于通过所述重排布方法将所述第二目标子张量和所述至少一个第二子张量进行重排,以得到第一张量;
第二切分模块,用于通过所述第二切分方法对所述第一张量进行切分。
28.根据权利要求27所述的装置,其特征在于,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
29.根据权利要求27或28所述的装置,其特征在于,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
30.根据权利要求27至29任一所述的装置,其特征在于,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
31.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取神经网络模型以及所述神经网络模型对应的处理方法,所述神经网络模型包括第一算子和第二算子;所述处理方法包括用于切分所述第一算子的输入张量的第一切分方法以及用于切分所述第二算子的输入张量的第二切分方法;
第一切分模块,用于通过所述第一切分方法对所述第一算子的输入张量进行切分,以得到M个第一子张量,所述M个第一子张量包括第一目标子张量;
运算模块,用于使用所述第一算子处理所述第一目标子张量,以得到第二目标子张量;
发送模块,用于向运算设备发送所述第二目标子张量;
接收模块,用于接收所述运算设备发送的第一张量,所述第一张量为所述运算设备通过重排布方法将多个第二子张量进行重排得到的,多个第二子张量包括所述第二目标子张量;
第二切分模块,用于通过所述第二切分方法对所述第一张量进行切分。
32.根据权利要求31所述的装置,其特征在于,所述第一算子的输入张量在一个运算设备上进行所述第一算子对应的运算后得到的结果与所述第一张量相同。
33.根据权利要求31或32所述的装置,其特征在于,所述第二子张量为P维张量,所述第二切分方法切分所述第一张量后得到的子张量为Q维张量,所述P不是所述Q的整数倍。
34.根据权利要求31至33任一所述的装置,其特征在于,所述神经网络模型用于处理图像数据、音频数据、视频数据或者文本数据;
所述神经网络模型包括的算子的输入张量为所述图像数据、所述音频数据、所述视频数据或者所述文本数据;或者,
所述神经网络模型包括的算子的输入张量为使用所述神经网络模型包括的至少一个算子对所述图像数据、所述音频数据、所述视频数据或者所述文本数据进行处理后得到的。
35.一种数据处理装置,包括存储器、处理器以及总线***,其中,所述存储器用于存储程序,所述处理器用于执行存储器中的程序,以执行所述权利要求1至17中任一任一所述的数据处理方法。
36.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行所述权利要求1至17中任一任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232274.9A CN113449859A (zh) | 2020-03-27 | 2020-03-27 | 一种数据处理方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232274.9A CN113449859A (zh) | 2020-03-27 | 2020-03-27 | 一种数据处理方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113449859A true CN113449859A (zh) | 2021-09-28 |
Family
ID=77808178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232274.9A Pending CN113449859A (zh) | 2020-03-27 | 2020-03-27 | 一种数据处理方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113449859A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114610294A (zh) * | 2022-05-09 | 2022-06-10 | 湖南星河云程信息科技有限公司 | 仿真实验效能指标并发计算控制方法、装置和计算机设备 |
WO2023061465A1 (en) * | 2021-10-15 | 2023-04-20 | Huawei Technologies Co., Ltd. | Methods, systems, and media for computer vision using 2d convolution of 4d video data tensors |
WO2023122854A1 (zh) * | 2021-12-27 | 2023-07-06 | 华为技术有限公司 | 数据处理的方法和装置 |
CN116880995A (zh) * | 2023-09-08 | 2023-10-13 | 之江实验室 | 一种模型任务的执行方法、装置、存储介质及电子设备 |
CN117172289A (zh) * | 2023-09-01 | 2023-12-05 | 苏州亿铸智能科技有限公司 | 张量切分方法、装置以及电子设备 |
CN117634711A (zh) * | 2024-01-25 | 2024-03-01 | 北京壁仞科技开发有限公司 | 张量维度切分方法、***、设备和介质 |
WO2024066847A1 (zh) * | 2022-09-29 | 2024-04-04 | 华为技术有限公司 | 一种基于多裸片的计算方法及相关设备 |
WO2024140033A1 (zh) * | 2022-12-31 | 2024-07-04 | 北京希姆计算科技有限公司 | 一种算子切分方法、装置和算子编译*** |
WO2024140032A1 (zh) * | 2022-12-31 | 2024-07-04 | 北京希姆计算科技有限公司 | 确定算子切分策略的方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180165574A1 (en) * | 2016-12-13 | 2018-06-14 | Google Inc. | Performing average pooling in hardware |
US20190065896A1 (en) * | 2017-08-23 | 2019-02-28 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
CN110490309A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种用于神经网络的算子融合方法及其相关产品 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN110647356A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算装置及相关产品 |
CN110647973A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算方法及相关方法和产品 |
-
2020
- 2020-03-27 CN CN202010232274.9A patent/CN113449859A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180165574A1 (en) * | 2016-12-13 | 2018-06-14 | Google Inc. | Performing average pooling in hardware |
US20190065896A1 (en) * | 2017-08-23 | 2019-02-28 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
CN110647356A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算装置及相关产品 |
CN110647973A (zh) * | 2018-06-27 | 2020-01-03 | 北京中科寒武纪科技有限公司 | 运算方法及相关方法和产品 |
CN110490309A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种用于神经网络的算子融合方法及其相关产品 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
Non-Patent Citations (2)
Title |
---|
LEI HE: ""EnGN:A High-Throughput and Energy-Efficient Accelerator for Large Graph Neural Networks"", 《ARXIV:1909.00155V2》, pages 1 - 13 * |
LIANG LUO ET AL: ""Parameter Hub:a Rack-Scale Parameter Server for Distributed Deep Neural Network Training"", 《PROCEEDINGS OF THE ACM SYMPOSIUM ON CLOUD COMPUTING》, pages 41 - 54 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023061465A1 (en) * | 2021-10-15 | 2023-04-20 | Huawei Technologies Co., Ltd. | Methods, systems, and media for computer vision using 2d convolution of 4d video data tensors |
WO2023122854A1 (zh) * | 2021-12-27 | 2023-07-06 | 华为技术有限公司 | 数据处理的方法和装置 |
CN114610294A (zh) * | 2022-05-09 | 2022-06-10 | 湖南星河云程信息科技有限公司 | 仿真实验效能指标并发计算控制方法、装置和计算机设备 |
WO2024066847A1 (zh) * | 2022-09-29 | 2024-04-04 | 华为技术有限公司 | 一种基于多裸片的计算方法及相关设备 |
WO2024140033A1 (zh) * | 2022-12-31 | 2024-07-04 | 北京希姆计算科技有限公司 | 一种算子切分方法、装置和算子编译*** |
WO2024140032A1 (zh) * | 2022-12-31 | 2024-07-04 | 北京希姆计算科技有限公司 | 确定算子切分策略的方法和装置 |
CN117172289A (zh) * | 2023-09-01 | 2023-12-05 | 苏州亿铸智能科技有限公司 | 张量切分方法、装置以及电子设备 |
CN116880995A (zh) * | 2023-09-08 | 2023-10-13 | 之江实验室 | 一种模型任务的执行方法、装置、存储介质及电子设备 |
CN116880995B (zh) * | 2023-09-08 | 2024-01-09 | 之江实验室 | 一种模型任务的执行方法、装置、存储介质及电子设备 |
CN117634711A (zh) * | 2024-01-25 | 2024-03-01 | 北京壁仞科技开发有限公司 | 张量维度切分方法、***、设备和介质 |
CN117634711B (zh) * | 2024-01-25 | 2024-05-14 | 北京壁仞科技开发有限公司 | 张量维度切分方法、***、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113449857B (zh) | 一种数据处理方法和数据处理设备 | |
CN113449859A (zh) | 一种数据处理方法及其装置 | |
CN111368993B (zh) | 一种数据处理方法及相关设备 | |
WO2022068623A1 (zh) | 一种模型训练方法及相关设备 | |
EP4145351A1 (en) | Neural network construction method and system | |
CN112070207A (zh) | 一种模型训练方法及装置 | |
WO2022228425A1 (zh) | 一种模型训练方法及装置 | |
CN111738488A (zh) | 一种任务调度方法及其装置 | |
CN111368656A (zh) | 一种视频内容描述方法和视频内容描述装置 | |
US20240135174A1 (en) | Data processing method, and neural network model training method and apparatus | |
CN113505883A (zh) | 一种神经网络训练方法以及装置 | |
CN111428854A (zh) | 一种结构搜索方法及结构搜索装置 | |
WO2023020613A1 (zh) | 一种模型蒸馏方法及相关设备 | |
CN111898636A (zh) | 一种数据处理方法及装置 | |
CN112764893A (zh) | 数据处理方法和数据处理*** | |
CN113065633A (zh) | 一种模型训练方法及其相关联设备 | |
DE102022128165A1 (de) | Datenpfadschaltungsentwurf unter verwendung von reinforcement learning | |
CN113627422A (zh) | 一种图像分类方法及其相关设备 | |
CN115238909A (zh) | 一种基于联邦学习的数据价值评估方法及其相关设备 | |
WO2022227024A1 (zh) | 神经网络模型的运算方法、训练方法及装置 | |
WO2024114659A1 (zh) | 一种摘要生成方法及其相关设备 | |
CN114169393A (zh) | 一种图像分类方法及其相关设备 | |
WO2023197857A1 (zh) | 一种模型切分方法及其相关设备 | |
CN117056589A (zh) | 一种物品推荐方法及其相关设备 | |
CN115907041A (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 |