一种基于数据流架构的多精度神经网络计算装置以及方法制造方法及图纸

技术编号:29791989 阅读:18 留言:0更新日期:2021-08-24 18:11
本发明专利技术实施例提供了一种基于数据流架构的多精度神经网络计算装置,包括:微控制器以及与之连接的PE阵列,PE阵列的每个PE中配置有原始精度和精度低于原始精度的多种低精度的计算部件,精度越低的计算部件中配置越多并行的乘法累加器以充分利用片上网络带宽,为每个PE中每种低精度的计算部件配置充足的寄存器以避免数据溢出;所述微控制器被配置为:响应于对特定卷积神经网络的加速请求,控制PE阵列中与所述特定卷积神经网络精度匹配的原始精度或者低精度的计算部件执行相应的卷积操作中的运算并将中间计算结果存储至相应的寄存器。从而可以为不同精度的卷积神经网络进行加速,降低计算时延和能耗,提高用户体验。

【技术实现步骤摘要】
一种基于数据流架构的多精度神经网络计算装置以及方法
本专利技术涉及计算机领域,具体来说涉及神经网络模型计算的加速装置或者加速器领域,更具体地说,涉及一种基于数据流架构的多精度神经网络计算装置和方法。
技术介绍
深度神经网络(DNN)已经在许多应用领域中显示出显著的优势,从计算机视觉到自然语言处理和语音识别,强大硬件的支持使得训练DNN模型更加容易,随着应用的多样化和复杂化,DNN模型也随之复杂,其深度越来越深,参数越来越庞大,复杂的DNN模型对于特征和输出非线性关系的捕捉更具有表现力,由此表现出很好的结果精度。虽然这些神经网络非常强大,但是大量的权重会占用大量的存储和内存带宽,同时DNN模型在运行期间也会产生大量的中间数据,在计算部件和缓冲器之间的移动受到内部带宽和巨大的能量耗散的影响。因此,在系统上部署深度神经网络变得越来越困难。拥有数百万和数十亿参数的卷积神经网络的应用爆炸式地增长,给终端设备带来巨大的挑战,使得必须针对移动设备的有限资源获得定制的DNN模型,越来越多的科学家转向如何减少这些大量参数的研究中,已经证明了几种深度学习模型的参数化存在显著的冗余,可以利用网络的冗余特性以减少参数的数量。在DNN模型的压缩和加速中,低精度和量化是一种有效的压缩模型的方法。精度的降低可以减少内存占用和所需的外部存储器带宽,还可以减少能量的消耗,允许在片上安装更多乘法累加(MAC)并实现更高的能效。例如,16位定点乘法在45nm工艺技术下比32位浮点乘法消耗的能量少约6.2倍。神经网络的运算主要为输入特征图(也称为激活数据)与神经网络中的权重参数(网络模型提供的已知参数)执行乘加运算。网络低精度通过减少表示每个权重或激活数据所需的比特数来压缩原始网络,例如,使用8位、4位、3位或者动态位数表示权重及激活。数据流架构在大数据处理、科学计算等方面具有广泛的应用,解耦的算法和结构使其具有良好的通用性和灵活性。数据流架构的天然并行性很好匹配了神经网络算法的并行特性。基于数据流的加速装置与专用的神经网络加速装置相比,具有一定的通用性,与GPU相比,又具有一定的能效比优势。基于数据流架构,将神经网络算法以数据流图的形式映射在由计算阵列(PE阵列)组成的架构中,数据流图中包含多个结点,结点中包含多个指令,流图的有向边表示结点的依赖关系。PE阵列执行映射的指令即可实现神经网络的运算。神经网络中主要的运算为乘加运算,基于数据流的加速装置依据这些运算规则设计了相应的乘加指令以实现这些运算,同时为了实现高的数据传输和快的数据运算,一些现有技术设计了高的数据带宽和单指令多数据流运算(SIMD)模式支持网络运算。SIMD即为单指令多数据流运算,即使用一条指令,多个数据同时执行相同的运算。这种运算为神经网络提供快速的执行方式。在加速装置中,设计的运算部件主要为浮点乘加部件或者32bit/16bit的定点乘加部件,以支持这些较高的数据位宽来保证神经网络的结果精度。为了压缩神经网络的模型,可以使用较低精度的数据执行神经网络运算,同时为了保证结果精度,可以对压缩后的网络模型进行训练以达到原始的结果精度。在这种情况下,可以使用压缩后并训练后的神经网络模型作为最终执行的神经网络,应用到加速装置上执行。但是,在现有的加速装置上,由于没有相关的计算部件支持低精度运算,也没有相应的指令支持,无法支持这些低精度的运算。故而,无法进行低精度的网络运算以降低加速装置的功耗。如果使用原始精度的运算部件执行低精度运算,浪费功耗的同时也没有性能的提升。另外,低精度运算的结果通常使用宽的位宽保存以避免数据溢出,加之现有的加速装置中使用SIMD运算具有高的数据带宽(片上网络带宽),当设计的低精度部件不合理时,不仅会操作带宽的浪费,还会造成数据的溢出,这使得支持多种低精度的部件设计具有一定的挑战性。
技术实现思路
因此,本专利技术的目的在于克服上述现有技术的缺陷,提供一种基于数据流架构的多精度神经网络计算装置以及方法。本专利技术的目的是通过以下技术方案实现的:根据本专利技术的第一方面,提供一种基于数据流架构的多精度神经网络计算装置,包括:微控制器以及与之连接的由多个PE构成的PE阵列,PE阵列的每个PE中配置有用于原始精度的计算部件和分别用于精度低于原始精度的一种或者多种低精度的计算部件,其中,不同精度的计算部件中配置有相应数目的并行的乘法累加器以充分利用片上网络带宽,为每个PE中每种精度的计算部件配置相应数目的寄存器以避免数据溢出;所述微控制器被配置为:响应于对一个卷积神经网络的计算请求以及计算精度指示,控制PE阵列以对应于所述计算精度的计算部件执行所述卷积神经网络的相应的卷积操作中的运算并将中间计算结果存储至相应的寄存器。在本专利技术的一些实施例中,同一个PE中不同精度的计算部件中所具有的乘法累加器的个数不同,其中,每种精度的计算部件中乘法累加器的个数等于或者基本等于处理阵列中片上网络带宽除以该精度对应的数据位数。在本专利技术的一些实施例中,每种低精度的计算部件中为每种低精度的乘法累加器配置的寄存器的数据位宽大于该种低精度的乘法累加器的精度位数。在本专利技术的一些实施例中,每个PE还可以包括:路由器,用于在PE阵列的各个PE之间构建Mesh网络;指令缓存,用于缓存指令;指令状态寄存器,用于指示指令缓存中缓存的指令的状态,其中指令的状态包括正在运行、就绪和初始化;数据缓存,用于缓存相应指令所需的数据;执行部件,包括:加载单元,用于负责将数据从内存加载到所述数据缓存,存储单元,用于负责将数据从所述数据缓存传输到所述内存,数据流单元,用于将所述PE内的数据通过Mesh网络传输给其他PE;控制器,用于对执行部件、指令缓存、指令状态寄存器、数据缓存、路由器进行控制,控制器包括译码部件,用于对计算指令进行译码,解析出用于所述神经网络计算所需精度的计算指令,根据相应精度的计算指令控制相应精度的计算部件执行以根据神经网络的输入数据和权重数据完成特征图的至少部分计算。在本专利技术的一些实施例中,每个PE可以包括:原始精度的计算部件、第一低精度的计算部件和第二低精度的计算部件,其中,所述原始精度的计算部件包括精度为原始精度对应比特的定点计算的乘法累加器,配置原始数据位宽的寄存器用于保存中间计算结果;所述第一低精度的计算部件包括精度为第一预设数量比特的定点计算的乘法累加器,配置原始数据位宽的寄存器用于保存中间计算结果;所述第二低精度的计算部件包括精度为第二预设数量比特的定点计算的乘法累加器,配置原始数据位宽的寄存器用于保存中间计算结果。优选的,原始精度>第一低精度>第二低精度,所述第二低精度对应的比特位数大于等于8。在本专利技术的一些实施例中,原始精度为32比特精度,所述第一低精度为16比特精度,所述第二低精度为8比特精度。在本专利技术的一些实施例中,每个PE还可以包括:第三低精度的计算部件。优选的,所述第三低精度的计算部件包括精度为第三预设数量比特的定点计算的乘法累加器,配置4倍于原始数据位宽的寄存器用于保存中间计算结果。在本专利技术的一本文档来自技高网
...

