一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种卷积神经网络-图卷积神经网络可重构硬件加速架构的制作方法

2022-03-26 10:08:01 来源:中国专利 TAG:


1.本发明属于神经网络深度学习领域,具体涉及一种卷积神经网络-图卷积神经网络可重构硬件加速架构。


背景技术:

2.最近几年来,人工智能领域,尤其是机器学习在理论和应用方面均获得了突破性的成就。神经网络深度学习是机器学习最重要发展方向之一,在过去的十年中,随着计算资源的快速发展和大量训练数据的可用性,深度学习和神经网络得到了快速的兴起与发展。许多曾经严重依赖于手工提取特征的机器学习任务(如目标检测、机器翻译和语音识别),如今都已被各种端到端的深度学习神经网络模型(例如卷积神经网络(cnn)、长短期记忆模型(lstm)和自动编码器)彻底取代了。
3.相比于中央处理器(cpu)、图形处理器(gpu)和专用集成电路(asic),现场可编程逻辑门阵列(fpga)在深度学习算法加速上具有高速度、低功耗、稳定而又延迟极低,适用于流式的计算密集型任务和通信密集型任务,并具有灵活、开发周期短、成本低、便于携带等优势。因此现场可编程逻辑门阵列是深度学习加速非常不错的选择。
4.近年来卷积神经网络(cnn)和图卷积神经网络(gcn)是神经网络深度学习领域炙手可热的研究方向。卷积神经网络在图像数据识别领域,对数据具备规则空间结构的欧式结构图像数据识别的处理有很好的效果。但现实生活中还存在有很多不规则的数据结构,近年来兴起的图卷积神经网络对于不具备规则空间结构的非欧结构图像数据,如推荐系统、电子交易、分子结构等抽象出来的图谱等的处理场景应用广泛。
5.目前学术、工业界针对卷积神经网络的硬件加速器的研究已经成果颇丰,对于图卷积神经网络的硬件加速器的研究也有一定的成果。但是目前的硬件架构都是针对一种神经网络进行加速,不支持重构加速不同神经网络,然而这会极大限制人工智能芯片产业的发展。近两年来人工智能芯片市场陷入低速增长,其根本原因就是神经网络加速硬件架构不支持重构。比如对于欧式结构和非欧结构数据都需要处理、研究的需求场景,一旦深度学习神经网络的计算复杂度急速增高、数据量急速增大,对硬件加速器的开销需求会急速增大,如果对卷积神经网络和图卷积神经网络两种神经网络数据分别采用不同神经网络硬件加速架构进行加速会造成资源的严重浪费。如果能够设计出一款动态可重构的神经网络硬件加速架构,以实现一个架构可以跑多种算法,这将节省资源,大大提高通用性,极大程度上促进整个产业的发展。因此,如何设计一种硬件加速架构,通过配置支持对卷积神经网络-图卷积神经网络两种神经网络数据进行重构加速,成为目前需要解决的一个问题。


技术实现要素:

