CN113469336A - 优化神经网络模型的编译方法、执行方法及相关产品 - Google Patents
优化神经网络模型的编译方法、执行方法及相关产品 Download PDFInfo
- Publication number
- CN113469336A CN113469336A CN202110729501.3A CN202110729501A CN113469336A CN 113469336 A CN113469336 A CN 113469336A CN 202110729501 A CN202110729501 A CN 202110729501A CN 113469336 A CN113469336 A CN 113469336A
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- network model
- layer
- 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.)
- Withdrawn
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims abstract description 78
- 238000003860 storage Methods 0.000 claims abstract description 63
- 238000007634 remodeling Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims abstract description 8
- 238000013473 artificial intelligence Methods 0.000 claims description 40
- 238000013507 mapping Methods 0.000 claims description 6
- 238000005457 optimization Methods 0.000 abstract description 9
- 238000004891 communication Methods 0.000 description 30
- 238000013135 deep learning Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 238000010801 machine learning Methods 0.000 description 13
- 238000003491 array Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000001559 infrared map Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000008901 benefit 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
- 101150086656 dim1 gene Proteins 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000002955 isolation Methods 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
- 230000003287 optical effect Effects 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000009466 transformation Effects 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Signal Processing (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本披露公开了一种用于优化神经网络模型的编译方法、设备和计算机程序产品,还公开了一种在异构处理系统上执行神经网络模型的方法及异构处理系统。该设备可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了神经网络模型中的重塑层的优化方案,其可以有效减少片外访存带宽,缓解访存压力,提高机器的处理效率。
Description
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及一种用于优化神经网络模型的编译方法、设备和计算机程序产品。本披露还涉及一种在异构处理系统上执行神经网络模型的方法及异构处理系统。
背景技术
目前,深度学习(Deep Learning)已经成为机器学习中的重要分支,也大力助推着人工智能(AI)的发展。深度学习的核心技术——深度神经网络(DNN)已在诸多行业有着广泛的应用。
为了提高神经网络模型的表达能力,DNN不断向着更深或更宽的网络规模发展。然而网络层级的增加也带来了数据IO量大、访存供不上数等问题。因此,为了能充分发挥神经网络模型的优势,需要解决人工智能处理器面临的访存困扰问题。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种用于优化神经网络模型的编译方法、设备和计算机程序产品。本披露还涉及一种在异构处理系统上执行神经网络模型的方法及异构处理系统。
在第一方面中,本披露公开一种用于优化神经网络模型的编译方法,其中所述神经网络模型包括至少一个重塑层,用于将其上一层输出的具有第一形状的第一数据转换为具有第二形状的第二数据以提供给其下一层,所述编译方法包括:获取所述第一数据的第一虚拟地址和所述第二数据的第二虚拟地址;将所述第一虚拟地址和第二虚拟地址映射到同一物理地址;删除所述重塑层以优化所述神经网络模型;以及将优化后的所述神经网络模型编译成对应的指令序列,以分配至人工智能处理器上执行对应的任务。
在第二方面中,本披露提供一种用于优化神经网络模型的设备,包括:至少一个处理器;以及至少一个存储器,其用于存储程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行根据本披露第一方面所述的方法。
在第三方面中,本披露提供一种计算机程序产品,包括程序指令,所述程序指令在被处理器执行时,实现根据本披露第一方面所述的方法。
在第四方面中,本披露提供一种在异构处理系统上执行神经网络模型的方法,所述异构处理系统包括通用处理器、人工智能处理器和片外存储器,所述方法包括:所述通用处理器执行所述片外存储器和所述人工智能处理器侧的内存空间分配;将为执行所述神经网络模型所准备的数据和指令序列从所述片外存储器搬运到所述人工智能处理器侧分配的内存空间中,其中所述指令序列是所述通用处理器根据第一方面任一实施例所述的编译方法对神经网络模型进行编译获得的;所述人工智能处理器运行所述指令序列并输出运行结果;以及将所述运行结果从所述人工智能处理器侧搬运到所述片外存储器。
在第五方面,本披露提供一种异构处理系统,包括通用处理器、人工智能处理器和片外存储器,其中:所述通用处理器用于执行所述片外存储器和所述人工智能处理器侧的内存空间分配;以及将为执行所述神经网络模型所准备的数据和指令序列从所述片外存储器搬运到所述人工智能处理器侧分配的内存空间中,其中所述指令序列是所述通用处理器根据第一方面任一实施例所述的编译方法对神经网络模型进行编译获得的;并且所述人工智能处理器用于:运行所述指令序列并输出运行结果;以及将所述运行结果从所述人工智能处理器侧搬运到所述片外存储器。
通过如上所提供的用于优化神经网络模型的编译方法、设备及计算机程序产品,本披露实施例提供了一种对神经网络模型中的重塑层优化处理方案,其可以简化神经网络模型,有效减少片外访存带宽,缓解访存压力,提高机器的处理效率。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图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和存储装置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整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核装置时处理器核的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、参数存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责计算装置301与DRAM 204间的数据搬运。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置400采用分层结构设计,多核计算装置400作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置400是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置400包括外部存储控制器41、外设通信模块42、片上互联模块43、同步模块44以及多个集群45。
外部存储控制器41可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块42用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块43将外部存储控制器41、外设通信模块42及多个集群45连接起来,用以在各个模块间传输数据和控制信号。同步模块44是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群45是多核计算装置400的计算核心,在图中示例性地展示4个,随着硬件的发展,本公开的多核计算装置400还可以包括8个、16个、64个、甚至更多的集群45。集群45用以高效地执行深度学习算法。
以集群的层级来看,如图4右上方所示,每个集群45包括处理单元402和存储核(MEM core)404。处理单元402执行各种计算任务。在一些实现中,处理单元可以是多核架构,例如包括多个处理核(IPU core)411-1~411-n,以完成诸如大规模向量计算任务。本公开不限制处理核411的数量。
处理核411的内部架构如图4下方所示。每个处理核411内可以具有多个用于执行计算任务的计算模块424-1~424-m,以及为执行计算任务所需要的本地存储模块423。需特别说明的是,本地存储模块423可以包括各种通信模块,以与外部存储单元进行数据交换。例如,本地存储模块423可以包括通信模块421,以与存储核404中的共享存储模块415通信。通信模块421例如可以是搬运直接内存访问模块(move direct memory access,MVDMA)。本地存储模块423还可以包括通信模块422,以与片外内存,例如DRAM 408进行数据交换。通信模块422例如可以是输入/输出直接内存访问模块(input/output direct memory access,IODMA)。IODMA 422控制本地存储模块423中的NRAM/WRAM(图4未示出,参见图3)与DRAM 408的访存;MVDMA 421则用以控制本地存储模块423中的NRAM/WRAM与共享存储模块415的访存。
继续图4右上方视图,存储核404主要用以存储和通信,即存储处理核411间的共享数据或中间结果、以及执行集群45与DRAM 408之间的通信、集群45间彼此的通信、处理核411间彼此的通信等。在其他实施例中,存储核404具有标量运算的能力,用以执行标量运算,以实现数据通信中的运算任务。
存储核404包括一个较大的共享存储模块(SRAM)415、广播总线414、集群直接内存访问模块(cluster direct memory access,CDMA)418、全局直接内存访问模块(globaldirect memory access,GDMA)416及通信时计算模块417。SRAM 415承担高性能数据中转站的角色,在同一个集群45内不同处理核411之间所复用的数据不需要通过处理核411各自向DRAM 408获得,而是经SRAM 415在处理核411间中转,存储核404只需要将复用的数据从SRAM 415迅速分发给多个处理核411即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线414、CDMA 418及GDMA 416则分别用来执行处理核411间的通信、集群45间的通信和集群45与DRAM 408的数据传输。以下将分别说明。
广播总线414用以完成集群45内各处理核411间的高速通信,此实施例的广播总线414支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理核至单一处理核)的数据传输,多播是将一份数据从SRAM 415传输到特定几个处理核411的通信方式,而广播则是将一份数据从SRAM 415传输到所有处理核411的通信方式,属于多播的一种特例。
CDMA 418用以控制在同一个计算装置201内不同集群45间的SRAM 415的访存。
GDMA 416与外部存储控制器41协同,用以控制集群45的SRAM 415到DRAM 408的访存,或是将数据自DRAM 408读取至SRAM 415中。从前述可知,DRAM 408与本地存储模块423中的NRAM/WRAM间的通信可以经由2个渠道来实现。第一个渠道是通过IODMA 422直接联系DRAM 408与本地存储模块423;第二个渠道是先经由GDMA 416使得数据在DRAM 408与SRAM415间传输,再经过MVDMA 421使得数据在SRAM 415与本地存储模块423间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 408与本地存储模块423间的通信通过第二个渠道可能更有效率。本公开的实施例可根据本身硬件条件选择数据传输渠道。
在一些实施例中,存储核404可以作为集群45内的一个缓存层级,达到拓宽通信带宽的作用。进一步地,存储核404还可以完成与其他集群45之间的通信。存储核404例如能够实现集群45之间的广播(Broadcast)、撒播(Scatter)、收集(Gather)、规约(Reduce)和全规约(All-reduce)等通信功能。其中,广播是指将同一份数据分发广播给所有集群;撒播是指将不同数据分发给不同的集群;收集是指将多个集群的数据会聚在一起;规约是指将多个集群中的数据按照指定的映射函数进行运算得到最后的结果发送给某个集群;而全规约与规约的区别在于后者最后的结果只发送给一个集群,而全规约需要发送给所有集群。
通信时计算模块417可以用于在通信过程中完成例如上述规约、全规约等通信中的计算任务,而不需要借助处理单元402,从而提升通信效率,达到“存算一体”的效果。取决于不同的硬件实现,通信时计算模块417和共享存储模块415可以整合在相同或不同部件中,本披露实施例在此方面没有限制,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
以上结合图1-图4对本公开的硬件架构及其内部结构进行了详细的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡及其内部结构进行改变,而这些改变依然落入本公开的保护范围内。下面将对本公开的用于片上系统的方案进行详细地描述。本披露的实施例基于前述硬件环境,提供一种用于优化神经网络模型的编译方法,从而支持神经网络模型中重塑层的优化处理。
图5示出了可以应用本披露实施例的神经网络模型500的示例性图示。如本领域技术人员所知,神经网络模型500通常包括输入层510、输出层530以及位于输入层和输出层中间的隐藏层520。根据本公开的方案,隐藏层520可以包括至少一个重塑层522。重塑层522用于将其上一层521输出的具有第一形状的第一数据转换为具有第二形状的第二数据以提供给其下一层523。可以理解,虽然将重塑层522的上一层521和下一层523示出为隐藏层,上一层521也可以是输入层510,而下一层523也可以是输出层530。
可以理解的是,上文关于神经网络模型的介绍仅仅是示例性的,并且神经网络模型的结构并不受图中所示结构的限制,本领域技术人员根据需要可以对图中所示结构做出修改。下面详细描述重塑层的操作。
重塑层(reshape)的操作对象是张量数据。张量可以看作N维数组,而数组的维数就是张量的阶数。因此,0阶张量对应标量数据;1阶张量对应一维数组,也就是向量;2阶张量对应二维数组,也就是矩阵;以此类推,N阶张量对应N维数组。例如,一张RGB图像可以表示为3阶张量,而多种RGB图像构成的数据集可以表示为4阶张量。
每个张量都有一些常用属性,包括数据类型、形状等。张量的形状表示张量各阶的长度。例如,一个0阶张量对应一个标量数据,它的形状为空;一个1阶张量对应一个一维向量,其形状包含一个元素,元素值为向量的长度;一个2阶张量对应一个矩阵,其形状包含两个元素,分别对应行和列的长度;一个3阶张量对应一个三维数据,其形状包含三个元素,分别对应每一阶的长度。张量的形状可以帮助程序员形成对张量的直观感受。因此,在一些场景下,需要对张量的形状进行变化。
重塑层的作用是将具有第一形状的第一数据转换为具有第二形状的第二数据。例如,假设第一数据为三维数组X,其形状为X3=(2,2,3)
X=[[[1,2,3],[4,5,6]];[[7,8,9],[10,11,12]]]
需要将第一数据转换为形状为Y2=(6,2)的第二数据Y:
Y=[[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]]
从第二数据的形状可以看出,第二数据Y是一个二维数组。
虽然多维数组具有多个维度,但是因为存储器(例如,前面提到的内存DRAM和缓存RAM)的布局始终是一维的,因此多维数组与存储器上的存储顺序之间存在对应关系。多维数组通常被分配在连续的存储空间中,也即可以将多维数组进行一维展开,按顺序存储在存储器上。
图6示例性示出了多维数组的不同形状及其在存储器上的存储顺序,其中使用一块连续内存的一维数组来实现多维数组的存储。
图6中(a)图示出了上面的第一数据,也即三维数组X,其具有三个维度,分别是维度0(dim0)、维度1(dim1)和维度2(dim2)。维度0的尺寸为2,维度1的尺寸为2,维度2的尺寸为3。因此其形状可以表示为:X3=(2,2,3)。
图6中(b)图示出了对第一数据重塑后的第二数据,也即二维数组Y。从图中可以看出,相比于数组X,数组Y的形状发生了变化,变成:Y2=(6,2)。
虽然两个数据的形状不同,但是数据元素没有变化。在进行存储时,假设均按照低维度优先方式(例如形状表示中从左到右对应高维度到低维度)的顺序存储,则将这两个数据进行一维展开,可以得到:
X=[1,2,3,4,5,6,7,8,9,10,11,12];
Y=[1,2,3,4,5,6,7,8,9,10,11,12]。
图6的(c)图和(d)图分别示出了三维数组X和二维数组Y的存储顺序,图中背景相同的数据表示位于同一维度。可以看出,虽然两个数据具有不同的形状,但是其在存储器上的存储顺序是一致的,也即每个数据元素的存储位置是一致的。更具体地,最低维度(同一行)的数据是连续的,更高维度的数据则间隔不同的距离。例如,在(c)图所示的存储方式下,访问维度dim2上相邻元素物理结构需要偏移1个位置(例如,从数据1到数据2,数据5到数据6,等等);访问维度dim1上相邻元素物理结构需要偏移3个位置(例如,从数据1到数据4,数据2到数据5,…,数据9到数据12,等等);而访问维度dim0上相邻元素物理结构则需要偏移6个位置(例如,从数据1到数据7,数据2到数据8,…,数据6到数据12,等等)。这个偏移量称为步长(stride)。三维数组X的各个维度的步长可以表示为SX=(6,3,1)。类似地,二维数组Y的各个维度的访问步长可以表示为SY=(2,1)。
从图6中可以看出,重塑不影响多维数组在存储器上的存储顺序。例如,对于三维数组X和二维数组Y,二者在存储器上的存储顺序是相同的,区别仅在于维度信息和步长信息。基于维度信息和步长信息,可以访问多维数组中相应的数据。
在常规神经网络模型中,各个网络层之间的运算是相对独立、顺次执行的,也即前一层运算完成后,会将运算结果回存到片外存储电路上,后一层在执行运算时,从片外存储电路上读取数据,再执行相应的运算。对于重塑层的操作也是如此,首先会从片外存储电路的第一地址中读取待处理的输入数据,其例如是上一层的运算结果,然后改变输入数据的形状作为输出数据,再将其回存到片外存储电路的第二地址。通常情况下,第一地址和第二地址是不同的。
然而,发明人根据前述重塑层的操作原理分析发现,重塑层并不改变数据中各数据元素在存储电路上的顺序,因此现有的重塑层处理方式无疑增加了存储空间需求,也增加数据访存次数,造成性能下降。鉴于此,本披露实施例提供了一种重塑层的优化方案,其可以在对神经网络模型的编译过程中对重塑层进行优化,从而简化神经网络模型,避免了中间数据在片外和片上存储电路之间的来回搬运,降低了数据访存压力。
图7示出了根据本披露实施例的用于优化神经网络模型的编译方法的示意性流程图。可以理解,本披露实施例所针对的神经网络模型包括至少一个重塑层,重塑层用于将其上一层输出的具有第一形状的第一数据转换为具有第二形状的第二数据以提供给其下一层。当对这种神经网络模型进行编译时,可以对重塑层进行优化。
具体地,在步骤710中,获取第一数据的第一虚拟地址和第二数据的第二虚拟地址。
可以理解,通常在程序运行时,程序中访问的内存地址不是实际的物理内存地址,而是一个虚拟地址,其由例如操作系统将这个虚拟地址映射到适当的物理内存地址上。这样,只要操作系统处理好虚拟地址到物理内存地址的映射,就可以保证不同的程序最终访问的内存地址位于不同的区域,彼此没有重叠,从而达到内存地址空间隔离的效果。
在对神经网络模型进行构建时,通常会为不同的数据分配不同的虚拟地址,从而程序员无需关注底层硬件实现,只需针对数据的虚拟地址进行操作即可。例如,在重塑层的操作中,涉及输入的第一数据,其对应的第一虚拟地址例如为data1,还涉及输出的第二数据,其对应的第二虚拟地址例如为data2。因此,在对神经网络模型的程序进行编译时,可以获取这两个虚拟地址。
接着,在步骤720中,将第一虚拟地址和第二虚拟地址映射到同一物理地址。如前面针对重塑层的操作原理所分析的,重塑层实际上并不改变数据在存储器上的存储顺序,因此没有必要将相同的数据进行搬运。为减少搬运操作,可以将第一数据的第一虚拟地址与第二数据的第二虚拟地址映射到同一物理地址。由此,在对第一虚拟地址和第二虚拟地址解析映射后,访问的是同一物理地址上的数据。
接着,在步骤730中,可以删除重塑层以优化神经网络模型。由于重塑层的操作并不实际改变数据内容和存储顺序,并且在上一步骤中对重塑层的输入数据和输出数据的虚拟地址进行了关联映射,也即都映射到同一物理地址,因此重塑层的操作可以省去,从而精简神经网络模型。具体地,删除重塑层可以包括将重塑层的上一层的输出直接连接到重塑层的下一层的输入。
最后,在步骤740中,将优化后的神经网络模型编译成对应的指令序列,以分配至人工智能处理器上执行对应的任务。由于优化后的神经网络模型中不存在重塑层,因此,编译后的指令序列中也不存在针对重塑层的指令,也即重塑层算子的指令条数为0,继而也不会产生数据搬运,即数据IO量为0。
可选地或附加地,在一些实施例中,考虑到重塑层的下一层中对第二数据的使用可能是数据元素级别的,因此,可以将第二数据的形状参数传递给重塑层的下一层。由此,该层可以基于形状参数,确定数据不同维度上的访问步长,以实现数据元素级别的访问。在另一些实施例中,第二数据的形状可以基于其他一些信息推算出来,例如参与运算的其他数据形状等,因此可以无需上述步骤。
在一些实施例中,神经网络模型可以是基于深度学习编程框架构建的。神经网络模型由计算图表示,因此删除重塑层包括删除计算图中对应重塑层的计算节点。
为了更好地理解编程架构,图8示出了编程栈800的示意结构。
如图所示,该编程栈800包括机器学习应用810、深度学习框架820、IR图830、抽象语言表示840以及机器学习硬件850。
机器学习应用810针对不同的应用场景,提供对应的机器学习算法模型,例如各种神经网络模型。这些算法模型可以直接被深度学习框架820的编程接口解析。
深度学习框架820可以包括多种编程框架,例如谷歌的张量流图TensorFlow、深度学习框架Caffe、Caffe2、MXNet、PyTorch等。对于各种机器学习应用810的机器学习算法模型,深度学习框架820用作主要的编程接口来构建对应的机器学习/深度学习网络。
深度学习框架820可以将构建的网络转换成图形级别的中间表达(IR),简称IR图或计算图。IR图包括节点和边。IR图的每个节点表示一个操作或算子,可能会应用在某个输入上,并能够生成传递给其他节点的输出。IR图中的边表示数据的流向。
针对IR图,可以进行各种图形级别的优化。这些优化可以包括但不限于:常量折叠、算子融合、图替代等。在本披露实施例中,通过针对重塑层的操作特点,对输入数据和输出数据的虚拟地址进行处理,从而删除重塑层,可以省去数据搬运动作,节省访存带宽。
此外,由于IR图相对于各个后端是独立的,其结果可以被多个后端共享。因此,在IR图层面进行优化,优化结果可以在多个后端上共享,从而简化处理。
优化后的IR图可以编译成抽象语言表示840,也即各种指令。这些指令可以由底层的机器学习硬件850来执行。机器学习硬件850例如可以是机器学习处理器或称人工智能处理器。
目前,在大部分智能计算系统中,需要异构处理器的参与。异构处理系统通常由通用处理器和多个领域专用处理器(或称人工智能处理器)组成。通用处理器作为控制设备(简称主机端),负责复杂控制和调度等工作。人工智能处理器作为从设备(简称设备端),负责大规模的并行计算或领域专用计算任务。二者协同完成计算任务。异构处理系统还可以包括片外存储器,诸如图2所示的存储装置204,其可以用以存储人工智能处理器则待处理的数据和指令序列,其可以是DRAM,通常为DDR内存。待处理的数据例如可以是为在设备端上执行神经网络模型而准备的数据。指令序列可以是通用处理器根据本披露前述任一实施例的编译方法对神经网络模型进行编译获得的。
图9示出了根据本披露实施例的在异构处理系统上执行神经网络模型的方法的示意性流程图。
如图所示,在步骤910中,异构处理系统中的通用处理器可以根据前文描述的编译方法对神经网络模型进行编译以生成指令序列。
异构编程包括主机端和设备端两部分。对于主机端而言,主要包括设备获取、数据/参数准备、执行流创建、任务描述、设备上运行的程序的启动及输出获取等。主机端程序和设备端程序分别放在不同的文件中,可以分别使用各自的编译器进行编译。在得到主机端和设备端目标文件后,再使用主机端链接器将两份目标文件及运行时库等文件链接在一起形成可执行程序。可以理解,步骤910可以在后续步骤之前预先完成,例如与后续步骤间隔一长段时间,而不必与后续步骤一起实时执行。
接着,在步骤920中,通用处理器执行片外存储器和人工智能处理器侧的内存空间分配。
当运行基于编译后的指令序列生成的可执行文件时,通用处理器可以执行对应的控制和调度方面的工作。这些工作包括但不限于:设备初始化、数据准备、内存空间分配、启动设备端运行的程序、获取输出等等。设备初始化例如包括查询可用设备、选择某设备执行及设置任务规模等。在有些情况下,执行具体运算前需要在主机端准备输入数据并进行预处理,诸如数据类型的转换等。
内存空间分配包括片外存储器的内存分配和设备端(人工智能处理器侧)的内存分配。在主机端可以通过运行时接口进行设备端的输入输出空间分配,后续传递给要在设备上运行的程序。
分配内存空间后,可以在步骤930中,将为执行神经网络模型所准备的数据的指令序列从片外存储器搬运到设备端/人工智能处理器侧分配的内存空间中。这里的指令序列例如是步骤910中生成的指令序列。继而,可以调用要在设备端运行的程序并启动。
接着,在步骤940中,人工智能处理器运行指令序列并输出运行结果。
在一些实施例中,在运行经本披露实施例优化的神经网络模型时,人工智能处理器在执行原重塑层的上一层的运算后,可以将该层运算所产生的第一数据存储到指令序列中指示的物理地址所指定的存储区域;而在执行原重塑层的下一层的运算时,可以直接从该物理地址所指定的存储区域读取数据作为第二数据,以执行该层的运算。两层运算之间不再发生重塑层的操作。
可选地或附加地,在一些实施例中,当人工智能处理器执行原重塑层的下一层的运算时,根据访问粒度需求,可以根据第二数据的形状参数确定第二数据中数据元素的地址偏移量;以及利用上述物理地址和地址偏移量来对第二数据中的数据元素进行存取。
最后,在步骤950中,将人工智能处理器侧的运行结果从人工智能处理器侧搬运到片外存储器。
在一些实施例中,上述物理地址所指定的存储区域可以位于人工智能处理器的片外存储器(例如图2所示的诸如DRAM的存储装置204)。
应当注意,为了不必要地模糊本披露实施例的方案,上面仅针对与本披露实施例相关的步骤进行了描述。可以理解,实际的执行方法中还可以包括更多的步骤,诸如设备初始化、资源释放等。本领域技术人员可以根据实际需求,增加相应的步骤,本披露实施例在此方面没有限制。
上面结合附图详细描述了本披露实施例的神经网络模型中重塑层的优化方案。可以理解,在上述示例中,由于根据重塑层的特点,在对输入数据和输出数据进行相应调整后删除重塑层,从而优化了神经网络模型。在实际执行过程中,无需执行重塑层操作,因此减小了处理时间并省去了数据搬运。进一步地,重塑层的上一层和下一层针对同一物理地址进行访存,还降低了对存储空间的需求。
本披露实施例还提供了用于优化神经网络模型的设备,包括:至少一个处理器;以及至少一个存储器,其用于存储程序指令,当程序指令由该至少一个处理器加载并执行时,使得设备执行根据前述任一实施例所述的编译方法。在一些实施例,该设备可以是前述异构处理系统中的通用处理器。
本披露实施例还提供了一种计算机程序产品,包括程序指令,该程序指令在被处理器执行时,实现根据前述任一实施例所述的编译方法。
本披露实施例还提供了用于执行神经网络模型的异构处理系统。
本领域技术人员可以理解,前面结合附图对本披露实施例的编译方法、执行神经网络模型的方法的描述可以同样应用于上述设备、计算机程序产品和异构处理系统中,因此不再进行重复描述。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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 (11)
1.一种用于优化神经网络模型的编译方法,其中所述神经网络模型包括至少一个重塑层,用于将其上一层输出的具有第一形状的第一数据转换为具有第二形状的第二数据以提供给其下一层,所述编译方法包括:
获取所述第一数据的第一虚拟地址和所述第二数据的第二虚拟地址;
将所述第一虚拟地址和第二虚拟地址映射到同一物理地址;
删除所述重塑层以优化所述神经网络模型;以及
将优化后的所述神经网络模型编译成对应的指令序列,以分配至人工智能处理器上执行对应的任务。
2.根据权利要求1所述的编译方法,其中删除所述重塑层包括:
将所述重塑层的上一层的输出直接连接到所述重塑层的下一层的输入。
3.根据权利要求2所述的编译方法,还包括:
将所述第二数据的形状参数传递给所述重塑层的下一层。
4.根据权利要求1-3任一所述的编译方法,其中所述神经网络模型由计算图表示,并且删除所述重塑层包括删除所述计算图中对应所述重塑层的计算节点。
5.一种用于优化神经网络模型的设备,包括:
至少一个处理器;以及
至少一个存储器,其用于存储程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行根据权利要求1-4中任一所述的方法。
6.一种计算机程序产品,包括程序指令,所述程序指令在被处理器执行时,实现根据权利要求1-4中任一所述的方法。
7.一种在异构处理系统上执行神经网络模型的方法,所述异构处理系统包括通用处理器、人工智能处理器和片外存储器,所述方法包括:
所述通用处理器执行所述片外存储器和所述人工智能处理器侧的内存空间分配;
将为执行所述神经网络模型所准备的数据和指令序列从所述片外存储器搬运到所述人工智能处理器侧分配的内存空间中;其中,所述指令序列是所述通用处理器根据权利要求1-4中任一所述的编译方法对神经网络模型进行编译获得的;
所述人工智能处理器运行所述指令序列并输出运行结果;以及
将所述运行结果从所述人工智能处理器侧搬运到所述片外存储器。
8.根据权利要求7所述的方法,其中所述人工智能处理器运行所述指令序列包括:
将执行所述上一层的运算所产生的第一数据存储到所述物理地址所指定的存储区域;以及
从所述物理地址所指定的存储区域读取所述第二数据,以执行所述下一层的运算。
9.根据权利要求8所述的方法,其中所述人工智能处理器执行所述下一层的运算包括:
根据所述第二数据的形状参数确定所述第二数据中数据元素的地址偏移量;以及
利用所述物理地址和所述地址偏移量对所述第二数据中的数据元素进行存取。
10.根据权利要求8所述的方法,其中所述物理地址所指定的存储区域位于所述片外存储器。
11.一种异构处理系统,包括通用处理器、人工智能处理器和片外存储器,其中:
所述通用处理器用于:执行所述片外存储器和所述人工智能处理器侧的内存空间分配;以及将为执行所述神经网络模型所准备的数据和指令序列从所述片外存储器搬运到所述人工智能处理器侧分配的内存空间中,其中所述指令序列是所述通用处理器根据权利要求1-4中任一所述的编译方法对神经网络模型进行编译获得的;并且
所述人工智能处理器用于:运行所述指令序列并输出运行结果;以及将所述运行结果从所述人工智能处理器侧搬运到所述片外存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110729501.3A CN113469336A (zh) | 2021-06-29 | 2021-06-29 | 优化神经网络模型的编译方法、执行方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110729501.3A CN113469336A (zh) | 2021-06-29 | 2021-06-29 | 优化神经网络模型的编译方法、执行方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113469336A true CN113469336A (zh) | 2021-10-01 |
Family
ID=77873795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110729501.3A Withdrawn CN113469336A (zh) | 2021-06-29 | 2021-06-29 | 优化神经网络模型的编译方法、执行方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113469336A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134361A1 (zh) * | 2022-01-13 | 2023-07-20 | 哲库科技(上海)有限公司 | 一种数据处理方法、装置、神经网络加速器及存储介质 |
WO2024002172A1 (zh) * | 2022-06-29 | 2024-01-04 | 上海寒武纪信息科技有限公司 | 片上系统、指令系统、编译系统及相关产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170345140A1 (en) * | 2016-05-25 | 2017-11-30 | Kla-Tencor Corporation | Generating simulated images from input images for semiconductor applications |
US20200026992A1 (en) * | 2016-09-29 | 2020-01-23 | Tsinghua University | Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system |
CN111401510A (zh) * | 2019-09-24 | 2020-07-10 | 上海寒武纪信息科技有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN112200297A (zh) * | 2020-09-04 | 2021-01-08 | 厦门星宸科技有限公司 | 神经网络优化方法、装置及处理器 |
CN112463160A (zh) * | 2020-11-25 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 编译方法、装置、电子设备和存储介质 |
-
2021
- 2021-06-29 CN CN202110729501.3A patent/CN113469336A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170345140A1 (en) * | 2016-05-25 | 2017-11-30 | Kla-Tencor Corporation | Generating simulated images from input images for semiconductor applications |
US20200026992A1 (en) * | 2016-09-29 | 2020-01-23 | Tsinghua University | Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system |
CN111401510A (zh) * | 2019-09-24 | 2020-07-10 | 上海寒武纪信息科技有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN112200297A (zh) * | 2020-09-04 | 2021-01-08 | 厦门星宸科技有限公司 | 神经网络优化方法、装置及处理器 |
CN112463160A (zh) * | 2020-11-25 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 编译方法、装置、电子设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134361A1 (zh) * | 2022-01-13 | 2023-07-20 | 哲库科技(上海)有限公司 | 一种数据处理方法、装置、神经网络加速器及存储介质 |
WO2024002172A1 (zh) * | 2022-06-29 | 2024-01-04 | 上海寒武纪信息科技有限公司 | 片上系统、指令系统、编译系统及相关产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022161318A1 (zh) | 数据处理装置、方法及相关产品 | |
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN111860807B (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN113469337B (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
WO2022095675A1 (zh) | 神经网络稀疏化的装置、方法及相关产品 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN116185377A (zh) | 计算图的优化方法、计算装置及相关产品 | |
CN115840894A (zh) | 一种用于处理多维张量数据的方法及其相关产品 | |
CN116185378A (zh) | 计算图的优化方法、数据处理方法及相关产品 | |
CN113469326A (zh) | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN113742266B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
WO2023016382A1 (zh) | 用于片上系统的方法及其相关产品 | |
WO2022257980A1 (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
CN113469365B (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
WO2022111013A1 (zh) | 支援多种访问模式的设备、方法及可读存储介质 | |
CN115545180A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211001 |
|
WW01 | Invention patent application withdrawn after publication |