【技术保护点】
1.一种基于数据流架构的多精度神经网络计算装置,包括:微控制器以及与之连接的由多个PE构成的PE阵列,其特征在于,/nPE阵列的每个PE中配置有用于原始精度的计算部件和分别用于精度低于原始精度的一种或者多种低精度的计算部件,其中,不同精度的计算部件中配置有相应数目的并行的乘法累加器以充分利用片上网络带宽,为每个PE中每种精度的计算部件配置相应数目的寄存器以避免数据溢出;/n所述微控制器被配置为:/n响应于对一个卷积神经网络的计算请求以及计算精度指示,控制PE阵列以对应于所述计算精度的计算部件执行所述卷积神经网络的相应的卷积操作中的运算并将中间计算结果存储至相应的寄存器。/n

【技术特征摘要】
1.一种基于数据流架构的多精度神经网络计算装置,包括:微控制器以及与之连接的由多个PE构成的PE阵列,其特征在于,
PE阵列的每个PE中配置有用于原始精度的计算部件和分别用于精度低于原始精度的一种或者多种低精度的计算部件,其中,不同精度的计算部件中配置有相应数目的并行的乘法累加器以充分利用片上网络带宽,为每个PE中每种精度的计算部件配置相应数目的寄存器以避免数据溢出;
所述微控制器被配置为:
响应于对一个卷积神经网络的计算请求以及计算精度指示,控制PE阵列以对应于所述计算精度的计算部件执行所述卷积神经网络的相应的卷积操作中的运算并将中间计算结果存储至相应的寄存器。


