CN111667060A - 深度学习算法的编译方法、装置及相关产品 - Google Patents

深度学习算法的编译方法、装置及相关产品 Download PDF

Info

Publication number
CN111667060A
CN111667060A CN201910175932.2A CN201910175932A CN111667060A CN 111667060 A CN111667060 A CN 111667060A CN 201910175932 A CN201910175932 A CN 201910175932A CN 111667060 A CN111667060 A CN 111667060A
Authority
CN
China
Prior art keywords
deep learning
model data
learning algorithm
data
hardware
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
Application number
CN201910175932.2A
Other languages
English (en)
Other versions
CN111667060B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201910175932.2A priority Critical patent/CN111667060B/zh
Priority to PCT/CN2020/080640 priority patent/WO2020173503A1/zh
Publication of CN111667060A publication Critical patent/CN111667060A/zh
Application granted granted Critical
Publication of CN111667060B publication Critical patent/CN111667060B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

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)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Devices For Executing Special Programs (AREA)
  • Image Analysis (AREA)

Abstract

本公开涉及深度学习算法的编译方法、装置及相关产品,所述产品包括控制器单元,所述控制器单元包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

深度学习算法的编译方法、装置及相关产品
技术领域
本公开涉及深度学习领域,尤其涉及一种深度学习算法的编译方法、装置及相关产品。
背景技术
在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。
发明内容
有鉴于此,本公开提出了一种深度学习算法的编译方法、装置及相关产品,能够提升深度学习算法针对相应硬件平台的性能优化效果。
根据本公开的第一方面,提供了一种深度学习算法的编译方法,所述方法包括:根据深度学习算法的原始计算图和原始模型数据,进行面向所述深度学习算法的协同处理,得到第一计算图和第一模型数据;根据所述第一计算图,生成硬件指令和数据描述符;根据所述数据描述符,对所述第一模型数据进行面向硬件平台的处理,得到第二模型数据;根据所述硬件指令和所述第二模型数据,得到所述深度学习算法的可执行文件。
在一种可能的实现方式中,根据深度学习算法的原始计算图和原始模型数据,进行面向所述深度学习算法的协同处理,得到第一计算图和第一模型数据,包括:读取所述原始计算图和所述原始模型数据;识别所述原始计算图内的连续线性变换操作节点;通过线性变换和常量折叠,对所述连续线性变换操作节点进行处理,得到第一计算图和第一模型数据。
在一种可能的实现方式中,所述连续线性变换操作节点包括:至少2个连续的线性变换操作节点。
在一种可能的实现方式中,通过线性变换和常量折叠,对所述连续线性变换操作节点进行处理,得到第一计算图和第一模型数据,包括:将所述原始计算图内的连续线性变换操作节点进行线性变换和常量折叠,将所述连续线性变换操作节点合并,得到第一计算图;将所述连续线性变换操作节点对应的模型数据合并,得到第一模型数据。
在一种可能的实现方式中,根据所述第一计算图,生成硬件指令和数据描述符,包括:根据代价模型对所述第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符。
在一种可能的实现方式中,根据代价模型对所述第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符,包括:通过代价模型对所述第一计算图进行建模,生成搜索空间和目标函数;通过启发式搜索策略,在所述搜索空间内进行搜索,当所述目标函数达到阈值时,生成面向硬件平台的硬件指令和数据描述符。
在一种可能的实现方式中,所述启发式搜索策略包括:提高硬件平台内片上缓存的利用率的搜索策略;或者,在保证硬件平台内运算单元和访问单元的利用率的基础上,减小运算粒度和访存粒度的搜索策略。
在一种可能的实现方式中,根据所述数据描述符,对所述第一模型数据进行面向硬件平台的处理,得到第二模型数据,包括:根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行数据对齐;或者,根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行维度变换;或者,根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行精度选择。
在一种可能的实现方式中,根据所述硬件指令和所述第二模型数据,得到所述深度学习算法的可执行文件,包括:将所述硬件指令和所述第二模型数据打包,得到所述深度学习算法的可执行文件。
根据本公开的第二方面,提供了一种深度学习算法的编译装置,包括:协同处理单元,用于根据深度学习算法的原始计算图和原始模型数据,进行面向所述深度学习算法的协同处理,得到第一计算图和第一模型数据;硬件指令生成单元,用于根据所述第一计算图,生成硬件指令和数据描述符;模型数据处理单元,用于根据所述数据描述符,对所述第一模型数据进行面向硬件平台的处理,得到第二模型数据;可执行文件生成单元,用于根据所述硬件指令和所述第二模型数据,得到所述深度学习算法的可执行文件。
在一种可能的实现方式中,所述协同处理单元用于:读取所述原始计算图和所述原始模型数据;识别所述原始计算图内的连续线性变换操作节点;通过线性变换和常量折叠,对所述连续线性变换操作节点进行处理,得到第一计算图和第一模型数据。
在一种可能的实现方式中,所述连续线性变换操作节点包括:至少2个连续的线性变换操作节点。
在一种可能的实现方式中,所述协同处理单元进一步用于:将所述原始计算图内的连续线性变换操作节点进行线性变换和常量折叠,将所述连续线性变换操作节点合并,得到第一计算图;将所述连续线性变换操作节点对应的模型数据合并,得到第一模型数据。
在一种可能的实现方式中,所述硬件指令生成单元用于:根据代价模型对所述第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符。
在一种可能的实现方式中,所述硬件指令生成单元进一步用于:通过代价模型对所述第一计算图进行建模,生成搜索空间和目标函数;通过启发式搜索策略,在所述搜索空间内进行搜索,当所述目标函数达到阈值时,生成面向硬件平台的硬件指令和数据描述符。
在一种可能的实现方式中,所述启发式搜索策略包括:提高硬件平台内片上缓存的利用率的搜索策略;或者,在保证硬件平台内运算单元和访问单元的利用率的基础上,减小运算粒度和访存粒度的搜索策略。
在一种可能的实现方式中,所述模型数据处理单元用于:根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行数据对齐;或者,根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行维度变换;或者,根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行精度选择。
在一种可能的实现方式中,所述可执行文件生成单元用于:将所述硬件指令和所述第二模型数据打包,得到所述深度学习算法的可执行文件。
根据本公开的第三方面,提供了一种深度学习运算装置,所述深度学习运算装置包括如上述第二方面所述的深度学习算法的编译装置,所述深度学习运算装置用于完成设定的深度学习运算。
根据本公开的第四方面,提供了一种组合运算装置,所述组合运算装置包括如上述第三方面所述的深度学习运算装置,通用互联接口和其他处理装置;所述深度学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的第五方面,提供了一种深度学习芯片,所述深度学习芯片包括:如上述第二方面所述的深度学习算法的编译装置;或者,如上述第三方面所述的深度学习运算装置;或者,如上述第四方面所述的组合运算装置。
根据本公开的第六方面,提供了一种电子设备,所述电子设备包括:如上述第二方面所述的深度学习算法的编译装置;或者,如上述第三方面所述的深度学习运算装置;或者,如上述第四方面所述的组合运算装置;或者,如上述第五方面所述的深度学习芯片。
通过对深度学习算法的原始计算图和原始模型数据,依次经过面向深度学习算法的协同处理和面向硬件平台的处理,根据本公开的各方面实施例的深度学习算法的编译方法、装置及相关产品,能够将根据深度学习算法生成的程序的运算部分和数据部分均进行优化,从而有效的提升深度学习算法针对相应硬件平台的性能优化效果,继而提升深度学习处理器的处理性能。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的深度学习算法的编译方法的流程图。
图2示出根据本公开一实施例的深度学习算法的编译方法的流程图。
图3示出根据本公开一实施例的深度学习算法的编译方法的流程图。
图4示出根据本公开一实施例的图像分类网络内包含子结构的结构示意图。
图5示出根据本公开一实施例的深度学习算法的编译方法的流程图。
图6示出根据本公开一实施例的深度学习算法的编译装置的框图。
图7示出根据本公开一应用示例的示意图。
图8示出根据本公开一应用示例的示意图。
图9示出根据本公开一应用示例的示意图。
图10示出根据本公开一应用示例的示意图。
图11示出根据本公开一实施例的组合处理装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
随着大数据时代的到来,深度学习算法被广泛地应用,因此深度学习处理器也开始蓬勃发展,逐渐成为处理深度学习应用的主要载体。
深度学习算法和硬件的快速发展给编译器的设计带来了巨大的挑战,其中之一,就体现在如何通过编译器,来提升深度学习处理器的处理性能,即针对特定的硬件平台后端,如何把深度学习算法的性能,如延时、吞吐率等优化到最好。
目前已有一些相关工作针对上述问题提出了解决方案。比如,目前存在的一种自动化、端到端的编译优化框架(TVM)。为了优化程序的性能,TVM设计了面向算法的高级优化和面向硬件的低级优化两层优化架构,并采用了操作融合、访存延迟隐藏等关键技术,TVM通过中间表示来支持不同的硬件后端,同时在语言层面支持用户自定义硬件优化原语,从而解决通用性问题。又比如,目前还存在一种领域专用语言和编译框架(TC,Tensorcomprehensions)。为了优化程序的性能,TC在总体设计上采用了多面体编译框架,采用了优化循环结构,并在其中集成了如存储层次提升、映射到寄存器、向量化、并行化等面向硬件结构的优化技术。更多的相关工作还有如深度学习虚拟机(DLVM,Deep LearningVirtual Machine)以及相关编译优化框架(Latte)等。
然而,上述相关工作在考虑进行性能优化时,更侧重于对程序的运算部分进行优化,对数据的优化非常有限,比如,TVM只在高级优化层面对数据布局进行转换,这对深度学习处理器来说是不够的,因此,上述相关的编译方式在性能优化效果方面均存在一定局限。
为了进一步提升深度学习算法针对相应硬件平台的性能优化效果,本实施例公开了一种深度学习算法的编译方法的应用示例,在本示例中,在根据深度学习算法的原始计算图和原始模型数据进行编译的过程中,可以首先针对原始计算图和原始模型数据,采用线性变换和常量折叠等技术手段,进行与硬件无关的协同优化,这样可以得到进行了运算优化的第一计算图和进行了数据优化的第一模型数据。在得到了优化后的第一计算图后,可以将第一计算图通过代价模型(cost model),来生成搜索空间和目标函数,然后可以通过启发式搜索策略,在生成的搜索空间内进行搜索,并在达到目标函数的阈值后停止搜索,根据搜索结果,可以生成相应的目标硬件平台的指令,同时可以输出数据描述符。在输出了数据描述符后,可以根据数据描述符,对第一模型数据进行面向目标硬件平台的二次优化,具体的二次优化过程可以有针对于访存的局部性优化、数据对齐以及低精度数据优化等,在进行了二次优化后,可以生成相应的第二模型数据。得到第二模型数据后,可以将其与之前生成的目标硬件平台的指令进行打包,来得到最终的深度学习算法的可执行文件。通过本应用示例的过程,得到的深度学习算法的可执行文件,在应用于相应的目标硬件平台时,可以有效的提升相应硬件的性能,实现针对运算和数据的协同优化。
图1示出根据本公开一实施例的深度学习算法的编译方法的流程图。如图所示,该方法可以包括:
步骤S11,根据深度学习算法的原始计算图和原始模型数据,进行面向深度学习算法的协同处理,得到第一计算图和第一模型数据。
步骤S12,根据第一计算图,生成硬件指令和数据描述符。
步骤S13,根据数据描述符,对第一模型数据进行面向硬件平台的处理,得到第二模型数据。
步骤S14,根据硬件指令和第二模型数据,得到深度学习算法的可执行文件。
上述步骤中,硬件平台可以为执行深度学习算法的硬件设备,具体实现形式不受限定,可以是处理装置、机器人、电脑等。在一个示例中,硬件平台可以是深度学习处理器。由于硬件平台的实现形式不受限定,与之相对的,硬件指令的形式也不受限定,任何硬件平台可读的指令均可以作为硬件指令,在一个示例中,硬件指令可以是代码,代码的形式和应用平台均可根据实际情况进行选择,在此同样不做限定,在一个示例中,硬件指令可以是深度学习处理器可读的代码。
深度学习算法的主体是神经网络,神经网络可以由一系列的基本操作按一定的拓扑结构连接组成,每个基本操作可以包含一个或多个输入、输出神经元,同时,神经元可以在操作之间共享。因此,在一种可能的实现方式中,可以将深度学习算法的执行过程表示为计算图。计算图中可以包括节点和连接节点的边,节点的数量和节点的边的数量均不受限定,根据深度学习算法的具体过程来确定。节点可以用于表示深度学习过程中执行的操作,例如卷积运算操作或批量标准化操作等。节点间的边可以用于表示神经元,可以用于表明节点间数据的走向。对于深度学习来说,经过训练的模型数据,也是深度学习所在神经网络的重要组成部分,例如卷积操作的权值等。将深度学习算法的输入数据输入计算图的起始节点,根据各节点间的边经过计算图中的节点完成运算,计算图可以输出深度学习的最终结果。
步骤S11的具体实现过程不受限定,由于深度学习算法在推理过程中可能存在大量的常量数据,如权值、偏置等,因此对于原始计算图和原始模型数据来说,可以通过一定的方式对原始计算图中包含的运算过程进行提前优化,由于可以对原始计算图内的运算进行提前优化,与之相对的模型数据也可以随之得到相应的提前优化或简化,因此,任何可以将原始计算图进行优化的手段,均可以作为面向深度学习算法的协同处理的具体实现形式,随着协同处理的具体实现形式的不同,步骤S11的过程也发生相应的变化。
上述内容中已表明,计算图中的节点可以用于表示深度学习过程中执行的操作,深度学习算法中常见的操作可以有卷积、全连接、激活、池化、批规范化、缩放等。这些操作根据其具体的实现形式,可以被分为线性变换操作和非线性变化操作这两类,其中,所有的线性变换操作均可以表示成向量或矩阵进行乘加的形式,因此,线性变换操作的通用表达形式可以为:
Y=X*W+B (1)
其中,X和Y为变量,W和B为模型数据常量。
任何线性变换操作均可以表示成上述的通用表达形式,因此,不可以被表达为上述通用表达形式的操作,为非线性变换操作。在一个示例中,上述列举的深度学习算法的常见操作内,卷积、全连接、批规范化、缩放操作是线性变换操作,池化、激活是非线性变换操作。在一个示例中,将全连接操作通过上述通用表达形式进行表达时,X和Y分别表示全连接的输入神经元矩阵和输出神经元矩阵,W表示权值矩阵,B表示偏置矩阵。其他的线性变换操作通过通用表达形式的具体表达方式,在此不再赘述。
对于线性变换操作来说,如果存在两个连续的线性变换操作,分别为:
Y1=X1*W1+B1 (2)
Y2=Y1*W2+B2 (3)
由于线性变换操作满足分配律和结合律,且线性变换操作的通用表达形式内W和B均为常量,因此,线性变换操作(2)和线性变换操作(3)可以做如下的等价线性变换:
Y2=(X1*W1+B1)*W2+B2 (4)
Y2=X1*W1*W2+B1*W2+B2 (5)
W'=W1*W2,B'=B1*W2+B2 (6)
Y2=X1*W'+B' (7)
通过上述等价线性变换,原始的线性变换操作(2)和线性变换操作(3),可以通过线性变换优化手段(4)和(5),以及常量折叠优化手段(6),进行整体优化,最终简化为一步线性变换操作(7)。通过上述的线性变换优化手段和常量折叠优化手段进行优化,可以在减少运算量的同时,对模型数据进行了压缩,一方面可以减少模型数据的存储开销,另一方面可以减少运行时的访存量。
因此,在一种可能的实现方式中,面向深度学习算法的协同处理的具体实现形式,可以为线性变换和常量折叠。
图2示出根据本公开一实施例的深度学习算法的编译方法的流程图。如图所示,基于线性变换操作的特性,在一种可能的实现方式中,步骤S11可以包括:
步骤S111,读取原始计算图和原始模型数据。
步骤S112,识别原始计算图内的连续线性变换操作节点。
步骤S113,通过线性变换和常量折叠,对连续线性变换操作节点进行处理,得到第一计算图和第一模型数据。
通过上述内容可知,2个连续的线性变换操作可以通过线性变换和常量折叠的方式,简化为1个线性变换操作,当存在3个连续的线性变换操作时,可以将前2个连续的线性变换操作通过线性变换和常量折叠的方式简化为1个线性变换操作,再将这个简化后的线性变换操作,与剩余的另一个线性变换操作,再次通过线性变换和常量折叠的方式,最终简化为1个线性变换操作,由此类推,当存在更多数量的连续的线性变换操作时,通过线性变换和常量折叠的方式,可以将这些线性变换操作进行合并,简化为至少1个线性变换操作。
由于每个线性变换操作在计算图中均对应一个相应的线性变换操作节点,因此,在一种可能的实现方式中,连续线性变换操作节点可以包括:至少2个连续的线性变换操作节点。这样连续线性变换操作节点可以对应至少2个连续的线性变换操作,连续线性变换操作节点的数量不受限定,可以根据计算图的实际情况进行确定。
图3示出根据本公开一实施例的深度学习算法的编译方法的流程图。如图所示,基于计算图中线性变换操作和节点的对应关系,在一种可能的实现方式中,步骤S113的具体过程可以包括:
步骤S1131,将原始计算图内的连续线性变换操作节点进行线性变换和常量折叠,将连续线性变换操作节点合并,得到第一计算图。
步骤S1132,将连续线性变换操作节点对应的模型数据合并,得到第一模型数据。
在一个示例中,原始计算图内的连续线性变换操作节点可以为依次连接的节点1、节点2、节点3和节点4,对应的模型数据组合可以为模型数据组1,通过线性变换和常量折叠,可以将节点1、节点2、节点3和节点4合并为1个,最终得到节点5,在这一过程中,模型数据组1由于发生了常量折叠,因此内部包含的模型数据可能发生了合并,最终得到了一份合并后的模型数据组,可以称为模型数据组2;在一个示例中,原始计算图内的连续线性变换操作节点可以为依次连接的节点1、节点2、节点3和节点4,对应的模型数据组合可以为模型数据组1,通过线性变换和常量折叠,可以将节点1、节点2和节点3合并为1个节点6,而不将节点6和节点4进行合并,此时可以最终得到节点4和节点6,在这一过程中,由于节点1、节点2和节点3发生了常量折叠,因此模型数据组1内与之对应的模型数据组合可能发生了合并,最终得到了一份合并后的模型数据组,可以称为模型数据组3,而原有的节点4对应的模型数据由于未发生常量折叠,因此将模型数据组3和节点4对应的模型数据进行组合,则可以得到与当前整体线性变换操作对应的模型数据组4。由上述两个示例类推,在原始计算图内的连续线性变换操作节点的数量发生改变时,步骤S113的具体过程也可以随之有相应的变化,在此不再一一列举。在一个示例中,深度学习算法对应的神经网络可以是经典图像分类网络Resnet,图4示出根据本公开一实施例的图像分类网络内包含子结构的结构示意图,从图中可以看出,在Resnet这一网络中,可以包含有卷积+批规范化+缩放的子结构,由于卷积、批规范化和缩放均为线性变换操作,因此在Resnet这一网络对应的计算图中,可以将这一子结构所对应的3个操作节点,通过如上述内容中线性变换操作(2)~线性变换操作(7)的方式,进行线性变换和常量折叠,最终合并为1个操作节点,并将这3个操作节点中涉及到的模型数据也随之合并。
通过上述任一形式的过程,可以对深度学习算法的运算过程进行优化,得到面向深度学习算法进行协同处理后的第一计算图和第一模型数据,从而可以减小运行这一深度学习算法时的访存量,也可以减少模型数据在存储时的存储开销。
基于第一计算图和第一模型数据,可以通过步骤S12,生成硬件指令和数据描述符。步骤S12的具体实现形式不受限定,任何可以基于计算图来生成硬件指令的过程均可以作为步骤S12的实现形式。
步骤S12的主要目的在于基于步骤S11优化后的第一计算图,生成与之相应的硬件平台可读的硬件指令。为了优化硬件平台的访存性能,往往会在硬件平台中靠近计算位置的部分设计片上缓存(on-chip memory),在一个示例中,这一部分可以是靠近深度学习处理器计算单元的位置。在对硬件平台进行访问时,访问片上缓存的速度,往往比访问其他位置的速度快,在一个示例中,其他位置可以是片外双倍数据速率同步动态随机存取存储器(DDR,Double Data Rate Synchronous Dynamic Random Access Memory)。受片上缓存位置和功能的影响,片上缓存的容量有限,因此对片上缓存的利用率,可以直接影响深度学习算法针对相应硬件平台的性能优化效果。然而,通过步骤S11中面向深度学习算法的协同处理方法,可以实现对于运算的优化,却无法提高片上缓存的利用率。在一种可能的实现方式中,可以通过优化生成硬件指令的过程,来提高片上缓存的利用率,继而提升深度学习算法针对相应硬件平台的性能优化效果。因此,在一种可能的实现方式中,步骤S12可以包括:根据代价模型对第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符。
根据代价模型对第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符的具体过程可以根据实际情况灵活选择。图5示出根据本公开一实施例的深度学习算法的编译方法的流程图,如图所示,在一种可能的实现方式中,步骤S12可以包括:
步骤S121,通过代价模型对第一计算图进行建模,生成搜索空间和目标函数。
步骤S122,通过启发式搜索策略,在搜索空间内进行搜索,当目标函数达到阈值时,生成面向硬件平台的硬件指令和数据描述符。
基于计算图生成硬件指令的方式可以存在多种实现形式,如可以将计算图作为输入,通过可以生成硬件指令的模型,并在模型的输出结果中进行寻优,得到最终的面向硬件平台的硬件指令。具体应用哪个可以生成硬件指令的模型,并不受限定,在一种可能的实现方式中,可以通过代价模型(cost model),来对第一计算图进行建模。代价模型在进行建模的过程中,可以给出输出的硬件指令对应的估计运行时间,这一估计运行时间考虑的核心因素可以是访存时间、运算时间以及二者的覆盖率,增大覆盖率可以隐藏访存和计算的延时,在增大覆盖率的基础下,尽量减小访存和运算的时间,可以提升硬件指令在硬件平台中运行时的性能,即提升深度学习算法针对相应硬件平台的性能优化效果。因此,在将第一计算图通过代价模型建模后,生成的硬件指令实际上是多种可能的硬件指令所组合而成的搜索空间,搜索空间内包含的硬件指令,其内容可以指示出硬件平台在操作过程中的多种选择方式:在一个示例中,硬件指令可以指示硬件平台将一块完整的数据分成几次加载,放在片上缓存;在一个示例中,硬件指令可以指示硬件平台将一块完整的数据分成几次加载,并在片上缓存和片外DDR之间根据需求进行换入换出;在一个示例中,硬件指令可以指示硬件平台在进行一次向量运算处理时,处理的数据量需要多大。由于搜索空间内存在多种硬件指令,具体最终应用哪些应用指令,需要通过对搜索空间内进行搜索,寻找其中最优的指令组合,来作为最终得到的硬件指令。
从上述内容中可知,代价模型可以给出硬件指令的运行估计时间,因此,在将第一计算图通过代价模型后,还可以生成相应的目标函数,目标函数的具体形式在此不做限定,可以根据实际情况进行灵活设定,此目标函数可以表明在搜索空间内进行搜索,最终生成的硬件指令在运行时耗时的多少,因此,在目标函数达到阈值时,表明生成的硬件指令达到了运行时间的要求,继而表明生成的硬件指令可以提升硬件指令在硬件平台中运行时的性能。由于目标函数的具体实现形式不受限定,因此与之相对的目标函数的阈值同样不受限定,可以根据实际情况进行灵活设置。
如何在生成的搜索空间内进行搜索同样也不受限定,在一种可能的实现方式中,可以直接通过暴力搜索的方式来进行搜索,但是这样的搜索过程耗时过长,可能会延长编译过程的耗时,继而可能降低深度学习算法针对相应硬件平台的性能优化效果。在一种可能的实现方式中,可以通过启发式搜索策略来在搜索空间内进行搜索。
启发式搜索策略的目的在于提高在搜索空间内搜索的效率,因此并不限定于某种具体的搜索方式,可以根据实际情况进行灵活选择。在一种可能的实现方式中,启发式搜索策略可以包括:提高硬件平台内片上缓存的利用率的搜索策略;或者,在保证硬件平台内运算单元和访问单元的利用率的基础上,减小运算粒度和访存粒度的搜索策略。在一个示例中,启发式搜索策略的目的可以在于尽量将片上缓存用满,因此此时可以将搜索策略定为提高硬件平台内片上缓存的利用率的搜索策略;在一个示例中,启发式搜索策略的目的可以在于在保证硬件平台中运算单元和访存单元利用率的前提下,尽可能选择运算和访问粒度比较小的指令组合,从而提高计算和访存的覆盖率,因此此时可以将搜索策略定为在保证硬件平台内运算单元和访问单元的利用率的基础上,减小运算粒度和访存粒度的搜索策略;在一个示例中,启发式搜索策略也可以是上述两种策略的均衡策略,即使得上述两种策略达到综合最优情况下的搜索策略。
通过上述任一形式的搜索策略,可以在搜索空间内搜索后生成面向硬件平台的硬件指令,由于搜索空间内包含的硬件指令,其内容可以指示出硬件平台在操作过程中的多种选择方式,因此在搜索空间内进行搜索时,除了可以考虑上述硬件指令的运行性能以外,同样也可以考虑通过生成的硬件指令来指导硬件平台对于模型数据进行优化处理,来进一步提高硬件平台的运算访存速度和访存效率,因此,基于此种考虑,步骤S122在生成硬件指令的同时,同样可以生成数据描述符,用来指导如何对模型数据进行进一步优化。
基于步骤S12同时生成的数据描述符,可以对第一模型数据进行进一步优化,来得到第二模型数据,数据描述符具体如何对模型数据进行优化的实现形式不受限定,在一种可能的实现方式中,步骤S13可以包括:根据数据描述符,按照硬件平台内的运算要求,对第一模型数据进行数据对齐;或者,根据数据描述符,按照硬件平台内的运算要求,对第一模型数据进行维度变换;或者,根据数据描述符,按照硬件平台内的运算要求,对第一模型数据进行精度选择。
在一个示例中,硬件平台在根据硬件指令进行运算的过程中,可能会对数据的对齐有一定要求,如果这一过程在硬件平台内进行操作,则会大大降低硬件平台运行时的性能,因此,可以根据数据描述符,在编译过程中提前对待对齐的数据进行对齐,从而加快硬件平台工作时的访存速度,具体对齐的标准和方式在此不做限定,根据硬件平台的实际要求进行确定即可;在一个示例中,硬件平台在根据硬件指令进行运算的过程中,部分算法,如卷积算法,可能需要将数据解释成多为数组,而多维数组的排布顺序则会影响硬件平台内访存的跳转次数,从而影响硬件平台运行时的性能,因此,可以根据数据描述符,在编译过程中提前按照运算要求对模型数据进行维度变换,来提高访存局部性,从而尽量减少硬件平台的访存跳转,具体进行何种维度变换和变换的方式在此不做限定,根据硬件平台的实际要求进行确定即可;在一个示例中,由于不同的运算精度对应的运算速度不同,硬件平台可能支持的运算精度要求也不同,在一个示例中,硬件平台可能更加支持低精度运算,如果使用高精度运算,可能会降低硬件平台的运行速度,因此,可以根据数据描述符,在编译过程中提前根据硬件平台的精度要求,选择优选的模型数据精度,具体选择何种精度的数据再次不做限定,根据硬件平台的需求确定即可,在一个示例中,优选的精度可以是16比特量化精度,在一个示例中,优选的精度可以是8比特量化精度。
上述将第一模型数据通过处理优化成第二模型数据的过程,可以是上述三种方式的任一种方式,也可以是上述三种方式的任意组合形式,也可以包含更多有利于提升硬件平台速度的其他方式,在此不再列举。通过在编译过程中提前完成对模型数据的优化,可以大大提升硬件平台在运行时的性能,如提高访存速度和访存效率等。
基于上述过程,可以得到深度学习算法的可执行文件,这一可执行文件所包含的内容可以存在多种形式,在一种可能的实现方式中,步骤S14可以包括:将硬件指令和第二模型数据打包,得到深度学习算法的可执行文件。
在一个示例中,硬件指令可以是根据第一计算图生成的硬件指令,第二模型数据可以是原始模型数据分别经过面向深度学习算法的协同处理,和面向硬件平台的处理所得到的模型数据,即最终得到的深度学习算法的可执行文件,是依次经过步骤S11、步骤S12和步骤13得到的内容所得到的。在一个示例中,硬件指令可以是直接根据原始计算图生成的硬件指令,第二模型数据可以是原始模型数据只经历过面向硬件平台的处理所得到的模型数据,即最终得到的深度学习算法的可执行文件,是只依次经过步骤S12和步骤S13所得到的。在一个示例中,硬件指令可以是根据第一计算图生成的硬件指令,第二模型数据可以就是第一模型数据,即最终得到的深度学习算法的可执行文件,是只依次经过步骤S11和步骤S12得到的。在一个示例中,硬件指令可以是直接根据原始计算图生成的硬件指令,第二模型数据可以是原始模型数据,即最终得到的深度学习算法的可执行文件,可以是只经过步骤S12得到的。从上述示例可以看出,步骤S11、步骤S12和步骤S13可以不同时存在,可以根据实际情况进行灵活组合。
这样,通过对原始计算图和原始模型数据进行协同处理,可以在对深度学习算法进行编译之前,首先对运算和数据进行与硬件无关的协同优化,一方面可以提升后续的编译速度,另一方面也可以提升硬件平台在执行编译后的硬件指令时的工作性能;通过根据第一计算图生成硬件指令,生成的硬件指令可以是根据硬件平台需求进行择优选择后的指令组合,从而进一步提升硬件平台在执行编译后的硬件指令时的工作性能;通过同时根据第一计算图生成的数据描述符,可以对模型数据进行二次优化,生成符合硬件平台工作需求的模型数据,继而提升硬件平台在执行编译后的硬件指令时的工作性能,通过三者的连续配合,生成的硬件指令,是同时面向算法和硬件平台优化后的硬件指令,因此可以使得硬件平台在根据此硬件指令工作时的性能达到较优的效果。
图6示出根据本公开一实施例的深度学习算法的编译装置的框图,如图所示,该装置20包括:
协同处理单元21,用于根据深度学习算法的原始计算图和原始模型数据,进行面向深度学习算法的协同处理,得到第一计算图和第一模型数据;
硬件指令生成单元22,用于根据第一计算图,生成硬件指令和数据描述符;
模型数据处理单元23,用于根据数据描述符,对第一模型数据进行面向硬件平台的处理,得到第二模型数据;
可执行文件生成单元24,用于根据硬件指令和第二模型数据,得到深度学习算法的可执行文件。
在一种可能的实现方式中,协同处理单元用于:读取原始计算图和原始模型数据;识别原始计算图内的连续线性变换操作节点;通过线性变换和常量折叠,对连续线性变换操作节点进行处理,得到第一计算图和第一模型数据。
在一种可能的实现方式中,连续线性变换操作节点包括:至少2个连续的线性变换操作节点。
在一种可能的实现方式中,协同处理单元进一步用于:将原始计算图内的连续线性变换操作节点进行线性变换和常量折叠,将连续线性变换操作节点合并,得到第一计算图;将连续线性变换操作节点对应的模型数据合并,得到第一模型数据。
在一种可能的实现方式中,硬件指令生成单元用于:根据代价模型对第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符。
在一种可能的实现方式中,硬件指令生成单元进一步用于:通过代价模型对所述第一计算图进行建模,生成搜索空间和目标函数;通过启发式搜索策略,在搜索空间内进行搜索,当目标函数达到阈值时,生成面向硬件平台的硬件指令和数据描述符。
在一种可能的实现方式中,启发式搜索策略包括:提高硬件平台内片上缓存的利用率的搜索策略;或者,在保证硬件平台内运算单元和访问单元的利用率的基础上,减小运算粒度和访存粒度的搜索策略。
在一种可能的实现方式中,模型数据处理单元用于:根据数据描述符,按照硬件平台内的运算要求,对第一模型数据进行数据对齐;或者,根据数据描述符,按照硬件平台内的运算要求,对第一模型数据进行维度变换;或者,根据数据描述符,按照硬件平台内的运算要求,对第一模型数据进行精度选择。
在一种可能的实现方式中,可执行文件生成单元用于:将硬件指令和第二模型数据打包,得到深度学习算法的可执行文件。
图7~图10示出本公开一应用示例的示意图,该应用示例仅为便于理解本公开实施例,不对公开实施例进行限制。
如图7所示,为深度学习算法的编译装置的整体框架示意图,从图中可以看出,该编译装置在进行编译的过程中,首先可以接收深度学习算法的原始计算图和原始模型数据。
在接收了原始计算图和原始模型数据后,可以通过协同处理单元对原始的计算图和模型数据进行面向算法的高级优化,生成优化后的第一计算图和第一模型数据。该协同处理单元的具体工作过程如图8所示,从图中可以看出,协同处理单元首先可以扫描原始计算图,识别其中连续的线性变换操作。然后对连续的线性变换操作执行线性变换和常量折叠优化,把多个操作节点合并成一个操作节点,把多份模型数据合并成一份模型数据。最后输出简化后的第一计算图和第一模型数据。
得到第一计算图和第一模型数据后,可以通过硬件指令生成单元,将优化后的第一计算图转换成高效的目标硬件平台的硬件指令,并输出数据描述符。硬件指令生成单元的具体工作过程如图9所示,从图中可以看出,硬件指令生成单元首先对协同处理单元优化后的第一计算图进行cost model建模,然后采用启发式搜索的策略对建模后得到的搜索空间进行搜索,生成高度优化的用于目标硬件平台的硬件指令,并输出数据描述符。
得到硬件指令和数据描述符后,模型数据处理单元可以对协同处理单元优化后的第一模型数据进行面向硬件平台的二次优化,得到第二模型数据。模型数据处理单元的具体工作过程如图10所示,从图中可以看出,模型数据处理单元按照数据描述符提供的描述信息,对第一模型数据进行数据对齐、维度转换和精度调优三种优化,来得到相应的第二模型数据。
这样,将硬件指令和第二模型数据打包,即得到硬件平台执行深度学习算法所需的可执行文件。
在一种可能的实现方式中,本公开还提出了一种深度学习运算装置,其包含了上述中任意一种可能的深度学习算法的编译装置,深度学习运算装置用于完成设定的深度学习运算。
图11示出根据本公开一实施例的组合处理装置的框图,如图所示,所述组合处理装置,包括上述的深度学习运算装置,通用互联接口,和其他处理装置。
深度学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为深度学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本深度学习运算装置的开启、停止等基本控制;其他处理装置也可以和深度学习运算装置协作共同完成运算任务。通用互联接口,用于在所述深度学习运算装置与其他处理装置间传输数据和控制指令。该深度学习运算装置从其他处理装置中获取所需的输入数据,写入深度学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入深度学习运算装置片上的控制缓存;也可以读取深度学习运算装置的存储模块中的数据并传输给其他处理装置。
组合处理装置还可以包括存储装置,存储装置分别与所述深度学习运算装置和所述其他处理装置连接。存储装置用于保存在所述深度学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本深度学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一种可能的实现方式中,本公开还提供深度学习芯片,其包括了上述深度学习运算装置或组合处理装置。
在一种可能的实现方式中,本公开还提供芯片封装结构,其包括了上述芯片。
在一种可能的实现方式中,本公开还提供板卡,其包括了上述芯片封装结构。
在一种可能的实现方式中,本公开还提供电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪、和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (22)

