CN113449858A - 一种神经网络模型的处理方法以及相关设备 - Google Patents
一种神经网络模型的处理方法以及相关设备 Download PDFInfo
- Publication number
- CN113449858A CN113449858A CN202010232059.9A CN202010232059A CN113449858A CN 113449858 A CN113449858 A CN 113449858A CN 202010232059 A CN202010232059 A CN 202010232059A CN 113449858 A CN113449858 A CN 113449858A
- Authority
- CN
- China
- Prior art keywords
- operator
- type
- graph
- operators
- 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.)
- Granted
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 90
- 238000003672 processing method Methods 0.000 title claims abstract description 26
- 238000004364 calculation method Methods 0.000 claims abstract description 115
- 238000012545 processing Methods 0.000 claims description 81
- 230000006870 function Effects 0.000 claims description 70
- 238000000034 method Methods 0.000 claims description 67
- 230000008569 process Effects 0.000 claims description 47
- 230000015654 memory Effects 0.000 claims description 39
- 230000002441 reversible effect Effects 0.000 claims description 24
- 238000003058 natural language processing Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013135 deep learning Methods 0.000 abstract description 122
- 238000005457 optimization Methods 0.000 abstract description 46
- 238000013473 artificial intelligence Methods 0.000 abstract description 21
- 238000013528 artificial neural network Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 23
- 238000007726 management method Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 14
- 230000014509 gene expression Effects 0.000 description 13
- 238000011176 pooling Methods 0.000 description 10
- 230000001537 neural effect Effects 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 8
- 230000004913 activation Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/29—Graphical models, e.g. Bayesian networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- 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
-
- 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/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- 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/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
本申请公开了人工智能领域中的一种神经网络模型的处理方法,包括:获取神经网络模型的运算流程,该运算流程由至少一个第一类型的算子和多个第二类型的算子表示。该运算流程中,第一类型的算子包括边界标识,第一类型的算子的计算逻辑通过一组第二类型的算子表示。对于任意一个第一类型的算子,任意一个第一类型的算子所包括的第二类型的算子的范围由任意一个第一类型的算子中的边界标识指示。根据运算流程得到神经网络模型的第一计算图。通过本申请实施例提供的技术方案,第一类型的算子的计算逻辑对于深度学习框架是可知的,使得计算图有更多的优化机会,深度学习框架可以更好的优化计算图。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种神经网络模型的处理方法以及相关设备。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
随着AI的快速发展,神经网络(例如,深度神经网络)近年来在图像、视频以及语音等多种媒体信号的处理与分析中取得了很大的成就。深度学习框架通过将神经网络模型转化为计算图,并对计算图进行优化,再将优化后的计算图编译为硬件平台的指令,便完成了神经网络模型在硬件平台的编译部分。通过图优化可以使模型编译出的指令能够在硬件平台上等到高效执行,因此,如何更好的优化计算图亟待解决。
发明内容
本申请实施例提供一种神经网络模型的处理方法,可以使深度学习框架获知计算图中包括的算子的计算逻辑,使得计算图有更多的优化机会,进而可以更好的优化计算图。
为达到上述目的,本申请实施例提供如下技术方案:
本申请第一方面提供一种神经网络模型的处理方法,可以包括:深度学习框架获取神经网络模型的运算流程。该运算流程由至少一个第一类型的算子和多个第二类型的算子表示。可以将第一类型的算子以及第二类型的算子看做能够实现某种特定功能的函数。第一类型的算子和第二类型的算子可以对输入的数据进行数学运算,例如,第一类型的算子和第二类型的算子是卷积算子时,可以使用卷积核对输入特征图像的局部区域进行卷积计算,通过对输入特征图像里的数据的线性计算得到输出特征。又例如,第一类型的算子和第二类型的算子是全连接算子时,可以使用矩阵乘法的方式对输入的所有特征进行线性组合。本申请提到的神经网络模型的运算流程是指通过至少第一类型的算子、多个第二类型的算子对输入的数据进行数学运算,以得到神经网络模型的输出数据的流程。
第一类型的算子和第二类型的算子的区别在于深度学习框架可以获知第一类型的算子的计算逻辑,但是无法获知第二类型的算子的计算逻辑。这是因为该运算流程中,第一类型的算子的计算逻辑通过一组第二类型的算子表示。具体的,第一类型的算子包括边界标识,对于任意一个第一类型的算子,第一类型的算子的计算逻辑通过一组第二类型的算子表示,任意一个第一类型的算子所包括的第二类型的算子的范围由任意一个第一类型的算子中的边界标识指示。本方案中的第一类型的算子所包括的第二类型的算子的范围是第一类型的算子的计算逻辑中包括的第二类型的算子。举例说明,假设运算流程中包括一个第一类型的算子以及三个第二类型的算子,其中假设第一类型的算子为A算子,三个第二类型的算子分别是B算子,C算子以及D算子。其中,A算子的计算逻辑由B算子和C算子表示,则A算子所包括的第二类型的算子的范围是指B算子和C算子,而不包括D算子。上面提到第一类型的算子和第二类型的算子可以看做能够实现某种特定功能的函数,在本方案中,可以将第一类型的算子以及第二类型的算子的计算逻辑理解为函数的表达式。本方案中,神经网络模型的运算流程中可以包括至少一个第一类型算子的计算逻辑,第一算子的计算逻辑通过一组第二类型的算子表示,第二类型的算子的计算逻辑可以通过一段与第二类型的算子的名称对应的核函数kernel实现。
深度学习框架根据运算流程得到神经网络模型的第一计算图。在深度学习框架中一个数学计算过程会先被编译转换为计算图。深度学习框架对上述提到的运算流程进行编译,可以得到第一计算图。
由第一方面可知,神经网络的运算流程由两种不同类型的算子表示,第一类型的算子的计算逻辑可以由一组第二类型的算子表示,由于深度学习框架可以获知第一类型的算子的计算逻辑,第一类型的算子的计算逻辑对于该深度学习框架不再是不可知的,使得计算图有更多的优化机会,深度学习框架可以更好的优化计算图。
可选地,结合上述第一方面,在第一种可能的实现方式中,第一计算图可以包括主图和子图,根据运算流程确定神经网络模型的第一计算图,可以包括:根据运算流程确定神经网络模型的主图和子图,主图中的第一类型的算子由边界标识指示,主图中的第二类型的算子由第二类型的算子的名称指示,主图用于输出运算流程的结果,子图可以包括任意一个第一类型的算子所可以包括的第二类型的算子的名称,子图用于输出一个第一类型的算子的结果,一个子图表示一个第一类型的算子的计算逻辑。由第一方面第一种可能的实现方式可知,给出了一种具体的第一计算图的结构,增加了方案的多样性。
可选地,结合上述第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,该方法还可以包括:以第一类型的算子为处理粒度对第一计算图进行优化处理,以得到第二计算图。本方案中以第一类型的算子为处理粒度对第一计算图进行优化处理是指可以在第一类型的算子内部,或者第一类型的算子之间去做一些图优化处理。举例说明,假设,第一计算图中包括第一类型的算子OP1、OP4以及OP6,以第一类型的算子为处理粒度对第一计算图进行优化处理是指,可以选择对OP1对应的子图、OP4对应的子图以及OP6对应的子图中的任意一个进行优化处理,或者可以选择对OP1对应的子图,OP4对应的子图以及OP6对应的子图中的任意两个进行优化处理,或者可以选择对OP1对应的子图,OP4对应的子图以及OP6对应的子图一起进行优化处理。由第一方面第二种可能的方式可知,以第一类型的算子为处理粒度,保证第一类型的算子的边界不被打破,即为了保证第一类型的算子可以作为一个整体进行处理,不至于发生搜索空间过大的问题,进一步导致编译时间不可控的问题。
可选地,结合上述第一方面第二种可能的实现方式,在第三种可能的实现方式中,第一类型的算子可以包括第三算子和第四算子,第三算子和第四算子可以包括相同的计算逻辑,以第一类型的算子为处理粒度对第一计算图进行优化处理,可以包括:融合第三算子对应的子图以及第四算子对应的子图,以得到融合子图,第二计算图可以包括融合子图。由第一方面第三种可能的实现方式可知,给出了一种具体的图优化的方式,由于深度学习框架可知获知第一类型的算子的计算逻辑,使得计算图有更多的优化机会,深度学习框架可以更好的优化计算图,具体的,深度学习框架可以将相同的计算逻辑的算子的子图进行融合。
可选地,结合上述第一方面第二种或第一方面第三种可能的实现方式,在第四种可能的实现方式中,第一类型的算子可以包括第五算子和第六算子,第五算子的中间计算结果与第六算子的中间计算结果相同,以第一类型的算子为处理粒度对第一计算图进行优化处理,可以包括:将第五算子的中间计算结果作为第六算子的入参。中间计算结果是指第一类型的算子中包括的第二类型的算子的输出结果。举例说明,假设第五算子和第六算子都包括C算子,C算子的输入包括两个,分别是A算子的输出以及B算子的输出,A算子的输入为x,B算子的输入为y。由于第五算子和第六算子的C算子的输入是相同的,输出结果必然也是是相同的,则第五算子的C算子的输出可以直接作为第六算子的入参,第六算子不必重复计算C算子的输出。由第一方面第四种可能的实现方式可知,给出了一种具体的图优化的方式,由于深度学习框架可知获知第一类型的算子的计算逻辑,使得计算图有更多的优化机会,深度学习框架可以更好的优化计算图,具体的,两个算子的中间计算结果相同时,其中一个算子的中间结果可以作为另一个算子的入参。
可选地,结合上述第一方面第四种或第一方面第五种可能的实现方式,在第五种可能的实现方式中,第三算子为正向算子,第四算子为与第三算子对应的反向算子,或者第四算子为正向算子,第三算子为与第四算子对应的反向算子。正向算子是神经网络中正向传播的过程中用到的算子。正向传播,也称为前向传播,指的神经网络从输入的特征向量到输出最后到代价函数的这样一个把低级特征逐步计算为抽象的高级特征直到得出损失的过程。大部分的正向算子都有与之相对的反向算子,反向算子是神经网络中反向传播的过程中用到的算子。通过反向传播可以训练神经网络每一层的参数,使得误差极小。由第一方面第五种可能的实现方式可知,给出了一种具体的优化场景,由于反向算子通常可以理解为正向算子的导数在加上某些运算,而深度学习领域中许多算子的导数和其本身有很多重复的运算逻辑,通过本方案,可以更好的对计算图中包括的正向算子以及反向算子进行优化。
可选地,结合上述第一方面或第一方面第一种至第一方面第五种可能的实现方式,在第六种可能的实现方式中,该方法还可以包括:根据第二类型的算子的第一中间表示IR以及第一类型的算子的计算逻辑确定第一类型的算子的第二IR。根据第二IR确定第一类型的算子对应的一组核函数kernel。
可选地,结合上述第一方面或第一方面第一种至第六种可能的实现方式,在第七种可能的实现方式中,运算流程的输入是张量数据。在本方案中,张量是对存储的数据的特征的描述,比如张量可以记录数据的形状、类型等信息。本申请提供的方案对神经网络模型的类型并不限定,比如可以是图像处理神经网络模型,语音识别神经网络模型,或者对视频进行处理的神经网络模型。对于不同的神经网络模型,神经网络模型的输入数据往往也不相同,比如对于语音识别神经网络模型,输入数据可能是纯净语音以及噪音,再比如对于图像处理神经网络模型,输入数据可能是图像数据。在本方案中,该张量数据可以用于描述不同的神经网络模型的输入数据。需要说明的是,本申请提供的方案可以适用于任何与神经网络模型处理相关的场景中,示例性的,包括但不限于以下几种场景:包括语音识别,计算机视觉(computer vision,CV)、视频处理、图像识别以及自然语言处理(nature languageprocess,NLP)。
本申请第二方面提供一种神经网络模型的处理装置,可以包括:编程接口模块,用于获取神经网络模型的运算流程,运算流程由至少一个第一类型的算子和多个第二类型的算子表示,运算流程中,第一类型的算子可以包括边界标识,第一类型的算子的计算逻辑通过一组第二类型的算子表示,对于任意一个第一类型的算子,任意一个第一类型的算子所可以包括的第二类型的算子的范围由任意一个第一类型的算子中的边界标识指示。计算图处理模块,用于根据编程接口模块获取到的运算流程得到神经网络模型的第一计算图。
可选地,结合上述第二方面,在第一种可能的实现方式中,第一计算图可以包括主图和子图,计算图处理模块,具体用于:根据运算流程确定神经网络模型的主图和子图,主图中的第一类型的算子由边界标识指示,主图中的第二类型的算子由第二类型的算子的名称指示,主图用于输出运算流程的结果,子图可以包括任意一个第一类型的算子所可以包括的第二类型的算子的名称,子图用于输出一个第一类型的算子的结果,一个子图表示一个第一类型的算子的计算逻辑。
可选地,结合上述第二方面或第二方面第一种可能的实现方式,在第二种可能的实现方式中,计算图处理模块,还用于:以第一类型的算子为处理粒度对第一计算图进行优化处理,以得到第二计算图。
可选地,结合上述第二方面第二种可能的实现方式,在第三种可能的实现方式中,第一类型的算子可以包括第三算子和第四算子,第三算子和第四算子可以包括相同的计算逻辑,计算图处理模块,具体用于:融合第三算子对应的子图以及第四算子对应的子图,以得到融合子图,第二计算图可以包括融合子图。
可选地,结合上述第二方面第二种或第二方面第三种可能的实现方式,在第四种可能的实现方式中,第一类型的算子可以包括第五算子和第六算子,第五算子的中间计算结果与第六算子的中间计算结果相同,计算图处理模块,具体用于:将第五算子的中间计算结果作为第六算子的入参。
可选地,结合上述第二方面第四种或第二方面第五种可能的实现方式,在第五种可能的实现方式中,第三算子为正向算子,第四算子为与第三算子对应的反向算子,或者第四算子为正向算子,第三算子为与第四算子对应的反向算子。
可选地,结合上述第二方面或第二方面第一种至第二方面第五种可能的实现方式,在第六种可能的实现方式中,装置还可以包括算子编译模块以及kernel模块,算子编译模块,用于根据第二类型的算子的第一中间表示IR以及第一类型的算子的计算逻辑确定第一类型的算子的第二IR。kernel模块,用于根据算子编译模块确定的第二IR确定第一类型的算子对应的一组核函数kernel。
可选地,结合上述第二方面或第二方面第一种至第二方面第六种可能的实现方式,在第七种可能的实现方式中,运算流程的输入是张量数据。在本方案中,张量是对存储的数据的特征的描述,比如张量可以记录数据的形状、类型等信息。本申请提供的方案对神经网络模型的类型并不限定,比如可以是图像处理神经网络模型,语音识别神经网络模型,或者对视频进行处理的神经网络模型。对于不同的神经网络模型,神经网络模型的输入数据往往也不相同,比如对于语音识别神经网络模型,输入数据可能是纯净语音以及噪音,再比如对于图像处理神经网络模型,输入数据可能是图像数据。在本方案中,该张量数据可以用于描述不同的神经网络模型的输入数据。需要说明的是,本申请提供的方案可以适用于任何与神经网络模型处理相关的场景中,示例性的,包括但不限于以下几种场景:包括语音识别、图像识别、CV以及NLP。
本申请第三方面提供一种神经网络模型的处理装置,可以包括:存储器,用于存储计算机可读指令。还可以包括,与存储器耦合的处理器,用于执行存储器中的计算机可读指令从而执行如第一方面或第一方面任意一种可能的实施方式中所描述的方法。
本申请第四方面提供一种计算机可读存储介质,当指令在计算机装置上运行时,使得计算机装置执行如第一方面或第一方面任意一种可能的实施方式中所描述的方法。
本申请第五方面提供一种计算机程序产品,当在计算机上运行时,使得计算机可以执行如第一方面或第一方面任意一种可能的实施方式中所描述的方法。
本申请第六方面提供一种芯片系统,该芯片系统可以包括处理器,用于支持终端设备实现上述第一方面或第一方面任意一种可能的实施方式中所描述的方法中所涉及的功能。
可选地,结合上述第六方面,在第一种可能的实施方式中,芯片系统还可以包括存储器,存储器,用于保存终端设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。其中,芯片系统可以可以包括专用集成电路(applicationspecific integrated circuit,ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件等。进一步,芯片系统还可以可以包括接口电路等。
需要说明的是,本申请第二方面至第六方面的实施方式所带来的有益效果可以参照第一方面的实施方式进行理解,因此没有重复赘述。
通过本申请提供的技术方案,神经网络的运算流程由两种不同类型的算子表示,第一类型的算子的计算逻辑可以由一组第二类型的算子表示,由于深度学习框架可以获知第一类型的算子的计算逻辑,第一类型的算子的计算逻辑对于该深度学习框架不再是不可知的,使得计算图有更多的优化机会,深度学习框架可以更好的优化计算图。
附图说明
图1为本申请实施例提供的一种深度学习框架示意图;
图2为本申请实施例提供的一种算子注册流程的示意图;
图3为本申请实施例提供的一种神经网络模型的处理方法的示意图;
图4为本申请实施例提供的一种带边界标识的第一类型的算子的示意图;
图5为本申请实施例提供的第一计算图的示意图;
图6为本申请实施例提供的另一种神经网络模型的处理方法;
图7为本申请实施例提供的第一计算图包括边界标识的示意图;
图8为第一计算图包括不包括边界标识的示意图;
图9为本申请实施例提供的另一种神经网络模型的处理方法的示意图;
图10为本申请实施例提供的另一种神经网络模型的处理方法的示意图;
图11为本申请实施例提供的一种生成kernel文件的流程示意图;
图12为本申请实施例提供的生成kernel文件的流程示意图;
图13为本申请实施例提供的计算机设备的结构示意图;
图14为本申请实施例提供的一种执行设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应当理解,本申请的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。还应当理解,本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本申请。
为了能够更好的理解本申请所描述的技术方案,下面对本申请实施例所涉及的关键技术术语进行解释:
由于本申请实施例涉及到了大量神经网络的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络等相关概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以如下公式所示:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
神经网络有多种类型,例如,深度神经网络(deep neural network,DNN),也称多层神经网络,也就是具有多层隐含层的神经网络;再例如,卷积神经网络(convolutionalneuron network,CNN),是带有卷积结构的深度神经网络。本申请不限定涉及的神经网络的具体类型。
(2)算子
算子是指实现某种特定功能的函数。例如,以reshape算子为例,该算子用于对张量数据的形状进行重新诠释。又例如,以transpose算子为例,该算子用于调整张量数据的维度顺序。在本申请中,用于构建深度学习模型算法的常用的函数统称为算子,对任何函数进行某一项操作都可以认为是一个算子。比如卷积是一种积分变换的数学方法,比如是通过两个函数f1和f2生成的函数f3,则可以将f1、f2以及卷积结果f3分别看做一个算子。
(3)计算图
计算图是使用图结构对计算过程进行描述的一种方式。如果计算有明显的模块性,并且模块之间有明显的时间上和逻辑上的依赖关系,通常可以使用有向图结构来进行描述。在实际应用中,图结构的基本元素有两个,分别为节点和有向边。在实际应用中,神经网络抽象为张量数据和算子所组成的有向图结构。节点又称为算子。换句话说,有向图,由输入数据、数学运算、以及输出数据构造的一个有向图。一般来说,对神经网络模型使用计算图的方式进行描述,有利于对整个神经网络计算任务进行整体的把握,与此同时,计算图的表达方式也方便对计算任务进行调度和并行执行。在深度学习框架中一个数学计算过程会先被编译转换为一张张的计算图。
(4)图优化
图优化是指对计算图进行优化的过程,图优化的目的是使得算法编译出的指令能够在硬件平台上得到高效执行。图优化的方式可以包括加0、乘0的表达式的优化、函数内联、表达式复用等一些优化方式。
(5)算子核函数(kernel)
kernel是算子对应到硬件上可执行的二进制程序。深度学习框架采用算子作为落实计算任务的具体元素,为每个算子都提供了在CPU或者人工智能处理器上执行的kernel,根据计算图,深度学习框架调度执行计算图中每个算子对应的核函数,完成整个神经网络的计算。
(6)算子注册
深度学习框架的每个算子都需要有对应硬件的kernel实现,因此需要对应硬件实现的kernel注册到深度学习框架中,运行模型的时候根据算子名称调用对应的硬件的算子kernel实现。
(7)正向算子
正向算子是神经网络中正向传播的过程中用到的算子。正向传播,也称为前向传播,指的神经网络从输入的特征向量到输出最后到代价函数的这样一个把低级特征逐步计算为抽象的高级特征直到得出损失的过程。
(8)反向算子
大部分的正向算子都有与之相对的反向算子,反向算子是神经网络中反向传播的过程中用到的算子。通过反向传播可以训练神经网络每一层的参数,使得误差极小。
(9)人工智能处理器
人工智能处理器,也称之为专用处理器,在本申请实施例中,人工智能处理器是指针对特定应用或者领域的处理器。例如:图形处理器(graphics processing unit,GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上进行图像运算工作的专用处理器。又例如:神经网络处理器(neural processing unit,NPU),是一种在人工智能领域的应用中针对矩阵乘法运算的专用处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
(10)深度学习框架
为了满足日益增长的神经网络需求,深度学习框架应运而生,通过深度学习框架,研究人员只需要关注深度学习算法网络结构,通过编写简单的python(一种跨平台的计算机程序设计语言)脚本编写网络结构就能完成一个复杂的深度学习网络任务,从而实现在硬件上模型推理和训练。换句话说,深度学习框架用于降低深度学习领域开发门槛,提供深度学习的基础计算框架,用于快速构建深度学习应用。当前业界主流的深度学习框架主要有Tensorflow、Torch、Mxnet、Thenao、Caffe等。以卷积神经网络框架Caffe为例,在实际应用中,Caffe支持多种类型的深度学习架构、面向图像分类和图像分割,还可以支持卷积神经网络(convolutional neural networks,CNN)、用于目标检测的卷积神经网络(region-CNN,RCNN)、长短期记忆神经网络(long short-term memory,LSTM)和全连接神经网络设计。深度学习框架可以支持多种类型的基本算子,具体地,这里所涉及的多种类型的基本算子可以包括:常见的神经网络算子。例如,常见的神经网络算子有:卷积/反卷积算子,池化算子,激活算子、分类器(softmax)算子,全连接算子。其中,激活算子可以包括但不限于ReLU、Sigmoid、Tanh以及其他可以用插值方式实现的算子。
(11)黑盒算子
黑盒算子是深度学习框架只能获知算子的输入输出类型以及维度等信息的算子。深度学习框架无法获知黑盒算子的内部实现细节,例如,无法获知该算子的计算逻辑。
(12)白盒算子
白盒算子是深度学习框架不仅能获知算子的输入输出类型以及维度等信息的算子,深度学习框架还可以获知白盒算子的内部实现细节,例如,还可以获知该算子的计算逻辑。当然,该获知的计算逻辑是对白盒算子的计算功能的一种表达,一些算子的计算功能是可以有多种表达方式的,这多种表达方式在功能上等效,功能上等效可以理解为对于相同的输入,得到的输出结果应相等。
图1所示,为本申请实施例提供的一种深度学习框架示意图。如图1所示,深度学习框架可以包括框架层和算子层,其中框架层可以包括编程接口模块101以及计算图处理模块102。其中,计算图处理模块102可以进一步的包括图编译单元1021以及图优化单元1022。算子层可以进一步的包括算子编译模块103,算子管理模块104,中间表示(intermediaterepresentation,IR)模块105以及核函数(kernel)模块106。深度学习框架可以通过编程接口模块101接收使用者输入的程序代码,比如该程序代码为使用者设计的算法模型,需要说明的是,在本申请中,如无特别强调,算法,算法模型以及神经网络模型表达相同的意思。举例说明,神经网络模型可以接收输入数据,并根据接收的输入数据和当前的模型参数生成预测输出。在实际应用中,该神经网络模型可以是回归模型、深度神经网络(deep neuralnetwork,DNN)、卷积神经网络模型(convolutional neural networks,CNN)、循环神经网络模型(recurrent neural networks,RNN)等,本申请实施例不作具体限定。比如,在caffe框架下,神经网络模型具有层级结构,算子可以是神经网络模型中的对应的层(layer),用户可以根据需求通过编程接口模块101设计各个算子之间的连接关系。举例说明,人脸识别神经网络模型中包含多种不同类型的算子(卷积算子、池化算子、全连接算子),其中,各算子之间的连接关系可以为:卷积算子1-池化算子1-卷积算子2-池化算子2-全连接算子1-全连接算子2。再比如车牌字符识别神经网络模型中包含多种不同类型的算子(卷积算子、池化算子、激活算子、softmax算子等),其中,各算子之间的连接关系可以为:卷积算子1-激活函数Relu-最大池化算子1-卷积算子2-激活函数Relu-最大池化算子2-卷积算子3-激活函数Relu-最大池化算子3-卷积算子4-激活函数-最大池化算子4-卷积算子5-激活函数-最大池化算子5-全连接算子1-softmax算子-输出算子。换句话说,使用者可以通过调用编程接口模块101来描述算法模型的计算逻辑。可以通过图编译单元1021将编程接口模块101获取到的程序进行编译,编译之后的算法模型会被转换成计算图。
图优化单元1022可以对图编译单元1021获得的计算图进行图优化,得到优化后的计算图。深度学习框架再通过算子层对优化后的计算图进行编译,以生成kernel文件。具体的,深度学习框架通过算子编译模块103、根据算子的名称向算子管理模块104查询该算子对应的IR函数指针,算子管理模块104根据该算子的名称查询到该算子对应的IR函数指针后,将该IR函数指针发送给算子编译模块103,算子编译模块103再根据获取到的IR函数指针向IR模块查询该算子对应的IR,IR模块中预先存储有相关算子的IR,IR是编辑器领域的专业术语,大量不同的编程语言和越来越多的硬件架构之间需要一个桥梁,IR即是起到这样的桥梁作用,使得如果需要支持新的编程语言或者新的设备平台,只需要开发对应的前端和后端即可。
需要说明的是,算子编译模块103可以根据算子的名称获取到算子对应的IR,是因为预先建立了算子名称和算子IR函数名称的对应关系,即通过深度学习框架提供的注册机制将对应该算子的IR向深度学习框架进行注册。下面结合图2对注册的过程进行说明。如图2所示,为本申请实施例提供的一种算子注册流程的示意图。在注册过程中,IR模块105通过算子IR函数名称向深度学习框架进行注册,具体的可以包括如下步骤:
1010、IR模块105向算子管理模块104发起算子的IR的注册流程。
IR模块105可以将算子的IR函数名称发送给算子管理模块104。
1020、算子管理模块104建立算子名称和算子IR函数名称的对应关系。
算子管理模块104接收到IR模块105发送的注册流程后,可以建立一张映射图(map),map的映射键(key)对应算子名称,映射值(value)对应算子IR函数名称,使得算子编译模块103编译的时候可以根据算子名称在算子管理模块104中查询到到算子IR函数名称,进而可以加载到IR函数指针,并根据加载到的IR函数指针获取算子对应的IR。
在一个具体的实施方式中,还可以包括1030、算子管理模块104向IR模块105返回注册成功的通知。
为了便于更好的理解本申请,下面具体阐述本申请所描述的技术方案的研究思路:
深度学习算法(本申请有时也将深度学习算法称为深度学习模型,在不强调二者的区别之时,二者表达相同的意思)的计算量一般非常巨大,一个算法训练完成往往会花费数小时甚至几天的时间,因此提升深度学习的计算效率已经成为各个深度学习框架的发力点,而对计算图的优化又成为其中的重中之重。程序员通过编程接口来描述深度学习算法的计算逻辑。然后通过深度学习框架编译该深度学习算法,从而将其转换成一张计算图,对计算图进行优化和编译后,会生成一个可执行的kernel程序。该kernel程序会根据优化后的计算图将计算图中包括的多个算子的kernel进行链接。具体的,计算图中算子之间有明显的逻辑上的依赖关系,可以使用有向图结构来进行描述这种依赖关系,可以根据这种依赖关系将算子对应的kernel进行链接。该kernel程序可以在硬件平台上执行,在执行过程中,可以根据kerenl程序中算子的链接顺序依次执行算子kernel。需要说明的是,现有的对计算图进行优化的过程,通常只能对计算图做一些基本的优化,比如包括加0、乘0的表达式的优化,计算图的优化机会很少,通过目前已有的优化方案对优化后的计算图进行编译得到的kernel程序,并不能够满足我们期待的kernel程序在硬件平台上得到高效执行得目的。
具体的,深度学习框架编译计算图的时候通过计算图中的算子的名称(也可以称为计算节点名称)调用对应该算子的名称的kernel以实现该算子的功能。在上述过程中,深度学习框架完全不感知算子的内部逻辑,或者说算子的实现细节,深度学习框架只需要根据输入数据以及算子获取结果即可。由于对于深度学习框架来说,每个算子的计算逻辑是不可知的,这样会丧失部分图优化的机会。除此之外,深度学习框架中,每次新增一种算子都需要在深度学习框架中声明该种算子接口,然后在硬件中预配置对应该种算子的kernel,最后通过深度学习框架提供的注册机制将对应该种算子的kernel向深度学习框架进行注册,这一流程比较繁琐,当需要新增大量深度学习框架中算子时,这一过程更加繁琐。需要说明的是,这里的新增一种算子,是指该种算子注册成功之前,深度学习框架中没有该算子的kernel,无法通过该种算子的名称获取该算子的kernel。新增算子的注册过程就是建立新增的算子的名称和该算子的kernel的映射关系的过程,使深度学习框架可以根据该算子的名称获取到算子的kernel。
目前,几乎所有的图优化都在黑盒算子的基础上优化,黑盒算子即上述描述的内部计算逻辑对深度学习框架不可见的算子,深度学习框架只能基于黑盒算子的粒度做图优化处理,若让深度学习框架可以获知算子的内部计算逻辑,深度学习框架将有更多的图优化机会。此外,还要考虑对一个算子的内部计算逻辑的展开程度,例如,如果将计算图中的每个算子的逻辑都完全展开,计算图中将包括过多的算子,在图优化的过程中可能会因为遍历时间过长导致编译时长不可控的问题。除此之外,现有技术中,黑盒算子,即计算逻辑对深度学习框架是不可见的算子大约有上千个,正如上文提到,新增大量算子时,注册过程繁琐,并且要预配置更多的kernel。
基于上述分析描述,本申请实施例提供一种神经网络模型的处理方法。通过一组第二类型的算子表示第一类型的算子的计算逻辑,这种方式使深度学习框架可以获知第一类型的算子的内部逻辑,解决了黑盒算子进行图优化导致的丧失图优化机会的问题。下面以一个例子对此进行说明,假设将计算图看做一篇文章,则现有技术中的计算图中的算子相当于文章中的一个单词,该单词中的每个字母代表算子的计算逻辑。现有技术中,深度学习框架并不感知单词中的每个字母,即深度学习框架不感知算子的计算逻辑。而本申请提供的方案,计算图中包括两种类型的算子,其中第一类型的算子可以相当于文章中的一个单词,第二类型的算子可以相当于构成该单词的多个字母。通过本申请提供的方案,深度学习框架可以感知单词中的每个字母,即深度学习框架可以获取第一类型算子的计算逻辑。通过这样的方式,计算图中包括了更多算子的内部逻辑,使得计算图可以有更多的优化机会。
此外,本申请可以根据统计结果选取一些常用的深度学习的算子作为第二类型的算子,本申请只预配置这些常用的算子的kernel。其他的大部分的算子可以通过这些算子组合得到。举例说明,选取的常用的深度学习的算子可能是加法算子(add)、减法算子(sub)、乘法算子(mul)、指数算子(exp)、非负实数的平方根算子(sqrt)等等。通过深度学习框架提供的注册机制将选取的这些常用的算子的kernel向深度学习框架进行注册。沿用上面的单词的例子进行说明,比如可以选择26个英文字母作为第二类型的算子,可以通过26个英文字母组合得到其他的单词,其他的单词可以看做是第一类型的算子,即可以通过第二类型的算子表示第一类型的算子的计算逻辑。这种通过常用的算子组合成新的算子方式,不会增加新增算子的注册程序,解决了上述提到的新增大量算子时,注册过程繁琐,并且要预配置更多的kernel的问题。
此外,本申请提供的方案,以第一类型的算子为处理粒度对计算图进行优化。以第一类型的算子为处理单位对计算图进行优化,又解决了算子的逻辑展开后,在图优化的过程中可能会因为遍历时间过长导致编译时长不可控的问题。
基于上面的研究思路,下面对本申请提供的技术方案进行具体的介绍。
如图3所示,为本申请实施例提供的一种神经网络模型的处理方法的示意图。
如图3所示,本申请实施例提供的一种神经网络模型的处理方法,可以包括以下步骤:
301、获取神经网络模型的运算流程,该运算流程由至少一个第一类型的算子和多个第二类型的算子表示。
运算流程由至少一个第一类型的算子和多个第二类型的算子表示,运算流程中,第一类型的算子包括边界标识,第一类型的算子的计算逻辑通过一组第二类型的算子表示,对于任意一个第一类型的算子,任意一个第一类型的算子所包括的第二类型的算子的范围由任意一个第一类型的算子中的边界标识指示本申请所指的运算流程包括本申请所指的计算逻辑。
具体的,本申请提到的神经网络模型的运算流程是指通过至少第一类型的算子、多个第二类型的算子对输入的数据进行数学运算,以得到神经网络模型的输出数据的流程。运算流程可以是指多个第一类型的算子和多个第二类型的算子之间的计算逻辑,比如运算流程可以包括第一类型的算子和第一类型的算子之间的计算逻辑,第二类型的算子和第二类型的算子之间的计算逻辑,以及第一类型的算子和第二类型的算子之间的计算逻辑。
本方案中的第一类型的算子所包括的第二类型的算子的范围是第一类型的算子的计算逻辑中包括的第二类型的算子。举例说明,假设运算流程中包括一个第一类型的算子:A算子,三个第二类型的算子:B算子,C算子以及D算子。其中,A算子的计算逻辑由B算子和C算子表示,则A算子所包括的第二类型的算子的范围是指B算子和C算子,而不包括D算子。上面提到第一类型的算子和第二类型类型的算子可以看做能够实现某种特定功能的函数,在本方案中,可以将第一类型的算子以及第二类型的算子的计算逻辑理解为函数的表达式。
在本申请提供的实施方式中,第一类型的算子的内部的计算逻辑对深度学习框架是可见的,第二类型的算子的内部的计算逻辑对深度学习框架是不可见的。第二类型的算子可以是深度学习框架提供的一些基础的算子,这里的基础的算子可以指一些常用的深度学习的算子,基本上大部分算子可以通过这些基础的算子组合而成。示例性,该基础的算子可以包括加法算子(add)、减法算子(sub)、乘法算子(mul)、指数算子(exp)、非负实数的平方根算子(sqrt)等等。需要说明的是,上述列举的几种基础的算子仅仅意在举例说明,并不代表对第二类型的算子的类别的限定,在实际应用的过程中,可以根据实际的需求,选取适合的基础的算子,比如基础的算子还可以包括最大值算子(maximum)、重新调整矩阵的行数、列数、维数算子(reshape)等等。
现有技术中,黑盒算子,即计算逻辑对深度学习框架是不可见的算子大约有上千个,深度学习框架要为每一个黑盒算子提供在CPU或者人工智能处理器上执行的kernel,为了使算子与kernel对应起来,需要通过深度学习框架提供的注册机制将对应该算子的kernel向深度学习框架进行注册。具体的注册过程,本申请在上文已经进行了描述,这里不再重复赘述。本申请不需要上千个黑盒算子,只需要少部分的基础的算子,通过组合这些基础的算子(本申请有时也将基础的算子称为基础的黑盒算子,在不强调二者区别之时,二者表示相同的意思),就可以将另一部分较为复杂的算子的计算逻辑表达出来。因此,在本申请提供的技术方案中,只需要通过深度学习框架提供的注册机制将对应这些基础的算子的kernel向深度学习框架进行注册,这里的基础的算子即本申请实施例提到的第二类型的算子。
下面首先结合一个具体的例子进行说明。如图4所示,以sigmoid算子为例对本申请实施例提供的一种带边界标识的第一类型的算子进行说明。现有技术中,sigmoid是黑盒算子,深度学习框架无法获知sigmoid算子的计算逻辑。如图4中的a所示,深度学习框架只能获知sigmoid算子的输入数据是x,以及sigmoid算子的输出数据是sigmoid(x),至于如何根据输入数据x得到的输出数据sigmoid(x),即sigmoid(x)的计算逻辑,深度学习框架并不获知。在本申请提供的技术方案中,通过基础的算子可以将sigmoid算子的计算逻辑表示出来,如图4中的b所示,基础的算子为sub算子,exp算子,add算子以及div算子,这些算子有预配置的kernel。通过这些基础的算子可以将sigmoid(x)算子的计算逻辑表示出来,具体的,sigmoid的计算逻辑如下:
如图4中的c所示,用户可以对第一类型的算子添加边界标识,使得深度学习框架在对该运算流程进行图编译的过程中,可以将第一类型的算子看做一个整体进行处理。
完成上述注册过程后,用户可以通过深度学习框架的编程接口模块自定义算子,具体的,深度学习框架通过编程接口模块向用户提供基础的算子的原语,同时允许用户自由组合基础的算子,以得到新算子,即通过第二类型的算子组合得到第一类型的算子。通过这种方式,深度学习框架可以获知第一类型的算子的计算逻辑。用户在输入神经网络模型的运算流程时,可以自由的使用第一类型的算子以及第二类型的算子。即最后获得的神经网络模型的运算流程由第二类型的算子以及第二类型的算子组成。
第一类型的算子包括边界标识,对于一个第一类型的算子,边界标识指示一组第二类型的算子,一组第二类型的算子用于表示边界标识所在的一个第一类型的算子的计算逻辑。
302、根据运算流程确定神经网络模型的第一计算图。
在深度学习框架中一个数学计算过程会先被编译转换为计算图。在本申请实施例中,深度学习框架对上述步骤301提到的运算流程进行编译,以得到第一计算图。神经网络模型经过编译后,可以看做是一个由数以百计甚至千记的算子所构成的复杂计算图。
在一个具体的实施方式中,每个第一类型的算子均包括边界标识,编译的过程中,保持每个第一类型的算子的边界标识不变,以得到第一计算图。
下面结合图5进行说明,图5为本申请实施例提供的第一计算图的示意图。如图5所示,第一计算图可以包括主图和子图。其中,主图通过第一类型算子的边界标识以及第二类型的算子的名称表示运算流程,比如在图5所示的例子中,OP1代表第一类型的算子,具体的OP1包括边界标识,用于表示对主图进行处理时,要将OP1看做一个整体,OP2和OP3代表第二类型的算子,具体的,OP2和OP3是算子的名称。主图的计算流程为,OP1有两个输入,分别是数据x和数据y,OP2有两个输入,分别是数据z和OP1的输出,OP3有一个输入,OP3的输入为OP2的输出,OP3的输出为主图的输出结果。
子图用来表示第一类型算子的计算逻辑,比如在图5所示的例子中,子图的计算逻辑为sub算子包括两个输入,分别是数据x和数据y,sub算子的输出是exp算子的输入,exp算子的输出结果为OP1的输出结果,其中sub算子和exp算子为第二类型的算子,即预先选定的常用的算子。该子图带有边界标识,在一个具体的实施方式中,该边界标识可以是scope。scope可以表示与第一类型的算子的计算逻辑所关联的所有其他第二类型算子组成的集合。需要说明的是,各个第一类型的算子包括的边界标识的类别可以完全相同,也可以不同。本申请实施例中第一类型的算子包括的边界标识仅用来表示在对第一计算图进行处理的过程中,要将第一类型的算子看做一个整体进行处理。
如图5所示,主图中包括第一类型的算子OP1,具体的,主图中包括边界标识,以及第二类型的算子OP2以及OP3,具体的,主图中包括OP2以及OP3的名称。x,y,z分别代表输入数据,c代表输出数据。深度学习框架无法获知OP2以及OP3的计算逻辑,但是可以通过子图获取OP1的计算逻辑。在图5所示的子图中,为OP1的计算逻辑,OP1由基础的算子组合而成,即OP1由第二类型的算子组合而成,比如图5中所示的,OP1由sub算子和exp算子组合而成。子图获取了OP1的执行结果后,将子图获得的结果返回到主图。
由图5对应的实施例可知,神经网络的运算流程由两种不同类型的算子表示,并且第一类型的算子的计算逻辑由第二类型的算子表示,第二类型的算子预先配置对应的kernel,本申请提供的技术方案,可以通过组合基础的第二类型的算子得到第一类型的算子,在不增加注册流程的前提下,深度学习框架可以获知第一类型的算子的计算逻辑,使得计算图有更多的优化机会。
应当理解,当深度学习框架可以获知算子的计算逻辑时,图优化的机会将会大大增加,本申请提供的方案可以用在各种图优化的场景中,示例性的,下面对如何根据图3得到的计算图进行图优化进行说明。需要说明的是,图优化的场景除了本申请提到的几种,当然还可以包括其他的应用场景,其他利用到本申请提供的方案获得的计算图进行图优化的方案也应当属于本申请保护的范围中。
图6为本申请实施例提供的另一种神经网络模型的处理方法。
如图6所示,本申请实施例提供的另一种神经网络模型的处理方法,可以包括:
601、获取神经网络模型的运算流程,该运算流程由第一类型的算子和第二类型的算子表示。
602、根据运算流程确定神经网络模型的第一计算图。
步骤601和步骤602可以参照图3对应的实施例的步骤301和步骤302进行理解,此处不再重复赘述。
603、以第一类型的算子为处理粒度对第一计算图进行优化处理,以得到第二计算图。
本申请提供的方案,再对计算图进行优化处理时,以第一类型的算子为处理粒度,即将第一类型的算子看做一个整体进行处理。具体的,可以通过多种实现方式实现以第一类型的算子为处理粒度,比如,其中一种方式可以为程序员在输入神经网络模型的运算流程时,对第一类型的算子进行标注,在根据该运算流程生成该神经网络模型的第一计算图时,根据该标注对第一类型的算子添加边界信息,比如在图3对应的实施例中介绍的scope,在根据运算流程生成该神经网络模型的第一计算图,可以根据标注对第一类型的算子添加scope。
本申请实施例以第一类型的算子为处理粒度,是为了保证第一类型的算子的边界不被打破,即为了保证第一类型的算子可以作为一个整体进行处理。如果第一类型的算子的边界被打破,那么第一计算图中包括的全部的算子会融合成一张图,可能会导致后续进行各种图优化的处理时,搜索空间过大的问题。下面结合图7以及图8举例说明,如图7中所示的第一计算图包括主图以及子图,主图中的所有第一类型的算子均包括边界标识,比如OP1、OP4以及OP6代表第一类型的算子,OP1、OP4以及OP6均包括边界标识。OP1对应的子图进一步的描述OP1的计算逻辑,OP4对应的子图进一步的描述OP1的计算逻辑,OP6对应的子图进一步的描述OP6的计算逻辑(图中未示出具体的内部逻辑)。主图中还包括第二类型的算子,如OP2、OP3以及OP5。x,y,z,m以及n均代表输入数据。本申请实施例以第一类型的算子为处理粒度,在图7所示的场景中,即可以选择对OP1对应的子图、OP4对应的子图以及OP6对应的子图中的任意一个进行优化,或者可以选择对OP1对应的子图,OP4对应的子图以及OP6对应的子图中的任意两个进行优化,或者可以选择对OP1对应的子图,OP4对应的子图以及OP6对应的子图中的一起进行优化。换句话说,以第一类型的算子为处理粒度,即第一类型的算子包括边界标识,可以在第一类型的算子内部,或者第一类型的算子之间去做一些图优化处理,不至于发生搜索空间过大的问题,进一步导致编译时间不可控的问题。
图8所示为第一计算图不包括边界标识的示意图,相比于图7给出的第一计算图包括边界标识的示意图,图8所示的第一计算图中,第一类型的算子,比如OP1、OP4以及OP6的边界被打破,即OP1、OP4以及OP6均不包括边界标识,这会导致第一计算图的算子非常多,比如图8中所示的,包括多个exp算子,add算子,mul算子,sub算子。这会导致算子粒度过细,后续图优化过程中,搜索空间过大,导致编译时间过长的问题,而以第一类型的算子为处理粒度,即第一类型的算子包括边界标识,可以在第一类型的算子之间去做一些图优化处理,不至于发生搜索空间过大的问题。
下面结合几个具体的优化方案对如何以第一类型的算子为处理粒度对第一计算图进行优化处理,以得到第二计算图进行说明。
在一个具体的实施方式中,假设第一类型的算子包括第三算子和第四算子,第三算子和第四算子包括相同的计算逻辑,以第一类型的算子为处理粒度对第一计算图进行优化处理,可以包括:
融合第三算子对应的子图以及第四算子对应的子图,以得到融合子图,第二计算图包括融合子图。
下面结合图7进行说明,如图7中所示,第一类型的算子包括OP1、OP4以及OP6,其中任意一个第一类型的算子都可以看做是第三算子,第一计算图中除该选定的第三算子之外的任意一个算子都可以看做是第四算子。在以第一类型的算子为处理粒度对第一计算图进行优化处理时,如果任意两个或两个以上的第一类型的算子包括相同的计算逻辑时,可以将任意两个或两个以上的第一类型的算子对应的子图进行融合,以得到融合子图,该融合子图可以同时返回两个或两个以上的第一类型的算子的输出结果。假设OP1和OP4包括相同的计算逻辑,可以将OP1和OP4对应的子图进行融合,得到融合子图,该融合子图可以同时返回OP1和OP4对应的输出结果。或者假设OP1、OP4以及OP6包括相同的计算逻辑时,可以将OP1、OP4以及OP6应的子图进行融合,得到融合子图,该融合子图可以同时返回OP1、OP4以及OP6应的输出结果。
下面以两个第一类型的算子包括相同的计算逻辑为例,对确定第三算子和第四算子包括相同的计算逻辑时,融合第三算子对应的子图以及第四算子对应的子图,以得到融合子图进行进一步的说明。假设第三算子和第四算子的计算逻辑如下:
可以将sigmoid(x)看做第三算子,将sigmoid’(x)看做第四算子,也可以将sigmoid(x)看做第四算子,将sigmoid’(x)看做第三算子。图9所示为本申请实施例提供的另一种神经网络模型的处理方法的示意图。如图9中的a所示,为sigmoid算子的子图,即图9中的a用来表示sigmoid的计算逻辑,sigmoid(x)的表达式上面已经给出,这里不再重复说明。如图9中的b所示,为sigmoid’(x)算子的子图,即图9中的b用来表示sigmoid’(x)算子的计算逻辑,sigmoid’(x)算子的表达式上面已经给出,这里不再重复说明。由图9中的a和图9中的b可见,sigmoid算子与sigmoid’(x)的计算逻辑有部分是相同的。因此可以修改第一计算图,将图9中的a所示的子图以及图9中的b所示的子图进行融合,以得到融合子图,如图9中的c所示的即为融合子图。通过make tuple算子同时输出两个结果,即让两个算子的子图融合为一张图并同时返回sigmoid算子与sigmoid’(x)算子的输出结果。
在一个具体的实施方式中,第三算子可以是正向算子,第四算子可以是与第三算子对应的反向算子,或者第四算子是正向算子,第三算子是与该第四算子对应的反向算子。这是因为正向算子是信号正向传播的过程中用到的算子,大部分正向算子都需要有与其对应的反向算子,深度学习网络训练中通过反向算子和误差计算各层网络误差的传播,训练每一层的参数,使得误差极小。反向算子通常可以理解为正向算子的导数在加上某些运算,而深度学习领域中许多算子的导数和其本身有很多重复的运算逻辑。
在一个具体的实施方式中,第一类型的算子包括第三算子和第四算子,第三算子的中间计算结果与第四算子的中间计算结果相同,以第一类型的算子为处理粒度对第一计算图进行优化处理,包括:
确定第三算子的中间计算结果为第四算子的入参。中间计算结果是指第一类型的算子中包括的第二类型的算子的输出结果。举例说明,假设第五算子和第六算子都包括C算子,C算子的输入包括两个,分别是A算子的输出以及B算子的输出,A算子的输入为x,B算子的输入为y。由于第五算子和第六算子的C算子的输出结果是相同的,则第五算子的C算子的输出可以直接作为第六算子的入参,第六算子不必重复计算C算子的输出。
下面结合图7进行说明,如图7中所示,第一类型的算子包括OP1、OP4以及OP6,其中任意一个第一类型的算子都可以看做是第三算子,第一计算图中除该选定的第三算子之外的任意一个算子都可以看做是第四算子。在以第一类型的算子为处理粒度对第一计算图进行优化处理时,确定第三算子的中间计算结果与第四算子的中间计算结果相同时,确定第三算子的中间计算结果为第四算子的入参。举例说明,假设OP1和OP4的中间计算结果相同时,可以将OP1的中间计算结果作为OP4的入参,或者将OP4的中间计算结果作为OP1的入参。换句话说,当两个算子的中间计算结果相同时,其中一个算子可以调用另一个算子的中间结果,而不必二次计算。再比如,假设OP1和OP4以及OP6的中间计算结果都相同时,可以将OP1的中间计算结果作为OP4和OP6的入参,即,OP4和OP6可以直接调用OP1的中间计算结果,而不必二次计算,或者将OP4的中间计算结果作为OP1和OP6的中间计算结果,即,OP1和OP6可以直接调用OP4的中间计算结果,而不必二次计算,或者将OP6的中间计算结果作为OP1和OP4的中间计算结果,即,OP1和OP4可以直接调用OP6的中间计算结果,而不必二次计算。
下面以两个第一类型的算子的中间计算结果相同为例,对确定第三算子的中间计算结果为第四算子的入参进行进一步的举例说明。假设第三算子和第四算子的计算逻辑如下:
可以将tanh算子看做第三算子,将tanh’(x)算子看做第四算子,或者将tanh’(x)算子看做第三算子,将tanh算子看做第四算子。图10所示为本申请实施例提供的另一种神经网络模型的处理方法的示意图。如图10所示,以上述提到的tanh算子以及tanh’(x)举例说明,如图10中的a所示,为tanh算子的子图,即图10中的a用来表示tanh的计算逻辑,tanh的表达式上面已经给出,这里不再重复说明。如图10中的b所示,为tanh’(x)算子的子图,即图10中的b用来表示tanh’(x)算子的计算逻辑,tanh’(x)算子的表达式上面已经给出,这里不再重复说明。由图10中的a和图10中的b可见,tanh′(x)算子的计算逻辑中的中间计算结果与tanh算子的计算逻辑中的计算结果相同,则可以修改第一计算图,让其中一个子图直接复用另一个子图得到的中间计算结果。比如,如图10中的c所示,将tanh算子的中间计算结果作为tanh’(x)算子的入参。入参是指tanh’(x)算子可以直接调用tanh算子的中间计算结果。
在一个具体的实施方式中,第三算子可以是正向算子,第四算子可以是与第三算子对应的反向算子,或者第四算子是正向算子,第三算子是与该第四算子对应的反向算子。这是因为正向算子是信号正向传播的过程中用到的算子,大部分正向算子都需要有与其对应的反向算子,深度学习网络训练中通过反向算子和误差计算各层网络误差的传播,训练每一层的参数,使得误差极小。反向算子通常可以理解为正向算子的导数在加上某些运算,而深度学习领域中许多算子的导数和其本身有很多重复的运算逻辑。
以上对本申请实施例提供的神经网络模型的处理方法进行了说明,具体的,对如何获得计算图以及如何对计算图进行优化进行了说明。深度学习框架需要将优化后的计算图映射为硬件平台的指令和机器码,即生成kernel文件,下面对这一过程进行具体的描述。
如图11所示,为本申请实施例提供的一种生成kernel文件的流程示意图。
如图11所示,一种生成kernel文件的流程可以包括以下步骤:
1101、根据第二类型的算子的第一中间表示IR以及第一类型的算子的计算逻辑确定第一类型的算子的第二IR。
深度学习框架根据第一类型的算子的计算逻辑确定第一类型算子包括哪些第二类型的算子,即确定第一类型的算子由哪些第二类型的算子组成。由于在注册过程中,IR模块通过算子名称向深度学习框架进行注册,深度学习框架可以根据第二类型的算子的名称查询到第二类型的算子的IR名称,进而可以加载到算子的IR对应的函数指针,深度学习框架再根据该函数指针获得第二类型的算子对应的IR。
1102、根据第二IR确定第一类型的算子对应的kernel。
当深度学习框架获得了第一类型的算子包括的全部第二类型的算子对应的IR后,深度学习框架对获得到的全部第二类型的算子对应的IR进行组合,以得到第一类型的算子对应的IR。深度学习框架对该第一类型的算子对应的IR进行编译,以得到第一类型的算子对应的kernel文件。
下面结合图12对上述过程举例说明。如图12所示,为本申请实施例提供的生成kernel文件的流程示意图。假设第一类型的算子为图8所示的OP1,下面以第一类型的算子为OP1为例进行说明。
1201、算子编译模块103解析第一类型算子的计算逻辑。
比如第一类型的算子为OP1,则算子编译模块103解析第一类型算子的计算逻辑,获知OP1的计算逻辑,OP1包括的第二类型的算子为sub和exp,sub算子包括两个输入分别是x和y,sub算子的输出为exp算子的输入,exp算子的输出即为OP1的输出。
1202、算子编译模块103通过sub算子的名称向算子管理模块104查询sub算子的IR函数指针。
深度学习框架可以通过sub算子的名称查询到sub算子的IR的名称,进而可以加载到sub算子的IR的函数指针。
1203、算子管理模块104将获取到的sub算子的IR函数指针返回算子编译模块103。
1204、算子编译模块103通过调用sub算子的IR的函数指针从IR模块105获取sub算子对应的IR。
1205、IR模块105向算子编译模块103返回sub算子的IR。
1206、算子编译模块103通过exp算子的名称向算子管理模块104查询exp算子的IR函数指针。
深度学习框架可以通过exp算子的名称查询到exp算子的IR的名称,进而可以加载到exp算子的IR的函数指针。
1207、算子管理模块104将获取到的exp算子的IR函数指针返回算子编译模块103。
1208、算子编译模块103通过调用exp算子的IR的函数指针从IR模块105获取exp算子对应的IR。
1209、IR模块105向算子编译模块103返回exp算子的IR。
1210、算子编译模块103组合第一类型算子的IR。
通过上述步骤1202至步骤1209,算子编译模块103获取了sub算子的IR以及exp算子的IR,算子编译模块103可以将sub算子的IR以及exp算子的IR按照OP1的计算逻辑组合得到OP1的IR。
1211、算子编译模块103将第一类型算子的IR发送至kernel模块106。此过程为编译第一类型算子的IR的过程。
1212、kernel模块106将编译得到的第一类型算子的kernel文件返回至算子编译模块103。
以上,对本申请实施例提供的一种神经网络模型的处理方法进行了介绍,通过本申请实施例提供的方案,深度学习框架可以获知第一类型的算子的计算逻辑,使得计算图有更多的优化机会。可以理解的是,上述深度学习框架为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从硬件结构上来描述,图3至图12中的深度学习框架可以由一个实体设备实现,也可以由多个实体设备共同实现,还可以是一个实体设备内的一个逻辑功能模块,本申请实施例对此不作具体限定。
例如,深度学习框架可以通过图13中的计算机设备来实现,该计算机设备也可以被称为神经网络模型的处理装置。图13所示为本申请实施例提供的计算机设备的硬件结构示意图。包括:通信接口1301和处理器1302,还可以包括存储器1303。
通信接口1301可以使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless localarea networks,WLAN)等。
处理器1302包括但不限于中央处理器(central processing unit,CPU),网络处理器(network processor,NP),专用集成电路(application-specific integratedcircuit,ASIC)或者可编程逻辑器件(programmable logic device,PLD)中的一个或多个。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。处理器1302负责通信线路1304和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节,电源管理以及其他控制功能。存储器1303可以用于存储处理器1302在执行操作时所使用的数据。
存储器1303可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically er服务器able programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1304与处理器1302相连接。存储器1303也可以和处理器1302集成在一起。如果存储器1303和处理器1302是相互独立的器件,存储器1303和处理器1302相连,例如存储器1303和处理器1302可以通过通信线路通信。通信接口1301和处理器1302可以通过通信线路通信,通信接口1301也可以与处理器1302直连。
通信线路1304可以包括任意数量的互联的总线和桥,通信线路1304将包括由处理器1302代表的一个或多个处理器1302和存储器1303代表的存储器的各种电路链接在一起。通信线路1304还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本申请不再对其进行进一步描述。
在一个具体的实施方式中,该深度学习框架,可以包括:存储器,用于存储计算机可读指令。还可以包括和存储器耦合的通信接口,用于获取神经网络模型的运算流程,运算流程由至少一个第一类型的算子和多个第二类型的算子表示,运算流程中,第一类型的算子可以包括边界标识,第一类型的算子的计算逻辑通过一组第二类型的算子表示,对于任意一个第一类型的算子,任意一个第一类型的算子可以包括的第二类型的算子的范围由任意一个第一类型的算子中的边界标识指示。还包括:与通信接口耦合的处理器,用于执行存储器中的计算机可读指令从而执行以下操作:根据运算流程得到神经网络模型的第一计算图。
在一个具体的实施方式中,第一计算图可以包括主图和子图,处理器,具体用于:根据运算流程确定神经网络模型的主图和子图,主图中的第一类型的算子由边界标识指示,主图中的第二类型的算子由第二类型的算子的名称指示,主图用于输出运算流程的结果,子图可以包括任意一个第一类型的算子所可以包括的第二类型的算子的名称,子图用于输出一个第一类型的算子的结果,一个子图表示一个第一类型的算子的计算逻辑。
在一个具体的实施方式中,处理器,还用于:以第一类型的算子为处理粒度对第一计算图进行优化处理,以得到第二计算图。
在一个具体的实施方式中,第一类型的算子可以包括第三算子和第四算子,第三算子和第四算子可以包括相同的计算逻辑,处理器,具体用于:融合第三算子对应的子图以及第四算子对应的子图,以得到融合子图,第二计算图可以包括融合子图。
在一个具体的实施方式中,第一类型的算子可以包括第五算子和第六算子,第五算子的中间计算结果与第六算子的中间计算结果相同,处理器,具体用于:将第五算子的中间计算结果作为第六算子的入参。
在一个具体的实施方式中,第三算子为正向算子,第四算子为与第三算子对应的反向算子,或者第四算子为正向算子,第三算子为与第四算子对应的反向算子。
在一个具体的实施方式中,处理器,还用于根据第二类型的算子的第一中间表示IR以及第一类型的算子的计算逻辑确定第一类型的算子的第二IR。根据算子编译模块确定的第二IR确定第一类型的算子对应的一组核函数kernel。
在本申请实施例中,可以将通信接口视为深度学习框架的编程接口模块101,将具有处理功能的处理器视为深度学习框架的处理模块,具体的该处理模块可以包括计算图处理模块102以及算子层包括的算子编译模块103、算子管理模块104、IR模块105以及kernel模块106。将存储器视为深度学习框架的存储模块(图中未示出)。
算子编译模块103获取到所需算子的IR后,将所需算子的IR向kernel模块106发送,kernel模块106对获取到的IR进行编译,以得到kernel文件,并将kernel文件返回给算子编译模块103。算子编译模块103获取到kernel文件后可以将该kernel文件发送到执行设备上,比如可以发送到硬件平台上。这一过程为将优化后的计算图映射为硬件平台的指令和机器码(在本申请实施例中,有时也将硬件平台称为执行设备,在不强调二者的区别时,二者表达相同的意思),深度学习框架为每个算子都提供了在CPU或者人工智能处理器上执行的核函数(kernel),该核函数即为硬件平台的指令和机器码。下面对本申请实施例提供的一种执行设备进行介绍。
参见图14,是本申请实施例提供的一种执行设备的结构示意图。如图14所示,执行设备可以包括处理器1401、存储器1402、通信总线1403、通信接口1404,人工智能处理器1405通过所述通信总线连接所述存储器1402和所述通信接口1404。
处理器1401可以是中央处理单元(central processing unit,CPU),该处理器1401还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器1401可以是微处理器或者该处理器1401也可以是任何常规的处理器等。
处理器1401还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的神经网络处理方法的各个步骤可以通过处理器1401中的硬件的集成逻辑电路或者软件形式的指令完成。
存储器1402可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)或其他存储器。本申请实施例中,存储器1402用于存储数据以及各种软件程序,例如本申请实施例中根据确定好的目标拆分路径对神经网络模型进行拆分的程序等。
可选的,在本申请实施例中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如RAM、ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。
通信接口1404使用例如但不限于收发器一类的收发装置,来实现执行设备与其他设备或通信网络之间的通信。例如,可以通过通信接口1404接收其他设备发送的模型文件。
可选地,该执行设备还可以包括至少一个人工智能处理器1405。
人工智能处理器1405可以作为协处理器挂载到主CPU(host CPU)上,由主CPU为其分配任务。在实际应用中,人工智能处理器1405可以实现一种或多种运算。例如,以神经网络处理器(network processing Unit,NPU)NPU为例,NPU的核心部分为运算电路,通过控制器控制运算电路提取存储器1402中的矩阵数据并进行乘加运算。
可选的,人工智能处理器1405可以包括8个集群(cluster),每个cluster中包括4个人工智能处理器核。
可选的,人工智能处理器1405可以是可重构体系结构的人工智能处理器。这里,可重构体系结构是指,如果某一人工智能处理器能够利用可重用的硬件资源,根据不同的应用需求,灵活的改变自身的体系结构,以便为每个特定的应用需求提供与之相匹配的体系结构,那么这一人工智能处理器就称为可重构的计算系统,其体系结构称为可重构的体系结构。
应当理解,执行设备仅为本申请实施例提供的一个例子,并且,执行设备可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本申请实施例所提供的神经网络模型的处理方法、以及相关设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (19)
1.一种神经网络模型的处理方法,其特征在于,包括:
获取神经网络模型的运算流程,所述运算流程由至少一个第一类型的算子和多个第二类型的算子表示,所述运算流程中,所述第一类型的算子包括边界标识,所述第一类型的算子的计算逻辑通过一组第二类型的算子表示,对于任意一个所述第一类型的算子,所述任意一个所述第一类型的算子所包括的所述第二类型的算子的范围由所述任意一个所述第一类型的算子中的边界标识指示;
根据所述运算流程得到所述神经网络模型的第一计算图。
2.根据权利要求1所述的处理方法,其特征在于,所述第一计算图包括主图和子图,所述根据所述运算流程确定所述神经网络模型的第一计算图,包括:
根据所述运算流程确定所述神经网络模型的主图和子图,所述主图中的第一类型的算子由所述边界标识指示,所述主图中的第二类型的算子由所述第二类型的算子的名称指示,所述主图用于输出所述运算流程的结果,所述子图包括所述任意一个所述第一类型的算子所包括的所述第二类型的算子的名称,所述子图用于输出一个所述第一类型的算子的结果,一个所述子图表示一个所述第一类型的算子的计算逻辑。
3.根据权利要求1或2所述的处理方法,其特征在于,所述方法还包括:
以所述第一类型的算子为处理粒度对所述第一计算图进行优化处理,以得到第二计算图。
4.根据权利要求3所述的处理方法,其特征在于,所述第一类型的算子包括第三算子和第四算子,所述第三算子和所述第四算子包括相同的计算逻辑,所述以所述第一类型的算子为处理粒度对所述第一计算图进行优化处理,包括:
融合所述第三算子对应的子图以及所述第四算子对应的子图,以得到融合子图,所述第二计算图包括所述融合子图。
5.根据权利要求3或4所述的处理方法,其特征在于,所述第一类型的算子包括第五算子和第六算子,所述第五算子的中间计算结果与所述第六算子的中间计算结果相同,所述以所述第一类型的算子为处理粒度对所述第一计算图进行优化处理,包括:
将所述第五算子的中间计算结果作为所述第六算子的入参。
6.根据权利要求4或5所述的处理方法,其特征在于,所述第三算子为正向算子,所述第四算子为与所述第三算子对应的反向算子,或者所述第四算子为正向算子,所述第三算子为与所述第四算子对应的反向算子。
7.根据权利要求1至6任一项所述的处理方法,其特征在于,所述方法还包括:
根据所述第二类型的算子的第一中间表示IR以及所述第一类型的算子的计算逻辑确定所述第一类型的算子的第二IR;
根据所述第二IR确定所述第一类型的算子对应的一组核函数kernel。
8.根据权利要求1至7任一项所述的处理方法,其特征在于,所述运算流程的输入是张量数据,所述张量数据用于描述以下至少一种场景的数据的特征,所述场景包括语音识别,计算机视觉CV、视频处理、图像识别以及自然语言处理NPL。
9.一种神经网络模型的处理装置,其特征在于,包括:
编程接口模块,用于获取神经网络模型的运算流程,所述运算流程由至少一个第一类型的算子和多个第二类型的算子表示,所述运算流程中,所述第一类型的算子包括边界标识,所述第一类型的算子的计算逻辑通过一组第二类型的算子表示,对于任意一个所述第一类型的算子,所述任意一个所述第一类型的算子所包括的所述第二类型的算子的范围由所述任意一个所述第一类型的算子中的边界标识指示;
计算图处理模块,用于根据所述编程接口模块获取到的所述运算流程得到所述神经网络模型的第一计算图。
10.根据权利要求9所述的处理装置,其特征在于,所述第一计算图包括主图和子图,所述计算图处理模块,具体用于:
根据所述运算流程确定所述神经网络模型的主图和子图,所述主图中的第一类型的算子由所述边界标识指示,所述主图中的第二类型的算子由所述第二类型的算子的名称指示,所述主图用于输出所述运算流程的结果,所述子图包括所述任意一个所述第一类型的算子所包括的所述第二类型的算子的名称,所述子图用于输出一个所述第一类型的算子的结果,一个所述子图表示一个所述第一类型的算子的计算逻辑。
11.根据权利要求9或10所述的处理装置,其特征在于,所述计算图处理模块,还用于:
以所述第一类型的算子为处理粒度对第一计算图进行优化处理,以得到第二计算图。
12.根据权利要求11所述的处理装置,其特征在于,所述第一类型的算子包括第三算子和第四算子,所述第三算子和所述第四算子包括相同的计算逻辑,所述计算图处理模块,具体用于:
融合所述第三算子对应的子图以及所述第四算子对应的子图,以得到融合子图,所述第二计算图包括所述融合子图。
13.根据权利要求9或10所述的处理装置,其特征在于,所述第一类型的算子包括第五算子和第六算子,所述第五算子的中间计算结果与所述第六算子的中间计算结果相同,所述计算图处理模块,具体用于:
将所述第五算子的中间计算结果作为所述第六算子的入参。
14.根据权利要求10或11所述的处理装置,其特征在于,所述第三算子为正向算子,所述第四算子为与所述第三算子对应的反向算子,或者所述第四算子为正向算子,所述第三算子为与所述第四算子对应的反向算子。
15.根据权利要求9至14任一项所述的处理装置,其特征在于,所述装置还包括算子编译模块以及kernel模块,
算子编译模块,用于根据所述第二类型的算子的第一中间表示IR以及所述第一类型的算子的计算逻辑确定所述第一类型的算子的第二IR;
所述kernel模块,用于根据所述算子编译模块确定的所述第二IR确定所述第一类型的算子对应的一组核函数kernel。
16.根据权利要求9至15任一项所述的处理装置,其特征在于,所述运算流程的输入是张量数据,所述张量数据用于描述以下至少一种场景的数据的特征,所述场景包括语音识别,计算机视觉CV、视频处理、图像识别以及自然语言处理NPL。
17.一种神经网络模型的处理装置,其特征在于,包括:
存储器,用于存储计算机可读指令;
还包括,与所述存储器耦合的处理器,用于执行所述存储器中的计算机可读指令从而执行如权利要求1至8任一项所描述的方法。
18.一种计算机可读存储介质,其特征在于,当指令在计算机装置上运行时,使得所述计算机装置执行如权利要求1至8任一项所描述的方法。
19.一种计算机程序产品,当在计算机上运行时,使得计算机可以执行如权利要求1至8任一所描述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232059.9A CN113449858B (zh) | 2020-03-27 | 2020-03-27 | 一种神经网络模型的处理方法以及相关设备 |
PCT/CN2021/082967 WO2021190597A1 (zh) | 2020-03-27 | 2021-03-25 | 一种神经网络模型的处理方法以及相关设备 |
EP21774382.2A EP4116885A4 (en) | 2020-03-27 | 2021-03-25 | PROCESSING METHOD FOR A NEURAL NETWORK MODEL AND RELATED DEVICE |
US17/953,063 US20230008597A1 (en) | 2020-03-27 | 2022-09-26 | Neural network model processing method and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232059.9A CN113449858B (zh) | 2020-03-27 | 2020-03-27 | 一种神经网络模型的处理方法以及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113449858A true CN113449858A (zh) | 2021-09-28 |
CN113449858B CN113449858B (zh) | 2024-08-06 |
Family
ID=77808223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232059.9A Active CN113449858B (zh) | 2020-03-27 | 2020-03-27 | 一种神经网络模型的处理方法以及相关设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230008597A1 (zh) |
EP (1) | EP4116885A4 (zh) |
CN (1) | CN113449858B (zh) |
WO (1) | WO2021190597A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703741A (zh) * | 2021-10-29 | 2021-11-26 | 深圳思谋信息科技有限公司 | 神经网络编译器配置方法、装置、计算机设备和存储介质 |
CN114003306A (zh) * | 2021-10-27 | 2022-02-01 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
CN114186678A (zh) * | 2021-12-10 | 2022-03-15 | 北京百度网讯科技有限公司 | 基于深度学习的硬件适配装置和方法 |
CN114911465A (zh) * | 2022-05-19 | 2022-08-16 | 北京百度网讯科技有限公司 | 算子的生成方法、装置、设备以及存储介质 |
CN115034402A (zh) * | 2022-06-20 | 2022-09-09 | 寒武纪行歌(南京)科技有限公司 | 模型推理性能的优化方法、装置及相关产品 |
CN116561075A (zh) * | 2023-05-15 | 2023-08-08 | 北京百度网讯科技有限公司 | 动态链接库文件的生成方法、算子的调用方法及装置 |
WO2024031968A1 (zh) * | 2022-08-11 | 2024-02-15 | 华为云计算技术有限公司 | 一种因子计算方法、装置及计算设备 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168114A (zh) * | 2022-02-10 | 2022-03-11 | 中国电子科技集团公司第十五研究所 | 一种算子注册方法、装置以及设备 |
CN114691148B (zh) * | 2022-04-11 | 2024-07-19 | 北京百度网讯科技有限公司 | 模型推理加速方法、装置、电子设备及存储介质 |
CN114970847A (zh) * | 2022-05-09 | 2022-08-30 | 清华大学 | 数据处理方法、装置和存储介质 |
CN114841326B (zh) * | 2022-05-19 | 2024-01-12 | 北京百度网讯科技有限公司 | 深度学习框架的算子处理方法、装置、设备和存储介质 |
CN116560666B (zh) * | 2023-07-10 | 2023-09-22 | 上海燧原科技有限公司 | 基于多层级代码生成的ai前端统一计算方法、装置及介质 |
CN116756589B (zh) * | 2023-08-16 | 2023-11-17 | 北京壁仞科技开发有限公司 | 匹配算子的方法、计算设备和计算机可读存储介质 |
CN118504421B (zh) * | 2024-07-17 | 2024-09-10 | 中国空气动力研究与发展中心超高速空气动力研究所 | 一种融合算子学习与卷积神经网络的流场预测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740751A (zh) * | 2018-12-24 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络模型的架构融合方法及相关装置 |
US20190286972A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
CN110659728A (zh) * | 2019-09-24 | 2020-01-07 | 上海寒武纪信息科技有限公司 | 神经网络优化方法、装置、计算机设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321999B (zh) * | 2018-03-30 | 2021-10-01 | 赛灵思电子科技(北京)有限公司 | 神经网络计算图优化方法 |
CN109543825B (zh) * | 2018-11-30 | 2020-12-01 | 安徽寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
-
2020
- 2020-03-27 CN CN202010232059.9A patent/CN113449858B/zh active Active
-
2021
- 2021-03-25 WO PCT/CN2021/082967 patent/WO2021190597A1/zh unknown
- 2021-03-25 EP EP21774382.2A patent/EP4116885A4/en active Pending
-
2022
- 2022-09-26 US US17/953,063 patent/US20230008597A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190286972A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
CN109740751A (zh) * | 2018-12-24 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络模型的架构融合方法及相关装置 |
CN110659728A (zh) * | 2019-09-24 | 2020-01-07 | 上海寒武纪信息科技有限公司 | 神经网络优化方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
JITTOR开发团队: "元算子:通过元算子实现自己的卷积层", HTTPS://CG.CS.TSINGHUA.EDU.CN/JITTOR/TUTORIAL/2020-3-17-09-50-META_OP/, pages 1 - 4 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003306A (zh) * | 2021-10-27 | 2022-02-01 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
CN114003306B (zh) * | 2021-10-27 | 2024-03-15 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
CN113703741A (zh) * | 2021-10-29 | 2021-11-26 | 深圳思谋信息科技有限公司 | 神经网络编译器配置方法、装置、计算机设备和存储介质 |
CN114186678A (zh) * | 2021-12-10 | 2022-03-15 | 北京百度网讯科技有限公司 | 基于深度学习的硬件适配装置和方法 |
CN114911465A (zh) * | 2022-05-19 | 2022-08-16 | 北京百度网讯科技有限公司 | 算子的生成方法、装置、设备以及存储介质 |
CN114911465B (zh) * | 2022-05-19 | 2023-01-10 | 北京百度网讯科技有限公司 | 算子的生成方法、装置、设备以及存储介质 |
CN115034402A (zh) * | 2022-06-20 | 2022-09-09 | 寒武纪行歌(南京)科技有限公司 | 模型推理性能的优化方法、装置及相关产品 |
WO2024031968A1 (zh) * | 2022-08-11 | 2024-02-15 | 华为云计算技术有限公司 | 一种因子计算方法、装置及计算设备 |
CN116561075A (zh) * | 2023-05-15 | 2023-08-08 | 北京百度网讯科技有限公司 | 动态链接库文件的生成方法、算子的调用方法及装置 |
CN116561075B (zh) * | 2023-05-15 | 2024-01-30 | 北京百度网讯科技有限公司 | 动态链接库文件的生成方法、算子的调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021190597A1 (zh) | 2021-09-30 |
US20230008597A1 (en) | 2023-01-12 |
EP4116885A4 (en) | 2023-06-14 |
CN113449858B (zh) | 2024-08-06 |
EP4116885A1 (en) | 2023-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113449858B (zh) | 一种神经网络模型的处理方法以及相关设备 | |
US11526673B2 (en) | Named entity disambiguation using entity distance in a knowledge graph | |
Huang et al. | Gamepad: A learning environment for theorem proving | |
US10210452B2 (en) | High level neuromorphic network description apparatus and methods | |
US9117176B2 (en) | Round-trip engineering apparatus and methods for neural networks | |
US8712939B2 (en) | Tag-based apparatus and methods for neural networks | |
US20210287069A1 (en) | Name matching engine boosted by machine learning | |
US11941494B2 (en) | Notebook interface for authoring enterprise machine learning models | |
WO2013138778A1 (en) | Tag-based apparatus and methods for neural networks | |
CN116664719B (zh) | 一种图像重绘模型训练方法、图像重绘方法及装置 | |
Lin et al. | Deep structured scene parsing by learning with image descriptions | |
CN111753983A (zh) | 神经网络模型的定制化方法、系统、设备和存储介质 | |
US20200257982A1 (en) | Categorical feature encoding for property graphs by vertex proximity | |
CN110309269A (zh) | 应答处理方法及其系统、计算机系统及计算机可读介质 | |
WO2021120177A1 (zh) | 编译神经网络模型的方法和装置 | |
US20220335209A1 (en) | Systems, apparatus, articles of manufacture, and methods to generate digitized handwriting with user style adaptations | |
Auffarth | Artificial Intelligence with Python Cookbook: Proven recipes for applying AI algorithms and deep learning techniques using TensorFlow 2. x and PyTorch 1.6 | |
CN112420125A (zh) | 分子属性预测方法、装置、智能设备和终端 | |
Sikka | Elements of Deep Learning for Computer Vision: Explore Deep Neural Network Architectures, PyTorch, Object Detection Algorithms, and Computer Vision Applications for Python Coders (English Edition) | |
CN113392220A (zh) | 一种知识图谱生成方法、装置、计算机设备及存储介质 | |
CN111753554A (zh) | 一种意图知识库的生成方法及装置 | |
KR20210143464A (ko) | 데이터 분석 장치 및 그것의 데이터 분석 방법 | |
Tiwari et al. | NCS based ultra low power optimized machine learning techniques for image classification | |
CN115796228A (zh) | 算子融合方法、装置、设备以及存储介质 | |
CN116090538A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |