CN115545180A - 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品 - Google Patents
对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品 Download PDFInfo
- Publication number
- CN115545180A CN115545180A CN202110726702.8A CN202110726702A CN115545180A CN 115545180 A CN115545180 A CN 115545180A CN 202110726702 A CN202110726702 A CN 202110726702A CN 115545180 A CN115545180 A CN 115545180A
- Authority
- CN
- China
- Prior art keywords
- node
- neural network
- nodes
- network model
- model structure
- 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
- 238000003062 neural network model Methods 0.000 title claims abstract description 77
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 35
- 238000013138 pruning Methods 0.000 claims abstract description 36
- 238000010586 diagram Methods 0.000 claims description 81
- 238000012216 screening Methods 0.000 claims description 27
- 238000012217 deletion Methods 0.000 claims description 14
- 230000037430 deletion Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 238000001914 filtration Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 34
- 238000003860 storage Methods 0.000 abstract description 24
- 238000004891 communication Methods 0.000 description 18
- 238000005457 optimization Methods 0.000 description 18
- 238000013135 deep learning Methods 0.000 description 13
- 238000010801 machine learning Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000001559 infrared map Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品,该相关产品包括编译器、设备和计算机可读存储介质。该设备可以包括在组合处理装置的计算处理装置中,该计算处理装置可以包括一个或多个数据处理装置。前述的组合处理装置还可以包括接口装置和其他处理装置。所述计算处理装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。通过本公开的方案,可以利用对公共节点中节点的删减来优化神经网络模型。
Description
技术领域
本公开一般地涉及人工智能技术领域。更具体地,本公开涉及一种用于对运行于人工智能芯片上的神经网络模型进行优化的编译方法、编译器、用于执行前述方法的设备和计算机程序产品、包括前述编译器或设备的集成电路装置,以及包括该集成电路装置的板卡。
背景技术
随着计算机硬件技术水平的不断提升,能够部署在计算机上的神经网络模型类型也随之增多。尽管如此,随着神经网络模型的网络结构的设计复杂化,对于拥有海量参数的网络来说,算力仍然是阻碍算法发展和应用的瓶颈。另外,针对神经网络模型的编译方式,目前通常的做法是直接对神经网络模型的模型结构图进行编译,或者仅对模型结构图简单优化后进行编译(例如通过改变结构图中节点运行顺序来优化结构图)。由此可以看出,当前的编译方法仅能对一些具有简单结构图的神经网络模型进行优化,其无法对相对复杂结构图的神经网络模型进行优化。
发明内容
鉴于上述背景技术部分所提及的技术问题,本公开提出一种用于对运行于人工智能芯片上的神经网络模型进行优化的编译方案。利用本公开的方案,可以通过对神经网络模型的模型结构图中的节点进行筛选,以得到本公开上下文中的公共节点。由此,可以通过对公共节点中节点的删减,以完成对模型结构图的剪枝,从而实现对不同复杂程度的神经网络模型的优化。进一步,基于对优化的神经网络模型的编译,从而提升了神经网络模型的性能,并显著增强包括人工智能芯片的智能计算系统的计算性能。为此,本公开在如下的多个方面中提供运行于人工智能芯片上的神经网络模型进行优化的编译方案。
在第一方面中,本公开提供了一种运行于人工智能芯片上的神经网络模型进行优化的编译方法,所述编译方法由通用处理器执行,并且包括:获取所述神经网络模型的模型结构图,其中所述模型结构图包含多个节点和与每个节点相关的节点信息;基于每个所述节点的节点信息,从多个所述节点中筛选出公共节点并对所述公共节点中的节点进行删减,以优化所述神经网络模型;以及将优化后的所述神经网络模型编译成可执行程序指令,以便分配至人工智能芯片处执行对应的任务。
在第二方面中,本公开提供了一种对运行于人工智能芯片上的神经网络模型进行优化的编译器,包括:获取模块,其用于获取所述神经网络模型的模型结构图,其中所述模型结构图包含多个节点和与每个节点相关的节点信息;筛选模块,其用于基于每个所述节点的节点信息,从多个所述节点中筛选出公共节点;删减模块,其用于对所述公共节点中的节点进行删减,以优化所述神经网络模型;以及编译模块,其用于将优化后的所述神经网络模型编译成对应的二进制指令序列,以分配至人工智能芯片上执行对应的任务。
在第三方面中,本公开提供了一种对运行于人工智能芯片上的神经网络模型进行优化的设备,包括:至少一个处理器;以及至少一个存储器,其存储有对运行于人工智能芯片上的神经网络模型进行优化的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行前述以及在下文多个实施例中所述的方法。
在第四方面中,本公开提供了一种计算机程序产品,包括对运行于人工智能芯片上的神经网络模型进行优化的计算机程序,所述计算机程序在被处理器执行时实现前述以及在下文多个实施例中所述的方法。
在第五方面中,本公开提供了一种集成电路装置,包括如上所述以及在下文多个实施例中所述的设备。
在第六方面中,本公开提供了一种板卡,包括如上所述以及在下文多个实施例中所述的集成电路装置。
通过本公开如上多个方面中所提供的编译方案,不同复杂程度的神经网可以得到最大程度的优化。具体地,本公开的方案通过在编译时首先将神经网络模型中的公共节点删减,以简化神经网络模型的模型节点图,从而实现对不同复杂程度的神经网络模型的优化。基于此,在对前述优化的神经网络模型进行编译时,也可以提升神经网络模型的性能,并显著增强包括人工智能处理器或芯片的智能计算系统的计算性能。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出根据本公开实施例的板卡的结构图;
图2是示出根据本公开实施例的组合处理装置的结构图;
图3是示出根据本公开实施例的计算装置的内部结构示意图;
图4是示出根据本公开实施例的处理器核的内部结构示意图;
图5是示出根据本公开实施例的不同集群的处理器核间的数据写入过程示意图;
图6是示出根据本公开实施例的数据流编程的软硬件架构的结构示意图;
图7是示出根据本公开的实施例的对运行于人工智能芯片上的神经网络模型进行优化的编译方法的流程图;
图8是示出根据本公开的实施例的对神经网络模型进行优化的示意图;以及
图9是示出根据本公开实施例的编译器的示意框图。
具体实施方式
下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施方式的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图来详细描述本公开的具体实施方式。
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和大量的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和DRAM 204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,计算装置201作为一个片上系统,其包括多个集群(cluster),每个集群又包括多个处理器核,换言之,计算装置201是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM 204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。
以集群的层级来看,如图3所示,每个集群305包括多个处理器核(IPU core)306及一个存储核(MEM core)307。
处理器核306在图中示例性地展示4个,本披露不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、权值存储单元(weight RAM,WRAM)432、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)433、搬运直接内存访问模块(move direct memoryaccess,MVDMA)434。NRAM 431用以存储供处理器核306计算的输入、输出数据及中间结果;WRAM 432则用以存储深度学习网络的权值;IODMA 433通过广播总线309控制NRAM 431/WRAM 432与DRAM 204的访存;MVDMA 434则用以控制NRAM 431/WRAM 432与SRAM 308的访存。
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与DRAM 204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
存储核307包括共享存储单元(SRAM)308、广播总线309、集群直接内存访问模块(cluster direct memory access,CDMA)310及全局直接内存访问模块(global directmemory access,GDMA)311。SRAM 308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向DRAM 204获得,而是经SRAM 308在处理器核306间中转,存储核307只需要将复用的数据从SRAM 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线309、CDMA 310及GDMA 311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与DRAM 204的数据传输。以下将分别说明。
广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从SRAM 308传输到所有处理器核306的通信方式,属于多播的一种特例。
CDMA 310用以控制在同一个计算装置201内不同集群305间的SRAM 308的访存。图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明CDMA310的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中,CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1的SRAM 1中,接着从端发送写响应B作为回应,最后集群1的处理器核1发送单播读请求将数据从SRAM 1中读取出来。
回到图3,GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM 308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。从前述可知,DRAM 204与NRAM431或WRAM 432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 311使得数据在DRAM 204与SRAM 308间传输,再经过MVDMA 434使得数据在SRAM 308与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本披露的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 311的功能和IODMA 433的功能可以整合在同一部件中。本披露为了方便描述,将GDMA 311和IODMA 433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本披露类似,即属于本披露的保护范围。进一步地,GDMA 311的功能、IODMA 433的功能、CDMA 310的功能、MVDMA 434的功能亦可以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
以上结合图1-图5对本公开的硬件架构及其内部结构进行了详细的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡及其内部结构进行改变,而这些改变依然落入本公开的保护范围内。除了图1-图5所示出的硬件架构,本公开的方案还涉及软硬件栈架构,下面将对其进行描述。
图6示出本公开一实施例中数据流编程的软硬件架构的设计图。从图中所示可以看出,此实施例中的软硬件架构可以包括AI处理器601、驱动及操作系统602、编译器及编程语言603、库604、框架层605、应用层606。
具体来说,AI处理器601在硬件设计上同时考虑运算优化和数据搬运优化。为此,其采用定制化的运算单元来加速运算,并且使用片上存储来加速数据搬运,从而获得极高的性能和能效比。另外,为了支持各种算法优化,AI处理器601可以具有定制化的运算单元和指令集,其中指令集可以提供不同粒度的运算指令(标量、向量和/或矩阵)。进一步,当考虑算法访存特征、硬件成本、验证难度等多方面的因素,则可以采用片上存储的方式,并且优化数据搬运。在实际操作中,本公开的AI处理器可以实现超出主流GPU(图形处理单元)几十倍以上的速度。
驱动及操作系统602主要负责实现任务在AI处理器601上的调度。该调度操作可以涉及分配、释放设备内存、根据任务优先级进行调度、多设备之间的通信及同步等。对于编译后的程序,其可以通过操作系统和驱动实现待实施的任务在特定处理器上的调度执行,包括但不限于如下的操作:分配、释放设备内存、实现设备之间数据传输、维护任务队列,以及根据优先级调度任务,实现多设备间的同步和协作。
编译器及编程语言603可以是针对AI处理器601的指令集研发的一套汇编语言。在应用中,其可以将面向AI处理器601开发的深度学习算子翻译成处理器指令组合,以便于调用AI处理器601,从而高效地使用该AI处理器601。
库604可以包括运行时库614和机器学习库624。在一个实施场景中,前述库604可以使用AI处理器601的指令集并根据AI处理器601的指令集进行部分优化,以提高算子的运行速度。运行时库614可以是针对AI处理器601专门开发的一套高性能算子库,并且其可以用于完成通用处理器和人工智能处理器之间的交互。进一步,该运行时库614还可以提供一套面向人工智能处理器的接口。对于机器学习库624,其可以用于在人工智能处理器上加速各种机器学习或者深度学习算法。具体地,该机器学习库624可以提供一套高效、通用、灵活且可扩展的编程接口,其上层的机器学习应用可以直接采用各种编程框架(例如TensorFlow、Caffe、MXNet等)的编程接口,也可以使用机器学习库624提供的接口来直接编程。另外,本公开的机器学习库624可以方便硬件平台的调用,而运行时库614可以实现一些基础的常用算子,如卷积、池化等各种操作。
框架层605可以增加对面向AI处理器开发的算子的封装,并且主要是对运行时库614的算子的封装。除此之外,框架层605还可以修改相关的任务调度或内存管理等部分。在一个应用场景中,框架层605可以采用TensorFlow的架构。
在本公开的方案中,应用层606可以是深度学习算法开发者提供的应用平台,并且基于原生的框架605拓展了模型运行时对AI处理器601调用的支持。
在实际应用场景中,框架层605可以实现对运行时库614中高性能算子库里算子的封装与支持,并且其主要是利用数据流图根据图优化机制构建起深度学习模型的计算过程。在本公开的方案中,图优化机制涉及利用深度学习框架中所定义的接口,用户自己设计图优化器,然后注册到深度学习框架中运行。基于此,深度学习框架可以将构建的网络转换成图形级别的中间表达(IR),简称IR图或计算图(也即本公开上下文中的“模型结构图”)。该计算图包含节点和边,计算图的每个节点表示一个操作或算子,而边用于表示数据的流向。图优化就是按照一定规则对计算图进行修改以达到运行加速的效果,例如常量折叠、算子融合、图替代等的优化方式。
图7是示出根据本公开的实施例的对运行于人工智能芯片上的神经网络模型进行优化的编译方法700的流程图。
如图7所示,在步骤S701处,获取神经网络模型的模型结构图。其中模型结构图包含多个节点和与每个节点相关的节点信息。在一些实施场景中,前述的神经网络模型包括Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch Onnx以及CoreML等框架下的模型中的任一种。本公开中的神经网络模型特别地包括Tensorflow架构下的模型。对于前述的节点信息,在一个实施例中,可以通过模型结构图的原生接口(例如Python接口)对结构图的遍历来得到。通过遍历模型的结构图,获取每个节点的算子名称、根据节点的输入边和输出边获取节点的输入和输出,以及根据算子的输入输出可以得到数据的数据类型等等。在一些实施场景中,节点信息包括但不限于op(算子)、input edge(输入边缘)、output edge(输出边缘)、数据类型等。可以理解的是,前述节点信息所包含的内容仅用于对节点信息进行举例说明,并不对节点信息的具体内容进行限制。
接着,在步骤S702处,基于每个节点的节点信息,从多个节点中筛选出公共节点并对公共节点中的节点进行删减,以优化神经网络模型。对于前述的公共节点的筛选和删减操作可以以遍历模型结构图的方式来实现。在一个实施例中,可以通过虚框中示出的步骤S702-1、步骤S702-2、步骤S702-3和步骤S702-4来实现。首先,在步骤S702-1处,从模型结构图中选取原节点。这里,原节点可以是在遍历模型结构图过程中选择的任一节点。例如,假定前述的模型结构图中包括多个节点。在该场景下,在遍历前述的模型结构图时,遍历开始处的第一节点就可以选择为原节点。随着前述遍历进度的推进,对于模型结构图中还未被选取作为原节点或没有被认定为目标节点(如下将讨论)的节点都将被选择作为原节点。
接着,在步骤S702-2处,判断是否存在与原节点的节点信息相匹配的目标节点。可以理解的是,这里的节点信息即前文结合步骤S701所描述的节点信息。对于前述目标节点的判断操作可以通过对节点的哈希值的比较来实现。在一个实施例中,可以通过对前述所有节点的节点信息进行哈希统计,来得到所有节点的哈希值。在一个场景中,对前述所有节点的节点信息进行哈希统计包括对前述的所有节点的节点信息进行哈希运算后,再执行统计运算。在该场景中,关于哈希值运算,以某节点的哈希值运算为例:某节点哈希值=Hash(OP,输出参数,输出参数,数据类型),其中OP、输出参数、输出参数和数据类型也即是该节点的节点信息。可以理解的是,这里的节点信息仅仅是示例性的而非限制性的,并且根据不同的应用场景可以增加新的信息或减少这里所示出的信息。另外,关于前述的统计运算,可以采用图表(例如以表格的方式)等常用的统计方法,这里不再赘述。接着判断是否存在哈希值与原节点的哈希值相同的节点,并将哈希值与原节点的哈希值相同的节点作为目标节点。可以理解的是,前述对目标节点的判断操作仅仅是一种可能实现方式,本公开的方案并不受此限制。根据本公开的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤S702-2。
进一步地,对于上述模型结构图的遍历方式,在一个实施例中,可以在执行完一次对前述的公共节点的删选和删减后,从前述模型结构图中删减后的节点处开始新一轮的遍历。替代地,可以在每执行完一次对前述公共节点的筛选和删减后,从前述模型结构图的初始位置处执行新一轮的遍历。关于前述两个实施例中的具体遍历方式将在稍后结合图8来进一步说明。可以理解的是,这里对模型结构图的遍历过程仅仅是可能的实现方式,本公开的方案并不受此限制。根据本公开的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤上述对模型结构图的遍历。
在确定存在前述目标节点之后,在步骤S702-3处,将前述原节点和目标节点作为公共节点。最后,在步骤S702-4处,对前述公共节点执行删减。可以理解的是,这里的原节点和目标节点也即前文结合步骤S702-1和S702-2所描述的原节点和目标节点,因此关于二者的细节此处不再赘述。对于前述公共节点的删减操作,在一个实施例中,可以将前述原节点和目标节点中的任一节点作为待删除节点、另一节点作为保留节点(例如可以将前述的原节点作为保留节点,并且将前述的目标节点作为待删除节点;替代地,可以将前述的目标节点作为保留节点,而将前述的原节点作为待删除节点)。在确定好前述公共节点中的待删除节点和保留节点之后,接着,将前述待删除节点的输出节点的输入端指向前述保留节点,以完成对前述公共节点的删减操作。
可以理解的是,图7中示出的步骤S702-1、S702-2、S702-3以及S702-4仅仅是步骤S702的一种可能实现方式,本公开的方案并不受此限制。根据本公开的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤S702。
为了更清楚的理解本公开的方案,以下将结合图8对本公开的方案进一步说明。
图8是示出根据本公开的实施例的对神经网络模型进行优化过程80的示意图。
如图8所示,神经网络模型的模型结构图中包含多个节点,包括节点A、节点B、节点C1、节点C2、节点D1、节点D2、节点E以及节点F。在对该神经网络模型的模型结构图进行优化的过程中,首先加载神经网络模型的模型结构图,并对模型结构图中的所有节点进行遍历,以筛选出公共节点并对其中的多余节点执行删减操作。
以图中所示为例,在从节点A至节点E的遍历过程中,首先选取A作为原节点,并且判断其是否具有对应的、哈希值相同的目标节点。由于节点A并不存在与其具有共同输入节点的节点,也即没有节点与其具有相同的哈希值,因此节点A作为原节点并不具有目标节点。接着,遍历过程继续到节点B、F(位于节点B左侧)和F(位于节点B右侧)。当分别选取前述三个节点作为原节点来确定对应的目标节点时,与节点A的情形类似,这三个原节点由于都不具有哈希值相同的节点,因此也都不具有对应的目标节点。
接着,当遍历至节点C1时,可以选择C1为原节点。接着,确定剩余节点(例如模型结构图中的节点C2、D1、D2和E)中的节点C2和节点C1具有相同的输入节点B和F。如前所述,可以通过节点C1和节点C2的哈希值相同来确定二者具有相同的输入节点。此时,可将节点C2作为原节点C1的目标节点,从而将原节点C1和目标节点C2筛选出作为公共节点并且删除其中任一节点以完成删减操作。类似地,鉴于节点D1和节点D2也具有共同的输入节点(也即删减后的节点C1或C2),二者也可以构成公共节点。
进一步以图8右侧的虚框801和802所示为例来描述筛选和删减操作。如上所述,当确定节点C1和C2构成公共节点后,可以选取出节点C1或者C2之一来进行删减,例如801内选取C2进行删减而保留C1于模型结构图内。接着,基于801内示出的经删减而优化的模型结构图,可以从节点D1开始新的(或者说下一轮)的遍历。与前述选取C1作为原节点类似,此处可以选择D1作为原节点。由于节点D1和D2也具有相同的输入节点(即经删减后保留的节点C1),因此可以对原节点D1及其目标节点D2执行前述类似的选取和删除操作,也即如802内示出的保留节点D1而删除节点D2。通过这样的筛选和删减操作,就可以得到如图8中802内所示出的优化后的模型结构图。可以理解的是,这里所涉及的遍历方式也即前文结合图7所描述的遍历方式的第一个实施例。
作为替代方案,对于801中所示出的优化后模型结构图,还可以从节点A(也即模型结构图的初始位置)处开始新一轮的遍历,例如仍顺次选取节点A、B、F和C1作为原节点来确定对应的目标节点。从801中所示可以看出,节点A、B、F和C1并不具有对应的目标节点。接着,当遍历到节点D1和D2,由于共同输入节点C1的存在,本公开的方案执行筛选和删减操作以保留节点D1而删除节点D2,从而得到802中所示出的模型结构图。接着,遍历仍从初始节点A开始,直到选取节点E作为原节点(此时节点E的输入边连接至节点D1的输出边,即其输入端连接到节点D1)。由于节点E并没有对应的公共节点,并且其又是模型结构图的最后一个节点,因此本公开的遍历过程结束于节点E。可以理解的是,这里所涉及的遍历方式也即前文结合图7所描述的遍历方式的第二个实施例。
上文以图8所示模型结构图为例对本公开的优化方案进行了描述。可以理解的是图8所示出的内容或执行的筛选和删减操作仅仅是示例性的而非限制性的。本领域技术人员根据本公开的教导,也可以对其进行改变。例如,对于处于模型结构图中同一层级的节点,例如节点F(节点B左侧)、节点B和节点F(节点B右侧),可以在遍历操作中并行地将三个节点都选择为原节点,以判断其是否存在对应的目标节点。再例如,对于处于同一层级的节点C1和节点C2,在遍历时可以同时选取二者作为原节点,并且在确定二者具有共同的输入节点而形成公共节点时,可以选择其中一个节点作为目标节点而予以删除,而选择另一个节点作为保留节点而保留于模型结构图中。另外,对于选择公共节点的哪个节点作为予以保留的节点而哪个节点作为删除的节点,可以根据用户的偏好或优选项来进行预先的设置,从而令本公开的优化方案更为用户友好和具有更高的灵活性。
图9是示出根据本公开实施例的编译器900的简化框图。应当理解的是编译器900可以执行上述结合图7或图8所描述的编译方法,因此关于图7或图8所做的描述也同样适用于下文关于编译器的具体阐述。进一步,在包括通用处理器和智能处理器的异构架构中,该编译器900可以布置于通用处理器处,以便执行例如上述结合图7或8所讨论的编译方法。
作为一种可选的实施例,该编译器900可以是神经网络编译器,用于将从神经网络框架接收的神经网络编译为能够在至少一个处理器上运行的目标代码。该编译器可以包括编译器前端,用于将神经网络模型转换为模型结构图(或称计算图)。如图9中所示,该编译器900可以包括获取模块901、筛选模块902、删减模块903和编译模块904。该获取模块901、筛选模块902以及删减模块903用于根据对公共节点中节点的删减来优化神经网络模型,以便由所示出的编译模块904将优化后的神经网络模型分配至至少一个处理器上进行运行,并生成与相应的处理器相对应的目标代码。
在一个实施例中,获取模块901可以配置成获取神经网络模型的模型结构图,其中模型结构图包含多个节点和与每个节点相关的节点信息。可以看出,此处获取模块901执行的即是图7方法700中的步骤S701。相应地,在一个实施例中,筛选模块902可以配置成基于每个前述节点的节点信息,从多个节点中筛选出公共节点。类似地,此处筛选模块902执行的即是图7方法700中的步骤S702-1、步骤S702-2以及步骤S702-3。相应地,在一个实施例中,删减模块903可以配置成对前述的公共节点中的节点进行删减,以完成对神经网络模型的优化。类似地,此处删减模块903执行的即是图7方法700中的步骤S702-4。
在一个实施方式中,对于删减后得到的模型结构图,编译模块904可以根据其来进行编译操作以生成对应的代码,以便分配至人工智能处理器或芯片处来相应地执行分配的运算。对于数据并行操作的场景,编译模块904可以令生成的代码中包含处理器或处理器核的标识符(“ID”),从而可以将与代码指令关联的任务分配给特定的人工智能处理器或处理器核。由此,可以提升智能计算系统的计算性能并增加硬件的利用率。
从上面的描述可以看出,编译器900通过其包括的获取模块901、筛选模块902、删减模块903以及编译模块904可以实现图7中方法700所包括的步骤。可以看出,本公开的方案通过利用对公共节点中的节点的删减,简化神经网络模型的模型节点图,由此实现了对不同复杂程度的神经网络模型的优化。通过这样的优化操作,本公开的方案提升了神经网络模型的性能,并显著增强包括人工智能处理器的智能计算系统的计算性能。
以上结合附图对本公开的方案进行了详细的描述。根据不同的应用场景,本披露的设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。
进一步,本披露的设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的设备或装置可以应用于云端设备(例如云端服务器),而功耗小的设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(“Read Only Memory”,简写为ROM)、随机存取存储器(“Random Access Memory”,简写为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(“Resistive Random Access Memory”,简写为RRAM)、动态随机存取存储器(“DynamicRandom Access Memory”,简写为DRAM)、静态随机存取存储器(“Static Random AccessMemory”,简写为SRAM)、增强动态随机存取存储器(“Enhanced Dynamic Random AccessMemory”,简写为“EDRAM”)、高带宽存储器(“High Bandwidth Memory”,简写为“HBM”)、混合存储器立方体(“Hybrid Memory Cube”,简写为“HMC”)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1、一种对运行于人工智能芯片上的神经网络模型进行优化的编译方法,所述编译方法由通用处理器来执行,并且包括:
获取所述神经网络模型的模型结构图,其中所述模型结构图包含多个节点和与每个节点相关的节点信息;
基于每个所述节点的节点信息,从所述多个节点中筛选出公共节点并对所述公共节点进行删减,以完成对所述神经网络模型的优化;以及
将优化后的所述神经网络模型编译成可执行程序指令,以便分配至人工智能处理器处执行对应的任务。
条款A2、根据条款A1所述的编译方法,其中以遍历所述模型结构图的方式来实现对所述模型结构图中所有所述公共节点的筛选和删减,所述方法包括在所述遍历中:
从所述模型结构图中选取原节点;
判断是否存在与所述原节点的节点信息相匹配的目标节点;以及
响应于存在所述目标节点,将所述原节点和所述目标节点从所述模型图中筛选出,以作为所述公共节点;以及
对所述公共节点执行所述删减。
条款A3、根据条款A2所述的编译方法,其中遍历所述模型结构图包括在执行完一次所述筛选和删减后,从所述模型结构图的初始位置处执行新一轮的遍历。
条款A4、根据条款A2所述的编译方法,其中遍历所述模型结构图包括在执行完一次所述筛选和删减后,从所述模型结构图中删减后的节点处开始新一轮的遍历。
条款A5、根据条款A2所述的编译方法,其中每个节点具有对所述节点信息执行哈希运算所获得的哈希值,其中判断是否存在与所述原节点的节点信息相匹配的目标节点包括:
判断是否存在哈希值与所述原节点的哈希值相同的节点;以及
响应于存在哈希值与所述原节点的哈希值相同的节点,确定其为所述目标节点。
条款A6、根据条款A2-A5的任意一项所述的编译方法,其中对所述公共节点执行所述删减包括:
删除所述原节点和所述目标节点中的任一节点;以及
将被删除节点的输出节点的输入端指向未删除的节点,以完成对所述公共节点的删减。
条款A7、根据条款A6所述的编译方法,其中所述节点信息包括以下中的一项或多项的信息:算子、输入参数、输出参数以及数据类型。
条款A8、根据条款A6所述的编译方法,其中所述神经网络模型包括Tensorflow框架中的模型。
条款A9、一种对运行于人工智能芯片上的神经网络模型进行优化的编译器,包括:
获取模块,其用于获取所述神经网络模型的模型结构图,其中所述模型结构图包含多个节点和与每个节点相关的节点信息;
筛选模块,其用于基于每个所述节点的节点信息,从所述多个节点中筛选出公共节点;
删减模块,其用于对所述公共节点中的节点进行删减,以完成对所述神经网络模型的优化;以及
编译模块,其用于将优化后的所述神经网络模型编译成对应的二进制指令序列,以分配至人工智能处理器上执行对应的任务。
条款A10、根据条款A9所述的编译器,其中以遍历所述模型结构图的方式来实现对所述模型结构图中所有所述公共节点的筛选和删减,在所述遍历中:
所述筛选模块配置成:
从所述模型结构图中选取原节点;
对判断是否存在与所述原节点的节点信息相匹配的目标节点;以及
响应于存在所述目标节点,将所述原节点和所述目标节点从所述模型图中筛选出,以作为所述公共节点;
所述删减模块配置成:
对所述公共节点执行所述删减。
条款A11、根据条款A10所述的编译器,其中在遍历所述模型结构图中,所述筛选模块配置成:
在执行完一次所述筛选和删减后,从所述模型结构图的初始位置处执行新一轮的遍历。
条款A12、根据条款A10所述的编译器,其中在遍历所述模型结构图中,所述筛选模块配置成:
在执行完一次所述筛选和删减后,从所述模型结构图中删减后的节点处开始新一轮的遍历。
条款A13、根据条款A10所述的编译器,其中每个节点具有对所述节点信息执行哈希运算所获得的哈希值,其中在是否存在与所述原节点的节点信息相匹配的目标节点中,所述筛选模块配置成:
判断是否存在哈希值与所述原节点的哈希值相同的节点;以及
响应于存在哈希值与所述原节点的哈希值相同的节点,确定其为所述目标节点。
条款A14、根据条款A10-A13的任意一项所述的编译器,其中对所述公共节点执行所述删减中,所述删减模块配置成:
删除所述原节点和所述目标节点中的任一节点;以及
将被删除节点的输出节点的输入端指向未删除的节点,以完成对所述公共节点的删减。
条款A15、根据条款A14所述的编译器,其中所述节点信息包括以下中的一项或多项:算子、输入参数、输出参数以及数据类型。
条款A16、根据条款A14所述的编译器,其中所述神经网络模型包括Tensorflow框架中的模型。
条款A17、一种对运行于人工智能芯片上的神经网络模型进行优化的设备,包括:
至少一个处理器;以及
至少一个存储器,其存储有对运行于人工智能芯片上的神经网络模型进行优化的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行根据条款A1-A8的任意一项所述的编译方法。
条款A18、一种计算机程序产品,包括对运行于人工智能芯片上的神经网络模型进行优化的计算机程序,所述计算机程序在被处理器执行时实现根据条款A1-A8中任一项所述的编译方法。
条款A19.一种集成电路装置,包括根据条款A9-A16所述的编译器或根据权利要求17所述的设备。
条款A20.一种板卡,包括根据条款A19所述的集成电路装置。
虽然本说明书已经示出和描述了本公开的多个实施方式,但对于本领域技术人员显而易见的是,这样的实施方式只是以示例的方式提供的。本领域技术人员会在不偏离本公开思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本公开的过程中,可以采用对本文所描述的本公开实施方式的各种替代方案。所附权利要求书旨在限定本公开的保护范围,并因此覆盖这些权利要求范围内的模块组成、等同或替代方案。
Claims (13)
1.一种对运行于人工智能芯片上的神经网络模型进行优化的编译方法,所述编译方法由通用处理器执行,并且包括:
获取所述神经网络模型的模型结构图,其中所述模型结构图包含多个节点和与每个节点相关的节点信息;
基于每个所述节点的节点信息,从所述多个节点中筛选出公共节点并对所述公共节点中的节点进行删减,以优化所述神经网络模型;以及
将优化后的所述神经网络模型编译成可执行程序指令,以便分配至所述人工智能芯片处执行对应的任务。
2.根据权利要求1所述的编译方法,其中以遍历所述模型结构图的方式来实现对所述模型结构图中所有所述公共节点的筛选和删减,所述方法包括在所述遍历中:
从所述模型结构图中选取原节点;
判断是否存在与所述原节点的节点信息相匹配的目标节点;
响应于存在所述目标节点,将所述原节点和所述目标节点从所述模型结构图中筛选出,以作为所述公共节点;以及
对所述公共节点执行所述删减。
3.根据权利要求2所述的编译方法,其中遍历所述模型结构图包括在执行完一次所述筛选和删减后,从删减后的所述模型结构图的初始位置处执行新一轮的遍历。
4.根据权利要求2所述的编译方法,其中遍历所述模型结构图包括在执行完一次所述筛选和删减后,从所述模型结构图中删减后的节点处开始新一轮的遍历。
5.根据权利要求2所述的编译方法,其中每个节点具有针对所述节点信息执行哈希运算所获得的哈希值,其中判断是否存在与所述原节点的节点信息相匹配的目标节点包括:
判断是否存在哈希值与所述原节点的哈希值相同的节点;以及
响应于存在哈希值与所述原节点的哈希值相同的节点,确定其为所述目标节点。
6.根据权利要求2至5中任一项所述的编译方法,其中对所述公共节点执行所述删减包括:
删除所述原节点和所述目标节点中的任一节点;以及
将被删除节点的输出节点的输入端指向未删除的节点,以完成对所述公共节点的删减。
7.根据权利要求6所述的编译方法,其中所述节点信息包括关于以下中的一项或多项的信息:
算子、输入参数、输出参数以及数据类型。
8.根据权利要求6所述的编译方法,其中所述神经网络模型包括Tensorflow框架中的模型。
9.一种对运行于人工智能芯片上的神经网络模型进行优化的编译器,包括:
获取模块,其用于获取所述神经网络模型的模型结构图,其中所述模型结构图包含多个节点和与每个节点相关的节点信息;
筛选模块,其用于基于每个所述节点的节点信息,从多个所述节点中筛选出公共节点;
删减模块,其用于对所述公共节点中的节点进行删减,以优化所述神经网络模型;以及
编译模块,其用于将优化后的所述神经网络模型编译成对应的二进制指令序列,以分配至人工智能芯片上执行对应的任务。
10.一种对运行于人工智能芯片上的神经网络模型进行优化的设备,包括:
至少一个处理器;以及
至少一个存储器,其存储有对运行于人工智能芯片上的神经网络模型进行优化的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行根据权利要求1-8的任意一项所述的编译方法。
11.一种计算机程序产品,包括对运行于人工智能芯片上的神经网络模型进行优化的计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的编译方法。
12.一种集成电路装置,包括根据权利要求9所述的编译器或根据权利要求10所述的设备。
13.一种板卡,包括根据权利要求12所述的集成电路装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110726702.8A CN115545180A (zh) | 2021-06-29 | 2021-06-29 | 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110726702.8A CN115545180A (zh) | 2021-06-29 | 2021-06-29 | 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115545180A true CN115545180A (zh) | 2022-12-30 |
Family
ID=84717408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110726702.8A Pending CN115545180A (zh) | 2021-06-29 | 2021-06-29 | 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115545180A (zh) |
-
2021
- 2021-06-29 CN CN202110726702.8A patent/CN115545180A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2024093292A1 (zh) | 计算图的算子自动融合方法及相关产品 | |
CN112070202B (zh) | 一种融合图的生成方法、生成装置和计算机可读存储介质 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN111860806A (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN113469326B (zh) | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 | |
CN115545180A (zh) | 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN115329923A (zh) | 用于神经网络模型的编译方法和相关产品 | |
CN115543329A (zh) | 对运行于人工智能芯片上的区域候选网络进行优化的编译方法及其相关产品 | |
CN113469365B (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
CN115543328A (zh) | 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品 | |
WO2022135599A1 (zh) | 融合分支结构的装置、板卡、方法及可读存储介质 | |
CN112232498B (zh) | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN112463158B (zh) | 编译方法、装置、电子设备和存储介质 | |
WO2024012280A1 (zh) | 用于任务调度的方法、设备、板卡及其计算机可读存储介质 | |
WO2022063217A1 (zh) | 向前融合神经网络的装置、板卡、方法及可读存储介质 | |
WO2021017546A1 (zh) | 神经网络量化方法、装置、芯片、电子设备及板卡 | |
CN117311812A (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 |