首页 > 技术 > 内容

如何使用 FPGA 实现深度学习

时间:2026-01-24  作者:Diven  阅读:0

这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。

在本教程中,旨在加深对深度学习和 FPGA 的理解。

用 C/C++ 编写深度学习推理代码

高级综合 (HLS) 将 C/C++ 代码转换为硬件描述语言

FPGA 运行验证

在之前的文章中,我们已经依次抽取了推理核的任务并行度和循环并行度和数据并行性。在本文中,我们将继续优化。

最终版本包括全连接层的循环数据并行化

在上篇文章中《从FPGA说起的深度学习(八)-数据并行性》,全连接层是一个瓶颈,所以我们实现了一个优化了全连接层的版本。我不会在此处粘贴代码,因此请查看代码存储库中的linear.h (文末)。全连接层是向量和矩阵的乘积,因此与卷积层不同,不能在两个通道上并行化,但基本上可以使用与卷积层相同的过程进行优化。

如第 6 篇文章所示,当任务之间的处理时间一致时,任务并行性最有效。下表显示了最终版本的并行化程度和执行周期数,是根据这个目标进行参数调整的conv1, conv2, fc1, fc2。本来,处理fc2一直很低,但现在其内核基本平衡了。

并行度(输出通道)平行度(x方向)执行周期数执行时间(us)
conv1441274142.466
conv2481293743.119
fc141272143.399
fc213831.277

 

 

各层的并行度和处理性能

整体加速结果

从第8篇到第3篇,我们将任务并行化、循环并行化、数据并行化应用于推理内核。下表了这些方法的优化结果。

名称执行时间(毫秒/图像)比以前的实施提速相对于基线的改进百分比
基线20.811.001.00
任务并行化12.651.651.65
通过本地缓冲区减少外部存储器访问1.617.8612.93
循环并行化(仅限卷积层)0.612.6434.11
数据并行化 4×4(仅卷积层)0.3361.8161.93
最终版本0.04986.75417.87

另外,虽然在之前的文章中没有涉及到,但每个优化结果的资源使用情况如下:

名称BRAM_18KDSP48EFFLUT
基线49201359215600
任务并行化61201378515955
通过本地缓冲区减少外部存储器访问84211380016967
循环并行化(仅限卷积层)84211536318653
数据并行化 4×4(仅卷积层)86432233527020
最终版本90+633276433674

看执行性能,这些调优最终使其比基线快 417.87 倍。两个特别有效的是使用本地缓冲区减少外部内存访问和最终版本(加速完全连接的层+层之间的平衡)。这两者中,前者需要大量增加RAM资源,后者需要增加运算单元资源(DSP、LUT)。

另外,虽然我们已经实现了400多倍的性能提升,但即使是资源增量方面增速最高的DSP,也只是63 / 20 = 3.15翻了一番。特别是任务并行化和循环并行化是非常有利的结果,因为几乎不增加资源就可以提高性能。

即使使用当前内核,FPGA 内部仍有大量资源,因此可以应用进一步的优化。可以像这次一样进一步提取内核内部的数据并行性,也可以复制内核本身,取帧间的并行性。特别是,如果只使用前者,在综合时很难满足时序限制,所以我认为有时不得不采用后者的方法。

本次针对的 MNIST 数据集是一个非常小的数据集,图像大小为 28×28。该模型是一个非常轻量级的网络模型。如果将这些做成更真实的数据模型,计算规模会发生如下变化。

分辨率:28×28 -> 几百到几千的宽高

网络规模:2层(卷积层转换)->几十到几百

粗略计算一个真实模型所需的计算量,大约是本次创建的网络模型量的1000到100万倍。如果这个是1000倍左右的话,即使以现在配置的运算单元数也能处理几十毫秒的量级,但如果再增加的话,60fps这样的实时图像处理就会变得困难。为此,实际上使用量化和修建等技术来降低计算成本。我们将在下一篇也是最后一篇文章中介绍这些内容。

编辑:黄飞

 

猜您喜欢


雨滴传感器主要是用来检测是否下雨及雨量的大小。主要用于汽车智能灯光(AFS)系统、汽车自动雨刷系统、智能车窗系统。该雨滴传感器基本上是一块板,上面以线形形式涂...
2024-11-28 11:23:00
贴片电容是电子元件中常见的。在电路中起着重要作用。本文将介绍常见的贴片电容,帮助大家更好的了解。贴片电容的定义贴片电容是表面贴装的电容器。通常小巧,节省空间。用...
2025-03-20 19:01:06
PLC并不难学。 PLC编程语言符合IEC 61131标准。其中比较主流的语言是模块化的编程语言,也即IEC 61131-3语言。由于所有的PLC生产厂家都必...
2018-04-17 17:09:00
盖玻片和载玻片是显微镜实验中不可少的基本工具。载玻片通常是一个长方形的玻璃片,尺寸一般为76mm x 26mm,主要用于承载样本。表面光滑,能够有效地支持各种生...
2018-06-24 00:00:00
航空技术的不断发展,航空灯光的安全性和可靠性成为了一个重要课题。在航空灯光系统中,敏电阻作为一种关键元件,能够有效地感知光线变化,从而提高灯光的自动化程度和响应...
2025-03-16 17:30:02
1、引言在ADSL系统中,由DSLAM(数字用户接入复用器)完成ATM的终结和路由。该模型分为4层,自上而下分为高层、从AAL层、ATM层和物理层。这里高层是...
2020-07-21 17:24:00
吸盘的规格尺寸因用途不同而有所差异。常见的吸盘直径从几厘米到几十厘米不等,通常有5cm、10cm、15cm、20cm等多种规格。小型吸盘适合用于轻型物品的固定,...
2018-11-19 00:00:00
电流采样电阻作为电路设计中的关键元件,其规格大小和品牌选择日益受到关注。三星(Samsung)作为全球知名的电子元器件制造商,其电流采样电阻在市场上受到推崇。本...
2012-10-25 04:59:30
液压钳是常见的工具,应用于各种工业和家庭维修中。其规格尺寸因型号和用途而异,通常根据所需的工作强度和夹持范围进行选择。市面上的液压钳一般分为几种常见尺寸,常见的...
2008-01-30 00:00:00
精密电阻作为电子元器件的重要组成部分,应用于各种电子设备和仪器中。宇阳(EYANG)作为知名的精密电阻制造商,其产品以高精度、高稳定性和多样化型号赢得了市场的认...
2024-06-08 04:57:42