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

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

3天内不再提示

2020DAC- SDC冠军作品分享,充分结合FPGA数据流架构的优势

FPGA之家 来源:PYNQ开源社区 作者:PYNQ开源社区 2021-05-27 17:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如果说上期SkrSkr队伍的设计像是德智体美劳全面发展的“五好学生”,那么冠军队伍的设计则更像是“不偏科的特长生”。

作品跳出前两届Top3队伍的设计思路,充分结合FPGA数据流架构的优势,逐步优化设计,最终在帧率上达到212fps,首次参赛一举夺魁。

作品全HLS设计,采用PYNQ框架,其提高帧率的优化流程在其他HLS设计中亦值得借鉴。

01

DAC-SDC赛事回顾

从2018年设立DAC-SDC开始,每年都会吸引全球百支知名研究团队参与角逐,与计算机视觉类的国际知名目标检测比赛不同,DAC-SDC对高精度、高效率的追求不仅仅停留在算法层面,其更注重考察基于软硬件协同的系统构建能力,即参赛设计不仅要提高复杂场景中小物体精准检测的能力,还需要考虑整个硬件系统在图像处理速度和功耗方面的要求。而且随着技术迭代速度的加快,该赛项的平台和要求也在不断改进。2018、2019年该赛项由Nvidia、Xilinx 和 DJI 大疆创新赞助,赛项分为GPU和FPGA两个方向。2020年只保留了FPGA方向。从选用平台的角度来对比,2018年以Zynq7020作为目标平台;2019年选用逻辑资源较多的ZU3作为目标平台,逻辑资源的增加提升了大赛的可发挥空间。2020年仍延用19年的目标平台Ultra96。关于赛事详情请参考 快讯|中国团队包揽顶会DAC-SDC竞赛冠亚军

2018年比赛情况

TX2 GPU和Zynq7020 的对比结果显示,在同等精度条件下FPGA的处理速度较低,但FPGA平台所需的功耗仅为GPU平台的不到1/4。在2018年的设计中,Top3均采用了“自顶向下”的DNN设计思路(沿用目标检测常规算法),而后再考虑算法在硬件层面的优化。其中FPGA组的冠军来自清华大学汪玉教授团队,其采用了深鉴科技的硬件加速器架构 DPU、全栈式工具链 DNNDK 和深度压缩技术的基础上,从算法、软件和硬件对整个目标检测系统进行了全栈式的协同优化。通过采用硬件友好的 SSD 网络和多线程优化技术,结合深度压缩和定点训练,在保证识别精度的前提下,满足了低功耗和实时性的要求。

2019年比赛情况

FPGA组升级到逻辑资源较多的ZU3(Ultra96)平台。与2018年相比,在精度和速度方面的表现均有一定的提升。特别值得一提的是,2019年 GPU和FPGA的冠军来自同一团队,其由UIUC Deming Chen教授课题组联合了 IBM、Inspirit IoT和新加坡 ADSC 的研究人员组成。该网络架构采用“自底向上”的DNN设计思路,以硬件资源限制为约束进行网络结构搜索得到架构的优化设计,而后将其部署在目标平台上。因此,冠军团队的工作实质上是同一网络架构(SkyNet)在不同平台的优化设计实现。

纵观前两年的工作,2018年解决的问题主要集中在限定资源条件下如何部署DNN模型;2019年冠军组的工作则体现了限定资源条件下如何搜索最优模型架构。上述工作更多考虑的是算法的本身和资源的约束,而没有充分发挥FPGA平台自身优势。

02

我们的工作

基本设计思路

我们团队主要从FPGA的架构特点入手对任务处理进行优化设计。FPGA的优势在于其灵活、高效地并行化设计架构,适于处理流式、计算密集型任务,适于不同字节宽度的调节等。针对本赛项待处理的目标检测任务特点,我们选用了卷积神经网络算法,其中包含多层结构,需要依次计算各层,且计算密集。结合待处理任务的特点,为了充分发挥FPGA的优势,我们提出了以下设计思路:

