0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在推断更大的网络时如何解决计算复杂性增加的问题

冬至子 来源:OpenFPGA 作者:碎碎思 2023-05-23 17:21 次阅读

低计算成本技术

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

量化

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

修剪

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

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

  • 1、粗粒:每通道
  • 2、细粒度:单位因子

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

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

FPGA 上优化的 DNN 框架

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

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

DPU

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

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

image.png

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

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

数据并行度提取

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

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

image.png

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

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

用于 DSPDDR(双倍数据速率)

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

image.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)如果使用它,则可以轻松开发一些应用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19250

    浏览量

    229604
  • FPGA
    +关注

    关注

    1628

    文章

    21724

    浏览量

    602903
  • DPU
    DPU
    +关注

    关注

    0

    文章

    356

    浏览量

    24167
  • LUT
    LUT
    +关注

    关注

    0

    文章

    49

    浏览量

    12502
收藏 人收藏

    评论

    相关推荐

    何解决汽车制造商多样价值和复杂性成本的矛盾?

    何解决多样价值和复杂性成本之间的矛盾,已成为当今汽车制造商面临的最大挑战之一。电气设计领域对此感受最深,因为“电气系统”几乎受所有设计决策和客户选择的影响。
    发表于 07-18 10:33 1460次阅读
    如<b class='flag-5'>何解</b>决汽车制造商多样<b class='flag-5'>性</b>价值和<b class='flag-5'>复杂性</b>成本的矛盾?

    掌握5G测试的复杂性:越来越受到关注

    随着蜂窝技术的发展,以大约10年的间隔,从3G到4G再到10G相隔10年,无线网络的性能提升了10倍。这伴随着测试复杂性更大增加。但是,随着我们进入2019年,最好暂停并反思该行业通过3G,4G
    发表于 03-09 11:51

    抑制嵌入式系统设计的复杂性解析

    抑制嵌入式系统设计的复杂性
    发表于 12-30 07:20

    嵌入式调试的复杂性分析

    高手谈嵌入式调试的复杂性
    发表于 02-19 07:14

    如何用可重构射频前端简化LTE设计复杂性

    如何用可重构射频前端简化LTE设计复杂性
    发表于 05-24 07:10

    免疫系统的主组织相容复杂性及其应用

    模拟免疫系统的主组织相容复杂性的基础上,结合模糊逻辑与扩展阴性选择算法提出了一个基于免疫系统主组织相容复杂性的模糊逻辑综合决策算法,并用该算法构建了一个实际
    发表于 05-28 11:01 8次下载

    基于构件回归测试的复杂性度量框架

    的软件修改需求,维护者可以实施不同的修改手段.不同的修改手段会导致不同的回归测试复杂性,这种复杂性是软件维护成本和有效的重要因素.目前的研究没有强调构件软件的回归测试复杂性问题.基于
    发表于 01-19 16:41 0次下载

    比尔盖茨与乔布斯的共同特质:整合复杂性

    整合复杂性是指:发展和保持对立的特征、价值观和思想,然后将它们整合成更大的特征、价值观和思想的能力
    的头像 发表于 07-06 14:26 3897次阅读

    导致计算机程序的复杂性和多样的算法

    在过去,很多巧妙的计算机算法设计,改变了我们的计算技术。通过操作标准计算机中提供的中间运算符,可以产生很多的高效函数。这些函数导致了计算机程序的复杂
    的头像 发表于 01-22 08:40 3535次阅读

    大数据分析学习的挑战:复杂性、不确定性及涌现

    来源:ST社区 科多分享的大数据分析学习与研究的新挑战:对于习惯结构化数据研究的统计学来说,大数据分析显然是一种崭新的挑战。 挑战来自何方?来自于大数据的复杂性、不确定性和涌现三个方面,其中复杂性
    的头像 发表于 11-17 10:19 2778次阅读

    组合最优化计算机算法和复杂性的PDF电子书免费下载

    本书讨论组合最优化的计算机算法及其复杂性,是计算机和学的基础理论之一。
    发表于 01-04 08:00 19次下载

    模型复杂性日益增加,AI优化的硬件随之出现

    人工智能(AI)模型的规模和复杂度以每年大约 10 倍的速度不断增加,AI 解决方案提供商面临着巨大的压力,他们必须缩短产品上市时间,提高性能,快速适应不断变化的形势。模型复杂性日益增加
    的头像 发表于 06-16 17:00 2352次阅读

    驾驭软件定义车辆的复杂性

    。 第一步是了解与大多数其他行业相比,汽车行业具有增加软件复杂性的功能。 “软件定义”的定义意味着大部分汽车功能现在由运行在所需处理器、内存和传感器上的软件应用程序实现。此外,大多数功能是由人机界面软件中实现的好
    的头像 发表于 07-14 17:42 941次阅读
    驾驭软件定义车辆的<b class='flag-5'>复杂性</b>

    了解 AV 复杂性

    何影响 AV 问题? 部署 AV 用例将如何演变? 为了回答这些问题,我们在三个图表中总结了一个演示文稿,旨在为新手和专家提供一些视角。 AV复杂性问题 自动驾驶汽车的基本问题是为 SAE 4 级功能开发安全、可靠的自动驾驶汽车所涉及的巨大复杂性
    的头像 发表于 07-15 15:56 1412次阅读
    了解 AV <b class='flag-5'>复杂性</b>

    黑盒化技术简化FPV计算复杂性

    当一个模块被黑盒化时,它的输出被视为FPV设计的输入,即它们可以取任何随机值。部分模块的黑盒化对FPV的性能有着非常巨大的影响,所以FPV证明的开始应该尽量地考虑任何黑盒化的可能。
    的头像 发表于 09-13 10:55 1114次阅读