从FPGA说起的深度学习(十)

news2024/11/13 9:32:14

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

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

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

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

  • FPGA 运行验证

1fe309f8bc91c5756f80e4d9e43b1fb5.png

在这最后一篇文章中,将描述在推断更大的网络时如何解决计算复杂性增加的问题的常用策略。

低计算成本技术

首先,我们将讨论如何降低计算成本本身。

量化

量化是权重或激活(每层的输入和输出)中比特的减少,通常在 fp32 中构建。众所周知,深度学习在推理过程中能够以比训练过程更低的位精度进行处理,尽管这取决于模型,但即使是 8 位定点数和位数更少的定点数也具有实用的精度。FPGA 与 1 位左右的低精度网络特别兼容,因为可以使用 LUT 将卷积运算替换为查找表。

修剪

修剪是在卷积层等使用的权重矩阵中,稀疏化(移至 0)足够接近 0 的值的过程。足够接近 0 的系数对卷积运算的最终结果影响很小,因此将其设置为 0 不会显着影响推理结果。在实践中,我们会设置剪枝的阈值等参数,给出测试模式,检查允许的误差范围。

修剪主要应用于两个粒度。

  • 1、粗粒:每通道

  • 2、细粒度:单位因子

1 的粗粒度修剪只是简单地删除了通道,因此可以在不特别注意计算硬件的情况下提高速度。另一方面,2的细粒度修剪只会增加矩阵内部0元素的数量,同时保持矩阵的大小不变。

在这里我们将限制在这个级别,但是还有其他方法可以减少计算量,例如拓扑调整可以减少模型本身的计算量。

FPGA 上优化的 DNN 框架