l 算法设计优化:压缩神经网络的参数量,且采用低bit量化技术,使得参数量较少且每个参数所需要的储存空间减少,从而使所有的参数能够置于FPGA片内BRAM中,减少加速过程中参数频繁调入/出带来的开销。

l 硬件设计优化:基于FPGA资源构建高效流水结构,将卷积神经网络中的所有层都置于片上,使得所有层能够以流水线的形式并行进行计算;设计高效的低bit的矩阵计算单元,在有限资源的约束下最大化并行度。

基于上述设计构想,数据输入加速器能直接输出计算结果,中间结果不必搬运到外部RAM,减少了不必要的时延和能耗。低bit计算减少了单个计算单元的资源开销,从而提高了整体并行度,进而提高了整个神经网络计算的速率。

设计方案

1、目标检测算法的设计

基于上述基本设计思想,我们自行构建了适于Ultra96平台资源限定条件的网络模型。其中主干网络选用类VGG架构,为了降低所需的参数量和计算量,我们严格控制了各层滤波器的数量,后端采用类yolo 架构设计,整个网络模型如下图2所示。与2019年的第一名相比,我们的算法虽然精度略低,但计算量和参数量都有大幅度地降低。

2、网络量化设计

量化技术是整个解决方案中重要的一个环节。我们量化了整个神经网络,包括权值量化,激活量化等。量化方法如下:

782da56a-be3f-11eb-9e57-12bb97331649.png

我们对所有的权值(W)和激活后的数据进行了归一化处理,使得所有的数据在尺度上是统一的。而后将权值和特征图数据都量化到了4bit,虽然算法精度上有所降低,平均IoU从0.701降低了到0.649,但所需参数的储存空间降为原来的八分之一。我们只需要花费0.105 MB片上空间就能将所有参数置于片上,而Ultra 96 v2板上FPGA芯片中共有0.95 MB BRAM空间。

3、 自定义数据流的AI加速器设计

根据待处理任务特点,我们基于目标平台(Ultra96)资源特点,设计和实现一套“硬件函数库”,将pytorch中的CNN算法映射到FPGA中(如下图5)。其中,我们将pytorch中的卷积计算(Conv2d_Q)拆分成两个部分——滑动窗口单元(SWU)和矩阵向量乘单元(MVU),SWU负责将卷积计算展开为矩阵向量计算,MVU则负责接收SWU输出的数据流并计算。为减少片上存储空间(缓存)使用量,我们将原CNN算法中的批正则化层(BatchNorm2d)与激活量化层(ReLu_Q)合为一个模块Bn_Relu进行处理。为了便于构建流水处理架构,原pytorch中采用的四个层(卷积层、批正则化层、激活量化层和池化层)就变为我们定义的新四层(SWU层、MVU层、Bn_Relu层和MaxPool层),且每层中的Bn_Relu和MaxPool是可选的(图中用虚线框标出),每层都有独立缓存空间存储对应层参数。同时,为了提高效率,每层内部也最大程度展开为流水形式。

我们将所有层都置于片上,当上一层有计算输出时,下一层立即开始计算,各层同时运行。通过计算量分配各层所需要的逻辑资源,使得每层的时延趋向一致,使加速器运行效率最大化。

系统框架及优化设计

基于上述设计思想,最终实现的系统框图如下。其中,我们采用DMA搬运数据,CPU负责任务调度工作。为了实现加速器IP与CPU之间的并行,我们在外部RAM中开辟了两块缓冲区轮流为加速器提供图片数据。

由于计时规则在五月份做出了调整,将读入图片的时间和功耗也计入在内,而我们在五月版提交代码的速度瓶颈主要卡在读图(Load image)时延。针对这个问题,我们对于系统待处理的任务重新进行了更为细致的优化部署。由于待处理任务分为四个部分:Load image、Resize image(简写为Resize)、Compute CNN(简写为CNN)、Calculate bounding box(简写为Calc bbox)。我们分别在PS端进行多核并行优化处理,在PS-PL端进行了负载均衡处理,从而优化了任务在PS和PL端的部署,该过程对最终成绩中FPS提升贡献很大。