1.一种深度学习算法的编译方法,其特征在于,所述方法包括:
根据深度学习算法的原始计算图和原始模型数据,进行面向所述深度学习算法的协同处理,得到第一计算图和第一模型数据;
根据所述第一计算图,生成硬件指令和数据描述符;
根据所述数据描述符,对所述第一模型数据进行面向硬件平台的处理,得到第二模型数据;
根据所述硬件指令和所述第二模型数据,得到所述深度学习算法的可执行文件。
2.根据权利要求1所述的深度学习算法的编译方法,其特征在于,根据深度学习算法的原始计算图和原始模型数据,进行面向所述深度学习算法的协同处理,得到第一计算图和第一模型数据,包括:
读取所述原始计算图和所述原始模型数据;
识别所述原始计算图内的连续线性变换操作节点;
通过线性变换和常量折叠,对所述连续线性变换操作节点进行处理,得到第一计算图和第一模型数据。
3.根据权利要求2所述的深度学习算法的编译方法,其特征在于,所述连续线性变换操作节点包括:至少2个连续的线性变换操作节点。
4.根据权利要求2所述的深度学习算法的编译方法,其特征在于,通过线性变换和常量折叠,对所述连续线性变换操作节点进行处理,得到第一计算图和第一模型数据,包括:
将所述原始计算图内的连续线性变换操作节点进行线性变换和常量折叠,将所述连续线性变换操作节点合并,得到第一计算图;
将所述连续线性变换操作节点对应的模型数据合并,得到第一模型数据。
5.根据权利要求1所述的深度学习算法的编译方法,其特征在于,根据所述第一计算图,生成硬件指令和数据描述符,包括:
根据代价模型对所述第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符。
6.根据权利要求5所述的深度学习算法的编译方法,其特征在于,根据代价模型对所述第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符,包括:
通过代价模型对所述第一计算图进行建模,生成搜索空间和目标函数;
通过启发式搜索策略,在所述搜索空间内进行搜索,当所述目标函数达到阈值时,生成面向硬件平台的硬件指令和数据描述符。
7.根据权利要求5所述的深度学习算法的编译方法,其特征在于,所述启发式搜索策略包括:
提高硬件平台内片上缓存的利用率的搜索策略;或者,
在保证硬件平台内运算单元和访问单元的利用率的基础上,减小运算粒度和访存粒度的搜索策略。
8.根据权利要求1所述的深度学习算法的编译方法,其特征在于,根据所述数据描述符,对所述第一模型数据进行面向硬件平台的处理,得到第二模型数据,包括:
根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行数据对齐;或者,
根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行维度变换;或者,
根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行精度选择。
9.根据权利要求1所述的深度学习算法的编译方法,其特征在于,根据所述硬件指令和所述第二模型数据,得到所述深度学习算法的可执行文件,包括:
将所述硬件指令和所述第二模型数据打包,得到所述深度学习算法的可执行文件。
10.一种深度学习算法的编译装置,其特征在于,包括:
协同处理单元,用于根据深度学习算法的原始计算图和原始模型数据,进行面向所述深度学习算法的协同处理,得到第一计算图和第一模型数据;
硬件指令生成单元,用于根据所述第一计算图,生成硬件指令和数据描述符;
模型数据处理单元,用于根据所述数据描述符,对所述第一模型数据进行面向硬件平台的处理,得到第二模型数据;
可执行文件生成单元,用于根据所述硬件指令和所述第二模型数据,得到所述深度学习算法的可执行文件。
11.根据权利要求9所述的深度学习算法的编译装置,其特征在于,所述协同处理单元用于:
读取所述原始计算图和所述原始模型数据;
识别所述原始计算图内的连续线性变换操作节点;
通过线性变换和常量折叠,对所述连续线性变换操作节点进行处理,得到第一计算图和第一模型数据。
12.根据权利要求11所述的深度学习算法的编译装置,其特征在于,所述连续线性变换操作节点包括:至少2个连续的线性变换操作节点。
13.根据权利要求11所述的深度学习算法的编译装置,其特征在于,所述协同处理单元进一步用于:
将所述原始计算图内的连续线性变换操作节点进行线性变换和常量折叠,将所述连续线性变换操作节点合并,得到第一计算图;
将所述连续线性变换操作节点对应的模型数据合并,得到第一模型数据。
14.根据权利要求10所述的深度学习算法的编译装置,其特征在于,所述硬件指令生成单元用于:
根据代价模型对所述第一计算图进行处理,结合启发式搜索策略,得到硬件指令和数据描述符。
15.根据权利要求14所述的深度学习算法的编译装置,其特征在于,所述硬件指令生成单元进一步用于:
通过代价模型对所述第一计算图进行建模,生成搜索空间和目标函数;
通过启发式搜索策略,在所述搜索空间内进行搜索,当所述目标函数达到阈值时,生成面向硬件平台的硬件指令和数据描述符。
16.根据权利要求14所述的深度学习算法的编译装置,其特征在于,所述启发式搜索策略包括:
提高硬件平台内片上缓存的利用率的搜索策略;或者,
在保证硬件平台内运算单元和访问单元的利用率的基础上,减小运算粒度和访存粒度的搜索策略。
17.根据权利要求10所述的深度学习算法的编译装置,其特征在于,所述模型数据处理单元用于:
根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行数据对齐;或者,
根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行维度变换;或者,
根据所述数据描述符,按照硬件平台内的运算要求,对所述第一模型数据进行精度选择。
18.根据权利要求10所述的深度学习算法的编译装置,其特征在于,所述可执行文件生成单元用于:
将所述硬件指令和所述第二模型数据打包,得到所述深度学习算法的可执行文件。
19.一种深度学习运算装置,其特征在于,所述深度学习运算装置包括一个或多个如权利要求10-18任一项所述的深度学习算法的编译装置,所述深度学习运算装置用于完成设定的深度学习运算。
20.一种组合运算装置,其特征在于,所述组合运算装置包括一个或多个如权利要求19任一项所述的深度学习运算装置,通用互联接口和其他处理装置;
所述深度学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
21.一种深度学习芯片,其特征在于,所述深度学习芯片包括:
如权利要求10-18任一项所述的深度学习算法的编译装置;或者,
如权利要求19所述的深度学习运算装置;或者,
如权利要求20所述的组合运算装置。
22.一种电子设备,其特征在于,所述电子设备包括:
如权利要求10-18任一项所述的深度学习算法的编译装置;或者,
如权利要求19所述的深度学习运算装置;或者,
如权利要求20所述的组合运算装置;或者,
如权利要求21所述的深度学习芯片。
CN201910175932.2A 2019-02-28 2019-03-08 深度学习算法的编译方法、装置及相关产品 Active CN111667060B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910175932.2A CN111667060B (zh) 2019-03-08 2019-03-08 深度学习算法的编译方法、装置及相关产品
PCT/CN2020/080640 WO2020173503A1 (zh) 2019-02-28 2020-03-23 运算方法、装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910175932.2A CN111667060B (zh) 2019-03-08 2019-03-08 深度学习算法的编译方法、装置及相关产品

