CN115543328A - 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品 - Google Patents

对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品 Download PDF

Info

Publication number
CN115543328A
CN115543328A CN202110734792.5A CN202110734792A CN115543328A CN 115543328 A CN115543328 A CN 115543328A CN 202110734792 A CN202110734792 A CN 202110734792A CN 115543328 A CN115543328 A CN 115543328A
Authority
CN
China
Prior art keywords
network model
neural network
processor
graph
artificial intelligence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110734792.5A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN202110734792.5A priority Critical patent/CN115543328A/zh
Publication of CN115543328A publication Critical patent/CN115543328A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本公开涉及一种对运行于人工智能芯片上的神经网络模型进行转换的编译方法和相关产品,该相关产品包括编译器、设备和计算机可读存储介质。该设备可以包括在组合处理装置的计算处理装置中,该计算处理装置可以包括一个或多个数据处理装置。前述的组合处理装置还可以包括接口装置和其他处理装置。所述计算处理装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。通过本公开的方案,可以实现了不同神经网络模型之间的直接转换。

Description

对运行于人工智能芯片上的神经网络模型进行转换的编译方 法及其相关产品
技术领域
本公开一般地涉及人工智能技术领域。更具体地,本公开涉及一种对运行于人工智能芯片上的神经网路模型进行转换的编译方法、编译器、用于执行前述方法的设备和计算机程序产品、包括前述编译器或设备的集成电路装置,以及包括该集成电路装置的板卡。
背景技术
在人工智能技术领域中,通常可以选择多种深度学习框架来构建相应的神经网络模型。多样化的神经网络模型满足了市场的不同需求,然而由于每种深度学习框架都有自己特有的网络结构定义和模型保持格式,这种框架之间的鸿沟阻碍了不同框架模型之间的操作。为此,相关技术提出了利用一些模型转换工具(例如微软开源MMdnn工具)来对模型进行转换的编译方法。这种编译方法仅适用于传统的开源神经网络模型之间的转换,对于一些区别于开源网络神经模型的特殊神经网络模型并不适用,其无法直接将开源的神经网络模型转换成这些特殊神经网络模型,需要经过多重中间表示才能完成转换。由此可见,相关技术中的编译方法通用性差,转换过程运算复杂,已无法满足实际使用需求。
发明内容
鉴于上述背景技术部分所提及的技术问题,本公开提出一种对运行于人工智能芯片上的神经网络模型进行转换的编译方案。利用本公开的方案,可以通过对原始神经网络模型的解析,以得到本公开上下文中的计算图。由此,可以利用计算图来构建所需的目标神经网络模型,实现了不同神经网络模型之间的直接转换,有效减小模型转换过程中的运算复杂度,并显著提升包括人工智能处理器的智能计算系统的计算性能。为此,本公开在如下的多个方面中提供对运行于人工智能芯片上的神经网络模型进行转换的编译方案。
在第一方面中,本公开提供了一种对运行于人工智能芯片上的神经网络模型进行转换的编译方法,所述编译方法由通用处理器来执行,并且包括:对原始神经网络模型进行解析,以得到解析信息;根据所述解析信息生成目标神经网络模型运行时所需的计算图;基于所述计算图构建所述目标神经网络模型;以及将所述目标神经网络模型编译成对应的二进制指令序列,以分配至人工智能芯片处执行对应的任务。
在第二方面中,本公开提供了一种对运行于人工智能芯片上的神经网络模型进行转换的编译器,包括:解析模块,其用于对原始神经网络模型进行解析,以得到解析信息;生成模块,其用于根据所述解析信息生成目标神经网络模型运行时所需的计算图;构建模块,其用于基于所述计算图构建所述目标神经网络模型;以及编译模块,其用于将所述目标神经网络模型编译成对应的二进制指令序列,以分配至人工智能处理器上执行对应的任务。
在第三方面中,本公开提供了一种对运行于人工智能芯片上的神经网络模型进行转换的设备,包括:至少一个处理器;以及至少一个存储器,其存储有对运行于人工智能芯片上的神经网络模型进行转换的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行前述以及在下文多个实施例中所述的方法。
在第四方面中,本公开提供了一种计算机程序产品,包括对运行于人工智能芯片上的神经网络模型进行转换的计算机程序,所述计算机程序在被处理器执行时实现前述以及在下文多个实施例中所述的方法。
在第五方面中,本公开提供了一种集成电路装置,包括如上所述以及在下文多个实施例中所述的设备。
在第六方面中,本公开提供了一种板卡,包括如上所述以及在下文多个实施例中所述的集成电路装置。
通过本公开如上多个方面中所提供的编译方案,现有的神经网络模型之间的转换操作可以得到最大程度的优化。具体地,本公开的方案通过在编译时利用计算图来构建模型可以降低执行模型转换过程中的整体计算量,整个转换过程通用性强,不需要借助多重中间表示即可实现不同模型之间的直接转换,有效减小模型转换过程中的运算复杂度。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出根据本公开实施例的板卡的结构图;
图2是示出根据本公开实施例的组合处理装置的结构图;
图3是示出根据本公开实施例的计算装置的内部结构示意图;
图4是示出根据本公开实施例的处理器核的内部结构示意图;
图5是示出根据本公开实施例的不同集群的处理器核间的数据写入过程示意图;
图6是示出根据本公开实施例的数据流编程的软硬件架构的结构示意图;
图7是示出根据本公开实施例的对运行于人工智能芯片上的神经网络模型进行转换的编译方法的流程图;
图8是示出根据本公开实施例的对tensorflow网络架构下的神经网络模型进行转换的编译方法的流程图;以及
图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中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块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中高性能算子库里算子的封装与支持,并且其主要是利用数据流图根据图优化机制构建起深度学习模型的计算过程。在一个应用场景中,框架层605还可以采用TensorFlow、Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch Onnx和CoreML等框架。为了使不同的框架可以适配不同的硬件结构,不同的深度学习框架往往需要利用转换工具,通过模型的中间表达完成不同框架模型之间的转换。在本公开的方案中,图优化机制涉及利用深度学习框架中所定义的接口,用户自己设计图优化器,然后注册到深度学习框架中运行。基于此,深度学习框架可以将构建的神经网络模型转换成图形级别的中间表达(IR),简称IR图或计算图(也即本公开上下文中的“模型结构图”)。该计算图包含节点和边,计算图的每个节点表示一个操作或算子,而边用于表示数据的流向。图优化就是按照一定规则对计算图进行修改以达到运行加速的效果,例如常量折叠、算子融合、图替代等的优化方式。
图7是示出根据本公开实施例的对运行于人工智能芯片上的神经网络模型进行转换的编译方法700的流程图。
如图7所示,在步骤S701处,对原始神经网络模型进行解析,以得到解析信息。关于本公开的原始神经网络模型,其可以包括任一开源网络下的神经网络模型,例如Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch Onnx以及CoreML等开源网络框架下的模型。对于前述的原始神经网络模型的解析,在一个实施例中,前述步骤S701可以通过虚框中示出的步骤S701-1和步骤S701-2来实现。具体地,在步骤S701-1处,可以获取前述得到原始神经网络模型的网络模型文件。在一个实施场景中,前述的网络模型文件可以包括网络结构文件和网络结构的输入输出参数文件。
接着,在步骤S701-2处,对前述的网络模型文件进行解析。在一个实施例中,可以利用开源解析器(例如ANTLR解析器)或脚本来对前述网络模型文件进行解析,以解析出封装有模型网络结构的网络结构文件和封装有输入输出参数的输入输出参数文件。接着,可以对前述的网络结构文件和输入输出参数文件进行解析,以得到前述的解析信息(例如可以包括算子和算子的参数信息)。进一步地,利用脚本来对前述网络模型文件进行解析的一种实现方式包括:可以根据前述的原始神经网络模型来确定目标脚本。然后,采用该目标脚本对前述的网络模型文件进行解析。在一些实施场景中,前述的目标脚本包括但不限于Python脚本、VBScript脚本、JavaScript脚本以及ActionScript脚本等,具体可以根据前述的原始神经网络的架构来调整所使用的目标脚本。可以理解的是,这里所列举的各种脚本仅用于对目标脚本进行实例说明,并不对目标脚本的类型进行限制。另外,图7中示出的步骤S701-1和S701-2仅仅是步骤S701的一种可能实现方式,本公开的方案并不受此限制。根据本公开的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤S701。
接着,在步骤S702处,根据解析信息生成目标神经网络模型运行时所需的计算图。在一个实施场景中,前述的计算图是指基于算子和参数信息所构建的包含有多个算子的有向无环图。在一个实施场景中,该计算图可以包括多个算子(OP)和用于连接算子的“边”。根据本公开的方案,为了实现生成此处所述的计算图,可以利用本公开前文提到的参数信息(包括但不限于例如算子输入、算子输出、卷积偏移量等)来确定计算图的边(例如输入边或输出边),以便通过边来体现算子执行时彼此之间的依赖关系或算子之间的数据传递关系。接着,可以利用边来“连接”各个算子,从而形成前述的计算图。可以理解的是,这里的参数信息仅仅是示例性的而非限制性的,并且根据不同的应用场景可以增加新的信息或减少这里所示出的信息。另外,前述的算子可以理解为是通过将神经网络中大量的共性运算进行封装而得到的,例如卷积算子、最大池化算子或Relu算子(即激活函数算子)等。
接着,在步骤S703处,基于计算图构建目标神经网络模型。鉴于不同的人工智能芯片需要适配不同结构的神经网络模型,亟需能够将一些不适配于人工智能芯片的原始神经网络模型直接转换成适配的神经网络模型的手段。为此,本公开提出根据前述的计算图来将原始神经网络模型转换成适配人工智能芯片的目标神经网络模型。可以理解的是,这里的目标神经网络模型与前述的原始神经网络模型相比,可以具有不同的神经网络模型参数,当然该目标神经网络模型也可以是前述的Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch Onnx以及CoreML等框架下的模型中的任一种。
在一个实施例中,前述的S703可以通过虚框中示出的步骤S703-1和步骤S703-2来实现。具体地,在步骤S703-1处,可以涉及获取前述的计算图中的相关算子所支持的数据类型。在一个实施场景中,前述的数据类型可以从存储有多个标准数据类型的集合中进行选取。接着,在步骤S703-2处,可以利用前述获取的数据类型并且结合计算图来形成本公开的目标神经网络模型。可以理解的是,图7中示出的步骤S703-1和S703-2仅仅是步骤S703的一种可能实现方式,本公开的方案并不受此限制。根据本公开的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤S703。
通过上述方式构建成目标神经网络模型后,在步骤S704处,可以将前述的目标神经网络模型编译成对应的二进制指令序列,以分配至人工智能芯片处执行对应的任务。可以理解的是,这里的人工智能芯片可以包括人工智能处理器,该人工智能处理器可以是前文结合图1-图6所描述的智能处理器。通过前述步骤在编译时利用计算图来构建所需的目标神经网络模型,整个转换过程通用性强,不需要借助多重中间表示即可实现不同模型之间的直接转换,有效减小模型转换过程中的运算复杂度,并显著提升包括人工智能处理器的智能计算系统的计算性能。
为了更清楚的理解本公开的方案,以下将结合图8以及以Tensorflow网络的模型作为原始神经网络模型为例对本公开的方案进一步说明。
图8是示出根据本公开实施例的对tensorflow网络架构下的神经网络模型进行转换的编译方法800的流程图。
如图8所示,在步骤S801处,可以获取Tensorflow框架的神经网络模型的网络模型文件。可以理解的是,这里的网络模型文件即为前文结合图7所描述的网络模型文件,该网络模型文件可以包括封装有模型网络结构的网络结构文件和封装有输入输出参数的输入输出参数文件。接着,在步骤S802处,解析神经网络模型文件中的算子(OP)和算子的参数信息。在一个实施例中,可以通过开源解析器或脚本对前述的网络模型文件进行解析,例如可以通过ANTLR解析器或Python脚本来解析该网络模型文件来获取算子以及算子的参数信息(例如输入参数、输出参数等)。接着,在步骤S803处,根据OP和参数信息生成目标神经网络模型所需的计算图,以基于该计算图来完成对目标神经网络模型的构建。可以理解的是,不同深度学习框架使用的模型最终都可以转化成计算图来表示,因此在本实施例中可以利用计算图来实现不同模型之间的直接转换。在一个场景中,可以利用模型生成器来执行前述的转换过程。具体地,前述模型生成器可以包括解析器和生成器。前述的解析器可用于对上述网络模型文件进行解析来得到算子和参数信息,并将解析到的算子和参数信息发送至前述的生成器。接着,该生成器可以根据接收到的算子和参数信息生成前述的计算图,并可以进一步地获取该计算图中算子所支持的数据类型,例如可以从存储有多个标准数据类型的集合中选取该数据类型。最后,可以利用该数据类型并且结合计算图来形成前述的目标神经网络模型。
图9是示出根据本公开实施例的编译器900的简化框图。应当理解的是编译器900可以执行上述结合图7和图8所描述的编译方法,因此关于图7和图8所做的描述也同样适用于下文关于编译器的具体阐述。进一步,在包括通用处理器和智能处理器的异构架构中,该编译器900可以布置于通用CPU处,以便执行例如上述结合图7和图8所讨论的编译方法。
作为一种可选的实施例,该编译器900可以是神经网络编译器,用于将从神经网络框架接收的神经网络编译为能够在至少一个处理器上运行的目标代码。该编译器可以包括编译器前端,用于将神经网络模型转换为计算图。如图9中所示,该编译器900还可以包括解析模块901、生成模块902以及构建模块903。该解析模块901、生成模块902、以及构建模块903用于根据对原始神经网络模型进行解析来获取计算图,以便可以将根据计算图构建的目标神经网络模型分配至至少一个处理器上进行运行,并生成与相应的处理器相对应的目标代码。
在一个实施例中,解析模块901可以配置成对原始神经网络模型进行解析,以得到解析信息。可以看出,此处解析模块901执行的即是图7方法700中的步骤S701以及图8方法800中的步骤S801和S802。相应地,在一个实施例中,生成模块902可以配置成根据前述的解析信息生成目标神经网络模型运行时所需的计算图。类似地,此处生成模块902执行的即是图7方法700中的步骤S702。相应地,在一个实施例中,构建模块903可以配置成基于前述的计算图构建目标神经网络模型。类似地,此处生成模块903执行的即是图7方法700中的步骤S703以及图8方法800中的步骤S803。
在一个实施方式中,编译器900还可以包括编译模块904,在操作中,该编译模块904可以针对目标神经网络模块来生成对应的代码,以便由通用处理器和智能处理器来相应地执行分配的运算。对于数据并行操作的场景,编译模块904可以令生成的代码中包含处理器或处理器核的标识符(“ID”)。
从上面的描述可以看出,编译器900通过其包括的解析模块901、生成模块902、构建模块903以及编译模块904可以实现图7中方法700以及图8中方法800所包括的步骤,从而通过对神经网络模型的转换过程进行优化,由此减小模型转换过程中的运算复杂度并提升包括人工智能处理器的智能计算系统的计算性能。
以上结合附图对本公开的方案进行了详细的描述。根据不同的应用场景,本披露的设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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、根据条款A1所述的编译方法,其中所述解析信息包括算子和关于所述算子的参数信息,其中根据所述解析信息生成目标神经网络模型运行时所需的计算图包括:
根据所述算子和所述参数信息生成所述计算图。
条款A6、根据条款A5所述的编译方法,其中根据所述算子和所述参数信息生成所述计算图包括:
基于所述算子和所述参数信息,构建包含有多个节点的有向无环图;
其中每个所述节点包括一个所述算子。
条款A7、根据条款A6的任意一项所述的编译方法,其中基于所述计算图构建所述目标神经网络模型包括:
获取所述计算图中算子所支持的数据类型;以及
根据所述数据类型和所述计算图来构建所述目标神经网络模型。
条款A8、一种对运行于人工智能芯片上的神经网络模型进行转换的编译器,包括:
解析模块,其用于对原始神经网络模型进行解析,以得到解析信息;
生成模块,其用于根据所述解析信息生成目标神经网络模型运行时所需的计算图;
构建模块,其用于基于所述计算图构建所述目标神经网络模型;以及
编译模块,其用于将所述目标神经网络模型编译成对应的二进制指令序列,以分配至人工智能处理器上执行对应的任务。
条款A9、根据条款A8所述的编译器,其中在对原始神经网络模型进行解析中,所述解析模块配置成:
获取所述原始神经网络模型的网络模型文件;以及
对所述网络模型文件进行解析。
条款A10、根据条款A9所述的编译器,其中在对所述网络模型文件进行解析中,所述解析模块配置成:
根据所述原始神经网络模型,确定用于进行解析的目标脚本;以及
采用所述目标脚本对所述网络模型文件进行解析。
条款A11、根据条款A10所述的编译器,所述网络模型文件包括网络结构文件和所述网络结构的输入输出参数文件。
条款A12、根据条款A8所述的编译器,其中所述解析信息包括算子和关于所述算子的参数信息,其中在根据解析信息生成目标神经网络模型运行时所需的计算图中,所述生成模块配置成:
根据所述算子和所述参数信息生成所述计算图。
条款A13、根据条款A12所述的编译器,其中在根据所述算子和所述参数信息生成所述计算图中,所述生成模块配置成:
基于所述算子和所述参数信息,构建包含有多个节点的有向无环图;
其中每个所述节点包括一个所述算子。
条款A14、根据条款A13的任意一项所述的编译器,其中在基于所述计算图构建所述目标神经网络模型中,所述构建模块配置成:
获取所述计算图中算子所支持的数据类型;以及
根据所述数据类型和所述计算图来构建所述目标神经网络模型。
条款A15、一种对运行于人工智能芯片上的神经网络模型进行转换的设备,包括:
至少一个处理器;以及
至少一个存储器,其存储有对运行于人工智能芯片上的神经网络模型进行转换的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行根据条款A1-A7的任意一项所述的编译方法。
条款A16、一种计算机程序产品,包括对运行于人工智能芯片上的神经网络模型进行转换的计算机程序,所述计算机程序在被处理器执行时实现根据条款A1-A7的任意一项所述的编译方法。
条款A17、一种集成电路装置,包括根据条款A8-A14的任意一项所述的编译器或条款A15所述的设备。
条款A18、一种板卡,包括根据条款A17所述的集成电路装置。
虽然本说明书已经示出和描述了本公开的多个实施方式,但对于本领域技术人员显而易见的是,这样的实施方式只是以示例的方式提供的。本领域技术人员会在不偏离本公开思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本公开的过程中,可以采用对本文所描述的本公开实施方式的各种替代方案。所附权利要求书旨在限定本公开的保护范围,并因此覆盖这些权利要求范围内的模块组成、等同或替代方案。

