公开/公告号CN114841332A
专利类型发明专利
公开/公告日2022-08-02
原文格式PDF
申请/专利权人 中国航空工业集团公司沈阳飞机设计研究所;
申请/专利号CN202210415163.0
申请日2022-04-15
分类号G06N3/063(2006.01);G06N3/08(2006.01);G06F30/34(2020.01);G06F30/27(2020.01);
代理机构北京航信高科知识产权代理事务所(普通合伙) 11526;
代理人刘传准
地址 110035 辽宁省沈阳市皇姑区塔湾街40号
入库时间 2023-06-19 16:14:25
法律状态公告日
法律状态信息
法律状态
2022-08-19
实质审查的生效 IPC(主分类):G06N 3/063 专利申请号:2022104151630 申请日:20220415
实质审查的生效
技术领域
本申请属于数据处理技术领域,特别涉及一种面向FPGA平台的循环神经网络算法优化方法。
背景技术
机器学习以及深度学习被应用到不同的场景下,例如在文本分类、目标识别、语音识别以及自动驾驶等领域。甚至在某些具体应用场景中,人工智能的表现更加优于人类的判断力,例如谷歌以强化学习训练的alpha go机器人在围棋比赛中击败世界冠军。数据驱动是深度学习一个重要的特征,大量的高质量的数据才能训练出准确率更高,能力更强的模型。但是这也带来对计算机计算能力的挑战。目前,训练深度学习模型大多采用CPU、GPU的方案,因为CPU的结构特性,导致使用CPU训练深度学习模型时的效率、计算速度上不如专用图形处理器GPU。但是,基于GPU的加速训练模型时,存在功耗过高,移动性能不足的弱点,很难在要求功耗低、实时性强以及追求移动性能的应用场景下使用。
发明内容
为了解决上述问题,本申请提供了一种面向FPGA平台的循环神经网络算法优化方法及系统,将深度学习算法移植到功耗低、实时性强以及追求移动性能的应用场景下使用。
本申请提供的面向FPGA平台的循环神经网络算法优化方法,主要包括:
存储优化,对于神经网络算法中的中间变量,采用FPGA中LUT构建的分布式RAM进行存储,对于神经网络算法中对存储资源要求超过阈值的参数,采FPGA中的随机块存储器BRAM进行存储;
算法优化,对于神经网络算法的前向计算过程中的向量乘加运算,展开其外层的多循环操作,对计算流程进行流水线优化。
优选的是,在所述存储优化中,如果存在多为数组存储计算,则在FPGA上执行内存对齐操作。
优选的是,所述FPGA平台采用ZYNQ-7z100系列开发板。
优选的是,所述FPGA平台的PS部分的参数包括采用基于ARM双核CortexA9的应用处理器,以及选用ARM-v7架构。
优选的是,所述FPGA平台的PL部分的参数包括逻辑单元Logic Cells:444K;查找表LUTs:277400;触发器flip-flops:554,800;乘法器18x25MACCs:2020;Block RAM:26.5Mb。
本申请提高了循环神经网络的计算效率及资源使用率,降低了计算时延及功耗。
附图说明
图1是本申请面向FPGA平台的循环神经网络算法优化方法的一优选实施例的流程图。
具体实施方式
为使本申请实施的目的、技术方案和优点更加清楚,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施方式是本申请一部分实施方式,而不是全部的实施方式。下面通过参考附图描述的实施方式是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。下面结合附图对本申请的实施方式进行详细说明。
本申请提供了一种面向FPGA平台的循环神经网络算法优化方法,如图1所示,主要包括:
存储优化,对于神经网络算法中的中间变量,采用FPGA中LUT构建的分布式RAM进行存储,对于神经网络算法中对存储资源要求超过阈值的参数,采FPGA中的随机块存储器BRAM进行存储;
算法优化,对于神经网络算法的前向计算过程中的向量乘加运算,展开其外层的多循环操作,对计算流程进行流水线优化。
面向FPGA平台的神经网络算法优化设计中重要的一部分就是对存储的优化,FPGA包含不同类型的内存,可满足不同的设计需求;对于神经网络模型中存在的大量中间变量,占用内存不大,但是频繁地读写,因此采用LUT RAM进行存储;对于网络中存储资源要求比较大的参数,则优化进行BRAM存储,同时涉及到多维数组存储计算,采用内存的对齐操作;循环神经网络前向计算过程中包含大量的向量乘加运算,由于循环神经网络外层包括许多循环操作,那么可以对数据的循环计算进行展开,计算流程进行流水线优化。
本申请在在存储优化过程中,采用LUTRAM进行存储,可以保证高效的读写效率;采用BRAM进行存储,同时采用内存对其操作,在保证高效的读取效率的情况下,可以将大的内存分别存储到小的碎片存储区域,在合理范围内减少BRAM资源消耗;在计算优化过程中,进行流水线优化和循环展开,大大增加了FPGA计算的吞吐量,提高计算效率。
本申请中,随机块存储器为FPGA的片上存储器,是FPGA的核心数据缓存,用于缓存哈希表的热数据以及作为KVS通信环节包处理单元的缓存。片上的缓存BRAM与片外的缓存相比,具有低延迟高宽带的特性。
在一些可选实施方式中,在所述存储优化中,如果存在多为数组存储计算,则在FPGA上执行内存对齐操作。
在一些可选实施方式中,所述FPGA平台采用ZYNQ-7z100系列开发板。
在一些可选实施方式中,其特征在于,所述FPGA平台的PS部分的参数包括采用基于ARM双核CortexA9的应用处理器,以及选用ARM-v7架构,其频率高达800MHz。另外,每个CPU包括32KB的1级指令和数据缓存和512KB的2级缓存,FPGA的2个CPU共享上述存储空间。片上boot ROM、以及256KB的片内RAM。
在一些可选实施方式中,所述FPGA平台的PL部分的参数包括逻辑单元LogicCells:444K;查找表LUTs:277400;触发器flip-flops:554,800;乘法器18x25MACCs:2020;Block RAM:26.5Mb。
相较于CPU及GPU,采用本申请的FPGA及附带的优化方法,对比优化前后资源占比对比情况如表1所示,与其他处理器计算延迟的对比情况如表2所示。本申请设计面向FPGA平台的循环神经网络算法优化方法,通过存储优化以及计算并行优化、循环展开等操作,设计并行矩阵计算,使得网络模型可以以流水线方式进行计算,并且内部可以并行计算。大大提高了计算效率以及资源使用效率。对比CPU、GPU的平均计算延时与功耗,可以看出在计算时延上相较于CPU约有7倍的提升,GPU约有2倍提升,同时功耗方面只有CPU、GPU的37.8%、16%。
表1优化前后资源占比对比
表2计算时延对比
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
机译: 进行和管理公共和私人通信系统以及官方或非官方在线平台的用户的自我更新通用标识的方法,该方法需要所有现有系统和平台中每个现有系统和平台上的每个用户都具有唯一的用户身份验证面向每个用户的平台
机译: 一种在FPGA中创建设计指纹以建立加载设备与FPGA之间的安全数据通道的方法
机译: 一种在FPGA中创建设计指纹以建立加载设备与FPGA之间的安全数据通道的方法