Publications (2)

Publication Number Publication Date
CN111667060A true CN111667060A (zh) 2020-09-15
CN111667060B CN111667060B (zh) 2022-12-09

Family

ID=72381877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910175932.2A Active CN111667060B (zh) 2019-02-28 2019-03-08 深度学习算法的编译方法、装置及相关产品

Country Status (1)

Country Link
CN (1) CN111667060B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112862109A (zh) * 2021-02-09 2021-05-28 上海商汤智能科技有限公司 深度学习模型的执行方法、装置、电子设备及存储介质
CN115081598A (zh) * 2022-08-23 2022-09-20 北京灵汐科技有限公司 算子处理方法及装置、电子设备、计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106791847A (zh) * 2016-12-05 2017-05-31 中国计量大学 一种视频编码芯片架构等效硬件复杂度及性能估计模型
US9798527B1 (en) * 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
CN108292374A (zh) * 2015-11-09 2018-07-17 谷歌有限责任公司 训练表示为计算图的神经网络
CN108460458A (zh) * 2017-01-06 2018-08-28 谷歌有限责任公司 在图形处理单元上执行计算图

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108292374A (zh) * 2015-11-09 2018-07-17 谷歌有限责任公司 训练表示为计算图的神经网络
CN106791847A (zh) * 2016-12-05 2017-05-31 中国计量大学 一种视频编码芯片架构等效硬件复杂度及性能估计模型
US9798527B1 (en) * 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
CN108460458A (zh) * 2017-01-06 2018-08-28 谷歌有限责任公司 在图形处理单元上执行计算图

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
林文愉等: "动态模式识别算法的GPU平台实现", 《计算技术与自动化》 *
王秉睿等: "深度学习编程框架", 《大数据》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112862109A (zh) * 2021-02-09 2021-05-28 上海商汤智能科技有限公司 深度学习模型的执行方法、装置、电子设备及存储介质
CN112862109B (zh) * 2021-02-09 2024-05-24 上海商汤智能科技有限公司 深度学习模型的执行方法、装置、电子设备及存储介质
CN115081598A (zh) * 2022-08-23 2022-09-20 北京灵汐科技有限公司 算子处理方法及装置、电子设备、计算机可读存储介质

