[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN113469328A - 执行转数穿过的装置、板卡、方法及可读存储介质 - Google Patents

执行转数穿过的装置、板卡、方法及可读存储介质 Download PDF

Info

Publication number
CN113469328A
CN113469328A CN202110704820.9A CN202110704820A CN113469328A CN 113469328 A CN113469328 A CN 113469328A CN 202110704820 A CN202110704820 A CN 202110704820A CN 113469328 A CN113469328 A CN 113469328A
Authority
CN
China
Prior art keywords
layer
data
neural network
processing
tree
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
CN202110704820.9A
Other languages
English (en)
Other versions
CN113469328B (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 CN202110704820.9A priority Critical patent/CN113469328B/zh
Publication of CN113469328A publication Critical patent/CN113469328A/zh
Application granted granted Critical
Publication of CN113469328B publication Critical patent/CN113469328B/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Analysis (AREA)

Abstract

本发明涉及在神经网络模型中执行转数穿过的装置、板卡、方法及可读存储介质,其中本发明的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。

Description

执行转数穿过的装置、板卡、方法及可读存储介质
技术领域
本发明一般地涉及神经网络领域。更具体地,本发明涉及在神经网络模型中执行转数穿过的装置、板卡、方法及可读存储介质。
背景技术
近年来,神经网络算法作为人工智能算法中的一个分支类别,在越来越多的领域展现了良好的适配性和优越的性能表现,如:图像识别、目标检测、自然语言处理等,成为了学术界和工业界的研究热点。
然而,神经网络算法的计算量大(可达100亿数量级运算量),且模型训练需要反向传播过程,消耗大量的硬件资源,传统的通用处理器为了兼顾通用性,无法满足智能应用场景的需求,因此高性能且低功耗的神经网络加速器成为了近年来体系结构领域的研究热点之一。
由于加速器的架构各异,对数据的摆放、分块、搬移、运算等方面有着不同的约束,所以对相应的编程系统需要考虑底层的硬件实现细节,以生成指令。特别是神经网络模型中卷积和全连接算子,其占用了绝大部分的运算资源,易导致硬件算力不足以至于运行效率降低。
因此一种针对神经网络模型的编译优化方案是迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种在神经网络模型中执行转数穿过的装置、板卡、方法及可读存储介质。
在一个方面中,本发明揭露一种在神经网络模型中执行转数穿过的集成电路装置,包括处理装置及计算装置。处理装置用以从神经网络模型中识别出定点运算层,其中定点运算层为定点数运算的层;判断上一层是否为只对数据元素的位置重排摆放的操作的算子;如是,执行判断步骤;如否,将上一层设定为转数调度目的层,并将对定点运算层执行的数据类型转换操作调度至转数调度目的层。计算装置用以基于调度后的定点运算层及转数调度目的层运行神经网络模型。
在另一个方面,本发明揭露一种板卡,包括前述的集成电路装置。
在另一个方面,本发明揭露一种在神经网络模型中执行转数穿过的方法,包括:从神经网络模型中识别出定点运算层,定点运算层为定点数运算的层;判断上一层是否为只对数据元素的位置重排摆放的操作的算子;如是,执行判断步骤;如否,将上一层设定为转数调度目的层,并将对定点运算层执行的数据类型转换操作调度至转数调度目的层;以及基于调度后的定点运算层及转数调度目的层运行神经网络模型。
在另一个方面,本发明揭露一种计算机可读存储介质,其上存储有在神经网络模型中执行转数穿过的计算机程序代码,当计算机程序代码由处理装置运行时,执行前述的方法。
本发明提出了一种转数穿过的方案,可以满足神经网络算子中按照算法对于计算逻辑的循环划分,提前至转数调度目的层计算量化参数的任务,节省层间数据搬移量,减少硬件的带宽占用量,提升性能。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图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,计算类U)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(applicat输入输出类nspecific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gatearray,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的工作,以完成深度学习的任务,其包括取指单元(instruct输入输出类n fetch unit,IFU)411及指令译码单元(instruct输入输出类n decode 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,输入输出类DMA)433、搬运直接内存访问模块(move directmemory access,MVDMA)434。NRAM 431用以存储供处理器核306计算的特征图及计算后的中间结果;WRAM 432则用以存储深度学习网络的权值;输入输出类DMA 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的访存。
GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。从前述可知,DRAM 204与NRAM 431或WRAM432间的通信可以经由2个渠道来实现。第一个渠道是通过输入输出类DAM 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的功能和输入输出类DMA 433的功能可以整合在同一部件中。本发明为了方便描述,将GDMA 311和输入输出类DMA 433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本发明类似,即属于本发明的保护范围。进一步地,GDMA 311的功能、输入输出类DMA 433的功能、CDMA 310的功能、MVDMA434的功能亦可以由同一部件来实现。
此实施例适用的神经网络框架预定义了一系列的神经网络层或算子接口。开发者通过调用神经网络框架的应用编程接口(API),设置每一层的层参数,链接数据与层之间的依赖关系,以搭建神经网络模型结构。在网络模型训练过程后,模型参数和权值数据被保存在结构化的模型文件中,储存在DRAM 204中。在部署运行时,处理装置203调用框架的API,加载训练好的网络模型,使用实际的输入数据,在计算装置201上执行网络模型的正向推理过程,得到网络的最终输出结果。而由于正向推理过程中模型结构和参数都是已知的,此实施例利用这些信息进行加速。
此实施例提出了一种树状的神经网络算子编程方法,称之为执行树。图5示出此实施例的执行树的示意图。执行树的节点是一个迭代的数据结构,由一个根节点501连接一个子树而成,子树可以包含任意多层及任意多个子节点,子节点又分为非叶子节点及叶子节点。非叶子节点位于子树的中间层,图5中示例性地显示2个非叶子节点502及503。叶子节点位于子树的最后一层,图5中示例性地显示2个叶子节点504及505。子树的层数与子节点数根据算子的需要而定,此实施例不做限制。
根节点和子节点的操作的执行逻辑相同,包括:初始操作、前处理操作、主体操作、后处理操作及结束操作。根节点和子节点还包括循环操作(未示出),用以记录该节点需要重复执行的次数。
初始操作在同级的执行树中是最先执行的部分,并且只执行一次,不随循环重复执行,是属于一次性初始化指令,例如寄存器初始化、激活操作配置等指令。前处理操作在初始操作之后执行,根据循环操作重复执行至少一次,负责主体操作之前的前处理,例如在Scale算子中,短向量右操作数对应循环分段数据的取数操作等。主体操作在前处理操作之后执行,同样根据循环操作重复执行至少一次,负责算子主体循环的计算部分。如果是根节点或非叶子节点,主体操作只用于切割数据并分配任务给下一层的子节点;如果是叶子节点,其主体操作是执行树的运算核心部分,例如进行累积加法运算。后处理操作在主体操作之后,同样根据循环操作重复执行至少一次,负责运算之后的后处理操作,包括复用数据的搬移、寄存器偏移等操作。结束操作只执行一次,用以输出计算结果。
上述各操作的执行次数与时机,是处理装置203基于神经网络算子在计算装置201上的运行指令的循环分析而创建的,而非执行树的功能限制。当需要循环操作时,循环的部分为前处理操作、主体操作及后处理操作。
在此实施例中,神经网络算子的执行大体可以分为3个阶段:加载阶段、计算阶段和存储阶段,故处理装置203将神经网络算子的执行树划分为加载、计算、存储三种树,每个算子的执行树都由加载、计算、存储树的根节点及其子树构成,即一个算子所有的执行树均属于这3个树中其中一种,每种树都拥有图5的结构。
在运行神经网络模型时,一个算子的3个执行树就能实现神经网络算子在计算装置201上运行所需的所有指令。首先,计算装置201执行加载树的一个叶子节点的相应执行顺序的操作的所有指令,再执行计算树的一个叶子节点,最后执行存储树的叶子节点,循环往复,直至所有的节点均执行完毕。
更详细来说,在编译阶段,处理装置203在解析遍历一个执行树时,是按照前序优先遍历的顺序,先执行根节点的初始、前处理操作,再遍历其子树的主体操作里的所有节点,最后执行根节点的后处理、结束操作。其中前处理、主体和后处理操作在循环时重复执行。
为了实现循环操作,当需要重复执行时,在需要重复执行的节点的后处理操作之后插入同步指令。计算装置201在运行时,如果接收到同步指令,便会回到该节点的前处理操作,再次执行前处理操作、主体操作与后处理操作,直到循环操作的循环次数被满足,才会执行该节点的结束操作。
图6示出此实施例解析遍历执行树的示意图。此简化的执行树包括一个根节点601、第一叶子节点602及第二叶子节点603。假设根节点601的循环操作记录根节点601的循环次数为3次,第一叶子节点602的循环操作记录第一叶子节点602的循环次数为5次,第二叶子节点603的循环操作记录第二叶子节点603的循环次数为1次。处理装置203在遍历此执行树时,先执行根节点601的初始和前处理操作,接着执行主体操作,根据其子树的前后链接顺序,接着执行第一叶子节点602的初始、前处理、主体、后处理操作,此时接收到同步指令604,同步指令604的循环信息记录需要重复执行5次。由于第一叶子节点602只执行了一次,故重复执行第一叶子节点602的前处理、主体、后处理操作,直到循环了5次,最后执行第一叶子节点602的结束操作。至此第一叶子节点602的子树的所有操作全部遍历完毕。
接着处理装置203遍历执行第二叶子节点603的子树。由于第二叶子节点603只需要循环一次,故在第二叶子节点603中不需要插入同步指令,直接执行初始、前处理、主体、后处理、结束操作,便回到根节点601。
继续遍历根节点601,即执行根节点601的后处理操作。由于根节点601需要被执行3次,因此根节点601的后处理操作之后设有同步指令605,同步指令605的循环信息记录需要重复执行3次。此时处理装置203回到根节点601的前处理操作重复执行,接着是如前所述其所有子树的全部操作流程,再执行根节点601的后处理操作,直到循环了3次,最后执行根节点601的结束操作,以完成根节点601树中所有操作的执行。
图6的例子是作为单个执行树的遍历顺序而言,由上述可知,计算装置201在计算算子时,是按照执行树的节点基于加载→计算→存储→加载→计算→存储的链状循环重复遍历完成。
处理装置203在编译执行树时,是基于神经网络算子的具体算法来分析,得出计算的循环层级,构建相应的执行树层级,链接子树关系。再由每次输入、输出、常数等数据块在片上资源(主要是NRAM 431内存空间)的占用比例或实际大小,得出每次计算循环内最大输入(或输出)的数据量,由具体计算循环层级的输入数据量除以单次循环的最大输入数据量,得出数据切片的循环层级,以链接子树关系。在各子树中,按照实际循环时的数据量,在合适的操作中,进行内存分配与释放。最后在各子树的合适的操作中,填充相应的加载片外数据、搬移复用数据、计算、存储输出数据等指令,以完成算子编译工作。
由于卷积层及全连接层在全网络中占据了大部分的计算量,需要针对这些计算进行优化,以提升全网络性能。此实施例考虑到由于卷积层及全连接层中的权值数据的参数量较大,有一定的冗余性,基于对精度完全无损或在允许范围内的精度损失的情况下,采取低精度的计算方式。换言之,为了节省硬件资源的使用,此实施例利用量化将高精度的浮点数转换成低精度的定点数来加速神经网络运算。例如矩阵运算单元422仅支持8位定点数(INT8)的乘累加操作,在进行矩阵运算前,要将输入数据和权值数据都转换为INT8数据类型的定点数,再导入至矩阵运算单元422进行的计算。
在这两种层中,权值数据可以使用离线预处理量化的方法,提前转换完成。权值数据是离线保存在模型中的,可以在编译时预处理,按照对应的数据类型转换权值数据,保存在新的网络模型文件中,并修改相应的网络模型结构描述文件,标记对应神经网络层的运算数据类型,添加相应的量化所需参数。在编译时,按照量化后的网络模型参数,生成计算装置201的指令序列。在运行时,计算装置201通过处理装置203生成的指令序列,按照对应计算数据类型的位宽,加载所需的权值数据到WRAM 432上,进行卷积及全连接层的运算,以实现网络加速。
然而,卷积及全连接算子的输入数据在网络中可能是来源于其他神经网络层的输出结果,无法在编译时提前转换数据类型,需要在片上使用相应的指令序列,完成数据类型转换操作。上述指令均是计算类指令,将在算子的计算阶段进行。
此实施例提出了一种数据类型转换调度提前的编译优化方法。从层的角度来说,想要数据类型转换的调度提前优化,必须在数据块满足以下两种情况的任一种的数据依赖约束时,才可以执行。一种情况是待转换数据类型的数据块来源于前一层输出,且只被本层使用作为输入数据,即上一层的数据输出仅作为本层的数据输入,不提供给其他层使用。另一种情况是上一层的输出数据块的接收层(包括本层)都是定点数计算的神经网络层,且数据类型转换操作中使用的量化参数是一样的。换言之,此实施例需确保数据类型转换的调度提前不会影响其他层的运算。图7示出此实施例进行数据类型转换调度提前的流程图。
在步骤701中,处理装置203从神经网络模型中识别出需要定点数运算的层,以下称为定点运算层。
在步骤702中,处理装置203判断上一层是否为只对数据元素的位置重排摆放的操作的算子。由于只对数据元素的位置重排摆放的操作的算子,其数据类型只影响数据搬移或转置等操作,按照数据位宽计算的数据量,不进行数值计算的操作,这类算子可以分为3类:第一类是数据搬移类的算子,例如Concat、Split,Slice/Crop、StridedSlice、Shuffle、Addpad、Space2Batch、Batch2Space等;第二类是数据形状转换类算子,例如:Reshape、Flatten、Permute、Squeeze、Unsequeeze等;第三类是转置类算子,例如:Transpose。
如处理装置203判断上一层为只有对数据元素的位置重排摆放的操作的算子,这些类算子的输出数据块满足前述的数据依赖约束,则回到步骤702,处理装置203继续判断再上一层是否为只对数据元素的位置重排摆放的操作的算子。直到上一层不再是只对数据元素的位置重排摆放的操作的算子,此上一层非只对数据元素的位置重排摆放的操作的算子即是转数调度目的层。这时执行步骤703,处理装置203将对定点运算层执行的数据类型转换的操作调度至转数调度目的层。计算装置201基于调度后的定点运算层及转数调度目的层运行神经网络。
图8示出示例性的神经网络片段,用以说明此实施例的类型转换调度操作。此神经网络片段包括第一层801、第二层802、第三层803、第四层804及第五层805,其中示例性的第一层801为池化层,第二层802为BatchNorm层,第三层803为Squeeze层,第四层804为Transpose层,第五层805为卷积层。如前所述,卷积运算主要由矩阵运算单元422来执行,而矩阵运算单元422仅支持INT8的乘累加操作,在进行矩阵运算前,要将输入数据和权值数据都转换为INT8数据类型的定点数,因此第五层805的计算树的前处理操作便是执行数据类型转换操作806。
首先在步骤701中,处理装置203从图8的神经网络模型片段中识别出定点运算层。第一层至第五层中,只有第五层805执行卷积运算,因此第五层805为定点运算层。
在步骤702中,处理装置203判断第五层805的上一层是否为只对数据元素的位置重排摆放的操作的算子。第五层805的上一层是第四层804,为Transpose层,属于第三类的转置类算子,确实是只对数据元素的位置重排摆放的操作的算子,因此基于第四层804重新执行步骤702,处理装置203判断第四层804的上一层是否为只对数据元素的位置重排摆放的操作的算子。第四层804的上一层是第三层803,为Squeeze层,属于第二类的数据形状转换类算子,同样是只对数据元素的位置重排摆放的操作的算子,因此基于第三层803重新执行步骤702,处理装置203判断第三层803的上一层是否为只对数据元素的位置重排摆放的操作的算子。第三层803的上一层是第二层802,为BatchNorm层,不属于前述三类中的任何一类,因此第二层802不是只对数据元素的位置重排摆放的操作的算子,第二层802为转数调度目的层。
最后执行步骤703,处理装置203将第五层805的数据类型转换操作806调度至第二层802的最后一次计算操作之后,也就是在第二层802的计算树中叶子节点的后处理操作中插入数据类型转换操作806。
数据类型转换操作806安排在第二层802的最后一次计算操作之后,并不会影响第二层802原有的运算,而数据类型转换操作806的提前执行,可以减少第二层802的部分数据搬移量,以及第三层803和第四层804全部数据搬移量,和第五层的部分数据搬移量。更精准来说,总计节省的数据量为:转数调度目的层(第二层802)在存储阶段的对应输出数据块的数据量减少一半,中间所有数据搬移层(第三层803和第四层804)的全部数据块的输入、输出数据量减少一半,以及定点运算层(第五层805)在加载阶段的输入数据量减少一半。
这个将数据类型转换操作调度至前层的优化称作“转数穿过”。从执行树的角度看,数据类型转换操作是从定点运算层的计算树的前处理操作移动到了转数调度目的层的最后一次完成计算的计算树的叶子节点的后处理操作中。
当输入数据使用离线量化方法时,对于神经网络模型中特定的某层,量化参数来源于模型文件中固定的对应层的参数,由软件接口传递至软件栈后端,在相应的数据类型转换指令中直接使用。因此,上述的调度优化方法可以直接应用离线量化方法中,在算子间调度数据类型转换操作。
而当输入数据使用在线量化方法时,如果量化采用的是绝对值最大值不失真量化算法,则需要先计算所有数据的绝对值的最大值,然后再计算量化参数。输入数据的重复循环的过程是必须的。处理装置203生成将输入数据执行绝对值最大值操作的第一次循环与执行数据类型转换的指令、再生成将定点运算层计算过程的第二次循环分开的指令,最后生成将绝对值最大值操作执行前述调度优化的指令。由于绝对值最大值操作是向量运算单元421执行的,而且与数据块的形状无关,故可以在不修改转数调度目的层的计算逻辑顺序的前提下进行调度优化,减少数据块自DRAM 204搬移至SRAM 308的循环输入输出操作的数据量。
图9示出从执行树的角度来看此实施例在线量化调度优化的示意图。定点数计算层901主要包括2个执行树:计算量化参数的执行树902和计算输入数据类型转换与定点数的执行树903,每个执行树均包括加载树、计算树和存储树,每个节点同样包括初始操作、前处理操作、主体操作、后处理操作及结束操作。为精简说明,与在线量化调度优化无直接关联的操作未显示于图中。
在调度优化前,计算量化参数的执行树902的加载树的主体操作904用以加载输入数据,计算量化参数的执行树902的计算树的主体操作905用以计算输入数据的绝对值最大值,计算量化参数的执行树902的计算树的结束操作906用以暂存该绝对值最大值于SRAM308中,由于该绝对值最大值马上要被使用,因此无需执行存储至DRAM 204之后再被加载至SRAM 308的步骤,故计算量化参数的执行树902的存储树没有任何操作,该绝对值最大值直接存储于SRAM 308中。
计算输入数据类型转换与定点数的执行树903的加载树的主体操作907用以载入输入数据,计算输入数据类型转换与定点数的执行树903的计算树的前处理操作908基于存储在SRAM 308的绝对值最大值,用以执行输入数据的类型转换,计算输入数据类型转换与定点数的执行树903的计算树的主体操作909用以执行INT8计算,使权值数据成为定点数的数据格式,最后计算输入数据类型转换与定点数的执行树903的存储树的主体操作910用以将定点数的输入数据存储至DRAM 204中。
在进行调度优化时,处理装置203将主体操作905的量化参数计算操作移动到转数调度目的层执行树911的计算树的后处理操作中。进一步地,处理装置203将结束操作906的存储绝对值最大值的相关指令调整到调度目的层执行树911的存储树中的结束操作,使得计算后的量化参数会被存储至DRAM 204。最后,处理装置203在计算输入数据类型转换与定点数操作903的加载树的前处理操作912中加载从DRAM 204将该绝对值最大值作为参数加载至SRAM 308中的操作,以取回相应的量化参数,进而完成数据类型转换操作。
本发明的另一个实施例为一种计算机可读存储介质,其上存储有在神经网络模型中执行转数穿过的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行如图7所示的方法。
本发明提出了一种转数穿过的方案,可以满足神经网络算子中按照算法对于计算逻辑的循环划分,提前至转数调度目的层计算量化参数的任务,节省层间数据搬移量,减少硬件的带宽占用量,提升性能。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过此实施例未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,此实施例在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,此实施例所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
以上对本发明实施例进行了详细介绍,此实施例中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (9)

1.一种在神经网络模型中执行转数穿过的集成电路装置,包括:
处理装置,用以:
从所述神经网络模型中识别出定点运算层,所述定点运算层为定点数运算的层;
判断上一层是否为只对数据元素的位置重排摆放的操作的算子;
如是,执行所述判断步骤;以及
如否,将所述上一层设定为转数调度目的层,并将对所述定点运算层执行的数据类型转换操作调度至所述转数调度目的层;以及
计算装置,用以基于调度后的所述定点运算层及所述转数调度目的层运行所述神经网络模型。
2.根据权利要求1所述的集成电路装置,其中所述只对数据元素的位置重排摆放的操作的算子为数据搬移类的算子、数据形状转换类算子及转置类算子其中之一。
3.根据权利要求1所述的集成电路装置,其中所述处理装置在将对所述定点运算层执行的数据类型转换操作调度至所述转数调度目的层时,将所述数据类型转换操作从所述定点运算层的计算树的前处理操作移动到了所述转数调度目的层的最后一次完成计算的计算树的叶子节点的后处理操作中。
4.根据权利要求3所述的集成电路装置,其中所述定点运算层包括计算量化参数操作,所述处理装置将所述计算量化参数操作的主体操作的量化参数计算操作移动到所述转数调度目的层的计算树的后处理操作中。
5.根据权利要求4所述的集成电路装置,其中所述处理装置203将所述计算量化参数操作的结束操作的存储绝对值最大值的相关指令调整到所述调度目的层的存储树中的结束操作。
6.根据权利要求5所述的集成电路装置,其中所述定点运算层包括计算输入数据类型转换与定点数操作,所述处理装置在所述计算输入数据类型转换与定点数操作的加载树的前处理操作中加载所述绝对值最大值的操作。
7.一种板卡,包括根据权利要求1至6任一项所述的集成电路装置。
8.一种在神经网络模型中执行转数穿过的方法,包括:
从所述神经网络模型中识别出定点运算层,所述定点运算层为定点数运算的层;
判断上一层是否为只对数据元素的位置重排摆放的操作的算子;
如是,执行所述判断步骤;
如否,将所述上一层设定为转数调度目的层,并将对所述定点运算层执行的数据类型转换操作调度至所述转数调度目的层;以及
基于调度后的所述定点运算层及所述转数调度目的层运行所述神经网络模型。
9.一种计算机可读存储介质,其上存储有在神经网络模型中执行转数穿过的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求8所述的方法。
CN202110704820.9A 2021-06-24 2021-06-24 执行转数穿过的装置、板卡、方法及可读存储介质 Active CN113469328B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110704820.9A CN113469328B (zh) 2021-06-24 2021-06-24 执行转数穿过的装置、板卡、方法及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110704820.9A CN113469328B (zh) 2021-06-24 2021-06-24 执行转数穿过的装置、板卡、方法及可读存储介质

Publications (2)

Publication Number Publication Date
CN113469328A true CN113469328A (zh) 2021-10-01
CN113469328B CN113469328B (zh) 2024-03-19

Family

ID=77872813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110704820.9A Active CN113469328B (zh) 2021-06-24 2021-06-24 执行转数穿过的装置、板卡、方法及可读存储介质

Country Status (1)

Country Link
CN (1) CN113469328B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019114517A1 (zh) * 2017-12-13 2019-06-20 腾讯科技(深圳)有限公司 一种神经网络模型部署方法、预测方法及设备
US20190279072A1 (en) * 2018-03-09 2019-09-12 Canon Kabushiki Kaisha Method and apparatus for optimizing and applying multilayer neural network model, and storage medium
CN110334436A (zh) * 2019-07-03 2019-10-15 腾讯科技(深圳)有限公司 一种数据处理方法以及设备
CN110458294A (zh) * 2019-08-19 2019-11-15 Oppo广东移动通信有限公司 模型运行方法、装置、终端及存储介质
CN111723935A (zh) * 2020-06-24 2020-09-29 湖北亿咖通科技有限公司 神经网络计算图的处理方法、计算机存储介质及电子设备
CN112465122A (zh) * 2020-12-09 2021-03-09 安徽寒武纪信息科技有限公司 优化神经网络模型中原始维度算子的装置和方法
WO2021052460A1 (zh) * 2019-09-18 2021-03-25 华为技术有限公司 数据处理方法、模型优化装置和模型执行装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019114517A1 (zh) * 2017-12-13 2019-06-20 腾讯科技(深圳)有限公司 一种神经网络模型部署方法、预测方法及设备
US20190279072A1 (en) * 2018-03-09 2019-09-12 Canon Kabushiki Kaisha Method and apparatus for optimizing and applying multilayer neural network model, and storage medium
CN110334436A (zh) * 2019-07-03 2019-10-15 腾讯科技(深圳)有限公司 一种数据处理方法以及设备
CN110458294A (zh) * 2019-08-19 2019-11-15 Oppo广东移动通信有限公司 模型运行方法、装置、终端及存储介质
WO2021052460A1 (zh) * 2019-09-18 2021-03-25 华为技术有限公司 数据处理方法、模型优化装置和模型执行装置
CN111723935A (zh) * 2020-06-24 2020-09-29 湖北亿咖通科技有限公司 神经网络计算图的处理方法、计算机存储介质及电子设备
CN112465122A (zh) * 2020-12-09 2021-03-09 安徽寒武纪信息科技有限公司 优化神经网络模型中原始维度算子的装置和方法

Also Published As

Publication number Publication date
CN113469328B (zh) 2024-03-19

Similar Documents

Publication Publication Date Title
CN114035916A (zh) 计算图的编译、调度方法及相关产品
CN116185942A (zh) 数据处理方法、装置、存储介质以及电子设备
CN113469336A (zh) 优化神经网络模型的编译方法、执行方法及相关产品
CN113469326B (zh) 在神经网络模型中执行剪枝优化的集成电路装置及板卡
CN114595813B (zh) 异构加速处理器及数据计算方法
CN113469337B (zh) 用于优化神经网络模型的编译方法及其相关产品
CN116402091A (zh) 面向人工智能芯片的混合引擎智能计算方法和装置
CN115952848A (zh) 卷积运算电路、编译方法及相关产品
CN113469328B (zh) 执行转数穿过的装置、板卡、方法及可读存储介质
CN113469327B (zh) 执行转数提前的集成电路装置
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
CN115840894A (zh) 一种用于处理多维张量数据的方法及其相关产品
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡
CN115081603A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN113792867B (zh) 运算电路、芯片和板卡
WO2022063183A1 (zh) 执行神经网络计算的装置、板卡、方法及可读存储介质
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN114692846A (zh) 数据处理装置、数据处理方法及相关产品
CN114692845A (zh) 数据处理装置、数据处理方法及相关产品
CN115081602A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN115599738A (zh) 一种对神经网络模型进行优化的方法及相关产品
CN114692811A (zh) 执行Winograd卷积的装置与板卡
CN114692848A (zh) 获得卷积结果的装置与板卡
CN115438777A (zh) 对神经元数据执行Winograd卷积正变换的装置

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