在 GPU 上做深度学习时,无论前端选择哪种框架,后端几乎都是跑NVIDIA 优化过的cuDNN 库(https://developer.nvidia.com/cudnn)。cuDNN 库经过优化,几乎可以榨干 GPU 的峰值性能。出于这个原因,在不实现卷积等功能的情况下在后端使用这些库是很常见的。

FPGA 也是如此,例如 Xilinx 提供了一个名为Vitis-AI的推理框架,而英特尔 FPGA 提供了OpenVINO 工具包。在本节中,根据DPU Vitis-AI 中用于边缘设备

DPU

DPU是Deep Learning Processing Unit的缩写,顾名思义就是深度学习的处理器。与我们目前创建的架构不同,其中电路来处理每一层,DPU 实现了一个巨大的算术单元块,并通过在算术单元块上连续执行每一层的处理来执行推理过程。

DPU的硬件架构如下图所示。如图所示,DPU 具有类似于普通处理器的架构,例如指令调度器。

b54d819275d6edea0f4dcb8abf61256d.png

DPU只支持8bit的量化网络,其量化工具在Vitis-AI(原DNNDK)中提供。

下面我们挑选 DPU 架构中的一些有趣的点简单说一下。

数据并行度提取

在上一篇文章中,我们提取了像素之间和输出通道之间的 2 轴数据并行性以进行加速。DPU 还提取输入通道之间的数据并行性。

DPU 有几种配置,可以根据要实现的芯片大小进行更改,如下表所示。

7203d846aa9be7ff75019562faff5cf6.png

性能最高的B4096架构共有2048个算子,像素并行度8,输入通道方向16个,输出通道方向16个。虽然有 2048 个运算单元,但总共是 4096 次运算/时钟,因为每个运算单元同时执行乘法和加法。

上次创建的架构中,运算次数最多的卷积层只有4*8=32个运算单元,两个卷积层加起来就有32+16=48个单元,性能简直快了近40倍,区别蛮大的。

用于 DSP 的 DDR(双倍数据速率)

在 DPU 中,通过仅以双倍工作频率运行 DSP 来提高性能,如下图所示。每个周期可能的操作数翻了一番,从而使 DSP 的使用量减半。

c24e0529aa0589c2f5ed2ea181e9b5c9.png

DPU方面主要针对Zynq Ultrascale+,工作频率为300~400 MHz。

所以DSP运行在600-800 MHz范围内,速度非常快。

特别是,这种时钟分频的优化在像这次这样用 HLS 开发时很难重现,需要在 RTL 中进行调整。

另外,在像 DPU 这样的架构中,每个周期持续向计算单元提供数据是一个问题,但我的印象是这也得到了很好的优化。这是作者的经验,但是在对1K图像进行3×3卷积时,运算单元能够在90%以上的周期内运行(当通道数是并行数的倍数时)。

由于很难创建优化到这种程度的HLS,因此在 FPGA 上实际执行深度学习时,在某些框架上执行推理会更有效。但是,我认为有些模式在现有框架上无法很好地处理,例如使用更优化的架构来切换每一层的量化位数。在这种情况下,可能需要构建自己的硬件来处理数据。

总结

感谢您阅读到这里。

在本系列教程中,我们专注于在 FPGA 上实际编写代码和执行处理。说到FPGA开发,大家可能会有这样的印象,写RTL很难,还得懂硬件。然而,就像我一开始创建的推理电路一样,如果我不关心性能,我可以将高级综合应用于普通的 C 代码并且它可以工作。此外,在随后的加速中,我们主要通过简单地添加 #pragma. 就能实现 400 倍的显着速度提升。我认为在创建DPU等优化库时仍然需要用RTL编写,但如果目的是在短时间内创建适度优化的库(像这次的HLS)如果使用它,则可以轻松开发一些应用。

此系列文章的代码可从

https://github.com/suisuisi/FPGAandCNN/tree/main/DnnKernelHLS

获得。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊云科技工业数据湖解决方案,助力企业打通各业务场景数据壁垒

数字化浪潮蓬勃发展,制造行业数字化转型热度迭起,根据麦肯锡面向全球400多家制造型企业的调研表明,几乎所有细分行业都在大力推进数字化转型,高达94%的受访者都称,数字化转型是他们危机期间维持正常运营的关键。 数字…

springboot第21集:SSO

单点登录单点登出支持跨域单点登录支持跨域单点登出 前台站点:业务站点A,业务站点B SSO站点:登录,退出 SSO服务:登录,登录状态,登出 数据库,登录状态缓存在Redis 登录时序图 客户端&…

【Swift】String与Sbustring区别与联系

String 还是字符串,始终如一。Substring 是string的切片。它们与base string共享内存buffer,并拥有一对范围索引。StringProtocol 抽取出字符串的特征以及如何访问其功能,放进一个协议中。String及Substring都遵循StringProtocol。 字符串在不…

从零开始学习机器学习和深度学习:基础知识、编程工具和实践经验

当涉及到机器学习和深度学习时,许多人可能感到不知所措。本文将为您提供入门机器学习和深度学习的基础知识。 什么是机器学习? 机器学习是人工智能的一个分支,其主要目的是通过训练算法来实现任务,而不是手动编程来实现任务。机器…

MySQL原理(二):逻辑架构和执行流程

前言 上一篇介绍了 MySQL 默认的 InnoDB 存储引擎是如何存储和组织数据的,这一篇将介绍 MySQL 的逻辑架构,以及分析一条 SQL 语句的具体执行过程。 逻辑架构 MySQL 的架构共分为两层:Server 层和存储引擎层。 Server 层负责建立连接、分析…

HiEV独家 | 比亚迪高阶智驾终于来了 ,新款汉首发,多车型将搭载

作者 | 德新 编辑 | 马波 比亚迪上马高阶辅助驾驶,首先从高速NOA开始。 HiEV获悉,今年第三季度,比亚迪将在新的 汉车型 上,搭载高速领航辅助驾驶功能(俗称高速NOA)。继汉之后,王朝系列唐…

【神经网络】tensorflow实验10 -- 人工神经网络(1)

1. 实验目的 ①理解并掌握误差反向传播算法; ②能够使用单层和多层神经网络,完成多分类任务; ③了解常用的激活函数。 2. 实验内容 ①设计单层和多层神经网络结构,并使用TensorFlow建立模型,完成多分类任务&#xf…

Packet Tracer - 第 2 层安全

Packet Tracer - 第 2 层安全 目标 将 Central 交换机指定为根网桥。 保护生成树参数的安全,以防止 STP 恶意操纵 攻击。 启用端口安全以防御 CAM 表泛洪攻击。 拓扑图 背景/ 场景 最近网络遭到了一些 攻击。出于此原因,网络管…

2022年平均工资揭晓!2022年IT行业平均工资超高!最赚钱的行业是......IT! 看看最赚钱的职位是什么?

2022年平均工资发布!最赚钱的行业是…IT 文章目录 2022年平均工资发布!最赚钱的行业是......IT2022年城镇非私营单位就业人员年平均工资按区域、行业门类、登记注册类型分组的城镇非私营单位就业人员年平均工资: 附注:2022年城镇私…

为AIGC敲响警钟!千亿级赛道为何成了作恶温床?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着人工智能通用大模型的问世,全球对AIGC技术的强大潜力有了更加深刻的认识。然而,这也引发了诸多关于AIGC技术可信度、隐私保护以及知识产权等问题的争议,引起了广泛关注。 5月9日&…

Windows安装两个MySQL【5.7 + 8.0】

目录 1、下载MySQL82、解压、放置3、配置3-1 添加环境变量3-2 配置文件 my.ini3-3 配置 MySQL 服务3-4 root 通过IP访问 4、连接 ✨ 已安装 MySQL5,再加装MySQL8 1、下载MySQL8 https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server…

VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件

前期安装准备 安装VScode、cmake、mingw32 (具体版本如下) VSCodeUserSetup-x64-1.78.0.exe cmake-3.26.3-windows-x86_64.msi x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z 将这几个的bin目录加入系统环境变量(右击此电脑&#xff0c…

Java基础之ConcurrentHashMap答非所问

ConcurrentHashMap的数据结构是什么? ConcurrentHashMap仅仅是HashMap的线程安全版本,针对HashMap的线程安全优化,所以HashMap有的特点ConcurrentHashMap同意具有, ConcurrentHashMap的数据结构跟HashMap是一样的。 在JDK7版本使用…

中学理化生实验室建设及配置要求

中学理化生实验室是中学阶段进行物理、化学、生物教学和研究的场所。其可以满足实验教学要求,实验室提供必要的仪器、设备、工具、材料等课程资源,方便学生熟悉并接触一些实验仪器设备,学习掌握基本实验技能。同时,实验室科学合理的方案配置&…

MySQL原理(十):主从架构

前言 上一篇介绍了 MySQL 的表分区和分库分表,这一篇将介绍主从架构相关的内容。 主从架构 常见的主从架构模式有四种: 一主多从架构:适用于读大于写的场景,采用多个从库来分担数据库系统的读压力。多主架构:适用于…

康希诺生物:新冠疫苗影响当期业绩,毛利润减少89.92%

来源;猛兽财经 作者:猛兽财经 猛兽财经获悉,由于4月28日,康希诺生物(06185)发布2023年一季度报告,收入同比下滑及利润端亏损,主要由于新冠疫苗需求量同比大幅下降,以及产品价格调整…

在 IDEA 中创建 Java Web 项目的方式(详细步骤教程)

开发环境 以下是我的开发环境 JDK 1.8Maven 3.6.3Tomcat 9.0IDEA 2019(2019 无所畏惧,即使现在已经 2023 年了哈哈哈) 最原始的 Java Web 项目 下面的内容可能会因 IDEA 版本不同,而有些选项不同,但是大同小异。 …

【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器

📬📬我是上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货,欢迎关注。 介绍 Hadoop是一种开源的分布式处理框架,用于在一组低成本硬件的集群上存储和处理大规模数据集。Ambari是一种基…

python 获取cookie的方法

在 Web应用程序中,用户访问网站时,通常会请求访问服务器上保存的一些用户信息(例如: Cookie),这些信息包含了用户的一些个人信息,比如:姓名、地址、密码等。对于用户来说&#xff0c…

目标检测YOLO实战应用案例100讲-基于YOLOv3的目标检测研究及改进(论文篇)

知识拓展 多尺度特征学习 目前深度学习用于目标检测已经习以为常。从SSD到Yolo系列,其中: 深层网络的感受野比较大,语义信息表征能力强,但是特征图的分辨率低,几何信息的表征能力弱(空间几何特征细节缺乏); 低层网络的感受野比较小,几何细节信息表征能力强,虽然分辨…