我们的成绩

基于上述设计,最终的实现的加速方案性能如下:

79766830-be3f-11eb-9e57-12bb97331649.png

跟前两年的结果相比,虽然我们的精度(IoU)略有损失,但在速度方面我们有了大幅度地提升。

03

总结

上述是我们在2020DAC-SDC中所做的一些努力。这是我们团队第一次参加DAC-SDC国际大赛,从关注该赛项到今天,我们一边摸索一边前进,很感谢组委会提供了这样的平台给我们实践锻炼和摸索提升的机会。身处计算机体系结构发展的黄金时代是我们这代人的幸运,相信未来系统设计必然将向着更精准、更高效、更低耗的方向迈进,我们也希望能够通过努力与各位同仁共同见证这个时代的辉煌。同时,我们的设计也已经开源在:https://github.com/heheda365/ultra_net

04

团队介绍

2020DAC-SDC Top-3的BJUT_Runner团队来自北京工业大学信息学部张文博老师和包振山老师带领的异构计算研究小组。参加本次比赛的团队成员包括:詹康(图中右下)、郭俊南和宋秉彦(图中左下)。受2020年新型冠状病毒疫情(COVID-19)影响,在整个参赛环节,团队成员一直采用在线研讨方式进行沟通(下图为本组指导教师和所有成员在线合影)。

原文标题:打破常规,深度结合FPGA架构优势|2020DAC- SDC冠军作品开源与技术分享

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    1656

    文章

    22308

    浏览量

    630931
  • dac
    dac
    +关注

    关注

    44

    文章

    2702

    浏览量

    196482
  • 开源
    +关注

    关注

    3

    文章

    4052

    浏览量

    45630

