雷锋网 AI 科技评论按:由电子自动化设计顶级会议 DAC 2019 主办的「低功耗目标检测系统设计挑战赛」于美国拉斯维加斯落下帷幕。在比赛中,西安交通大学人工智能与机器人研究所团队 XJTU-Tripler 凭借对算法和架构的特殊优化,最终斩获 FPGA 赛道的亚军;同时作为国内唯一一个进入前三的队伍,他们计划开源比赛相关工具,并且提供后续支持。针对他们在本次比赛中所取得的优异成绩,雷锋网 AI 科技评论将对他们的独家采访整理如下。
Q:XJTU-Tripler 团队师承何处?
上一届「低功耗目标检测系统设计挑战赛」分别由清华大学与中科院在比赛中取得了傲人的成绩。而这次国内唯一一个进入前三的队伍,来自西安交通大学——XJTU-Tripler 团队。
XJTU-Tripler 团队是来自西安交通大学人工智能与机器人研究所任鹏举副教授所在的认知计算架构团队。团队的主要工作是专注于人工智能芯片设计的相关工作,其研究意义在于打通算法到落地产品的整个过程。整个团队的平均年龄只有 25 岁,是相当充满激情与活力的年轻团队。
在本次比赛中,共有 10 人参赛,其中赵博然,赵文哲,夏天,陈飞,樊珑,宗鹏陈负责 AI 加速器 HiPU 的设计、PS 侧的 ARM 与 HiPU 的交互、Pynq 上系统软件开发以及 HiPU 硬件代码仿真;魏亚东,涂志俊负责算法底层搭建、神经网络算法的量化以及和硬件组的对接;赵之旭,董志伟负责目标检测算法的优化。
Q:团队与 DAC 的渊源?
尽管这支团队非常年轻化,但他们所取得的一些成绩却丝毫都不含糊。
去年,他们也参加了2018年全球自动化系统设计大赛(DAC)TX2 赛道的比赛,实现了 tensorflow 到 tensorRT 的自动编译,并将编译器代码开源至 https://github.com/zhaozhixu/LightNet (可以通过这个编译器完成个人模型在嵌入式GPU上的加速)。
尽管那是他们第一次参加这样的比赛,但最终他们在激烈的竞争中脱颖而出,取得了 TX2 组第四名的优良成绩。而经过一年的沉淀,不管是在技术上还是思想上,他们也都更成熟;今年他们凭借着对算法和架构的独特优化,最终斩获 FPGA 赛道的亚军。
Q:是什么驱使 XJTU-Tripler 团队参加这类比赛?
我们都知道,在学生阶段多参加一些比赛和社会实践,于个人而言,一定意义非凡。这不光可以将所学到的理论转化为输出,把知识落到实处;同时也会锻炼个人的许多能力,比如团队协作、应变能力、社会认知敏感度等等。而锻炼所得的这些能力,将来能帮助我们更好去适应社会的一系列需求。
除此之外,团队成员亚东还告诉我们:如何选择适合自己和团队的比赛,也是一个非常值得深思的问题。对于人工智能与机器人领域,目前大多数比赛比如 ImageNet 比赛往往需要大量的集群去进行算法的迭代,而准确率越高的网络往往需要越大的算力去支持,所以参加这样的比赛,所需考量的成本是较高的。但 DAC 比赛相对来讲,它更关注神经网络算法在嵌入式端的落地,这不仅解决了成本问题,同时还和团队一直追求的打通算法到落地这样的目标相契合。所以,XJTU-Tripler 把握住了这样的机会。
Q:在比赛中,XJTU-Tripler 团队遇到的最大困难是什么?
XJTU-Tripler 团队负责人告诉我们:在这次比赛中,一共遇到了两个比较大的难题。
第一个难题是在于算法知识层面。在比赛的过程中,算法和架构需要核对网络每一层的所有输出以确保最终的输出结果无误,因此对于各种算法的充分理解则需要花费大量的时间与精力。其中令团队印象比较深刻的是像 tf.round 函数,和平时接触较多的 round 函数是有细微区别的,如果不注意这些小细节,在调试过程中就很容易出现各种各样的问题;再比如 tensorflow 中的 padding 方案,也和平时学的有所出入;所以遇到这种问题时,一定得对每个细节严格把关,并且吃透网络中的各类函数。
一方面,这会考验每个团队成员的学习能力,需要我们在短时间内,掌握比平时多几倍的知识量;另一方面,还考验着成员之间的合作与互助,因为额外的工作量只有经过良好的分工与协助,才能高效高质的完成。
第二个难题是在工作量层面。在网络量化的过程中,层之间没有完全解耦,前后层之间的交互会大大增加实际的压缩工作;而解决这个问题,要么选择修改硬件架构,要么只能硬着头皮挨个层去核对。而无论哪种方式,对团队而言,都是一项极大的挑战。而最终团队从各方面进行仔细的考量后,选择了后者,最终花费了将近三分之一的时间(比预想时间更短),完成了这些工作。
Q:比赛中遇到哪些实力较为强劲的对手?
XJTU-Tripler 团队一致表示:此次碰到的最强劲的对手当属 UIUC,也就是这次的冠军队伍。
他们的优势集中在网络设计方面,通过采用了一个规模很小的网络达到了检测精度超高的效果,算法优化方面表现十分强大;并且可以在赛方提供的数据集上取得很高的准确率。尽管最后他们的 FPGA 代码优化还有所欠缺,比 TX2 慢了 4 倍有余,但是算法优化结果依旧非常令人震惊。
Q:XJTU-Tripler 团队的优势及创新点?
与其他竞赛组相比,团队本次的参赛方案采用了 Verilog 底层设计语言进行开发。
从原理上来讲,与其他采用 HLS 工具链的方案相比,采用这种设计语言完成的 AI 加速器算力更强,并且支持的算子灵活度更高,这将有利于加快任务执行速度;而从结果来看,执行相同的网络,这样的设计方案在 FPGA 上执行的速度确实能够比在 TX2 上快很多。
在网络参数量化过程部分,为了适应 FPGA 的定点运算,待所有参数训练完成后,则需要对所有参数进行量化操作。该团队将网络参数和 feature map 均量化为 8bit 定点。
网络参数的量化流程
经过量化后,最终目标检测网络 ShuffleDet 的卷积层数约为 74 层,权重约为 1.94MB,Bias 约为 78KB。量化前的全精度准确率为 67.1%,量化后的精度为 61.5%,量化操作带来的精度损失为 5.6%。
Q:在这部分中提到量化后产生了一定的精度损失,这会对最终的结果带来什么影响?
8bits 量化后造成了 0.056 的 IoU 损失(-8.3%),但 FPGA 上的设计实现带来了 28.87 的帧率提升(+131%)和 8309J 的能量减少(-46.56%)。量化精度掉的较多将会直接影响到最终的分数。
Q:本次比赛的主体网络结构采用了 ShuffleNet V2,它与和 shuffleDet 之间的差别是什么?
亚东:「ShuffleNet V2 是 Face++提出的网络,论文中这个网络被应用于分类任务,本次比赛我们主体的网络结构采用了 ShuffleNet V2 这个高效的网络,用于检测图像基础特征的提取。
在 ShuffleNet V2 之后,我们会增加多个模块用于进一步增加网络深度,同时在网络的最后加入一个目标检测的模块用于回归目标的类别以及标定框。」
Q:参加此次比赛对于你们个人、或者实验室来说,有何助益?
XJTU-Tripler 团队表示:「这次 DAC2019 比赛涉及了算法设计、算法优化、神经网络量化、并行程序设计、处理器设计、协处理器设计、软硬件接口设计、系统速度和功耗优化优化等多个方面,比赛极大地增强了我们团队的神经网络加速系统的设计能力,同时提高了很多宝贵的设计经验。
至于获得经验和收获,第一、战略上目标决定位置——求上得中求中得下,战术上设计反馈决定和设计对标决定设计高度;第二、好的设计是面向需求的各个方面的折中,某一方面的优势不一定对于产品本身来说是好事;第三也是最重要的:大多数艰难的问题答案都在人,尤其在于顶尖人才,而顶尖人才的竞争必将是成败之争。因此,对于每个人来讲,只有尽力让自己变得更加优秀,才会拥有更强的竞争力!」
Q:大赛后有什么技术方面的干货想要分享给大家吗?
「算法方面:推荐台大李弘毅老师的深度学习课程,建议大家可以多抽出时间来阅读最新的感兴趣的 paper,全方面提升个人知识库;
逻辑设计方面:推荐伯克利大学的公开课 CS152;
代码开放方面:推荐 git,VScode。」
Q:后续对于此次的参赛方案有什么进一步的优化打算?
「未来该团队的设计需要在以下几个方面继续加强:首先,轻量级算法设计与训练。团队将投入更多的精力去分析各个网络结构在量化后的优劣;其次,硬件设计需要继续迭代,下一版设计会提高灵活性以支持更多模型,同时精简运算逻辑以在 ZU3 上实现更高的峰值算力。
除了继续提升和优化 FPGA 的设计外,我们会进行原型芯片设计和流片。同时,我们也会将 DAC19 竞赛相关的代码进行开源。」
Q:开源后,你们将如何维护呢?
「该方案中注释较少,整体代码不够简洁和系统,另外还有很多临时添加的解决方案。我们首先可以确保该工程可以完整地工作在 Ultra96 这个开发板上,后续会根据大家的反馈,逐渐提高可读性。
我们项目主分支会进一步增加支持的网络,优化代码逻辑,并在合适的时候移植到开源版本当中。该方案已经在实际项目中落地实践了,主要应用于场景有端侧、低功耗、目标检测。」
雷锋网 AI 科技评论