D0I:10.13374/i.issnl00113.2007.0L.020 第29卷第1期 北京科技大学学报 Vol.29 No.1 2007年1月 Journal of University of Science and Technology Beijing Jan.2007 基于FPGA的神经网络硬件实现方法 李昂王沁李占才万勇 北京科技大学信息工程学院,北京100083 摘要提出了一种可以灵活适应不同的工程应用中神经网络在规模、拓扑结构、传递函数和学习算法上的变化,并能及时 根据市场需求快速建立原型的神经网络硬件可重构实现方法·对神经网络的可重构特征进行了分析,提出了三种主要的可重 构单元;研究了可重构的脉动体系结构及BP网络到该结构映射算法;探讨了具体实现的相关问题.结果表明,这种方法不仅 灵活性强,其实现的硬件也有较高的性价比,使用一片FPGA中的22个乘法器工作于100M出时,学习速度可达432M CUPS. 关键词神经网络;FPGA;可重构:脉动阵列 分类号TP389.1:TP273.5 人工神经网络在智能控制、模式识别等领域中 cel,RC)完成,RC间以规则的方式互相连接,当神 应用广泛,但是传统的基于通用处理器的软件实现 经网络变化时,只要增减C的数量或替换不同功 方法存在两个主要问题:一是并行程度较低,计算速 能的RC就可重构成新的神经网络硬件,FPGA器 度无法满足现场的实时性需求;二是很多嵌入式应 件为这种灵活的实现方式提供了硬件平台.并以实 用对系统的稳定性、芯片的功率及尺寸都有较苛刻 际应用最为广泛的BP网络为例,对这种方法进行 的限制,为此,研究人员提出了多种神经网络专用 了研究 硬件实现的方法和技术,包括FPGA(field pro grammable gate array)实现[-)、神经芯片[3]以及 1BP网络的可重构性分析 DSP加速板[)等,近年来,随着工艺的进步,数字 可重构计算系统介于通用计算机和专用计算系 VLSI成为了神经网络硬件实现的主要方法,其突 统之间.传统的“可重构”是指:在硬件层次上,某一 出优点在于器件性能稳定、数据存储方便、设计工具 计算系统能够利用可重用的硬件资源,根据不同的 丰富、开发周期较短等.尽管有诸多优点,神经网络 应用需求,灵活地改变自身的体系结构,而在本文 数字VLSI的实现仍面临着硬件灵活性较差的问 中,“可重构”一词也指在硬件描述层次上利用可重 题.·因为神经网络是与应用密切相关的,不同应用 用IP核的HDL(hardware description language)代码 对象(例如不同的控制对象)所采用的神经网络在规 的重新调整,这种“软”重构类似于面向对象的程序 模结构、传递函数甚至学习算法上都有所差别,而硬 开发方法,所以第一个问题是如何将神经网络划分 件设计一旦确定,其更改变化将比较困难,针对这 为基本的IP核, 个问题,相关研究如通用神经芯片向和通用神经计 由神经网络构造及其数学模型可知,神经网络 算机提出了一些提高硬件灵活性的办法,但其成 可以表示为一个四元组[V,E,f,s]其中,V是 本较高,不太适合工程应用 神经元结点的集合,E是神经元之间联接的集合,f 本文以轧钢自动化中使用的神经网络控制为应 是激活函数,s是学习算法,可见,神经网络的可重 用背景,提出了一种面向工程应用利于神经网络重 构性表现为结构可重构、激活函数可重构和学习算 构的实现方法,该方法基于可扩展的脉动阵列结 法可重构,以BP网络为例进行分析,说明这些可重 构、可重用的IP(intellectual properties)核及FPGA 构特性, 器件,其主要思路为:将神经网络算法划分为几种基 从计算的角度考虑,BP网络的算法可以划分成 本运算,这些基本运算由可重构单元(reconfigurable 三个步骤,即前向传播、误差反向传播以及权值更 收稿日期:2005-11-09修回日期:2006-04-10 新,其数学描述如下, 作者简介:李昂(1976一),男,博士研究生:王沁(1961一),女, 前向传播: 教授,博士生导师
基于 FPGA 的神经网络硬件实现方法 李 昂 王 沁 李占才 万 勇 北京科技大学信息工程学院北京100083 摘 要 提出了一种可以灵活适应不同的工程应用中神经网络在规模、拓扑结构、传递函数和学习算法上的变化并能及时 根据市场需求快速建立原型的神经网络硬件可重构实现方法.对神经网络的可重构特征进行了分析提出了三种主要的可重 构单元;研究了可重构的脉动体系结构及 BP 网络到该结构映射算法;探讨了具体实现的相关问题.结果表明这种方法不仅 灵活性强其实现的硬件也有较高的性价比使用一片 FPGA 中的22个乘法器工作于100MHz 时学习速度可达432M CUPS. 关键词 神经网络;FPGA;可重构;脉动阵列 分类号 TP389∙1;TP273∙5 收稿日期:20051109 修回日期:20060410 作者简介:李 昂(1976—)男博士研究生;王 沁(1961—)女 教授博士生导师 人工神经网络在智能控制、模式识别等领域中 应用广泛但是传统的基于通用处理器的软件实现 方法存在两个主要问题:一是并行程度较低计算速 度无法满足现场的实时性需求;二是很多嵌入式应 用对系统的稳定性、芯片的功率及尺寸都有较苛刻 的限制.为此研究人员提出了多种神经网络专用 硬件 实 现 的 方 法 和 技 术包 括 FPGA (field programmable gate array)实现[1—2]、神经芯片[3—8] 以及 DSP 加速板[9] 等.近年来随着工艺的进步数字 VLSI 成为了神经网络硬件实现的主要方法.其突 出优点在于器件性能稳定、数据存储方便、设计工具 丰富、开发周期较短等.尽管有诸多优点神经网络 数字 VLSI 的实现仍面临着硬件灵活性较差的问 题.因为神经网络是与应用密切相关的不同应用 对象(例如不同的控制对象)所采用的神经网络在规 模结构、传递函数甚至学习算法上都有所差别而硬 件设计一旦确定其更改变化将比较困难.针对这 个问题相关研究如通用神经芯片[5]和通用神经计 算机[10]提出了一些提高硬件灵活性的办法但其成 本较高不太适合工程应用. 本文以轧钢自动化中使用的神经网络控制为应 用背景提出了一种面向工程应用利于神经网络重 构的实现方法.该方法基于可扩展的脉动阵列结 构、可重用的 IP (intellectual properties)核及 FPGA 器件其主要思路为:将神经网络算法划分为几种基 本运算这些基本运算由可重构单元(reconfigurable cellRC)完成RC 间以规则的方式互相连接当神 经网络变化时只要增减 RC 的数量或替换不同功 能的 RC 就可重构成新的神经网络硬件FPGA 器 件为这种灵活的实现方式提供了硬件平台.并以实 际应用最为广泛的 BP 网络为例对这种方法进行 了研究. 1 BP 网络的可重构性分析 可重构计算系统介于通用计算机和专用计算系 统之间.传统的“可重构”是指:在硬件层次上某一 计算系统能够利用可重用的硬件资源根据不同的 应用需求灵活地改变自身的体系结构.而在本文 中“可重构”一词也指在硬件描述层次上利用可重 用 IP 核的 HDL(hardware description language)代码 的重新调整.这种“软”重构类似于面向对象的程序 开发方法.所以第一个问题是如何将神经网络划分 为基本的 IP 核. 由神经网络构造及其数学模型可知神经网络 可以表示为一个四元组[ VEfs].其中V 是 神经元结点的集合E 是神经元之间联接的集合f 是激活函数s 是学习算法.可见神经网络的可重 构性表现为结构可重构、激活函数可重构和学习算 法可重构.以 BP 网络为例进行分析说明这些可重 构特性. 从计算的角度考虑BP 网络的算法可以划分成 三个步骤即前向传播、误差反向传播以及权值更 新.其数学描述如下. 前向传播: 第29卷 第1期 2007年 1月 北 京 科 技 大 学 学 报 Journal of University of Science and Technology Beijing Vol.29No.1 Jan.2007 DOI:10.13374/j.issn1001-053x.2007.01.020
第1期 李昂等:基于FPGA的神经网络硬件实现方法 91 net (1) =1 2 可重构脉动阵列体系结构及其映射 o=f(net) (2) 算法 误差反向传播: 2.1体系结构设计 =f'(net;)(-o) (3) 对于神经计算,一个突出的特点是并行计算 =f'()兰1 在实际应用中,神经硬件一般是作为协处理部件与 (4) 宿主机相连,其计算所吞吐的数据通过连接总线与 权值更新: 宿主机交互,限于总线带宽及芯片引脚数量,此时 (t1)=w(t)aof (5) 并行计算面临着数据瓶颈问题,即如何才能把数据 式中,0表示第k层的第i个神经元的输出;0表 同时送往多个并行计算部件的源操作数端口,以及 示从第k一1层的第j个神经元连向第k层的第i个 如何把计算结果同时送往存储器存储,此外,由BP 神经元的权值;Nk是第L层的神经元个数:L是层 网络的算法描述可知,权值矩阵与输入向量的乘法 数;y片指输出层第i个神经元的目标输出;式(4)中 (即乘累加)是计算量最大的运算,所以如何高效地 k的取值范围是2至L一2间的整数,其他式中k 实现这个矩阵向量乘法也是整个硬件实现的关键. 的取值范围是2至L间的整数;α为学习率. 脉动阵列也称为Systolic结构,是一种有节 将0作为一个特殊的权值对待,其对应的输入 奏地计算并通过系统传输数据的处理单元网络,这 恒为1,这样可把式(1)简化为统一的乘累加计算. 种结构可以较好地解决数据瓶颈问题,并能用流水 为了统一误差反向传播的数学描述,可以在输出层 线方式实现矩阵向量乘法,另外,脉动阵列的模块 后再定义额外的一个虚拟层,该层包括两个节点,各 化及可扩展性也是两个适合可重构实现方法的特 节点对应的误差传递因子分别为⑧1=1,⑧2=一1; 性,图1显示了MAC模块的脉动阵列结构 而相应的权值为01g=yg,02g=og这样,反向误 WM WM WMWM 差传播的计算描述可统一表示为式(4)· 由式(1)~(5)可看出:前向传播中包括两个基 本运算,为乘累加计算和激活函数的映射:反向传播 PORT B PORT A! 中也包括两个相似的基本运算,为乘累加计算、激活 函数导数的运算;权值更新过程主要是乘法和加法 的运算,为提高并行度及硬件利用率,可把功能重 叠但时间上不重叠的计算安排给同一部件执行,例 图1MAC模块的Systolic结构示意 如乘累加计算.尽管乘累加部件作一些小调整后也 Fig-1 Systolic array structure of MAC 可用于权值更新,但为了使权值更新和反向传播计 算能交织进行,应该设立额外的权值调整部件,这 在第一个并行计算部件MAC与RAM之间有 样可以将计算部件简化为三种可重构单元:乘累加 一条数据总线将其连接,源操作数进入第一个并行 部件MAC、函数映射部件F及权值更新部件WU, 计算部件后,依次流水传递给其他并行计算部件,各 如表1. 计算部件顺序产生乘累加和,该值经过F部件计算 后将结果送入RAM存储.这里,权值存储需要采用 表1依据基本运算划分的可重构单元 分散局部存储方式,每个MAC模块配置一个局部 Table 1 Reconfigurable unit divided by basic computation 存储器WM,存储其需要使用的权值.这种设计原 名称 输入 输出 功能 工作阶段 因有二:一是每个MAC所对应的权值都是单独使 MAC a.w net =∑wa: 前向传播 用的,无法使用上面的流水方式传输;二是权值更新 ,e error error= ∑啊 反向传播 阶段若要并行更新,则需设立多个存储器,使其可同 net 0 o=f(net) 前向传播 时进行操作, o'=f'(net) 将三种可重构单元用这种阵列结构连接起来, error,o 6=oerror 反向传播 就形成了图2所示的可重构脉动阵列体系结构 WU w,a,6,0 w'=w十ag权值更新(与反向 该结构中,MAC阵列完成前向和反向传播中的 传播交织进行)
net k i = ∑ Nk-1 j=1 w k ijo k—1 j +θ (1) o k i= f (net k i ) (2) 误差反向传播: δ L i = f′(net L i )( y L i —o L i ) (3) δk i= f′(net k i ) ∑ Nk+1 j=1 δk+1 j w k+1 ji (4) 权值更新: w k ij( t+1)= w k ij( t)+αδk+1 i o k j (5) 式中o k i 表示第 k 层的第 i 个神经元的输出;w k ij表 示从第k—1层的第 j 个神经元连向第k 层的第 i 个 神经元的权值;Nk 是第 l 层的神经元个数;L 是层 数;y L i 指输出层第 i 个神经元的目标输出;式(4)中 k 的取值范围是2至 L —2间的整数其他式中 k 的取值范围是2至 L 间的整数;α为学习率. 将θ作为一个特殊的权值对待其对应的输入 恒为1这样可把式(1)简化为统一的乘累加计算. 为了统一误差反向传播的数学描述可以在输出层 后再定义额外的一个虚拟层该层包括两个节点各 节点对应的误差传递因子分别为 δ1=1δ2=—1; 而相应的权值为 w1q=yqw2q= oq.这样反向误 差传播的计算描述可统一表示为式(4). 由式(1)~(5)可看出:前向传播中包括两个基 本运算为乘累加计算和激活函数的映射;反向传播 中也包括两个相似的基本运算为乘累加计算、激活 函数导数的运算;权值更新过程主要是乘法和加法 的运算.为提高并行度及硬件利用率可把功能重 叠但时间上不重叠的计算安排给同一部件执行例 如乘累加计算.尽管乘累加部件作一些小调整后也 可用于权值更新但为了使权值更新和反向传播计 算能交织进行应该设立额外的权值调整部件.这 样可以将计算部件简化为三种可重构单元:乘累加 部件 MAC、函数映射部件 F 及权值更新部件 WU 如表1. 表1 依据基本运算划分的可重构单元 Table1 Reconfigurable unit divided by basic computation 名称 输入 输出 功能 工作阶段 MAC aw net net= ∑i wiai 前向传播 δw error error= ∑ j wδj j 反向传播 F net o o= f (net) 前向传播 o′ o′= f′(net) erroro δ δ=o′error 反向传播 WU wαδo w′ w′=w+αδo 权值更新(与反向 传播交织进行) 2 可重构脉动阵列体系结构及其映射 算法 2∙1 体系结构设计 对于神经计算一个突出的特点是并行计算. 在实际应用中神经硬件一般是作为协处理部件与 宿主机相连其计算所吞吐的数据通过连接总线与 宿主机交互.限于总线带宽及芯片引脚数量此时 并行计算面临着数据瓶颈问题即如何才能把数据 同时送往多个并行计算部件的源操作数端口以及 如何把计算结果同时送往存储器存储.此外由 BP 网络的算法描述可知权值矩阵与输入向量的乘法 (即乘累加)是计算量最大的运算所以如何高效地 实现这个矩阵向量乘法也是整个硬件实现的关键. 脉动阵列也称为 Systolic 结构[11]是一种有节 奏地计算并通过系统传输数据的处理单元网络.这 种结构可以较好地解决数据瓶颈问题并能用流水 线方式实现矩阵向量乘法.另外脉动阵列的模块 化及可扩展性也是两个适合可重构实现方法的特 性.图1显示了 MAC 模块的脉动阵列结构. 图1 MAC 模块的 Systolic 结构示意 Fig.1 Systolic array structure of MAC 在第一个并行计算部件 MAC 与 RAM 之间有 一条数据总线将其连接源操作数进入第一个并行 计算部件后依次流水传递给其他并行计算部件各 计算部件顺序产生乘累加和该值经过 F 部件计算 后将结果送入 RAM 存储.这里权值存储需要采用 分散局部存储方式每个 MAC 模块配置一个局部 存储器 WM存储其需要使用的权值.这种设计原 因有二:一是每个 MAC 所对应的权值都是单独使 用的无法使用上面的流水方式传输;二是权值更新 阶段若要并行更新则需设立多个存储器使其可同 时进行操作. 将三种可重构单元用这种阵列结构连接起来 就形成了图2所示的可重构脉动阵列体系结构. 该结构中MAC 阵列完成前向和反向传播中的 第1期 李 昂等: 基于 FPGA 的神经网络硬件实现方法 ·91·
,92 北京科技大学学报 第29卷 第(kmod MAc)号MAC执行 由于脉动阵列的乘累加结果是顺序输出的,所 以只需要一个可重构单元F(p=1),这是脉动阵 列结构的另一个重要特性,因为非线性传递函数的 实现不论用查找表方法还是近似计算方法都非常消 耗硬件资源,所以该结构可有效降低成本 M 言 如果nwu(WU的数量)>MAC,那么权值更新 阶段将发生RAW(写后读)错误;而如果nwu< MAc,则WM会出现访存冲突,所以WU部件的数 量需满足nwu=nMAc,其分配方式与MAC相同. 2.2.2流水线设计 权值是神经网络中数量最多的操作数据,为了 节约存储空间和操作时间,在体系结构设计中,前向 图2可重构Systolic体系结构 Fig.2 Reconfigurable systolic structure 传播、反向传播以及权值更新的计算过程都使用同 一个权值存储结构·所以关键是以同一个存储结构 乘累加,WU阵列完成权值更新,中间部分为权值存 为基础,实现前向传播、反向传播以及权值更新三个 储器WM,TM为中间结果存储器,全部运算由状态 流水计算过程 机FSM控制,由于阵列是规则连接的,所以当网络 规则1(图3所示,前向传播的流水计算,MAC 的规模变化时,只要增减阵列中RC的数量或修改 阵列工作于第k层): FSM中的复用控制方法便能重构成新的神经网络 硬件.此外,还可替换F部件和WU部件以适应激 学 3% netv 活函数及学习规则的变化, 010,…0w MAC,MAC-+·→MACw w 2.2映射算法 102 WiN 映射算法把BP算法中的数据及计算过程与该 体系结构中的各个部件及数据通路一一对应起来, 图3前向传播流水计算 其中有以下两个主要问题, Fig.3 Feed forward pipeline 2.2.1并行方式与RC分配 i)第k一1层神经元的输出o1o2…oN顺序进 BP网络的计算是逐层进行的,各层间的计算有 入MAC阵列,并向后流水传递; 数据依赖关系,而层内的计算可并行执行,层内并 i)在第i节拍,o1到达MAC:时,权值D1D2 行有两种方式:联接并行(synapse parallelism)的并 …DN开始顺序进入MACi; 行度最高,同一层的每个连接都对应一个PE,可同 )在MAC:中,o;与D相乘后与原来的累加 时进行计算;而神经元并行(neuron parallelism)则是 和相加,从第N个周期开始,MAC依次输出乘累加 每个PE与同一层的各神经元相对应,对神经元的 结果neti 各个连接依次计算,其并行度较低,但资源消耗也 规则2(图4所示,误差反向传播的流水计算, 小,从成本角度看,神经网络硬件实现并不意味着 MAC阵列工作于第k层): 不计硬件代价去实现最高的并行度,而是要以最少 的硬件资源满足特定应用的性能需求,基于这样的 6 0+MACL-MAC2→→MACw+eror2eTor,.errory 出发点,使用神经元并行作为可重构部件的基本计 m 02 算模式,神经网络的各层计算可复用相同的阵列结 02y Wy 构,此外如果阵列中可重构部件的数量小于某层神 图4反向传播流水计算 经元的数量,还可使用层内复用的方式完成该层的 Fig-4 Back propagation pipeline 计算. 设N=max(n(1),n(2),…,n(M),其中 i)初始值0进入MAC的累加和流水输入端: n(i)为第i层神经元的数量,则可重构单元MAC i)在第i节拍,第k十1层的©:到达MAC:并 的数量几MC≤N,某层第k个神经元的计算分配给 保持,权值01D2…ww开始顺序进入MAC
图2 可重构 Systolic 体系结构 Fig.2 Reconfigurable systolic structure 乘累加WU 阵列完成权值更新中间部分为权值存 储器 WMT M 为中间结果存储器全部运算由状态 机 FSM 控制.由于阵列是规则连接的所以当网络 的规模变化时只要增减阵列中 RC 的数量或修改 FSM 中的复用控制方法便能重构成新的神经网络 硬件.此外还可替换 F 部件和 WU 部件以适应激 活函数及学习规则的变化. 2∙2 映射算法 映射算法把 BP 算法中的数据及计算过程与该 体系结构中的各个部件及数据通路一一对应起来. 其中有以下两个主要问题. 2∙2∙1 并行方式与 RC 分配 BP 网络的计算是逐层进行的各层间的计算有 数据依赖关系而层内的计算可并行执行.层内并 行有两种方式:联接并行(synapse parallelism)的并 行度最高同一层的每个连接都对应一个 PE可同 时进行计算;而神经元并行(neuron parallelism)则是 每个 PE 与同一层的各神经元相对应对神经元的 各个连接依次计算其并行度较低但资源消耗也 小.从成本角度看神经网络硬件实现并不意味着 不计硬件代价去实现最高的并行度而是要以最少 的硬件资源满足特定应用的性能需求.基于这样的 出发点使用神经元并行作为可重构部件的基本计 算模式.神经网络的各层计算可复用相同的阵列结 构此外如果阵列中可重构部件的数量小于某层神 经元的数量还可使用层内复用的方式完成该层的 计算. 设 N =max ( n (1)n (2)…n ( M))其中 n( i)为第 i 层神经元的数量则可重构单元 MAC 的数量 nMAC≤ N某层第 k 个神经元的计算分配给 第( k mod nMAC )号 MAC 执行. 由于脉动阵列的乘累加结果是顺序输出的所 以只需要一个可重构单元 F ( nF=1).这是脉动阵 列结构的另一个重要特性因为非线性传递函数的 实现不论用查找表方法还是近似计算方法都非常消 耗硬件资源所以该结构可有效降低成本. 如果 nWU (WU 的数量)> nMAC那么权值更新 阶段将发生 RAW (写后读) 错误;而如果 nWU < nMAC则 WM 会出现访存冲突所以 WU 部件的数 量需满足 nWU= nMAC其分配方式与 MAC 相同. 2∙2∙2 流水线设计 权值是神经网络中数量最多的操作数据为了 节约存储空间和操作时间在体系结构设计中前向 传播、反向传播以及权值更新的计算过程都使用同 一个权值存储结构.所以关键是以同一个存储结构 为基础实现前向传播、反向传播以及权值更新三个 流水计算过程. 规则1(图3所示前向传播的流水计算MAC 阵列工作于第 k 层): 图3 前向传播流水计算 Fig.3 Feed forward pipeline i) 第 k—1层神经元的输出 o1o2… oN 顺序进 入 MAC 阵列并向后流水传递; ii) 在第 i 节拍o1 到达 MAC i 时权值 wi1wi2 … wiN开始顺序进入 MAC i; iii) 在 MAC i 中oj 与 wij相乘后与原来的累加 和相加从第 N 个周期开始MAC 依次输出乘累加 结果 net i. 规则2(图4所示误差反向传播的流水计算 MAC 阵列工作于第 k 层): 图4 反向传播流水计算 Fig.4 Back propagation pipeline i) 初始值0进入 MAC1 的累加和流水输入端; ii) 在第 i 节拍第 k+1层的 δi 到达 MAC i 并 保持权值 wi1wi2… wiN开始顺序进入 MAC i; ·92· 北 京 科 技 大 学 学 报 第29卷
第1期 李昂等:基于FPGA的神经网络硬件实现方法 93 ii)在MAC:中,G:与D相乘后与MAC-1流 图6数据通路的变化由“前向/反向”信号控制; 水传递来的累加和相加,并将结果流水传递给 地址计数器输出权值存储器及其他存储器所需的地 MAC+1,从第N个周期开始,MACN依次输出乘 址,并可自动增1,其初始化数据及信号由状态机 累加结果errori 给出, 规则3(图5所示,权值更新的流水计算,WU WU模块的结构与MAC类似,但无累加的数 阵列工作于第k层): 据通路,且模块的接口数据定义也有变化.根据sg moid函数的分布特点,F模块使用压缩查找表来实 0100wWU1 wu,...WUs 现sigmoid函数及其导数的映射, 权值存储使用分布式存储器,每个存储器WM 对应一个MAC模块,由于MAC模块是层间复用 图5权值更新流水计算 的,所以每个WM需分区存储各层与该MAC对应 Fig.5 Weight update pipeline 节点的权值.当MAC的数量小于某层的神经元数 i)第k一1层神经元的输出o1o2…0w顺序进 量时,MAC模块还需在层内复用,此时WM要存储 入WU阵列,并向后流水传递; 同一层内分配给该MAC计算的神经元的对应权 i)在第i节拍,o1到达WU,第k层的⑧:到达 值.由于中间结果与各计算部件间都存在连接,相 WU:并保持,权值01D2…DN开始顺序进入 当于多点对多点全互连,所以如果也使用分布式存 WU:: 储的话,中间需要设计一个较大的开关网络,这对 于简化系统结构,提高系统运行频率都是不利的, ii)在WU:中,ò:与o及a相乘后再与D相 因此对于中间结果,本文使用集中存储方式(图7),用 加,得到新的心,并将其写回至权值存储器 数据总线连接RAM与各计算部件,并用流水的方式 3实现及结果 提高访问的效率,需暂存的中间数据包括激活函数 及其导数的输出。及o'、误差传递因子ò.因涉及 3.1实现相关问题 使用上述体系结构对一个25×10×10的三层 同时读写的问题,所有存储器均使用双口RAM, 前向网络进行实现,该网络的激活函数为sigmoid (开始) 函数,用基本BP算法更新权值,文献[12]指出, 装载训练向量 16位定点数是不削弱神经网络能力的最小精度要 (第2层权值理新 前向第2层计算 求,因而在本例中也使用16位有符号定点数表示数 据,通过软件仿真分析各数据的变化范围,确定 反向第2层计算 16位定点数的定标为10位小数, 及第3层权更新 (前向第L层计算 由于MAC模块在前向和反向流水阶段计算有 反向第L-1层计算 所差别,所以其设计应该考虑数据通路的在线重构, 及第L层权值更新 及响解屋到薪 其示意图如图6. 前向/反向 (停止) 图7状态转移图 net 6 Fig-7 State transfer of finite state machine 累加和 由于MAC模块及WU模块内部都有地址计数 pipe o 器,所以状态机的设计得到了简化,各个状态中,状 ADDR.COUNTER 态机的主要工作是为地址计数器赋初值,同时也要 发出相应的控制信号,尤其是边界控制信号, 计数器初始 数据及信号 4.2实现结果 通过使用不同数目的RPU实现同一个网络, 图6MAC数据通路示意图 可以说明这种方法的规模可重构特性,使用Xiix Fig.6 Data path of MAC 公司的virtex2pro系列FPGA作为目标器件,可重 构单元数分别为10和5时综合结果如表2
iii) 在 MAC i 中δi 与 wij相乘后与 MAC i—1流 水传递来的累加和相加并将结果流水传递给 MAC i+1从第 N 个周期开始MAC N 依次输出乘 累加结果 errori. 规则3(图5所示权值更新的流水计算WU 阵列工作于第 k 层): 图5 权值更新流水计算 Fig.5 Weight update pipeline i) 第 k—1层神经元的输出 o1o2… oN 顺序进 入 WU 阵列并向后流水传递; ii) 在第 i 节拍o1 到达 WU i第 k 层的δi 到达 WU i 并保持权值 wi1 wi2… wiN 开始顺序进入 WU i; iii) 在 WU i 中δi 与 oj 及α相乘后再与 wij相 加得到新的 wij并将其写回至权值存储器. 3 实现及结果 3∙1 实现相关问题 使用上述体系结构对一个25×10×10的三层 前向网络进行实现该网络的激活函数为 sigmoid 函数用基本 BP 算法更新权值.文献 [12] 指出 16位定点数是不削弱神经网络能力的最小精度要 求因而在本例中也使用16位有符号定点数表示数 据通过软件仿真分析各数据的变化范围确定 16位定点数的定标为10位小数. 由于 MAC 模块在前向和反向流水阶段计算有 所差别所以其设计应该考虑数据通路的在线重构 其示意图如图6. 图6 MAC 数据通路示意图 Fig.6 Data path of MAC 图6数据通路的变化由“前向/反向”信号控制; 地址计数器输出权值存储器及其他存储器所需的地 址并可自动增1其初始化数据及信号由状态机 给出. WU 模块的结构与 MAC 类似但无累加的数 据通路且模块的接口数据定义也有变化.根据 sigmoid 函数的分布特点F 模块使用压缩查找表来实 现 sigmoid 函数及其导数的映射. 权值存储使用分布式存储器每个存储器 WM 对应一个 MAC 模块.由于 MAC 模块是层间复用 的所以每个 WM 需分区存储各层与该 MAC 对应 节点的权值.当 MAC 的数量小于某层的神经元数 量时MAC 模块还需在层内复用此时 WM 要存储 同一层内分配给该 MAC 计算的神经元的对应权 值.由于中间结果与各计算部件间都存在连接相 当于多点对多点全互连所以如果也使用分布式存 储的话中间需要设计一个较大的开关网络.这对 于简化系统结构提高系统运行频率都是不利的. 因此对于中间结果本文使用集中存储方式(图7)用 数据总线连接 RAM 与各计算部件并用流水的方式 提高访问的效率.需暂存的中间数据包括激活函数 及其导数的输出 o 及 o′、误差传递因子 δ.因涉及 同时读写的问题所有存储器均使用双口 RAM. 图7 状态转移图 Fig.7 State transfer of finite state machine 由于 MAC 模块及 WU 模块内部都有地址计数 器所以状态机的设计得到了简化.各个状态中状 态机的主要工作是为地址计数器赋初值同时也要 发出相应的控制信号尤其是边界控制信号. 4∙2 实现结果 通过使用不同数目的 RPU 实现同一个网络 可以说明这种方法的规模可重构特性.使用 Xilinx 公司的 virtex2pro 系列 FPGA 作为目标器件可重 构单元数分别为10和5时综合结果如表2. 第1期 李 昂等: 基于 FPGA 的神经网络硬件实现方法 ·93·
94 北京科技大学学报 第29卷 表2使用不同数目RPU的综合结果 △u(t)=Yc(t-1)+(1+Y)c+1o (6) Table 2 Synthesis result of different RPU quantities w(t+1)=o(t)十△o(t) (7) xcv2p6 TMAC=10 MAC=5 表3使用不同学习算法模块的综合结果 Slices 1600 1056 Table 3 Synthesis result of different WU functions Slice Flip Flops 1320 840 xcv2p20-6 WU MWU 4 input LUTs 2820 1904 Slices 1600 1736 BRAM (18 kbit) 17 20 Slice Flip Flops 1320 1432 MULT (18X18bit) 2 12 4 input LUTs 2820 3054 Mar·freq-/Mh 104.150 104.150 BRAM(18kbit) 17 MULT(18×18bim) 22 32 nMAc=10时,完成一对训练向量的迭代计算需 Max·freg-/Mh 104.150 59.191 要81个周期,运行频率为100Mz时,每秒更新权 值数可达432 M CUPS(connections updated per sec 最高运行频率的下降是因为关键路径从MAC ond),计算速度比PC(Pentium4处理器,Win 模块转移到了MWU模块,但完成一对训练向量的 dows2000操作系统)软件实现提高了60倍左右, 迭代计算仍需要81个周期 对于学习算法可重构性,可将WU替换为使用 不同实现方法的详细比较列于表4.可以看出, 动量BP算法的MWU模块,其功能描述如式(6)和 本文使用的可重构方法在取得了最好性能的同时, (7),其综合结果如表3. 也有较高的灵活性, 表4不同实现方法的比较 Table 4 Comparison of different implementations 规模 性能 可重构能力 名称 芯片型号 精度/bit (处理单元数) (CUPS) 结构规模传递函数学习算法 CANPS[6] Neuro-chip:N6400 64 (per chip) 16(point) 256M Yes No No SYNAPSE] Neuro-chip:MAl6 4 (per chip) 16((fix point) 4.25M Yes No No RAP[] DSP:TM320C30 4 (per board) 32(floating point) 13.2M Yes Yes No RSA[8] Neuro-chip:RSAP-16 16(per chip) 16(fix point) 19.9M Yes No Yes PC CPU:Pentium4 2.0G 1(per chip) 32(floating point) 7.78M Yes Yes Yes 本文方法 FPGA:XC2VP2 20 (per chip) 16 (fix point) 432M Yes Yes Yes 参考文献 4结语 [1]Ferreira P,Ribeiro P.Antunes A,et al.Artificial neural net- 本文以BP网络为例介绍了神经网络硬件可重 works processor:a hardware implementation using a FPGA/Pro 构实现的方法.应该说明的是,这种方法并非只适 ceedings of the 4th International Conference on Field-Pro 合于BP网络,由于神经网络都具有大规模并行的 grammable Logic and Applications.Antwerp,2004:1084 简单运算的特点,所以可以将此方法推广至更多类 [2]Wang Q.Yi B.Xie Y,et al.The hardware structure design of perceptron with FPGA implementation//Proceedings of IEEE In- 型的神经网络,可重构器件(如FPGA)和EDA开 ternational Conference on Systems,Man and Cybernetics.Wash- 发方式(如P核重用)的快速发展使得神经网络的 ington D.C..2003:762 实现更加简单、快捷,下一步研究工作的重点和方向 [3]Hikawa H.A new digital pulse mode neuron with adjustable 是以文中介绍的可重构体系结构为基础,构建一个 transfer function.IEEE Trans Neural Networks.2003.14(1): 神经网络硬件的可重构平台,该平台通过可重构单 236 元库的构建和映射算法两项关键技术,能够自动生 [4]Faiedh H.GafsiZ.Torki K,et al.Digital hardware implementa- 成给定神经网络的可综合的硬件描述代码,从而可 tion of a neural network used for classification//Proceedings of the 16th International Conference on Microelectronics.Tunis,2004: 将神经网络硬件设计从RTL级提高到算法描述级, 551 这也将推动神经网络硬件在相关应用领域中的实 [5]卢纯,石秉学,陈卢.一种可扩展B即在片学习神经网络芯片 用化 电子学报,2002,30(9):1270
表2 使用不同数目 RPU 的综合结果 Table2 Synthesis result of different RPU quantities xcv2p4—6 nMAC=10 nMAC=5 Slices 1600 1056 Slice Flip Flops 1320 840 4input LUTs 2820 1904 BRAM (18kbit) 17 20 MULT (18×18bit) 22 12 Max.freq./MHz 104∙150 104∙150 nMAC=10时完成一对训练向量的迭代计算需 要81个周期运行频率为100MHz 时每秒更新权 值数可达432M CUPS(connections updated per second).计 算 速 度 比 PC (Pentium4 处 理 器Windows2000操作系统)软件实现提高了60倍左右. 对于学习算法可重构性可将 WU 替换为使用 动量 BP 算法的 MWU 模块其功能描述如式(6)和 (7)其综合结果如表3. Δw k ij( t)=γw k ij( t—1)+(1+γ)αδk+1 i o k j (6) w k ij( t+1)= w k ij( t)+Δw k ij( t) (7) 表3 使用不同学习算法模块的综合结果 Table3 Synthesis result of different WU functions xcv2p20—6 WU MWU Slices 1600 1736 Slice Flip Flops 1320 1432 4input LUTs 2820 3054 BRAM(18kbit) 17 17 MULT(18×18bit) 22 32 Max.freq./MHz 104∙150 59∙191 最高运行频率的下降是因为关键路径从 MAC 模块转移到了 MWU 模块但完成一对训练向量的 迭代计算仍需要81个周期. 不同实现方法的详细比较列于表4.可以看出 本文使用的可重构方法在取得了最好性能的同时 也有较高的灵活性. 表4 不同实现方法的比较 Table4 Comparison of different implementations 名称 芯片型号 规模 (处理单元数) 精度/bit 性能 (CUPS) 可重构能力 结构规模 传递函数 学习算法 CANPS [6] Neuro-chip:N6400 64(per chip) 16(fix point) 256M Yes No No SYNAPSE [7] Neuro-chip:MA16 4(per chip) 16(fix point) 4∙25M Yes No No RAP [9] DSP:T M320C30 4(per board) 32(floating point) 13∙2M Yes Yes No RSA [8] Neuro-chip:RSAP—16 16(per chip) 16(fix point) 19∙9M Yes No Yes PC CPU:Pentium42∙0G 1(per chip) 32(floating point) 7∙78M Yes Yes Yes 本文方法 FPGA:XC2VP2 20(per chip) 16(fix point) 432M Yes Yes Yes 4 结语 本文以 BP 网络为例介绍了神经网络硬件可重 构实现的方法.应该说明的是这种方法并非只适 合于 BP 网络由于神经网络都具有大规模并行的 简单运算的特点所以可以将此方法推广至更多类 型的神经网络.可重构器件(如 FPGA)和 EDA 开 发方式(如 IP 核重用)的快速发展使得神经网络的 实现更加简单、快捷下一步研究工作的重点和方向 是以文中介绍的可重构体系结构为基础构建一个 神经网络硬件的可重构平台该平台通过可重构单 元库的构建和映射算法两项关键技术能够自动生 成给定神经网络的可综合的硬件描述代码从而可 将神经网络硬件设计从 RTL 级提高到算法描述级 这也将推动神经网络硬件在相关应用领域中的实 用化. 参 考 文 献 [1] Ferreira PRibeiro PAntunes Aet al.Artificial neural networks processor:a hardware implementation using a FPGA∥Proceedings of the 4th International Conference on Field-Programmable Logic and Applications.Antwerp2004:1084 [2] Wang QYi BXie Yet al.The hardware structure design of perceptron with FPGA implementation∥Proceedings of IEEE International Conference on SystemsMan and Cybernetics.Washington D.C.2003:762 [3] Hikawa H.A new digital pulse-mode neuron with adjustable transfer function.IEEE Trans Neural Networks200314(1): 236 [4] Faiedh HGafsi ZTorki Ket al.Digital hardware implementation of a neural network used for classification∥Proceedings of the 16th International Conference on Microelectronics.Tunis2004: 551 [5] 卢纯石秉学陈卢.一种可扩展 BP 在片学习神经网络芯片. 电子学报200230(9):1270 ·94· 北 京 科 技 大 学 学 报 第29卷
第1期 李昂等:基于FPGA的神经网络硬件实现方法 .95. [6]Hammerstrom D.A VLSI architecture for high performance. multiprocessing peripheral for connectionist applications.J Paral- low cost.on chip learning Proceedings of International Joint lel Distrib Comput.1992.14(3):248 Conference on Neural Networks.San Diego.1990:573 [10]王守觉,李兆洲,陈向东,等.通用神经网络硬件中神经元 [7]Ramacher U,Raab W.Bruls N.Multiprocessor and memory ar- 基本数学模型的讨论.电子学报,2001,29(5):577 chitecture of the neurocomputers SYNAPE-1//Proceedings of [11]Kung S Y.Hwang J N.Parallel architectures for artifi- the 3rd International Conference on Microelectronics for Neural cial neural nets//Proceedings of IEEE International Conference Networks.Edinburgh.1993:227 on Neural Networks.San Diego.1988:165 [8]Murtagh PJ.Tsoi A C.A reconfigurable bit-serial VLSI systolic [12]Holt JL.Hwang J N.Finite precision error analysis of array neuro-chip.J Parallel Distrib Comput,1997.44(1):53 neural network hardware implementations.IEEE Trans Com- [9]Morgan N.Beck J.Allman E,et al.The ring array processor:a put,1993,42(3):281 Neural networks hardware implementation based on FPGA LI Ang,WANG Qin,LI Zhancai,WAN Yong Information Engineering School.University of Science and Technology Beijing.Beijing 100083.China ABSTRACI For different engineering applications,neural networks varied in scale,topology,transfer func- tions and learning algorithms.A reconfigurable approach for neural hardware implementation was proposed, which was not only flexible to meet those changes,also with the fast prototyping ability for market require- ments.Three kinds of reconfigurable processing units were presented based on the analysis of neural network's reconfiguration.A reconfigurable systolic architecture was put forw ard and the method of mapping BP networks into this architecture was introduced.Implementation issues were discussed with an example.The results showed that a high learning speed of 432 M CUPS(Connections Updated Per Second)was achieved (working at 100 MHz using 22 multipliers)at a reasonable cost. KEY WORDS neural networks;FPGA;reconfigurable;systolic
[6] Hammerstrom D.A VLSI architecture for high performance low-coston-chip learning ∥ Proceedings of International Joint Conference on Neural Networks.San Diego1990:573 [7] Ramacher URaab WBruls N.Multiprocessor and memory architecture of the neurocomputers SYNAPE—1∥Proceedings of the3rd International Conference on Microelectronics for Neural Networks.Edinburgh1993:227 [8] Murtagh P JTsoi A C.A reconfigurable bit-serial VLSI systolic array neuro-chip.J Parallel Distrib Comput199744(1):53 [9] Morgan NBeck JAllman Eet al.The ring array processor:a multiprocessing peripheral for connectionist applications.J Parallel Distrib Comput199214(3):248 [10] 王守觉李兆洲陈向东等.通用神经网络硬件中神经元 基本数学模型的讨论.电子学报200129(5):577 [11] Kung S YHwang J N.Parallel architectures for artificial neural nets∥Proceedings of IEEE International Conference on Neural Networks.San Diego1988:165 [12] Holt J LHwang J N.Finite precision error analysis of neural network hardware implementations.IEEE Trans Comput199342(3):281 Neural networks hardware implementation based on FPGA LI A ngWA NG QinLI ZhancaiWA N Yong Information Engineering SchoolUniversity of Science and Technology BeijingBeijing100083China ABSTRACT For different engineering applicationsneural networks varied in scaletopologytransfer functions and learning algorithms.A reconfigurable approach for neural hardware implementation was proposed which was not only flexible to meet those changesalso with the fast prototyping ability for market requirements.Three kinds of reconfigurable processing units were presented based on the analysis of neural network’s reconfiguration.A reconfigurable systolic architecture was put forward and the method of mapping BP networks into this architecture was introduced.Implementation issues were discussed with an example.The results showed that a high learning speed of 432M CUPS(Connections Updated Per Second)was achieved (working at 100MHz using22multipliers) at a reasonable cost. KEY WORDS neural networks;FPGA;reconfigurable;systolic 第1期 李 昂等: 基于 FPGA 的神经网络硬件实现方法 ·95·