Claims (12)

1.一种对运行于人工智能芯片上的神经网络模型进行转换的编译方法,所述编译方法由处理器来执行,并且包括:
对原始神经网络模型进行解析,以得到解析信息;
根据所述解析信息生成目标神经网络模型运行时所需的计算图;
基于所述计算图构建所述目标神经网络模型;以及
将所述目标神经网络模型编译成对应的二进制指令序列,以分配至人工智能芯片处执行对应的任务。
2.根据权利要求1所述的编译方法,其中对原始神经网络模型进行解析包括:
获取所述原始神经网络模型的网络模型文件;以及
对所述网络模型文件进行解析。
3.根据权利要求2所述的编译方法,其中对所述网络模型文件进行解析包括:
根据所述原始神经网络模型,确定用于进行解析的目标脚本;以及
采用所述目标脚本对所述网络模型文件进行解析。
4.根据权利要求2所述的编译方法,所述网络模型文件包括网络结构文件和所述网络结构的输入输出参数文件。
5.根据权利要求1所述的编译方法,其中所述解析信息包括算子和所述算子的参数信息,其中根据所述解析信息生成目标神经网络模型运行时所需的计算图包括:
根据所述算子和所述参数信息生成所述计算图。
6.根据权利要求5所述的编译方法,其中根据所述算子和所述参数信息生成所述计算图包括:
基于所述算子和所述参数信息,构建包含有多个节点的有向无环图;
其中每个所述节点包括一个所述算子。
7.根据权利要求6所述的编译方法,其中基于所述计算图构建所述目标神经网络模型包括:
获取所述计算图中算子所支持的数据类型;以及
根据所述数据类型和所述计算图来构建所述目标神经网络模型。
8.一种对运行于人工智能芯片上的神经网络模型进行转换的编译器,包括:
解析模块,其用于对原始神经网络模型进行解析,以得到解析信息;
生成模块,其用于根据所述解析信息生成目标神经网络模型运行时所需的计算图;
构建模块,其用于基于所述计算图构建所述目标神经网络模型;以及
编译模块,其用于将所述目标神经网络模型编译成对应的二进制指令序列,以分配至人工智能处理器上执行对应的任务。
9.一种对运行于人工智能芯片上的神经网络模型进行转换的设备,包括:
至少一个处理器;以及
至少一个存储器,其存储有对运行于人工智能芯片上的神经网络模型进行转换的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行根据权利要求1-7的任意一项所述的编译方法。
10.一种计算机程序产品,包括对运行于人工智能芯片上的神经网络模型进行转换的计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的编译方法。
11.一种集成电路装置,包括根据权利要求8所述的编译器或根据权利要求9所述的设备。
12.一种板卡,包括根据权利要求11所述的集成电路装置。
CN202110734792.5A 2021-06-30 2021-06-30 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品 Pending CN115543328A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110734792.5A CN115543328A (zh) 2021-06-30 2021-06-30 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110734792.5A CN115543328A (zh) 2021-06-30 2021-06-30 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品