Also Published As

Publication number Publication date
CN111667060B (zh) 2022-12-09

Similar Documents

Publication Publication Date Title
CN112579063B (zh) 一种用于深度学习编译器中探索优化空间的加速方法
WO2021000970A1 (zh) 深度学习算法的编译方法、装置及相关产品
CN110717584A (zh) 神经网络编译方法、编译器、计算机设备及可读存储介质
WO2021000971A1 (zh) 操作数据的生成方法、装置及相关产品
WO2024093292A1 (zh) 计算图的算子自动融合方法及相关产品
CN111667060B (zh) 深度学习算法的编译方法、装置及相关产品
CN112070202B (zh) 一种融合图的生成方法、生成装置和计算机可读存储介质
CN114385867A (zh) 一种对多维数据进行处理的设备、方法和计算机程序产品
CN114648103A (zh) 用于处理深度学习网络的自动多目标硬件优化
WO2023030507A1 (zh) 编译优化方法、装置、计算机设备以及存储介质
CN116402091A (zh) 面向人工智能芯片的混合引擎智能计算方法和装置
CN116090519A (zh) 卷积算子的编译方法及相关产品
CN115840894A (zh) 一种用于处理多维张量数据的方法及其相关产品
CN117940934A (zh) 数据处理装置及方法
CN115480743A (zh) 用于神经网络的编译方法、编译器及相关产品
CN115329923A (zh) 用于神经网络模型的编译方法和相关产品
CN110704040A (zh) 信息处理方法、装置、计算机设备及可读存储介质
Yu et al. INCAME: Interruptible CNN accelerator for multirobot exploration
Joseph et al. Hardware-accelerated pose estimation for embedded systems using Vivado HLS
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
WO2021000638A1 (zh) 深度学习算法的编译方法、装置及相关产品
CN113792867B (zh) 运算电路、芯片和板卡
Molina et al. Implementation of search process for a content-based image retrieval application on system on chip
WO2023071509A1 (zh) 模型编译方法、装置及模型运行系统
CN118585200A (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