6.针对上述存在问题或不足,为解决现有神经网络硬件加速架构不支持两种神经网络重构的问题,本发明提供了一种卷积神经网络-图卷积神经网络可重构硬件加速架构,基于现场可编程逻辑门阵列。
7.一种卷积神经网络-图卷积神经网络可重构硬件加速架构,其包括权重静态存储控制单元、数据静态存储控制单元、状态控制单元、重排图像块为矩阵列方法单元、处理元件(pe)运算阵列、邻接矩阵运算单元、配置寄存器和激活函数与池化运算单元。
8.所述状态控制单元,用于完成整个系统架构的状态跳转,以控制神经网络(卷积神经网络或图卷积神经网络)图像/图数据和权重数据的存储调用以及神经网络运算操作的执行顺序。
9.如果是卷积神经网络模式,状态控制单元的状态跳转顺序为:空闲-输入数据存储-重排图像块为矩阵列方法-神经网络运算-激活池化-中间数据存储。
10.如果是图卷积神经网络模式,状态控制单元的状态跳转顺序为:空闲-输入数据存储-神经网络运算-邻接矩阵运算-激活池化-中间数据存储。此时状态控制单元还负责将上位机传输的邻接矩阵数据交给邻接矩阵运算单元存储起来。
11.所述权重静态存储控制单元,用于完成上位机训练完毕的权重数据的存储。上位机通过总线将权重数据存储进该单元内置的权重静态存储器。
12.神经网络运算前,状态控制单元读取权重静态存储控制单元中神经网络的权重数据,将权重数据与图像或者图数据在处理元件运算阵列中进行乘加运算;神经网络运算后,由于权重数据只是被读取,而不会被计算,因此不需要再执行将权重数据存储进权重静态存储控制单元的操作。
13.如果是卷积神经网络模式,权重静态存储控制单元存储经过上位机通过重排图像块为矩阵列方法转换完毕的每一层卷积神经网络的权重(卷积核)数据;
14.如果是图卷积神经网络模式,权重静态存储控制单元存储每一层图卷积神经网络的权重数据。
15.所述数据静态存储控制单元,用于完成上位机传输的输入数据和神经网络计算完毕的中间数据的存储。上位机通过总线将数据存储进该单元内置数据静态存储器。
16.如果是卷积神经网络模式,数据静态存储控制单元存储上位机输入的图像数据,以及每一层神经网络计算完毕后的中间图像数据。
17.如果是图卷积神经网络模式,数据静态存储控制单元存储上位机输入的初始图矩阵,和每一层神经网络计算完毕后的中间图矩阵。
18.神经网络运算前,状态控制单元读取数据,如果是卷积神经网络模式,数据还需要先进入重排图像块为矩阵列方法单元进行数据转换;再将权重数据与图像数据在处理单元运算阵列中进行乘加运算。如果是图卷积神经网络模式,则将图数据直接输入处理单元运算阵列中与权重数据进行乘加运算。
19.神经网络运算后,如果是图卷积神经网络模式,数据还需要进入邻接矩阵运算单元与存储在该单元的邻接矩阵数据做加法运算;然后再进入激活函数与池化运算单元进行激活函数与池化运算,最后得到的中间数据存储回到数据静态存储控制单元。
20.所述重排图像块为矩阵列方法单元,用于在卷积神经网络模式下,每一层神经网络运算前,将数据静态存储控制单元存储的数据转换成能够与权重数据进行乘加的数据。该单元将得到配置寄存器的卷积核尺寸、通道数、步长数据,将属于同一覆盖位置的不同通道的所有数据通过重排图像块为矩阵列方法展成一行。图卷积神经网络模式下该单元使能为低,将不会被使用。
21.所述处理元件运算阵列,内置至少两个可同时执行乘法运算的处理元件,用于对权重数据与图像数据或图数据进行高并行的乘加运算,从而实现乘加运算的效率提升。
22.如果是卷积神经网络模式,神经网络运算结束后的数据直接交给激活函数与池化运算单元。
23.如果是图卷积神经网络模式,神经网络运算结束后的数据送入邻接矩阵运算单元,与邻接矩阵数据进行加法运算(邻接矩阵数据代表图的节点的相邻关系,邻接矩阵数据与输出数据的运算不包括乘法操作,所以只需要加法运算),然后再交给激活函数与池化运算单元处理。
24.所述邻接矩阵运算单元,用于在图卷积神经网络模式存储邻接矩阵数据,与神经网络运算后的数据进行加法运算;卷积神经网络模式,该单元使能为低,将不会被使用。
25.所述配置寄存器,用于在系统架构启动前进行相应的神经网络模式配置,包括网络参数寄存器、模式选择寄存器和中断寄存器。通过上位机配置相应的神经网络类型、神经网络层数、各层权重尺寸、步长、填充(padding)、数据尺寸和中断寄存器。系统架构在运行过程中,配置寄存器的数据作为全局数据可以直接被系统中各个单元读取。状态控制单元读取配置寄存器内的神经网络层数、权重尺寸和数据尺寸,从而正确读出权重静态存储控制单元内置权重静态存储器指定地址区间的权重数据,以及数据静态存储控制单元内置数据静态存储器指定地址区间图或图像数据;重排图像块为矩阵列方法单元读取权重尺寸,步长信息,才能将存储的图像数据转换成能够用于与权重数据运算的图像数据。同时,支持系统异常时的中断上报,中断信号会被存储在中断寄存器中。
26.其他单元对配置寄存器内数据解析以及相应神经网络模式对应选择。读取模式选择寄存器中神经网络类型域段,0为卷积神经网络模式,1为图卷积神经网络模式。读取网络参数寄存器中的网络层数、各层卷积核尺寸、步长、填充、数据尺寸域段。
27.所述激活函数与池化运算单元,对经过神经网络运算的数据先进行激活运算,再进行池化操作。进行了激活运算和池化运算后,数据存储到数据静态存储控制单元中。
28.进一步的,所述状态控制单元采用有限状态机(fsm)进行状态跳转。
29.上述卷积神经网络-图卷积神经网络可重构硬件加速架构,其工作流程如下:
30.步骤1、上位机通过总线写入数据:
31.根据上位机写入的神经网络模式为卷积神经网络模式0或图卷积神经网络模式1,对配置寄存器进行相应配置数据的写入,配置寄存器包括模式选择寄存器、网络参数寄存器和中断寄存器。
32.写入配置数据:神经网络类型、网络层数、各层权重尺寸、步长、填充、数据尺寸和中断类型命令;配置数据的写入需要在每次神经网络运算开始前完成,神经网络运算中途不允许对配置寄存器进行配置数据的写入,否则将产生中断信号。
33.将神经网络各层权重数据存储到权重静态存储控制单元,输入图像数据或图数据存储到数据静态存储控制单元。
34.将邻接矩阵数据通过状态控制单元存储到邻接矩阵运算单元。
35.步骤2、上位机给状态控制单元启动信号,开始工作。
36.此时状态控制单元读取配置寄存器内的配置数据。读取模式选择寄存器中神经网络类型域段(register field),0为卷积神经网络模式,1为图卷积神经网络模式。
37.状态控制单元根据读取为0/1选择相应的神经网络模式,从而读取网络参数寄存器中的网络层数、各层卷积核尺寸、步长、填充、数据尺寸域段。
38.步骤3、状态控制单元根据步骤2获取的神经网络模式和相应的参数,读出存储在权重静态存储控制单元和数据静态存储控制单元内的数据。
39.卷积神经网络模式下,数据静态存储控制单元内的图像数据经过重排图像块为矩阵列方法单元,启动对数据的重排图像块为矩阵列方法单元转换,再进入处理元件运算阵列;
40.图卷积神经网络模式下,图数据直接进入处理元件运算阵列。
41.两种神经网络模式下,权重静态存储控制单元内的权重数据都直接进入处理元件运算阵列。
42.步骤4、处理元件运算阵列进行数据的乘加并行运算;
43.卷积神经网络模式下,处理元件运算阵列进行图像数据以及权重数据的乘加并行运算;
44.图卷积神经网络模式下,处理元件运算阵列进行图数据以及权重数据的乘加并行运算;
45.步骤5、对于步骤4的运算结果:
46.图卷积神经网络模式下,运算结束的图数据进入邻接矩阵运算单元进行相加运算,再进入激活函数与池化运算单元进行激活函数和池化运算;
47.卷积神经网络模式下,运算结束的图像数据直接进入激活函数与池化运算单元进行激活函数和池化运算;
48.步骤6、激活函数和池化运算结束后,输出图像或图数据,并将其写回数据静态存储控制单元;
49.步骤7、上位机通过总线再次进行配置寄存器的配置数据写入,改写寄存器内的模式选择寄存器的域段值,实现神经网络模式的更改。
50.本发明采用的重排图像块为矩阵列方法单元转化卷积运算为矩阵运算的原理如下:每一次滑动,一个卷积核的所有通道的权重数据分别与输入图像被卷积核覆盖区域的对应通道的数据逐一相乘再全部相加,这样就会得到输出图像的一个数据。乘加就可以展开为矩阵的运算。把一个卷积核所有通道的权重数据全部展开为一列,把一个输入图像被卷积核覆盖区域所有通道数据全部展开为一行,就得到一行乘以一列的矩阵运算,可以算出一个数据,这就是输出图像一个位置一个通道的数据。把所有n个卷积核所有通道全部展开为n列,可以算出n个值,这就是输出图像一个位置n个通道的数据。接着按照步长切换覆盖区域,把覆盖区域所有通道都全部展开为一行,假设一共展开m行。最后得到的矩阵与卷积展开的n列的矩阵相乘,得到m
×
n的输出矩阵。这个输出矩阵的每一列就是同一个通道的全部数据,每一行就是同一个位置不同通道的全部数据。
51.重排图像块为矩阵列方法展开卷积核相对简单,只需要将同一个卷积核的所有通道的权重值展成一列,假设卷积核组的尺寸为3
×3×3×
5,那么展开的卷积核矩阵尺寸为27
×
5。重排图像块为矩阵列方法展开输入数据则可能出现输入数据重复使用的情况,会增加一定程度的数据存储开销。
52.本发明依据卷积神经网络与图卷积神经网络在硬件加速架构中的相似性,提出了
一种重用运算阵列和数据存储的硬件映射方法。卷积神经网络进行的是三维的卷积运算,输入数据为三维数据,与四维的卷积核组进行滑动乘加运算,得到三维的输出数据。而图卷积神经网络进行的是二维的矩阵运算,输入数据为二维特征矩阵,与二维的权重矩阵进行矩阵乘加运算,得到二维的输出特征矩阵。目前主流的卷积运算的硬件实现有两种:一种是模拟卷积核滑动运算的步骤,进行卷积核内的并行运算和卷积核间的并行运算的设计;另一种是将输入数据和卷积核组通过重排图像块为矩阵列(im2col)方法展成二维矩阵,使得三维卷积运算变成二维矩阵乘加运算。因为图卷积神经网络进行的也是二维矩阵乘加运算,所以通过重排图像块为矩阵列方法单元将卷积神经网络的三维卷积运算转化为二维矩阵乘加运算,可以更好地设计运算阵列单元,从而达到卷积神经网络和图卷积神经网络两种神经网络在同一个硬件架构上复用同一个运算单元进行运算加速,节约开销。
53.综上所述,本发明利用可配置寄存器对卷积神经网络-图卷积神经网络两种神经网络的运算进行配置重构。针对卷积神经网络数据使用重排图像块为矩阵列方法,将三维卷积转换为二维矩阵运算,使得不同的神经网络运算可以复用处理元件阵列单元,以及数据静态存储控制单元、权重静态存储控制单元,达到资源复用。本发明实现了两种神经网络在同一硬件架构进行加速,大大节约了硬件开销,通过一个架构可以跑多种算法,这将节省资源,大大提高通用性,极大程度上促进整个产业的发展。
附图说明
54.图1是本发明提供的重排图像块为矩阵列方法示意图;
55.图2是本发明用于计算的图卷积神经网络-卷积神经网络结构复用示意图;
56.图3是本发明的硬件架构模块框图;
57.图4是本发明的工作流程图。
具体实施方式
58.为使本发明的目的、技术方案和优点更加清楚,下面将结合附图和实施例对本发明作进一步地详细描述。
59.相比于中央处理器(cpu)、图形处理器(gpu)和专用集成电路(asic),现场可编程逻辑门阵列(fpga)在深度学习算法加速上具有高速度、低功耗、稳定而又延迟极低、适用于流式的计算密集型任务和通信密集型任务、灵活而开发周期短、成本低、便于携带等优势。因此现场可编程逻辑门阵列是是硬件架构前期开发非常不错的选择。
60.图1为本发明提供的重排图像块为矩阵列方法示意图。这里假设输入图像尺寸为4
×4×
3,卷积核尺寸为2
×2×3×
4。第一次卷积,就是输入图像在实线框内的三个通道的a
0,0
、a
0,1
、a
0,4
、a
0,5
、a
1,0
、a
1,1
、a
1,4
、a
1,5
、a
2,0
、a
2,1
、a
2,4
、a
2,5
与第一个卷积核的三个通道的k
0,0,0
~k
0,2,3
进行乘加运算。所以展开的时候,将a
0,0
、a
0,1
、a
0,4
、a
0,5
、a
1,0
、a
1,1
、a
1,4
、a
1,5
、a
2,0
、a
2,1
、a
2,4
、a
2,5
展开为一行,k
0,0,0
~k
0,2,3
展开为一列,转化为矩阵的一行乘一列的运算。这样就完成了重排图像块为矩阵列方法将卷积运算转化为矩阵运算。以此类推即可,这里可以发现下一次卷积核滑动,实线框和虚线框范围重叠,重叠部分的a
0,1
、a
0,5
、a
1,1
、a
1,5
、a
2,1
、a
2,5
就会在展开时重复使用。重排图像块为矩阵列方法展开输入数据则可能出现输入数据重复使用的情况,会增加一定程度的数据存储开销。
61.图2是本发明用于计算的图卷积神经网络-卷积神经网络结构复用示意图。卷积神经网络和图卷积神经网络均有输入层、隐藏层和池化激活层,均需要做矩阵乘加运算。卷积神经网络的输入数据为多通道的3维数据,图卷积神经网络的输入数据为2维矩阵。因此卷积神经网络的输入数据需要经过重排图像块为矩阵列方法转换为2维矩阵。输入数据可以与权重数据进行乘加运算。得到的输出数据,图卷积神经网络需要与邻接矩阵数据做加法。然后再进入池化激活得到的数据,作为隐藏层/输出层的结果数据。
62.图3是本发明的硬件架构模块框图,各单元模块具体介绍如上文发明内容所述。
63.图4是本发明的工作流程图,阐明了整个实施过程。本实施例以一种先运行卷积神经网络模式,然后重构为图卷积神经网络模式,最后再重构为卷积神经网络模式的应用场景。
64.1、状态控制单元为空闲状态。上位机首先对配置寄存器进行数据配置,模式选择寄存器写入卷积神经网络模式(0),网络参数寄存器写入网络层数、各层卷积核尺寸、步长、填充、数据尺寸。然后解析配置寄存器内的数据。读取到模式选择寄存器内的数据为0,因此是卷积神经网络模式;读取到网络参数寄存器内的数据,获取网络层数、各层卷积核尺寸、步长、填充、数据尺寸。配置寄存器内的数据是全局数据,整个系统所有单元都能够直接读取到。
65.2、状态控制单元跳转到输入数据存储状态。然后上位机将训练好、并通过重排图像块为矩阵列方法转换的权重数据存入权重静态存储控制单元内的权重静态存储器;同时上位机将图像数据存入数据静态存储控制单元内的数据静态存储器。
66.3、因为配置寄存器内模式选择寄存器内的数据为0,因此是卷积神经网络模式,状态控制单元跳转到重排图像块为矩阵列方法状态。根据网络参数寄存器内的卷积核尺寸数据,从数据静态存储控制单元读出即将和卷积核数据做乘加的部分图像数据,进行重排图像块为矩阵列方法转换。转换完成的图像数据会送入处理元件运算阵列。同时从权重静态存储控制单元读出卷积核数据并送入处理元件运算阵列。
67.4、状态控制单元跳转到神经网络运算状态。处理元件运算阵列内的处理元件将图像数据和权重数据进行乘法运算,再将属于同一列的数据全部加在一起,得到输出图像数据。
68.5、状态控制单元跳转到激活池化状态。根据网络参数寄存器内的池化尺寸数据,所有输出图像数据先进行线性整流,保留正值数据,置零负值数据;再进行最大值池化。
69.6、状态控制单元跳转到中间数据存储状态。图像数据写入数据静态存储控制单元。配置寄存器内的神经网络层数计数器加一。
70.7、循环3~6步,每次结束后神经网络层数计数器加一,直到计数器值加到网络参数寄存器中神经网络层数,停止循环。这表示卷积神经网络已经运算完毕。
71.8、状态控制单元回到空闲状态。上位机首先对配置寄存器进行数据配置,模式选择寄存器写入图卷积神经网络模式(1),网络参数寄存器写入网络层数、权重尺寸、数据尺寸。然后解析配置寄存器内的数据。读取到模式选择寄存器内的数据为1,因此是图卷积神经网络模式;读取到网络参数寄存器内的数据,获取网络层数、权重尺寸、数据尺寸。配置寄存器内的数据是全局数据,整个系统所有单元都能够直接读取到。
72.9、状态控制单元跳转到输入数据存储状态。然后上位机将训练好的权重数据存入
权重静态存储控制单元内的权重静态存储器;同时上位机将图数据存入数据静态存储控制单元内的数据静态存储器;因为配置寄存器内模式选择寄存器内的数据为1,因此同时上位机将邻接矩阵数据交给状态控制单元,状态控制单元再存入邻接矩阵运算单元;
73.10、因为配置寄存器内模式选择寄存器内的数据为1,因此是图卷积神经网络模式。状态控制单元跳转到神经网络运算状态。处理元件运算阵列内的处理元件将图数据和权重数据进行乘法运算,再将属于同一列的数据全部加在一起,得到输出图数据。
74.11、状态控制单元跳转到邻接矩阵运算状态。输出图数据进入邻接矩阵运算单元与之前存储的邻接矩阵数据进行加法运算,得到新的输出图数据。
75.12、状态控制单元跳转到激活池化状态。根据网络参数寄存器内的池化尺寸数据,所有输出图数据先进行线性整流,保留正值数据,置零负值数据;再进行最大值池化。
76.13、状态控制单元跳转到中间数据存储状态。图数据写入数据静态存储控制单元。配置寄存器内的神经网络层数计数器加一。
77.14、循环10~13步,每次结束后神经网络层数计数器加一,直到计数器值加到网络参数寄存器中神经网络层数,停止循环。这表示图卷积神经网络已经运算完毕。
78.15、状态控制单元回到空闲状态。上位机首先对配置寄存器进行数据配置,模式选择寄存器写入卷积神经网络模式(0),网络参数寄存器写入网络层数、各层卷积核尺寸、步长、填充、数据尺寸。然后解析配置寄存器内的数据。读取到模式选择寄存器内的数据为0,因此是卷积神经网络模式;读取到网络参数寄存器内的数据,获取网络层数、各层卷积核尺寸、步长、填充、数据尺寸。
79.16、状态控制单元跳转到输入数据存储状态。然后上位机将训练好、并通过重排图像块为矩阵列方法转换的权重数据存入权重静态存储控制单元内的权重静态存储器;同时上位机将图像数据存入数据静态存储控制单元内的数据静态存储器。
80.17、因为配置寄存器内模式选择寄存器内的数据为0,因此是卷积神经网络模式,状态控制单元跳转到重排图像块为矩阵列方法状态。根据网络参数寄存器内的卷积核尺寸数据,从数据静态存储控制单元读出即将和卷积核数据做乘加的部分图像数据,进行重排图像块为矩阵列方法转换。转换完成的图像数据会送入处理元件运算阵列。同时从权重静态存储控制单元读出卷积核数据并送入处理元件运算阵列。
81.18、状态控制单元跳转到神经网络运算状态。处理元件运算阵列内的处理元件将图像数据和权重数据进行乘法运算,再将属于同一列的数据全部加在一起,得到输出图像数据。
82.19、状态控制单元跳转到激活池化状态。根据网络参数寄存器内的池化尺寸数据,所有输出图像数据先进行线性整流,保留正值数据,置零负值数据;再进行最大值池化。
83.20、状态控制单元跳转到中间数据存储状态。图像数据写入数据静态存储控制单元。配置寄存器内的神经网络层数计数器加一。
84.21、循环17~20步,每次结束后神经网络层数计数器加一,直到计数器值加到网络参数寄存器中神经网络层数,停止循环。这表示卷积神经网络已经运算完毕。
85.22、状态控制单元回到空闲状态。
86.通过以上实施例可见,本发明利用可配置寄存器对卷积神经网络-图卷积神经网络两种神经网络的运算进行配置重构;针对卷积神经网络数据使用重排图像块为矩阵列方
法,将三维卷积转换为二维矩阵运算,使得不同的神经网络运算可以复用处理元件阵列单元,以及数据静态存储控制单元、权重静态存储控制单元,达到资源复用。本发明实现了两种神经网络在同一硬件架构进行加速,大大节约了硬件开销。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献