CN110991634A - 人工智能加速器、设备、芯片及数据处理方法 - Google Patents
人工智能加速器、设备、芯片及数据处理方法 Download PDFInfo
- Publication number
- CN110991634A CN110991634A CN201911237525.6A CN201911237525A CN110991634A CN 110991634 A CN110991634 A CN 110991634A CN 201911237525 A CN201911237525 A CN 201911237525A CN 110991634 A CN110991634 A CN 110991634A
- Authority
- CN
- China
- Prior art keywords
- target
- input data
- parallelism
- artificial intelligence
- instruction
- 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
Links
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/044—Recurrent networks, e.g. Hopfield networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (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)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
Abstract
本申请实施例公开了一种人工智能加速器、设备、芯片及数据处理方法;该人工智能加速器具备第一加速并行度和第二加速并行度;该人工智能加速器包括控制单元、计算引擎、分组控制单元及分组缓存单元;分组缓存单元按照第一加速并行度设有多个输出缓存;其中,控制单元,用于解析神经网络模型中的目标网络层的处理指令,得到并发指令;计算引擎,用于按照并发指令对目标网络层的输入数据集合中的目标输入数据块执行并行处理,得到目标输入数据块对应的目标输出数据;分组控制单元,用于将目标输出数据分组存储至分组缓存单元的至少一个输出缓存中。本申请实施例可以对神经网络模型的处理过程进行有效加速,合理提升神经网络模型的加速效果。
Description
技术领域
本申请涉及互联网技术领域,具体涉及人工智能技术领域,尤其涉及一种人工智能加速器、一种人工智能加速设备、一种人工智能加速芯片及一种数据处理方法。
背景技术
随着科学技术的发展,神经网络模型已经成功应用于图像识别处理、自动驾驶等诸多领域。然而,随着应用需求的不断丰富,神经网络模型中的网络层越来越多;网络层的增多导致了神经网络模型的模型深度越来越大,从而使得神经网络模型的计算量显著增大,导致神经网络模型的处理效率较低。并且,针对一些图像精度要求较高的应用场景(如医疗图像识别场景、高清视频识别场景),神经网络模型的输入数据的大小通常达到了2k*2k,甚至5k*5k;较大的输入数据会进一步加大神经网络模型的计算压力。因此,如何对神经网络模型进行加速处理成为了研究热点。
发明内容
本申请实施例提供了一种人工智能加速器、设备、芯片及数据处理方法,可以对神经网络模型的处理过程进行有效加速,合理提升神经网络模型的加速效果。
一方面,本申请实施例提供了一种人工智能加速器,所述人工智能加速器具备第一加速并行度和第二加速并行度;所述人工智能加速器包括控制单元、计算引擎、分组控制单元及分组缓存单元;所述分组缓存单元按照所述第一加速并行度设有多个输出缓存;
所述控制单元,用于解析神经网络模型中的目标网络层的处理指令,得到并发指令;所述目标网络层为所述神经网络模型中的任一网络层,所述目标网络层的输入数据集合中包括多个输入数据块,所述输入数据块的深度是按照所述第二加速并行度进行适配处理得到的;
所述计算引擎,用于按照所述并发指令对所述输入数据集合中的目标输入数据块执行并行处理,得到所述目标输入数据块对应的目标输出数据;所述目标输入数据块为所述输入数据集合中的任一个输入数据块;
所述分组控制单元,用于将所述目标输出数据分组存储至所述分组缓存单元的至少一个输出缓存中。
另一方面,本申请实施例提供了一种数据处理方法,所述数据处理方法由上述的人工智能加速器来执行,所述人工智能加速器具备第一加速并行度和第二加速并行度;所述人工智能加速器按照所述第一加速并行度设有多个输出缓存;所述数据处理方法包括:
解析神经网络模型中的目标网络层的处理指令,得到并发指令;所述目标网络层为所述神经网络模型中的任一网络层,所述目标网络层的输入数据集合中包括多个输入数据块,所述输入数据块的深度是按照所述第二加速并行度进行适配处理得到的;
按照所述并发指令对所述输入数据集合中的目标输入数据块执行并行处理,得到所述目标输入数据块所对应的目标输出数据;所述目标输入数据块为所述输入数据集合中的任一个输入数据块;
将所述目标输出数据分组存储至至少一个输出缓存中。
再一方面,本申请实施例提供了一种人工智能加速设备,所述人工智能加速设备中包括上述的人工智能加速器。
再一方面,本申请实施例提供了一种人工智能加速芯片,所述人工智能加速芯片内封装有上述的人工智能加速器。
本申请实施例中的人工智能加速器具备第一加速并行度和第二加速并行度;通过在人工智能加速器中设置分组控制单元和分组缓存单元,并按照第一加速并行度在分组缓存单元中设置多个输出缓存,使得分组控制单元和分组缓存单元具备分组能力,从而能够灵活地控制神经网络模型中的各网络层的输出数据。人工智能加速器在对神经网络模型进行加速时,可先由控制单元解析神经网络模型中的目标网络层的处理指令,得到并发指令。其次,可由计算引擎按照并发指令对目标网络层的目标输入数据块执行并行处理,通过并行处理的方式可实现对神经网络模型的处理过程进行有效加速。由于目标输入数据块的深度是按照第二并行度进行适配得到的,这样可使得目标输入数据块能够较好地适配人工智能加速器的处理能力,从而进一步合理提升神经网络模型的加速效果。在得到目标输入数据块对应的目标输出数据后,可由分组控制单元将目标输出数据分组存储至分组缓存单元的至少一个输出缓存中,从而实现目标输出数据的分组缓存。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种人工智能加速器的工作流程示意图;
图1b是本申请实施例提供的一种图像拆分的示意图;
图1c是本申请实施例提供的一种卷积运算的示意图;
图1d本申请实施例提供的一种计算引擎的输出和分组缓存单元中的各输出缓存之间的对应关系;
图2是本申请实施例提供的一种人工智能加速器的结构示意图;
图3是本申请另一实施例提供的一种人工智能加速器的结构示意图;
图4a是本申请实施例提供的一种数据填充的示意图;
图4b是本申请实施例提供的一种将目标输出数据分组存放至分组缓存单元的示意图;
图4c是本申请实施例提供的一种高并行度的网络层的指令排布的示意图;
图4d是本申请实施例提供的一种分组控制单元的内部结构示意图;
图4e是本申请实施例提供的一种低并行度的网络层的指令排布的示意图;
图4f是本申请实施例提供的一种低并行度的网络层的指令排布的示意图;
图5是本申请另一实施例提供的一种人工智能加速器的结构示意图;
图6a是本申请实施例提供的一种人工智能加速芯片的结构示意图;
图6b是本申请实施例提供的一种人工智能加速设备的结构示意图;
图7是本申请实施例提供的一种数据处理方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域较为广泛;其既有软件层面的技术,也有硬件层面的技术。其中,人工智能的软件层面主要涉及神经网络模型的相关技术;此处的神经网络模型是指由模拟人类实际的神经网络所搭建得到的模型,其可以是卷积神经网络模型(CNN),也可以是循环神经网络模型(RNN),等等;除非特别指明,后续所提及的神经网络模型均以CNN为例进行说明。神经网络模型中可包括多个网络层,每个网络层均具有各自的运算并行度;所谓的并行度是指数据或运算函数被并行执行的最大数目,此处的运算函数是指神经网络模型的网络层用于对数据进行处理的函数,例如卷积核函数、池化函数、累加函数等等。而人工智能的硬件层面则主要涉及人工智能加速器的相关技术,人工智能加速器是指利用神经网络模型的并行度对神经网络模型的处理过程进行加速的装置。
本申请实施例提出一种高效低功耗的人工智能加速器;该人工智能加速器可以在FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)、ASIC(ApplicationSpecific Integrated Circuit,专用集成电路)等硬件平台上执行。具体实现中,该人工智能加速器内设有处理芯片,该处理芯片可用于提升人工智能加速器的整体性能并减小功耗,以及提升神经网络模型的加速效果。在实际运用中,该人工智能加速器可应用于各种神经网络模型的加速场景中;例如,可应用于将大图像作为输入数据的神经网络模型的加速场景中,也可应用于将小图像作为输入数据的神经网络模型的加速场景中。此处的大图像是指图像占用内存大于处理芯片的片上缓存大小的图像,如医疗图像、高清游戏图像、高清视频的视频帧图像等;小图像则是指图像占用内存小于或等于处理芯片的片上缓存大小的图像。下面将以输入图像为大图像为例,从工作流程和具体结构等两方面对本申请实施例所提出的人工智能加速器进行阐述:
(一)工作流程
参见图1a所示,本申请实施例所提出的人工智能加速器的工作流程可主要包括以下步骤s11-s14:
s11,拆分输入图像。在本申请实施例中,为了更好地提升神经网络模型的加速效果;可将拆分输入图像这一过程作为离线过程。通过步骤s11可将神经网络模型的输入图像拆分成多个适合处理芯片处理的输入数据块(tile);为便于理解,图1b给出了一个图像拆分的示意图。具体的,可按照处理芯片的片上缓存大小以及人工智能加速器的加速并行度对输入图像进行拆分处理,得到如图1b所示的多个tile。由于相对于输入图像而言,拆分后的tile尺寸将变小,能够满足运算前后的数据量放置在处理芯片的内部;因此,在后续处理时,可将各个tile依次送给人工智能加速器中的处理芯片进行计算,完成初始流水的排布。
s12,生成处理指令集。处理指令集可包括神经网络模型中的各个网络层的处理指令;任一网络层的处理指令可包括但不限于:数据适配指令、并发指令以及搬移指令。其中,数据适配指令指示将该任一网络层的输入数据适配成匹配处理芯片的片上缓存大小的输入数据块;并发指令指示对输入数据块进行并行处理;搬移指令指示在处理芯片的片上缓存和片外的存储介质之间执行数据的搬移操作。由于神经网络模型一旦固定,其内部的各个网络层的处理能力(如运算并行度、运算函数的数量、输入数据块的大小等)也会随之固定;因此,步骤s12生成处理指令集的过程也可作为离线过程,即各网络层的处理指令可根据神经网络模型预先生成。针对高并行度的网络层而言,其对应的处理指令可实现对一个输入数据块执行搬移操作的同时,对另一个输入数据块执行并行计算处理,减少数据搬移操作对数据计算所带来的等待时间。针对低并行度的网络层而言,其对应的处理指令可实现将多个输入数据块所对应的输出数据进行合并,再对合并后的输出数据进行搬移操作;以此降低搬移的次数,从而起到降低功耗的目的。需要说明的是,与网络层类似,人工智能加速器也具备加速并行度;相应的,上述所提及的高并行度的网络层是指:运算并行度大于人工智能加速器的加速并行度的网络层;低并行度的网络层是指:运算并行度低于人工智能加速器的加速并行度的网络层。
s13,初始化处理指令集;此处的初始化处理指令集是指将通过步骤s12生成的各个网络层的处理指令进行存储的操作。具体的,若各网络层的处理指令的占用内存较小,则可直接将各网络层的处理指令存储至处理芯片的片上缓存中;若各网络层的处理指令的占用内存较大,则可将各网络层的处理指令存储至片外的存储介质中。应理解的是,针对指定的神经网络模型,其内部的各个网络层的处理指令一旦准备完毕,则不需要再在执行过程中修改此处理指令。
s14,依据处理指令集处理输入图像。在初始化各网络层的处理指令后,便可根据业务请求,将输入图像输入至人工智能加速器中,由人工智能加速器中的处理芯片按照提前初始化完毕的各网络层的处理指令,依次执行相应的操作。需要说明的是,在对输入图像的处理过程中,神经网络处理模型中的各网络层的输入数据均来源于上一网络层的输出数据。
通过上述步骤s11-s14可知,本申请实施例可通过处理指令的灵活控制,将大图像拆分成不同的输入数据块(tile),完成低并行度的网络层中的不同输入数据块所对应的输出数据的灵活组合,进而减少数据搬移的次数,降低搬移的功耗。对于并行度较高的网络层,仍然能够兼容;可通过处理指令将搬移操作和计算进行并行,降低因搬移操作而带来的计算等待时间,提升整体性能。
(二)具体结构
人工智能加速器的目的在于按照神经网络模型中的各网络层的处理指令,完成输入数据的运算。本申请实施例中,人工智能加速器的处理芯片中设有一个或多个并行计算引擎(以下简称计算引擎)。该计算引擎是人工智能加速器中执行运算的部件,其可用于完成对各网络层的输入数据的并行处理,从而对神经网络模型的处理过程进行有效加速;其中,并行处理是指:一次运算多个并行的数据的处理。由前述可知,神经网络模型中通常涉及多种运算,如卷积运算、池化运算、激活运算以及累加运算等等;相应的,人工智能加速器中用于执行运算的计算引擎可包括但不限于:卷积引擎、池化引擎、激活引擎等等。由于卷积运算是神经网络模型中最主要的运算,因此为便于阐述,后续所提及的运算均以卷积运算,计算引擎均以卷积引擎为例进行说明。
参见图1c所示,计算引擎执行卷积运算的具体过程可包括如下内容:采用N个卷积核(一种运算函数)在输入数据(input feature map)上进行滑窗,并对位于滑窗内的数据做乘加运算。从并行计算角度看,计算引擎通常对应了两个并行度:并行度二和并行度一。其中,并行度二是指每个滑窗内部在深度(channel)方向上的处理数据量;并行度一是指每次执行运算时所使用的卷积核的个数;并行度二和并行度一的取值范围都较大,其可以大到1024甚至更大数值,也可以小到只有3,4个量级。由此可见,对于人工智能加速器而言,其内部的计算引擎完成的是一组数据的乘累加操作。例如,若计算引擎的并行度为16*32,则表明该计算引擎的并行度二是16,并行度一是32。而并行度二为16可表明:每次执行并行处理时在深度方向上的处理数据量为16个数据;也就是说,输入数据在深度方向可按照每16个数据为一组的适配方式,将输入数据适配成多个输入数据块,并将这多个输入数据块依次送入计算引擎进行运算,并完成累加。并行度一为32可表明:每次执行并行处理时可同时使用32个卷积核对输入数据块执行并行处理;具体的,计算引擎内可包括多个处理单元(PE),处理单元的数量与并行度一相等,一个处理单元可用于使用一个卷积核对输入数据块执行处理,且一个处理单元对应一个输出缓存,如图1d所示;那么计算引擎每次执行并行处理时,可同时调用多个处理单元从而实现同时使用32个卷积核对输入数据块执行并行处理。
本申请实施例中,人工智能加速器具备第一加速并行度和第二加速并行度;其中,第一加速并行度用于指示人工智能加速器每次执行并行处理时所使用的运算函数的数量,第二加速并行度用于指示人工智能加速器每次执行并行处理时在深度方向上的处理数据量。此处,人工智能加速器的加速并行度可以由该人工智能加速器内的、能够同时执行运算的一个或多个计算引擎的并行度进行求和得到;例如,若人工智能加速器中每次可同时存在两个计算引擎对数据进行并行处理,且该两个计算引擎的并行度二均为16,那么该人工智能加速器的第二加速并行度为16+16=32,即人工智能加速器每次执行并行处理时在深度方向上的处理数据量为32个数据;同理,若该两个计算引擎的并行度一均为32,则人工智能加速器的第一加速并行度为32+32=64;即人工智能加速器每次执行并行处理时所使用的运算函数的数量为64个。又如,若人工智能加速器中每次只有一个计算引擎对数据进行并行处理,且该计算引擎的并行度为16(并行度二)*32(并行度一),则人工智能加速器的加速并行度可为16(第二加速并行度)*32(第一加速并行度)。
本申请实施例中,人工智能加速器的处理芯片中还设有分组缓存单元,且分组缓存单元按照该人工智能加速器的第一加速并行度设有多个输出缓存;即输出缓存的个数与人工智能加速器的第一加速并行度相等。针对人工智能加速器的第一加速并行度而言,由于各运算函数从运算上讲是并行关系,因此各运算函数的输出数据可被分组存储至多个输出缓存中。针对人工智能加速器的第二加速并行度而言,由于深度方向上的数据从运算上讲是累加关系,因此每次执行并行处理时在深度方向上所得到的输出数据可复用同一个输出缓存。
另外,随着神经网络模型的应用需求的不断丰富,新的神经网络模型层出不穷,这使得不同神经网络模型之间的并行度差异较大,且同一神经网络模型的各网络层的并行度之间也具有较大的差异。针对同一个神经网络模型而言,有的网络层的并行度可能大到1024或者更多,而有的网络层的并行度可能小到4或者2。基于此,本申请实施例中,处理芯片中还设有分组控制单元,该分组控制单元可和计算引擎一并用于解决不同网络层的并行度不均衡问题,从而使得在使用人工智能加速器对神经网络模型进行加速的过程中,可有效减少因并行度不均衡而对人工智能加速器的整体性能和功耗所产生的影响,进一步提升神经网络模型的加速效果。通过较小的代价设置分组控制单元,可实现在处理芯片中增加数据的分组控制能力,从而使得处理芯片支持灵活的片上缓存的分组读写操作。针对低并行度的网络层,可以对多个输入数据块所对应的有效输出数据进行交织合并,从而减少后续的搬移次数;针对高并行度的网络层,可并行地对多个输入数据块的搬移操作和运算处理,减少计算对搬移的等待。
基于上述描述,本申请实施例采用图2对本申请实施例所提出的人工智能加速器的具体结构进行了示例性地表示;为便于阐述,本申请实施例以一个计算引擎,即第一加速并行度等于该计算引擎的并行度一,第二加速并行度等于该计算引擎的并行度二为例进行说明。如图2所示,人工智能加速器可包括控制单元201、计算引擎202、分组控制单元203及分组缓存单元204;分组缓存单元按照第一加速并行度设有多个输出缓存2041。其中,
控制单元201,用于解析神经网络模型中的目标网络层的处理指令,得到并发指令;目标网络层为神经网络模型中的任一网络层,目标网络层的输入数据集合中包括多个输入数据块,输入数据块的深度是按照第二加速并行度进行适配处理得到的。
计算引擎202,用于按照并发指令对输入数据集合中的目标输入数据块执行并行处理,得到目标输入数据块对应的目标输出数据;目标输入数据块为输入数据集合中的任一个输入数据块;
分组控制单元203,用于将目标输出数据分组存储至分组缓存单元204的至少一个输出缓存2041中。
需要说明的是,上述所提及的控制单元201、计算引擎202、分组控制单元203及分组缓存单元204均可具体设于人工智能加速器内的处理芯片中。
本申请实施例中的人工智能加速器具备第一加速并行度和第二加速并行度;通过在人工智能加速器中设置分组控制单元和分组缓存单元,并按照第一加速并行度在分组缓存单元中设置多个输出缓存,使得分组控制单元和分组缓存单元具备分组能力,从而能够灵活地控制神经网络模型中的各网络层的输出数据。人工智能加速器在对神经网络模型进行加速时,可先由控制单元解析神经网络模型中的目标网络层的处理指令,得到并发指令。其次,可由计算引擎按照并发指令对目标网络层的目标输入数据块执行并行处理,通过并行处理的方式可实现对神经网络模型的处理过程进行有效加速。由于目标输入数据块的深度是按照第二并行度进行适配得到的,这样可使得目标输入数据块能够较好地适配人工智能加速器的处理能力,从而进一步合理提升神经网络模型的加速效果。在得到目标输入数据块对应的目标输出数据后,可由分组控制单元将目标输出数据分组存储至分组缓存单元的至少一个输出缓存中,从而实现目标输出数据的分组缓存。
基于上述的描述,本申请实施例还提出了一种如图3所示的人工智能加速器;该人工智能加速器具备第一加速并行度和第二加速并行度。在本申请实施例中,仍以一个计算引擎为例进行说明。参见图3所示,该人工智能加速器可包括控制单元301、计算引擎302、分组控制单元303及分组缓存单元304;分组缓存单元304按照第一加速并行度设有多个输出缓存3041。可选的,分组缓存单元304还可包括输入缓存3042。
控制单元301,用于解析神经网络模型中的目标网络层的处理指令,得到并发指令;目标网络层为神经网络模型中的任一网络层,目标网络层的输入数据集合中包括多个输入数据块,输入数据块的深度是按照第二加速并行度进行适配处理得到的。在本申请实施例中,目标网络层可具备第一运算并行度和第二运算并行度。其中,第一运算并行度用于指示目标网络层所包括的运算函数的数量,第二运算并行度用于指示目标网络层每次执行并行处理时在深度方向上的处理数据量。为便于区分第一加速并行度和第一运算并行度,后续所提及的第一加速并行度可采用N表示,第一运算并行度可采用M表示;M和N均为正整数。
计算引擎302,用于按照并发指令对输入数据集合中的目标输入数据块执行并行处理,得到目标输入数据块对应的目标输出数据;目标输入数据块为输入数据集合中的任一个输入数据块;
分组控制单元303,用于将目标输出数据分组存储至分组缓存单元304的至少一个输出缓存3041中。由于分组缓存单元304具有访问速度快和功耗低的特点,因此通过将目标输出数据分组存储至分组缓存单元304的至少一个输出缓存3041中,可有效节省功耗,以及实现目标输出数据的灵活控制。
在一种实施方式中,控制单元301还用于解析所述目标网络层的处理指令,得到搬移指令。相应的,人工智能加速器还包括:
全量存储单元305,用于存储目标网络层的输入数据集合和目标网络层的输出数据集合,输出数据集合中包含多个输入数据块分别对应的输出数据。需要说明的是,全量存储单元305本质是一个存储介质;其具体可为以下任一种:DDR(双倍速率同步动态随机存储器)、SDR(单倍速率同步动态随机存储器)、QDR(四倍速率同步动态随机存储器),等等。
搬移引擎306,用于按照控制单元301解析得到的搬移指令在全量存储单元305和分组缓存单元304之间执行数据的搬移操作。具体实现中,搬移引擎306可分为load(加载)和store(存储)两类,需要完成“全量存储单元305往分组缓存单元304的搬移”和“分组缓存单元304往全量存储单元305的搬移”。搬移引擎306可把分组缓存单元304作为一个整体看待,根据搬移指令统一搬移。相应的,上述所提及的搬移指令可包括:加载搬移指令或存储搬移指令。其中,搬移引擎306接收控制单元301发送的加载搬移指令,并按照加载搬移指令将全量存储单元305中的输入数据块搬移至分组缓存单元304;或者,搬移引擎306接收控制单元301发送的存储搬移指令,并按照存储搬移指令将分组缓存单元304中缓存的输出数据搬移至全量存储单元305。
再一种实施方式中,目标网络层的处理指令还可包括数据适配指令。相应的,控制单元301还用于解析目标网络层的处理指令,得到数据适配指令;并将数据适配指令传输至计算引擎302。相应的,计算引擎302还用于按照数据适配指令对目标网络层的输入数据进行适配处理,得到目标网络层的输入数据集合,并将输入数据集合存储至全量存储单元305中。其中,每个输入数据块的占用内存小于或等于分组缓存单元304的存储内存。其中,数据适配指令用于指示计算引擎302按照分组缓存单元304的存储内存大小以及第二加速并行度,将目标网络层的输入数据适配成至少一个输入数据块;每个输入数据块的深度小于或等于第二加速并行度,且占用内存小于或等于分组缓存单元304的存储内存。为便于阐述,后续均以每个输入数据块的深度等于第二加速并行度为例进行说明;在此情况下,若输入数据块的深度小于第二加速并行度,则对输入数据块进行数据填充处理。例如参见图4a所示,若第二加速并行度为16,而输入数据块的深度只有14,那么可在输入数据块的深度方向上填充2个零,以使得输入数据块的深度等于16。
由前述可知,不同神经网络模型之间的并行度差异通常较大,且同一个神经网络模型内部的不同网络层也具有不同的运算并行度。对此,本申请实施例所提出的人工智能加速器对于不同的运算并行度,通过计算引擎302采用了拆分或填充的方式来解决并行度不均衡的问题。下面以目标网络层为高并行度的网络层,或者目标网络层为低并行度的网络层这两种情况,对人工智能加速器解决并行度不均衡问题的具体过程进行阐述:
①目标网络层为高并行度的网络层:
如果目标网络层的运算并行度大于人工智能加速器的加速并行度,则可把目标网络层所涉及的数据运算拆分成多轮。以第一运算并行度为例,若目标网络层为高并行度的网络层,即若目标网络层的第一运算并行度大于第一加速并行度,则计算引擎302可将目标网络层中的运算函数拆分成P个函数组,并按照并发指令依次调用各函数组中的运算函数对目标输入数据块执行并行处理。其中,P根据M和N的比值确定;若M和N的比值为整数,则P=M/N;若M和N的比值为非整数,则P=M/N+1。例如,设第一运算并行度为1024(即目标网络层中的运算函数有1024个),第一加速并行度为32;由于1024和32的比值等于32,其比值为整数,则可将目标网络层中的1024个运算函数拆分成32个函数组。又如,设第一运算并行度为1125(即目标网络层中的运算函数有1125个),第一加速并行度为32;由于1125和32的比值等于35.15625,其比值为非整数,则可将目标网络层中的1125个运算函数拆分成36个函数组。
由于目标网络层中包括M个运算函数,每个运算函数均会对目标输入数据块执行运算处理,因此目标输入数据块所对应的目标输出数据的数量为M个,且M个目标输出数据被划分成P个分组,每个分组包括N个目标输出数据。相应的,分组控制单元303可按照分组的先后顺序,依次将各个分组中的目标输出数据存放在对应的输出缓存3041中;具体的,分组控制单元303将每个分组中第n个目标输出数据存储至分组缓存单元304的第n个输出缓存3041中,n∈[1,N]。例如,参见图4b所示,设N等于32,那么可先将第一个分组中的32个目标输出数据依次存放在32个输出缓存中;然后再将第二个分组中的32个目标输出数据依次存放在32个输出缓存中,以此类推。需要说明的是,若目标网络层的计算比较密集,目标网络层的第二运算并行度也大于人工智能加速器的第二加速并行度,则还可按照第二加速并行度对第二运算并行度进行拆分,拆分得到的不同组之间的各输入数据块复用同一个输出缓存的位置,且拆分得到的不同组之间的各输入数据块所对应的输出数据之间是累加关系。
由前述可知,针对高并行度的网络层,本申请实施例可采用搬移操作和计算并行的方法,以减少计算对搬移的等待。基于此,当目标网络层为高并行度的网络层时,目标网络层中的各个输入数据块所涉及的加载搬移指令、并发指令和存储搬移指令可按照并行的流水方式进行排布(如图4c所示),这样可使得计算引擎302在按照各个输入数据块的并发指令,对各个输入数据块执行并行处理时,不需要等待搬移数据后再计算,可有效提升整体性能;也就是说,目标网络层中的各个输入数据块所对应的指令是相互独立的。由此可见,本申请实施例中的目标输入数据块可独立使用一个加载搬移指令、一个并发指令和一个存储搬移指令。搬移引擎306可按照目标输入数据块对应的加载搬移指令,将目标输入数据块从全量存储单元305中搬移至分组缓存单元304的输入缓存3041中;计算引擎302可通过分组控制单元303从输入缓存3042中读取目标输入数据块,并按照目标输入数据块对应的并发指令对目标输入数据块执行并行处理,得到目标输入数据块对应的目标输出数据;分组控制单元303可将目标输出数据分组存储至分组缓存单元304的至少一个输出缓存3041中;搬移引擎306可按照目标输入数据块对应的存储搬移指令,将至少一个输出缓存3041中的目标输出数据搬移至全量存储单元305。
②目标网络层为低并行度的网络层:
如果目标网络层的运算并行度小于人工智能加速器的加速并行度,则可对目标网络层进行相应的填充处理。以第一运算并行度为例,若目标网络层为低并行度的网络层,即若目标网络层的第一运算并行度小于第一加速并行度,则计算引擎302可对目标网络层进行函数填充处理。例如,假设目标网络层中的卷积核个数为8(即第一运算并行度为8),而人工智能加速器的第一加速并行度为32,则可额外填充32-8=24个填充函数,即填充24个全0的填充函数;并将这8个运算函数和24个填充函数送入计算引擎进行后续的数据运算。为了实现低并行度的网络层中的不同输入数据块所对应的输出数据之间的合并,减少存储搬移的次数,计算引擎302和分组控制单元303可配合工作。具体的,分组控制单元303可先将输入数据集合中的输入数据块划分成多个输入数据组,每个输入数据组包括I个依次排列的输入数据块,I根据N和M的比值确定。例如,设第一加速并行度为32(即N=32),第一运算并行度为8(即M=8),则分组控制单元303可将输入数据集合中的输入数据划分成多个输入数据组,每个输入数据组包括4个依次排列的输入数据块。然后,计算引擎302可根据不同的输入数据块在所属的输入数据组中的排列位置,对该目标网络层进行函数的错位填充处理,以使得后续可对各输入数据块所对应的输出数据进行合并。
以目标输入数据块为例,计算引擎302可按照目标输入数据块在所属的目标输入数据组中的排列位置,对目标网络层中的运算函数进行错位填充处理,得到目标填充函数组;并按照并发指令调用目标填充函数组中的各函数对目标输入数据块执行并行处理。其中,目标填充函数组包括目标网络层中的M个运算函数和N-M个填充函数,且目标填充函数组内设有N个函数位,N个函数位的取值范围为[0,N-1];其中,M个运算函数设于N个函数位中的有效函数位,N-M个填充函数设于N个函数位中的填充函数位;有效函数位的取值范围为[(i-1)*M,i*M-1],填充函数位是N个函数位中除有效位之外的函数位;其中,i表示目标输入数据块在目标输入数据组中的排列位置,i∈[1,I]。举例来说,设N=32,M=8;目标填充函数组内设有32个函数位,函数位的取值范围为[0,32]。目标输入数据组中可总共包括4个输入数据块,即目标输入数据块在目标输入数据组中的排列位置i∈[1,4];当i分别取值1、2、3、4时,其对应的目标填充函数的有效函数位和填充函数位可具体如表1所示:
表1
i的取值 | 有效函数位 | 填充函数位 | 分组选择指示 |
1 | [0,7] | [8,31] | [0,7] |
2 | [8,15] | [0,7],[16,23] | [8,15] |
3 | [16,23] | [0,15],[24,31] | [16,23] |
4 | [24,31] | [0,23] | [24,31] |
由于目标填充函数组中包括N个函数,每个函数均会对目标输入数据块执行运算处理,因此目标输入数据块所对应的目标输出数据的数量为N个。N个目标输出数据中包括:M个有效目标输出数据和(N-M)个无效目标输出数据;有效目标输出数据是通过有效函数位处的运算函数计算得到的输出数据,无效目标输出数据是通过填充函数位处的填充函数计算得到的输出数据。为了减小数据搬移对人工智能加速器的性能和功耗的影响,本申请实施例可选择只将有效目标输出数据缓存至分组缓存单元304中,以便于后续只对有效目标输出数据执行后续的存储搬移操作。基于此,控制单元301还用于解析目标网络层的处理指令,得到目标输入数据块所对应的分组选择指示。相应的,分组控制单元303按照控制单元301解析得到的分组选择指示,将N个目标输出数据中的M个有效目标输出数据分组存储至分组缓存单元304的M个输出缓存3041中。
具体实现中,分组控制单元303内部的核心单元可以为选择器,选择器的个数和第一加速并行度保持一致。分组控制单元303可根据分组选择指令来控制各个选择器的输出。具体的,分组控制单元303包括N个依序排列的选择器3031,如图4d所示;每个选择器可具有一个位置标识,N个选择器的位置标识所构成的区间范围为[0,N-1];即第一个选择器的位置标识为0,第二个选择器的位置标识为1…以此类推。分组控制单元可按照分组选择指示将位置标识属于[(i-1)M+1,i*M]中的选择器作为目标选择器,并导通目标选择器以将M个有效目标输出数据分组存储至分组缓存单元的M个输出缓存中,一个输出缓存存储一个有效目标输出数据。举例来说,承接上述表1所示的例子,若目标输入数据块为目标输入数据组中的第一个输入数据块(即i=1),则分组控制单元303可将位置标识属于[0,7]中的选择器作为目标选择器,即将第1个至第8个选择器作为目标选择器,并导通这8个选择器,以将8个有效目标输出数据分组缓存至分组缓存单元304的第1个至第8个输出缓存3041中。需要说明的是,对于第二加速并行度的累加运算,需要把输出缓存3041中的输出数据先读出,然后和当前计算得到的输出数据进行累加后再次写入输出缓存3041中,此时分组选择指示除了控制输出缓存3041的写,也要控制输出缓存3041的读。
由前述可知,针对低并行度的网络层,本申请实施例可采用对多个输入数据块所对应的有效输出数据进行交织存放的方式,以在分组缓存单元304累计满后,对这多个输入数据块所对应的有效输出数据进行合并,从而集中对合并后的有效输出数据执行存储搬移操作。基于此,当目标网络层为低并行度的网络层时,任一输入数据组中的各个输入数据块可独立使用加载搬移指令和并发指令,并共用一个存储搬移指令。由此可见,本申请实施例中的目标输入数据块可独立使用一个加载搬移指令和一个并发指令,并和目标输入数据组中除目标输入数据块之外的(I-1)个剩余输入数据块共用一个存储搬移指令。在一种实施方式中,目标输入数据组中的各个输入数据块所涉及的加载搬移指令、并发指令和共用的存储搬移指令可按照并行的流水方式进行排布。例如,设目标输入数据组包括4个输入数据块,那么目标输入数据组所对应的指令排布方式可参见图4e所示。再一种实施方式中,目标输入数据组中的共用的存储搬移指令,可和目标输入数据组中的各个输入数据块所涉及的加载搬移指令串行放在一起,然后和目标输入数据组中的各个输入数据块所涉及的并发指令按照并行的方式进行排布。例如,设目标输入数据组包括4个输入数据块,那么目标输入数据组所对应的指令排布方式可参见图4f所示。通过图4f所示的方式进行指令排布,可减少流水的级数(从3级减少为2级),从而可在一定程度上降低时延;同时还可节省存储搬移的次数,从而节省功耗;且整个流水不会打断,可以获得更高的性能。
相应的,搬移引擎306可按照目标输入数据组中的各输入数据块对应的加载搬移指令,依次将目标输入数据组中的各输入数据块从全量存储单元305中搬移至分组缓存单元304的输入缓存3042中。计算引擎302可通过分组控制单元303依次从输入缓存3042中读取目标输入数据组中的各输入数据块;并按照目标输入数据组中的各输入数据块对应的并发指令,对目标输入数据组中的各输入数据块执行并行处理,得到目标输入数据组中的各输入数据块对应的输出数据。分组控制单元303依次将目标输入数据组中的各输入数据块对应的输出数据分组存储至分组缓存单元304的至少一个输出缓存3041中。搬移引擎306在目标数据输入组中的第I个输入数据块所对应的输出数据被缓存至分组缓存单元304后,按照目标输入数据组所共用的存储搬移指令,对目标输入数据组中的各输入数据块所对应的输出数据进行合并,并将合并后的输出数据从分组缓存单元304中搬移至全量存储单元305。由此可见,本申请实施例所提出的人工智能加速器可通过分组控制单元303将同一个输入数据组中的不同输入数据块所对应的有效输出数据进行交织存放;当分组缓存单元304累计满(即分组缓存单元304中的各输出缓存均存储有输出数据)后,集中对同一个输入数据组中的各输入数据块所对应的输出数据进行存储搬移操作。这样可减少存储搬移的次数,节省存储搬移操作所使用的带宽,且节省的带宽可用于提升加载搬移操作的效率;同时还可保证存储搬移操作中没有无效输出数据,可有效降低存储搬移所消耗的功耗。
由上述描述可知,本申请实施例中的计算引擎302、分组控制单元303以及片上分组存储单元304可具备分组能力,从而可使得人工智能加速器对于不同并行度的神经网络模型以及同一神经网络模型中的不同运算并行度的网络层,都能够灵活的控制输出,各个输入数据块可共享输出缓存。针对低并行度的网络层,可结合人工智能加速器的这个能力,对将各输入数据块对应的输出数据从分组缓存单元304搬移至全量存储单元305的存储搬移操作进行合并。由于存储搬移操作需要对全量存储单元305进行访问,这样会导致此访问所消耗的功耗相比人工智能加速器内的数据运算所消耗的功耗而言,功耗将会高2个数量级;且一次针对全量存储单元305的访问所消耗的功耗,是针对分组缓存单元304的访问所消耗的功耗的一百多倍,是一次缓存累加操作的六百多倍。因此,本申请实施例采用对各输出数据进行合并后再进行存储搬移操作的方式,可节省存储搬移次数,较大程度上减少人工智能加速器的功耗。针对高并行度的网络层,可采用搬移操作和计算并行的方法,减少计算对搬移的等待。
再一种实施方式中,人工智能加速器还可包括:
指令生成单元307,用于生成神经网络模型中的各网络层的处理指令,并将各网络层的处理指令存储至全量存储单元中。
指令缓存单元308,用于从全量存储单元中加载神经网络模型的目标网络层的处理指令,并缓存目标网络层的处理指令以供控制单元读取。
需要说明的是,上述所提及的控制单元301、计算引擎302、分组控制单元303、分组缓存单元304、搬移引擎306以及指令缓存单元308均可具体设于人工智能加速器内的处理芯片中。
本申请实施例中的人工智能加速器可有效提升神经网络模型的加速效果;通过在人工智能加速器设置分组控制单元和分组缓存单元,使人工智能加速器具备灵活的数据分组控制能力,从而实现针对输出数据的灵活控制。通过指令层面指令的合并,可较大程度上降低低并行度的网络层的存储搬移操作,降低人工智能加速器的整体功耗并提升性能。并且,整个人工智能加速器的实现代价低,灵活性高,可以适应不断演进的神经网络算法,尤其是越来越多高清图片的应用场景,其应用价值较高。
需要说明的是,图2和图3所示的人工智能加速器均是以一个计算引擎为例进行说明的。在实际应用中,人工智能加速器中可包括多个计算引擎,如卷积引擎、池化引擎等。基于此,本申请实施例还提出了如图5所示的人工智能加速器的结构示意图。参见图5所示,本申请实施例所提出的人工智能加速器可至少包括处理芯片502,可选地,该人工智能加速器还包括指令生成单元501和片外的全量存储单元503。其中,处理芯片502中至少包括:指令缓存单元5021、控制单元5022、k个计算引擎5023、k个分组控制单元5024、至少一个搬移引擎5025、片上的分组缓存单元5026,等等;k为正整数,k个计算引擎中可包括但不限于:卷积引擎、池化引擎,等等。
指令生成单元501:用于离线生成神经网络模型中的各网络层的处理指令,通过该处理指令完成对各个引擎(如计算引擎5023和搬移引擎5025)的流水控制。任一网络层的处理指令可包括但不限于:数据适配指令、并发指令以及搬移指令。针对高并行度的网络层,可通过处理指令实现数据计算处理和数据搬移操作的并行,减少数据搬移操作对数据计算所带来的等待时间。针对低并行度的网络层,可通过处理指令实现对多个输入数据块的存储搬移操作的合并以及其他引擎的并行调整,达到减少低效搬移的目的,降低功耗。。
处理芯片502中的指令缓存单元5021用于缓存指令生成单元501所生成的神经网络模型中的各网络层的处理指令,以供控制单元5022提取。控制单元5022用于完成各网络层的处理指令的解析,并将解析得到的并发指令发送到不同的计算引擎5023以控制计算引擎5023执行计算处理工作,以及将解析得到的搬移指令发送到搬移引擎5025以控制搬移引擎5025执行搬移操作。同时,还可控制分组控制单元5024依据相应指令完成针对低并行度的网络层的读写分组控制,以最小的代价实现低并行度的网络层的输出数据的合并,减少数据搬移的无效操作。计算引擎5023:用于通过分组控制单元5024访问分组缓存单元5026;并按照各网络层的并发指令,完成对各网络层的输入数据的AI运算;如卷积运算、池化运算等。分组控制单元5024:用于在控制单元5022的指示下,对数据进行分组操作;能够用于对各种并行度的神经网络模型的各网络层的输入数据或输出数据进行分组处理。搬移引擎5025:用于在控制单元5023的指示下,在全量存储单元503和分组缓存单元5026之间执行数据搬移操作。分组缓存单元5026:用于缓存计算需要的数据,其可在分组控制单元5024的控制下,支持对输出数据的分组缓存。
全量存储单元503:用于存储全量的计算数据,如神经网络模型的输入数据集合和输出数据集合。
基于上述的人工智能加速器的相关描述,本申请实施例还提出了一种如图6a所示的人工智能加速芯片,该人工智能加速芯片内封装有上述所提及的人工智能加速器。具体实现中,该人工智能加速芯片内所封装的人工智能加速器至少包括处理芯片502;可选的,该人工智能加速芯片内所封装的人工智能加速器还包括指令生成单元501和全量存储单元503。其中,处理芯片502包括控制单元、计算引擎、分组控制单元及分组缓存单元;进一步地,该处理芯片502内还可包括搬移引擎和指令缓存单元。另一种实施方式中,本申请实施例还提出了一种图6b所示的人工智能加速设备。该人工智能加速设备可以包括但不限于:智能手机、平板电脑、膝上计算机、台式电脑等终端设备,或者数据服务器、应用服务器、云服务器等服务设备。具体实现中,该人工智能加速设备中可包括上述所提及的人工智能加速器601。可选的,人工智能加速设备还可包括:处理器602、输入接口603、输出接口604以及计算机存储介质605。其中,计算机存储介质605可以存储在人工智能加速设备的存储器中,计算机存储介质605用于存储计算机程序;该计算机程序包括程序指令,处理器602用于执行计算机存储介质605存储的程序指令。在实际应用中,人工智能加速设备可使用内部的人工智能加速器对神经网络模型的处理过程进行有效加速,提升神经网络模型的加速效果。本申请实施例中的人工智能加速器的实现代价低,通过灵活的指令驱动,可便于扩展。较好的解决了不同网络层的并行度所造成功耗消耗大的问题。同时,通过各网络层的处理指令的灵活控制,还可实现整个计算流水的灵活调整,进一步优化引擎之间的整体性能。
基于上述人工智能加速器的相关描述,本申请实施例提出一种数据处理方法,该数据处理方法可应用于上述所提及的人工智能加速器。其中,该人工智能加速器具备第一加速并行度和第二加速并行度;第一加速并行度用于指示人工智能加速器每次执行并行处理时所使用的运算函数的数量,第二加速并行度用于指示人工智能加速器每次执行并行处理时在深度方向上的处理数据量。人工智能加速器内可按照第一加速并行度设有多个输出缓存。请参见图7,该数据处理方法可包括以下步骤S701-S703:
S701,解析神经网络模型中的目标网络层的处理指令,得到并发指令。
其中,目标网络层为神经网络模型中的任一网络层,目标网络层的输入数据集合中包括多个输入数据块,输入数据块的深度是按照第二加速并行度进行适配处理得到的。目标网络层具备第一运算并行度和第二运算并行度;其中,第一运算并行度用于指示目标网络层所包括的运算函数的数量,第二运算并行度用于指示目标网络层每次执行并行处理时在深度方向上的处理数据量。为便于区分,人工智能加速器的第一加速并行度可采用N表示,目标网络层的第一运算并行度可采用M表示;M和N均为正整数。
S702,按照并发指令对输入数据集合中的目标输入数据块执行并行处理,得到目标输入数据块所对应的目标输出数据。
S703,将目标输出数据分组存储至至少一个输出缓存中。
在步骤S702-S703中,目标输入数据块为输入数据集合中的任一个输入数据块。在一种实施方式中,若第一运算并行度大于第一加速并行度,则步骤S702的具体实施方式可以是:将目标网络层中的运算函数拆分成P个函数组,并按照并发指令依次调用各函数组中的运算函数对目标输入数据块执行并行处理;其中,P根据M和N的比值确定。此实施方式下,目标输出数据的数量为M个,且M个目标输出数据被划分成P个分组,每个分组包括N个目标输出数据。相应的,步骤S703的具体实施方式可以是:将每个分组中第n个目标输出数据存储至分组缓存单元的第n个输出缓存中,n∈[1,N]。
再一种实施方式中,若第一运算并行度小于第一加速并行度,则人工智能加速器可将输入数据集合中的输入数据块划分成多个输入数据组,每个输入数据组包括I个依次排列的输入数据块,I根据N和M的比值确定。相应的,步骤S702的具体实施方式可以是:按照目标输入数据块在所属的目标输入数据组中的排列位置,对目标网络层中的运算函数进行错位填充处理,得到目标填充函数组;并按照并发指令调用目标填充函数组中的各函数对目标输入数据块执行并行处理。此处的目标填充函数组包括目标网络层中的M个运算函数和N-M个填充函数,且目标填充函数组内设有N个函数位,N个函数位的取值范围为[0,N-1]。其中,M个运算函数设于N个函数位中的有效函数位,N-M个填充函数设于N个函数位中的填充函数位;有效函数位的取值范围为[(i-1)*M,i*M-1],填充函数位是N个函数位中除有效位之外的函数位;其中,i表示目标输入数据块在目标输入数据组中的排列位置,i∈[1,I]。
此实施方式下,目标输出数据的数量为N个;N个目标输出数据中包括:M个有效目标输出数据和(N-M)个无效目标输出数据;有效目标输出数据是通过有效函数位处的运算函数计算得到的输出数据,无效目标输出数据是通过填充函数位处的填充函数计算得到的输出数据。相应的,步骤S703的具体实施方式可以是:解析目标网络层的处理指令,得到目标输入数据块所对应的分组选择指示;按照分组选择指示,将N个目标输出数据中的M个有效目标输出数据分组存储至分组缓存单元的M个输出缓存中;一个输出缓存存储一个有效目标输出数据。
本申请实施例中的人工智能加速器具备第一加速并行度和第二加速并行度;通过按照第一加速并行度在人工智能加速器中设置多个输出缓存,使得人工智能加速器具备分组能力,从而能够灵活地控制神经网络模型中的各网络层的输出数据。人工智能加速器在对神经网络模型进行加速时,可先解析神经网络模型中的目标网络层的处理指令,得到并发指令。其次,可按照并发指令对目标网络层的目标输入数据块执行并行处理,通过并行处理的方式可实现对神经网络模型的处理过程进行有效加速。由于目标输入数据块的深度是按照第二并行度进行适配得到的,这样可使得目标输入数据块能够较好地适配人工智能加速器的处理能力,从而进一步合理提升神经网络模型的加速效果。在得到目标输入数据块对应的目标输出数据后,可将目标输出数据分组存储至分组缓存单元的至少一个输出缓存中,从而实现目标输出数据的分组缓存。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种人工智能加速器,其特征在于,所述人工智能加速器具备第一加速并行度和第二加速并行度;所述人工智能加速器包括控制单元、计算引擎、分组控制单元及分组缓存单元;所述分组缓存单元按照所述第一加速并行度设有多个输出缓存;
所述控制单元,用于解析神经网络模型中的目标网络层的处理指令,得到并发指令;所述目标网络层为所述神经网络模型中的任一网络层,所述目标网络层的输入数据集合中包括多个输入数据块,所述输入数据块的深度是按照所述第二加速并行度进行适配处理得到的;
所述计算引擎,用于按照所述并发指令对所述输入数据集合中的目标输入数据块执行并行处理,得到所述目标输入数据块对应的目标输出数据;所述目标输入数据块为所述输入数据集合中的任一个输入数据块;
所述分组控制单元,用于将所述目标输出数据分组存储至所述分组缓存单元的至少一个输出缓存中。
2.如权利要求1所述的人工智能加速器,其特征在于,所述控制单元还用于解析所述目标网络层的处理指令,得到搬移指令;
所述人工智能加速器还包括:
全量存储单元,用于存储所述目标网络层的输入数据集合和所述目标网络层的输出数据集合,所述输出数据集合中包含所述多个输入数据块分别对应的输出数据;
搬移引擎,用于按照所述控制单元解析得到的搬移指令在所述全量存储单元和所述分组缓存单元之间执行数据的搬移操作。
3.如权利要求2所述的人工智能加速器,其特征在于,所述搬移指令包括:加载搬移指令或存储搬移指令;
所述搬移引擎接收所述控制单元发送的加载搬移指令,并按照所述加载搬移指令将所述全量存储单元中的输入数据块搬移至所述分组缓存单元;或者,
所述搬移引擎接收所述控制单元发送的存储搬移指令,并按照所述存储搬移指令将所述分组缓存单元中缓存的输出数据搬移至所述全量存储单元。
4.如权利要求3所述的人工智能加速器,其特征在于,所述第一加速并行度用于指示所述人工智能加速器每次执行并行处理时所使用的运算函数的数量,所述第二加速并行度用于指示所述人工智能加速器每次执行并行处理时在深度方向上的处理数据量;
所述目标网络层具备第一运算并行度和第二运算并行度;所述第一运算并行度用于指示所述目标网络层所包括的运算函数的数量,所述第二运算并行度用于指示所述目标网络层每次执行并行处理时在深度方向上的处理数据量;
其中,所述第一加速并行度采用N表示,所述第一运算并行度采用M表示;M和N均为正整数。
5.如权利要求4所述的人工智能加速器,其特征在于,若所述第一运算并行度大于所述第一加速并行度,则所述计算引擎将所述目标网络层中的运算函数拆分成P个函数组,并按照所述并发指令依次调用各函数组中的运算函数对所述目标输入数据块执行并行处理;其中,P根据M和N的比值确定。
6.如权利要求5所述的人工智能加速器,其特征在于,所述分组缓存单元包括输入缓存;所述目标输入数据块独立使用一个加载搬移指令、一个并发指令和一个存储搬移指令;
所述搬移引擎按照所述目标输入数据块对应的加载搬移指令,将所述目标输入数据块从所述全量存储单元中搬移至所述分组缓存单元的输入缓存中;
所述计算引擎通过所述分组控制单元从所述输入缓存中读取所述目标输入数据块,并按照所述目标输入数据块对应的并发指令对所述目标输入数据块执行并行处理,得到所述目标输入数据块对应的目标输出数据;
所述分组控制单元将所述目标输出数据分组存储至所述分组缓存单元的至少一个输出缓存中;
所述搬移引擎按照所述目标输入数据块对应的存储搬移指令,将所述至少一个输出缓存中的所述目标输出数据搬移至所述全量存储单元。
7.如权利要求5所述的人工智能加速器,其特征在于,所述目标输出数据的数量为M个,且所述M个目标输出数据被划分成P个分组,每个分组包括N个目标输出数据;
所述分组控制单元将每个分组中第n个目标输出数据存储至所述分组缓存单元的第n个输出缓存中,n∈[1,N]。
8.如权利要求4所述的人工智能加速器,其特征在于,若第一运算并行度小于所述第一加速并行度,则所述分组控制单元将输入数据集合中的输入数据块划分成多个输入数据组,每个输入数据组包括I个依次排列的输入数据块,I根据N和M的比值确定;
所述计算引擎按照所述目标输入数据块在所属的目标输入数据组中的排列位置,对所述目标网络层中的运算函数进行错位填充处理,得到目标填充函数组;并按照所述并发指令调用所述目标填充函数组中的各函数对所述目标输入数据块执行并行处理;
所述目标填充函数组包括所述目标网络层中的M个运算函数和N-M个填充函数,且所述目标填充函数组内设有N个函数位,所述N个函数位的取值范围为[0,N-1];其中,所述M个运算函数设于所述N个函数位中的有效函数位,所述N-M个填充函数设于所述N个函数位中的填充函数位;所述有效函数位的取值范围为[(i-1)*M,i*M-1],所述填充函数位是所述N个函数位中除所述有效位之外的函数位;其中,i表示所述目标输入数据块在所述目标输入数据组中的排列位置,i∈[1,I]。
9.如权利要求8所述的人工智能加速器,其特征在于,所述分组缓存单元包括输入缓存;所述目标输入数据块独立使用一个加载搬移指令和一个并发指令,并和所述目标输入数据组中除所述目标输入数据块之外的(I-1)个剩余输入数据块共用一个存储搬移指令;
所述搬移引擎按照所述目标输入数据组中的各输入数据块对应的加载搬移指令,依次将所述目标输入数据组中的各输入数据块从所述全量存储单元中搬移至所述分组缓存单元的输入缓存中;
所述计算引擎通过所述分组控制单元依次从所述输入缓存中读取所述目标输入数据组中的各输入数据块;并按照所述目标输入数据组中的各输入数据块对应的并发指令,对所述目标输入数据组中的各输入数据块执行并行处理,得到所述目标输入数据组中的各输入数据块对应的输出数据;
所述分组控制单元依次将所述目标输入数据组中的各输入数据块对应的输出数据分组存储至所述分组缓存单元的至少一个输出缓存中;
所述搬移引擎在所述目标数据输入组中的第I个输入数据块所对应的输出数据被缓存至所述分组缓存单元后,按照所述目标输入数据组所共用的存储搬移指令,对所述目标输入数据组中的各输入数据块所对应的输出数据进行合并,并将合并后的输出数据从所述分组缓存单元中搬移至所述全量存储单元。
10.如权利要求8所述的人工智能加速器,其特征在于,所述目标输出数据的数量为N个;所述N个目标输出数据中包括:M个有效目标输出数据和(N-M)个无效目标输出数据;所述有效目标输出数据是通过所述有效函数位处的运算函数计算得到的输出数据,所述无效目标输出数据是通过所述填充函数位处的填充函数计算得到的输出数据;
所述控制单元还用于解析所述目标网络层的处理指令,得到所述目标输入数据块所对应的分组选择指示;
所述分组控制单元按照所述控制单元解析得到的分组选择指示,将所述N个目标输出数据中的M个有效目标输出数据分组存储至所述分组缓存单元的M个输出缓存中。
11.如权利要求10所述的人工智能加速器,其特征在于,所述分组控制单元包括N个依序排列的选择器,所述N个选择器的位置标识所构成的区间范围为[0,N-1];
所述分组控制单元按照所述分组选择指示将位置标识属于[(i-1)M+1,i*M]中的选择器作为目标选择器,并导通所述目标选择器以将所述M个有效目标输出数据分组存储至所述分组缓存单元的M个输出缓存中,一个输出缓存存储一个有效目标输出数据。
12.如权利要求2所述的人工智能加速器,其特征在于,所述人工智能加速器还包括:
指令生成单元,用于生成所述神经网络模型中的各网络层的处理指令,并将所述各网络层的处理指令存储至所述全量存储单元中;
指令缓存单元,用于从所述全量存储单元中加载所述神经网络模型的目标网络层的处理指令,并缓存所述目标网络层的处理指令以供所述控制单元读取。
13.一种数据处理方法,其特征在于,所述数据处理方法由如权利要求1-12任一项所述的人工智能加速器来执行,所述人工智能加速器具备第一加速并行度和第二加速并行度;所述人工智能加速器按照所述第一加速并行度设有多个输出缓存;所述数据处理方法包括:
解析神经网络模型中的目标网络层的处理指令,得到并发指令;所述目标网络层为所述神经网络模型中的任一网络层,所述目标网络层的输入数据集合中包括多个输入数据块,所述输入数据块的深度是按照所述第二加速并行度进行适配处理得到的;
按照所述并发指令对所述输入数据集合中的目标输入数据块执行并行处理,得到所述目标输入数据块所对应的目标输出数据;所述目标输入数据块为所述输入数据集合中的任一个输入数据块;
将所述目标输出数据分组存储至至少一个输出缓存中。
14.一种人工智能加速设备,其特征在于,所述人工智能加速设备中包括如权利要求1-12任一项所述的人工智能加速器。
15.一种人工智能加速芯片,其特征在于,所述人工智能加速芯片内封装有如权利要求1-12任一项所述的人工智能加速器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911237525.6A CN110991634B (zh) | 2019-12-04 | 2019-12-04 | 人工智能加速器、设备、芯片及数据处理方法 |
PCT/CN2020/118809 WO2021109699A1 (zh) | 2019-12-04 | 2020-09-29 | 人工智能加速器、设备、芯片及数据处理方法 |
US17/513,298 US20220051088A1 (en) | 2019-12-04 | 2021-10-28 | Artificial intelligence accelerator, artificial intelligence acceleration device, artificial intelligence acceleration chip, and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911237525.6A CN110991634B (zh) | 2019-12-04 | 2019-12-04 | 人工智能加速器、设备、芯片及数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110991634A true CN110991634A (zh) | 2020-04-10 |
CN110991634B CN110991634B (zh) | 2022-05-10 |
Family
ID=70090538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911237525.6A Active CN110991634B (zh) | 2019-12-04 | 2019-12-04 | 人工智能加速器、设备、芯片及数据处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220051088A1 (zh) |
CN (1) | CN110991634B (zh) |
WO (1) | WO2021109699A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111753994A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | Ai芯片的数据处理方法、装置和计算机设备 |
WO2021109699A1 (zh) * | 2019-12-04 | 2021-06-10 | 腾讯科技(深圳)有限公司 | 人工智能加速器、设备、芯片及数据处理方法 |
CN113419989A (zh) * | 2021-06-11 | 2021-09-21 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
CN113535637A (zh) * | 2021-07-20 | 2021-10-22 | 珠海市一微星科技有限公司 | 一种新型运算加速单元及其运行方法 |
CN113673701A (zh) * | 2021-08-24 | 2021-11-19 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
CN113806246A (zh) * | 2020-06-16 | 2021-12-17 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
WO2021259104A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 人工智能芯片和基于人工智能芯片的数据处理方法 |
CN113902111A (zh) * | 2021-12-09 | 2022-01-07 | 绍兴埃瓦科技有限公司 | 多芯片互连***及神经网络加速处理方法 |
CN115270668A (zh) * | 2022-07-18 | 2022-11-01 | 北京师范大学 | 一种信息科技教育开源硬件专用芯片 |
CN117273102A (zh) * | 2023-11-23 | 2023-12-22 | 深圳鲲云信息科技有限公司 | 用于池化加速器的装置及方法和芯片电路及计算设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115035384B (zh) * | 2022-06-21 | 2024-05-10 | 上海后摩智能科技有限公司 | 数据处理方法、装置和芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN108805272A (zh) * | 2018-05-03 | 2018-11-13 | 东南大学 | 一种基于fpga的通用卷积神经网络加速器 |
US20190073585A1 (en) * | 2017-09-01 | 2019-03-07 | Qualcomm Incorporated | Ultra-low power neuromorphic artificial intelligence computing accelerator |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
CN110991634B (zh) * | 2019-12-04 | 2022-05-10 | 腾讯科技(深圳)有限公司 | 人工智能加速器、设备、芯片及数据处理方法 |
-
2019
- 2019-12-04 CN CN201911237525.6A patent/CN110991634B/zh active Active
-
2020
- 2020-09-29 WO PCT/CN2020/118809 patent/WO2021109699A1/zh active Application Filing
-
2021
- 2021-10-28 US US17/513,298 patent/US20220051088A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190073585A1 (en) * | 2017-09-01 | 2019-03-07 | Qualcomm Incorporated | Ultra-low power neuromorphic artificial intelligence computing accelerator |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN108805272A (zh) * | 2018-05-03 | 2018-11-13 | 东南大学 | 一种基于fpga的通用卷积神经网络加速器 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021109699A1 (zh) * | 2019-12-04 | 2021-06-10 | 腾讯科技(深圳)有限公司 | 人工智能加速器、设备、芯片及数据处理方法 |
CN113806246A (zh) * | 2020-06-16 | 2021-12-17 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
WO2021259104A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 人工智能芯片和基于人工智能芯片的数据处理方法 |
CN111753994A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | Ai芯片的数据处理方法、装置和计算机设备 |
CN111753994B (zh) * | 2020-06-22 | 2023-11-03 | 深圳鲲云信息科技有限公司 | Ai芯片的数据处理方法、装置和计算机设备 |
CN113419989A (zh) * | 2021-06-11 | 2021-09-21 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
CN113535637A (zh) * | 2021-07-20 | 2021-10-22 | 珠海市一微星科技有限公司 | 一种新型运算加速单元及其运行方法 |
CN113535637B (zh) * | 2021-07-20 | 2022-11-15 | 珠海市一微星科技有限公司 | 一种运算加速单元及其运行方法 |
CN113673701A (zh) * | 2021-08-24 | 2021-11-19 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
CN113902111A (zh) * | 2021-12-09 | 2022-01-07 | 绍兴埃瓦科技有限公司 | 多芯片互连***及神经网络加速处理方法 |
CN115270668A (zh) * | 2022-07-18 | 2022-11-01 | 北京师范大学 | 一种信息科技教育开源硬件专用芯片 |
CN117273102A (zh) * | 2023-11-23 | 2023-12-22 | 深圳鲲云信息科技有限公司 | 用于池化加速器的装置及方法和芯片电路及计算设备 |
CN117273102B (zh) * | 2023-11-23 | 2024-05-24 | 深圳鲲云信息科技有限公司 | 用于池化加速器的装置及方法和芯片电路及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
US20220051088A1 (en) | 2022-02-17 |
CN110991634B (zh) | 2022-05-10 |
WO2021109699A1 (zh) | 2021-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110991634B (zh) | 人工智能加速器、设备、芯片及数据处理方法 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN108805267B (zh) | 用于卷积神经网络硬件加速的数据处理方法 | |
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
CN111178518A (zh) | 一种基于fpga的软硬件协同的加速方法 | |
CN112465110B (zh) | 一种卷积神经网络计算优化的硬件加速装置 | |
CN112200300B (zh) | 卷积神经网络运算方法及装置 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
CN114742225A (zh) | 一种基于异构平台的神经网络推理加速方法 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN111401532A (zh) | 一种卷积神经网络推理加速器及加速方法 | |
CN114461978B (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN117539546A (zh) | 基于非空列存储的稀疏矩阵向量乘加速方法及装置 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN114372012B (zh) | 一种通用、可配置的高能效池化计算单行输出***和方法 | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN114265801B (zh) | 一种通用、可配置的高能效池化计算多行输出方法 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 | |
CN211554991U (zh) | 一种卷积神经网络推理加速器 | |
CN112712167A (zh) | 支持多种卷积神经网络加速的存储器访问方法及*** | |
CN112639747A (zh) | 处理器的寻址方法、处理器、可移动平台和电子设备 | |
CN117291240B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021620 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |