一种基于FPGA的AI芯片神经网络加速方法技术

技术编号:30051146 阅读:17 留言:0更新日期:2021-09-15 10:53
本发明专利技术公开了一种基于FPGA的AI芯片神经网络加速方法,在训练YOLO网络时进行量化训练,将神经网络的浮点算法转换为定点,大大减少内存的占用,提升计算速度及带宽,达到降低功耗的效;采用HLS开发方式基于Darknet框架快速生成YOLO卷积神经网络加速器IP核,同时对卷积计算进行了变换,大大减少了计算量级;卷积计算消耗的乘法器资源大大减少,同时在保证高精度的基础上,FPGA的硬件资源利用率大大提高,大幅度降低了计算产生的功耗。大幅度降低了计算产生的功耗。大幅度降低了计算产生的功耗。

【技术实现步骤摘要】
一种基于FPGA的AI芯片神经网络加速方法


[0001]本专利技术涉及神经网络加速领域,具体涉及一种基于FPGA的AI芯片神经网络加速方法。

技术介绍

[0002]随着人工智能的发展,卷积神经网络在语音识别、图像识别、图像分割、自然语言处理等方面得到了广泛的应用。作为一种计算密集型极大的算法,其包含了大量的卷积运算、加法运算、非线性化运算和池化运算,涉及大量的信号连接,使得神经网络参数过于庞大,运算过程需要大量的算力,导致运行速度慢。因此,优化神经网络模型以及选择合适的CNN计算硬件可以大大提高神经网络的计算速度,获得算法和硬件的最佳性能。
[0003]现有的适用于CNN高密度计算的主流硬件有GPU、ASIC和FPGA。在GPU方面,虽然GPU在并行计算方面有着天然的优势,但其芯片功耗较大,过大的体积难以适用于移动平台,无法满足一些低特定场景下的CNN计算要求。且GPU的加速设计是算法适应硬件结构,硬件结构固定,在加速设计时需要调整算法来适应GPU的硬件。在ASIC方面,使用ASIC平台设计具有可定制化的优点,但ASIC加速器的硬件设计与开发周期较长,成本高昂,产品的可迁移性低,硬件生成后通常无法改变,灵活性不高。与前两者相比,现场可编程门列FPGA作为并行化的计算密集型加速硬件,具有丰富的片上硬件逻辑资源、灵活的线路连接特性以及良好的内存带宽等优点,是CNN加速实现平台的理想选择。
[0004]现有的适用于CNN加速计算主要通过GPU、ASIC和FPGA实现,其缺点如下:
[0005]基于VGG网络加速的FPGA加速器,针对VGG网络特点进行了特定优化,在Arria10 GX1150 FPGA上实现了高达1 790GOP/s的计算能力,但是VGG网络加速将耗费更多计算资源,并且使用了更多的参数,导致更多的内存占用,性能低,计算速度慢。且该加速器只能支持单种特定网络加速,无法满足通用化的需求。
[0006]基于GPU设计硬件加速器,虽然GPU在并行计算方面有着天然的优势,但是在成本和功耗方面有着很大的不足:芯片功耗较大,过大的体积难以适用于移动平台,无法满足一些特定场景下的CNN计算要求。且GPU的加速设计是算法适应硬件结构,硬件结构固定,在加速设计时需要调整算法来适应GPU的硬件,设计灵活性差。
[0007]基于FPGA的RTL开发方式可以为特定的CNN模型获得出色的吞吐量和能效,但这需要对算法和FPGA系统架构有深刻的了解。一个基于RTL现场可编程门阵列的特定CNN加速器的开发周期非常长;从研究深度学习算法、基于模拟的功能设计、优化可综合架构、编译集成的现场可编程门阵列系统到时序分析和功能验证,流程繁多且复杂,开发效率低。
[0008]基于ASIC设计芯片具有可定制化的优点,但ASIC加速器的硬件设计与开发周期较长,成本高昂,产品的可迁移性低,硬件生成后通常无法改变,灵活性不高。

技术实现思路

[0009]本专利技术的目的是提供一种基于FPGA的AI芯片神经网络加速方法,对神经网络进行
高效压缩加速,大大提高了计算效率,降低研发成本。
[0010]为了实现上述任务,本专利技术采用以下技术方案:
[0011]一种基于FPGA的AI芯片神经网络加速方法,包括:
[0012]在服务器对YOLO神经网络进行训练,训练过程中对YOLO中每一层卷积层或全连接层参数进行处理,在每一个卷积层、全连接层的前后分别引入了量化层和反量化层,量化层为数据送入卷积层或全链接层时,它将32位浮点转换为16位,反量化层为从卷积层或全链接层取出数据时,它将16位定点转换为32位浮点;
[0013]其中,在量化层中对数据进行量化的公式为:
[0014]D
q
=round(q
D
D
f

zp
D
)
[0015]上式中,D
q
为量化张量,D
f
为浮点张量,q
D
为比例因子,zp
D
为基准,round为取整函数;
[0016]将卷积层或全连接层参数x、w、b代入到上述公式中,即将上式中的所有参数D分别替换为x、w、b,得到x、w、b的量化数据,基于这些量化数据,得到卷积层与全连接层量化公式:
[0017][0018]上式中,b为偏置、x为输入量、w为权重、y
q
为输出量;
[0019]基于Darknet框架对YOLO进行量化训练完成后,借助HLS工具将YOLO生成YOLO加速器IP核;
[0020]搭建FPGA加速器整体架构,整个架构包括了输入缓冲器、输出缓冲器和权重缓冲器的缓存结构,用来对输入、输出、权重数据进行缓存;首先将YOLO训练好的权重存储到FPGA中的权重缓冲器;摄像头采集到输入数据以后,首先在预处理模块对输入数据进行预处理,处理之后将输入数据、权重数据通过总线取到YOLO加速器IP核中,进行加速运算;其中卷积计算将进行如下变换计算:
[0021]Y=A
T
[[GgG
T
]⊙
[B
T
dB]]A
[0022]其中,

表示元素级的乘法,g表示权重参数,d表示输入数据,Y表示输出数据,即卷积计算后的结果;
[0023]其中各系数矩阵大小为:
[0024][0025][0026][0027]g=[g
0 g
1 g2]T
[0028]d=[d
0 d
1 d
2 d3]T
[0029]d0,d1,d2,d3表示输入数据,g0,g1,g2表示卷积层的权重参数。
[0030]进一步地,通过深度学习框架加载神经网络,重写网络以插入Quantize和Dequantize层,并将卷积层或全连接层参数转换为16位定点格式。
[0031]进一步地,所述借助HLS工具将YOLO生成YOLO加速器IP核,包括:
[0032]建立HLS工程;按照处理流程,确定功能模块,选择时钟周期和时序裕量;使用C/C++高级编程语言和HLS组件编写程序,设计功能模块与测试模块,创建合格的HLS工程;
[0033]运行C仿真;在确保设计正确的前提下,创建HLS工程之后,使用测试模块来对功能模块进行功能仿真;
[0034]调试代码;如果C仿真过程中出现问题,使用HLS中集成的调试器,对每个功能模块或测试模块进行调试;
[0035]综合设计;经仿真调试,保证测试模块与功能模块无误后,对设计进行综合,生成系列报告文件和RTL设计文件;
[0036]优化设计;按照设计要求,在统筹兼顾性能、面积及资源利用率多方面因素的情况下,调整设计并重新综合,得到最满意的设计结果;
[0037]运行C/RTL联合仿真;采用HLS工具,RTL级别的测试代码可通过C测试代码由HLS自动转化而来,在运行C和本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的AI芯片神经网络加速方法,其特征在于,包括:在服务器对YOLO神经网络进行训练,训练过程中对YOLO中每一层卷积层或全连接层参数进行处理,在每一个卷积层、全连接层的前后分别引入了量化层和反量化层,量化层为数据送入卷积层或全链接层时,它将32位浮点转换为16位,反量化层为从卷积层或全链接层取出数据时,它将16位定点转换为32位浮点;其中,在量化层中对数据进行量化的公式为:D
q
=round(q
D
D
f

zp
D
)上式中,D
q
为量化张量,D
f
为浮点张量,q
D
为比例因子,zp
D
为基准,round为取整函数,量化的位数为n;将卷积层或全连接层参数x、w、b代入到上述公式中,即将上式中的所有参数D分别替换为x、w、b,得到x、w、b的量化数据,基于这些量化数据,得到卷积层与全连接层量化公式:上式中,b为偏置、x为输入量、w为权重、y
q
为输出量;q
y
是输出数据y的比例因子;基于Darknet框架对YOLO进行量化训练完成后,借助HLS工具将YOLO生成YOLO加速器IP核;搭建FPGA加速器整体架构,整个架构包括了输入缓冲器、输出缓冲器和权重缓冲器的缓存结构,用来对输入、输出、权重数据进行缓存;首先将YOLO训练好的权重存储到FPGA中的权重缓冲器;摄像头采集到输入数据以后,首先在预处理模块对输入数据进行预处理,处理之后将输入数据、权重数据通过总线取到YOLO加速器IP核中,进行加速运算;其中卷积计算将进行如下变换计算:Y=A
T
[[GgG
T
]

[B
T
dB]]A其中,

表示元素级的乘法,g表示权重参数,d表示输入数据,Y表示输出数据,即卷积计算后的结果;其中各系数矩阵大小为:其中各系数矩阵大小为:其中各系数矩阵大小为:g=[g...

【专利技术属性】
技术研发人员:李贺李柔仪朱璟余荣谭北海蔡健苹韩晓岚
申请(专利权)人:广东工业大学
类型:发明
国别省市:

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

1