Publications (1)

Publication Number Publication Date
CN115543328A true CN115543328A (zh) 2022-12-30

Family

ID=84716968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110734792.5A Pending CN115543328A (zh) 2021-06-30 2021-06-30 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品

Country Status (1)

Country Link
CN (1) CN115543328A (zh)

Similar Documents

Publication Publication Date Title
CN110096309B (zh) 运算方法、装置、计算机设备和存储介质
CN109284815B (zh) 神经网络模型算法编译方法、装置及相关产品
CN109543825B (zh) 神经网络模型算法编译方法、装置及相关产品
WO2023071238A1 (zh) 计算图的编译、调度方法及相关产品
CN112799726A (zh) 数据处理装置、方法及相关产品
CN113469336A (zh) 优化神经网络模型的编译方法、执行方法及相关产品
WO2023030507A1 (zh) 编译优化方法、装置、计算机设备以及存储介质
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
CN111047005A (zh) 运算方法、装置、计算机设备和存储介质
CN115840894A (zh) 一种用于处理多维张量数据的方法及其相关产品
CN113469326B (zh) 在神经网络模型中执行剪枝优化的集成电路装置及板卡
CN115543328A (zh) 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品
CN115329923A (zh) 用于神经网络模型的编译方法和相关产品
CN114298292A (zh) 获取算子数据和离线模型操作的设备及方法
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN112463158B (zh) 编译方法、装置、电子设备和存储介质
CN115545180A (zh) 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品
CN111026440B (zh) 运算方法、装置、计算机设备和存储介质
CN113469327B (zh) 执行转数提前的集成电路装置
CN111338694B (zh) 运算方法、装置、计算机设备和存储介质
CN117075902A (zh) 基于张量的编译方法、设备及其计算机可读存储介质
CN117075903A (zh) 基于张量的编译方法、设备及其计算机可读存储介质
CN115543329A (zh) 对运行于人工智能芯片上的区域候选网络进行优化的编译方法及其相关产品
CN118260185A (zh) 代码覆盖率统计的方法及其相关产品
CN118014034A (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