原文标题:打破常规,深度结合FPGA架构优势|2020DAC- SDC冠军作品开源与技术分享

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    欧姆龙推出全新数据流边缘控制器DX1

    2025年11月,欧姆龙自动化(中国)有限公司发布新品【数据流控制器DX1】。DX1作为一款数据流边缘控制器,面对生产现场数据采集与活用困难、数据需求因人/设备而异、需关停设备才能引入
    的头像 发表于 11-26 18:02 1035次阅读
    欧姆龙推出全新<b class='flag-5'>数据流</b>边缘控制器DX1

    在以下嵌入式软件设计模型中,属于数据流模型的是,哪里有设计模型的介绍?

    在以下嵌入式软件设计模型中,属于数据流模型的是()。A. CCSB. CSPC. FSMD. Petri Net
    发表于 11-24 15:55

    谁家在低成本MCU中集成CPLD/FPGA,这有何优势呢?

    海振远推荐的AG32系列MCU作为高性价比异构计算平台,其独特架构和功能特性在嵌入式领域具有显著优势。以下是核心特性分析: 1、FPGA+MCU融合设计‌ 内置2K逻辑单元的FP
    发表于 11-06 11:15

    25年11月上海FPGA算法实现与应用技术高级研修分享

    的案例对离散傅里叶变换进行深入说明,同时对时域和频域的功率计算统一评估。   第三章: 通信基站数据流概论:介绍无线通信物理层的数据流设计架构与关键技术。   第四章: 基带信号的产生与检测:以OFDM为
    发表于 10-11 11:55

    用IS8000软件和WT5000功率分析仪的DS波形数据流功能分析形数据

    横河IS8000集成软件平台,将功率分析仪的波形采集与示波器的波形数据分析融为一体,提高测试效率。下面我们将为您揭晓如何通过IS8000软件和WT5000的DS波形数据流功能轻松保存并分析相关波形数据
    的头像 发表于 07-03 18:30 463次阅读
    用IS8000软件和WT5000功率分析仪的DS波形<b class='flag-5'>数据流</b>功能分析形<b class='flag-5'>数据</b>

    FX3板是否兼容2k和4k分辨率的视频数据流

    ,实现了 1920 * 1080 @ 60 fps 的设计,但现在我想检查与上述更高分辨率的兼容性。 关于这一点,我有几个问题 1.FX3 板是否兼容 2k 和 4k 分辨率的视频数据流? 2.视频数据流
    发表于 05-23 06:35

    通过 FX3 以 5200*3900 分辨率、15fps 的速度从我的 fpga 传输视频数据流,但无法设置最小/最大比特率描述符值,怎么解决?

    我正试图通过 FX3 以 5200*3900 分辨率、15fps 的速度从我的 fpga 传输视频数据流,但无法设置最小/最大比特率描述符值,因为描述符大小只有 32 位。 描述符的预期值应该是
    发表于 05-23 06:35

    使用FX3测试程序中的数据流时,遇到了每8个字节重复的场景,是什么原因导致的?

    我在使用 FX3 测试程序中的数据流时,遇到了每 8 个字节重复的场景。
    发表于 05-21 06:59

    FPGA开发任务

    1、FPGA载板设计 提供串口、2.5Gbps网口(自适应100Mb、1000Mb、2.5Gb)、5V或12V供电。 2、FPGA PL编程 1)提供链路层数据处理功能,2.5Gbps网口接收
    发表于 04-22 18:46

    如何使用FPGA驱动并行ADC和DAC芯片,使用不同编码方式的ADC与DAC时的注意事项

    ADC和DACFPGA与外部信号的接口,从数据接口类型的角度划分,有低速的串行接口和高速的并行接口。FPGA经常用来采集中高频信号,因此使用并行ADC和
    的头像 发表于 03-14 13:54 1871次阅读
    如何使用<b class='flag-5'>FPGA</b>驱动并行ADC和<b class='flag-5'>DAC</b>芯片,使用不同编码方式的ADC与<b class='flag-5'>DAC</b>时的注意事项

    FPGA配置TVP5150,把PAL制标准视频转换成BT656数据格式,能否把数据流直接给SAA7121?

    FPGA配置TVP5150,把PAL制标准视频转换成BT656数据格式,请问能否把数据流直接给SAA7121这样的编码芯片,我这么做的,但是出来的图像是红色的,是不是寄存器没配置对?还是其他什么原因?
    发表于 02-11 07:14

    使用ADS1281做调制器,两个调制器都是输出1位的数据流,那合并之后数据流是几位的呢?

    ]). 现在有以下两个问题: 1.两个调制器都是输出1位的数据流,那合并之后数据流是几位的呢? 2.如果取所有可能的情况,Y[n]的输出范围就是-24~+25,这个又要怎么理解呢?
    发表于 02-05 09:10

    适用于Oracle的SSIS数据流组件:提供快速导入及导出功能

    使用SSIS 数据流组件,通过与关键数据库和云服务的 Oracle 数据集成来改进您的 ETL 流程,这些组件提供快捷和可靠的数据导入和导出功能。   Oracle SSIS
    的头像 发表于 01-15 10:51 1471次阅读
    适用于Oracle的SSIS<b class='flag-5'>数据流</b>组件:提供快速导入及导出功能

    Devart SSIS数据流组件

    Devart SSIS 数据流组件是功能强大的工具,旨在简化 SQL Server Integration Services (SSIS) 包内的 ETL 流程,使用户无需编写复杂的代码即可
    的头像 发表于 01-05 11:08 2002次阅读
    Devart SSIS<b class='flag-5'>数据流</b>组件

    使用1.8V FPGADAC5662进行数据传输的问题求解

    目前在做一个涉及使用1.8V FPGADAC5662进行数据传输的项目,问题如下: 1. FPGA接口电平为1.8V LVCMOS电平, DAC
    发表于 12-27 08:09