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
    +关注

    关注

    1625

    文章

    21665

    浏览量

    601738
  • dac
    dac
    +关注

    关注

    43

    文章

    2269

    浏览量

    190829
  • 开源
    +关注

    关注

    3

    文章

    3244

    浏览量

    42384

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

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

收藏 人收藏

    评论

    相关推荐

    ARM开发板与FPGA结合应用

    一、引言 ARM开发板是一种基于ARM架构的嵌入式开发平台,具有高性能、低功耗的特点。FPGA是一种可编程的数字电路,可以根据需要配置不同的逻辑功能。将ARM开发板与FPGA结合,可以
    的头像 发表于 11-05 11:42 295次阅读

    理解ECU数据流的分析方法

    随着汽车电子化程度的提高,ECU在车辆中扮演的角色越来越重要。它们不仅控制着发动机管理、变速箱、制动系统等关键功能,还涉及到车辆的舒适性和安全性。 ECU数据流分析的重要性 故障诊断 :通过
    的头像 发表于 11-05 11:07 282次阅读

    请问TLV320AIC3254EVM-K怎么读取音频数据流

    您好,我在学习TLV320AIC3254EVM-K开发板的过程中碰到一个这样的问题,TI提供的软件是否具备读取I2S的音频数据流的功能,或者是否有PC机软件可以读取音频数据流,或者其它方法?请高手帮忙解决,万分感谢!
    发表于 10-31 06:14

    FPGA在图像处理领域的优势有哪些?

    。这种并行处理能力使得FPGA在处理大规模图像数据时表现出色,能够实时完成复杂的图像处理算法。 二、高灵活性 FPGA具有很高的灵活性,可以根据需要实时调整硬件架构。这意味着当图像处理
    发表于 10-09 14:36

    浅谈国产异构双核RISC-V+FPGA处理器AG32VF407的优势和应用场景

    处理器和FPGA的配置。 高性能与低功耗 : RISC-V架构以其低功耗和高效能著称,而FPGA在并行处理和高性能计算方面也有显著优势。两者的结合
    发表于 08-31 08:32

    统一日志数据流

    统一日志数据流图 日志系统数据流图 系统进行日志收集的过程可以分为三个环节: (1)日志收集和导入ElasticSearch (2)ElasticSearch进行索引等处理 (3)可视化操作,查询等
    的头像 发表于 08-21 15:00 271次阅读
    统一日志<b class='flag-5'>数据流</b>图

    FPGA在自动驾驶领域有哪些优势?

    领域的主要优势: 高性能与并行处理能力: FPGA内部包含大量的逻辑门和可配置的连接,能够同时处理多个数据流和计算任务。这种并行处理能力使得FPGA在处理自动驾驶中复杂的图像识别、传
    发表于 07-29 17:11

    使用CYUSB3014实现USB3VISION,不能成功发送DSI数据流是怎么回事?

    /USB3-Vision-DMA-on-Leader-packet-on-FX3...。目前使用eBUS Player这个软件能够成功识别到U3V设备,并且连接成功,但是启动发送数据流时,仅能够发送leader数据,不能够正常发送有效负载
    发表于 07-05 07:58

    ESP32如何在不漏数据的情况下采集数据流

    esp32作为spi从机连接一款AD,该AD芯片上电后就会持续不断地向外发送数据,如果循环调用spi_slave_transmit(),那么两次调用之间就会漏掉一些数据。 请问从机有没有办法在不漏数据的情况下采集这个
    发表于 06-19 08:02

    珠海錾芯实现28纳米FPGA

    近日,珠海錾芯半导体有限公司在其官方微博上宣布,已成功实现28纳米片。此次片成功的CERES-1 FPGA芯片,不仅对标国际主流28纳米FPGA
    的头像 发表于 06-03 11:11 768次阅读

    TSN时间敏感网络QoS数据流传输中干扰的三种模式#TSN #时间敏感网络

    数据流TSN
    北汇信息POLELINK
    发布于 :2024年04月24日 12:29:11

    stm32F429串口采用DMA方式发送,数据流使能失败的原因?

    DMA1 时钟稳定 DMA_DeInit(DMA2_Stream7);// 复位初始化DMA数据流 while (DMA_GetCmdStatus(DMA2_Stream7) != DISABLE
    发表于 04-17 07:05

    fx3进行视频数据流的传输的时候,请问如何修改可以达到同步传输的要求?

    在fx3的固件中给出的slavefifo 是通过bulk传输的demo 我想进行视频数据流的传输的时候,请问如何修改可以达到同步传输的要求 我目前在固件里面只看到了bulk的方式,如果有同步传输的demo或者修改教程请不吝赐教 FX3中的ISO数据传输,这一部分
    发表于 02-28 07:50

    如何使用FPGA驱动并行ADC和并行DAC芯片?

    ADC和DACFPGA与外部信号的接口,从数据接口类型的角度划分,有低速的串行接口和高速的并行接口。
    的头像 发表于 02-22 16:15 3382次阅读
    如何使用<b class='flag-5'>FPGA</b>驱动并行ADC和并行<b class='flag-5'>DAC</b>芯片?

    Lambda数据架构和Kappa数据架构——构建现代数据架构

    。文章速览:什么是数据架构?基于速度的数据架构Lambda数据架构Kappa
    的头像 发表于 11-26 08:04 650次阅读
    Lambda<b class='flag-5'>数据</b><b class='flag-5'>架构</b>和Kappa<b class='flag-5'>数据</b><b class='flag-5'>架构</b>——构建现代<b class='flag-5'>数据</b><b class='flag-5'>架构</b>