2.根据权利要求1所述的基于数据流架构的多精度神经网络计算装置,其特征在于,同一个PE中不同精度的计算部件中所具有的乘法累加器的个数不同,其中,每种精度的计算部件中乘法累加器的个数等于或者基本等于处理阵列中片上网络带宽除以该精度对应的数据位数。


3.根据权利要求2所述的基于数据流架构的多精度神经网络计算装置,其特征在于,每种低精度的计算部件中为每种低精度的乘法累加器配置的寄存器的数据位宽大于该种低精度的乘法累加器的精度位数。


4.根据权利要求3所述的基于数据流架构的多精度神经网络计算装置,其特征在于,每个PE还包括:
路由器,用于在PE阵列的各个PE之间构建Mesh网络;
指令缓存,用于缓存指令;
指令状态寄存器,用于指示指令缓存中缓存的指令的状态,其中指令的状态包括正在运行、就绪和初始化;
数据缓存,用于缓存相应指令所需的数据;
执行部件,包括:
加载单元,用于负责将数据从内存加载到所述数据缓存,
存储单元,用于负责将数据从所述数据缓存传输到所述内存,
数据流单元,用于将所述PE内的数据通过Mesh网络传输给其他PE;
控制器,用于对执行部件、指令缓存、指令状态寄存器、数据缓存、路由器进行控制,控制器包括译码部件,用于对计算指令进行译码,解析出用于所述神经网络计算所需精度的计算指令,根据相应精度的计算指令控制相应精度的计算部件执行以根据神经网络的输入数据和权重数据完成特征图的至少部分计算。


5.根据权利要求1至4任一项所述的基于数据流架构的多精度神经网络计算装置,其特征在于,每个PE包括:
原始精度的计算部件、第一低精度的计算部件和第二低精度的计算部件,其中,
所述原始精度的计算部件包括精度为原始精度对应比特的定点计算的乘法累加器,配置原始数据位宽的寄存器用于保存中间计算结果;
所述第一低精度的计算部件包括精度为第一预设数量比特的定点计算的乘法累加器,配置原始数据位宽的寄存器用于保存中间计算结果;
所述第二低精度的计算部件包括精度为第二预设数量比特的定点计算的乘法累加器,配置原...

【专利技术属性】
技术研发人员:吴欣欣范志华欧焱李文明叶笑春范东睿
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1