全文地址:https://arxiv.org/pdf/1904.04421.pdf
本文已被电子设计自动化顶会 IEEE/ACM Design Automation Conference (DAC』19) 接收,并将于本年 6 月份在美国拉斯维加斯宣读。文章的共同第一作者为 UIUC 博士后研究员郝聪和博士生张晓帆。
郝聪博士在 2012 年、2014 年获早稻田、上海交大硕士学位,并于 2017 年博士毕业于早稻田大学,现为 UIUC 博士后研究员,师从陈德铭教授进行机器学习算法及硬件加速的研究。
张晓帆现就读于 UIUC 电气与计算机工程系,师从陈德铭教授,主攻基于 FPGA 的深度学习加速器设计。他参与设计的 DNN 加速器自动生成工具 DNNBuilder 曾获电子设计自动化顶会 ICCAD'18 的最佳论文(链接)。
陈德铭教授是 UIUC 电气与计算机工程系终身教授,IEEE Fellow,担任 Inspirit IoT, Inc(英睿物联网)总裁兼董事会主席。他是电子设计自动化领域的知名学者,研究领域包括 FPGA、高层综合工具、机器学习等。
参与本研究的学者还包括 Yuhong Li、 Sitao Huang、 Jinjun Xiong、 Kyle Rupnow 和 Wen-mei Hwu。
嵌入式 FPGA 助力 AI 应用灵活部署
现时,大量的 AI 应用被部署在物联网设备中以满足实际场景需求。纵使云端服务器能分担大部分 AI 应用的计算压力,部分对实时性要求高的任务受限于网络延时,还是需要在终端设备处理,如自动驾驶车辆、无人机上的物体识别,场景分割任务等。在物联网终端设备中部署 DNN,设计者需要克服 DNN 精度要求高、实时性要求强、能耗要求低、终端设备可用资源少等困难。
通过在终端中使用嵌入式 FPGA 作为 DNN 加速器,设计人员可获得更低的延时和能耗(对比 CPU/GPU 解决方案),以及更高的灵活度和更短的产品上市周期(对比 ASIC 解决方案)。然而,在资源受限的嵌入式 FPGA 中部署 DNN 加速器依然困难重重。
高质量 AI 应用需要 DNN/FPGA 协同设计
通常,DNN 及 FPGA 加速器会被分成两步独立设计。
一方面,DNN 设计会优先满足精度需求,并在部署时寄望硬件加速器能提供足够高的吞吐率和实时性能。但由于 DNN 在设计初期缺乏对目标硬件特性的考量,网络结构会过分复杂并产生冗余,容易超出目标硬件可承受范围。
另一方面,DNN 加速器在架构确定后会通过比例缩放计算和存储单元以适应不同大小的 FPGA。在硬件资源极度受限时,过分缩小加速器会大幅减慢 DNN 推理计算效率,最终导致无法满足应用实时性、吞吐率等要求。
上述独立设计方法需要经历多次反复设计 DNN 及加速器,如在 DNN 设计时尝试网络剪枝、稀疏化、参数量化等以减少网络推理计算量,在加速器设计时尝试不同核心计算单元、调试并行参数等以适配硬件可用资源。这类设计需要探索巨大的设计空间,异常繁琐和耗时。
为此,作者认为业界需要一种更高效的自动 DNN/FPGA 协同设计方案:在设计 DNN 时充分考虑加速器架构、资源约束等硬件因素;并且,同时生成高度优化的 FPGA 加速器以用于物联网终端设备。
自动客制化 DNN/FPGA 加速方案
本文提出的协同设计流程(图 1)共包含 4 个主要模块:1)DNN 结构模板 Bundle-Arch;2)网络搜索引擎 Auto-DNN;3)低延时加速器基础架构 Tile-Arch;4)加速器生成器 Auto-HLS。其中,前两个模块用于 DNN 结构搜索,而后两模块对应 FPGA 加速器设计。
协同设计第一步是搭建 Bundle 并对 Bundle 建立计算延时和资源消耗模型。对于给定的 AI 任务(分类、物体检测等),系统从硬件 IP 池中选取神经网络组件并组合成多个 Bundle(如图 1 左下的 Bundle 1 包含了 Conv3x3,Conv5x5,Pooling 和 Relu 共 4 个 IP)作为 DNN 基本结构,并通过分析模型获取每一个 Bundle 在目标 FPGA 上的延时和资源消耗。这确保 DNN 在设计之初就包含了足够的硬件信息。
在第二步,该方案选择前 N 个满足性能和资源要求且精度最高的 Bundle 搭建原型网络。在对 Bundle 作粗 / 细粒度评估后,每一个 Bundle 将被置于「硬件性能 - DNN 精度」空间,并将硬件性能指标相近的 Bundle 分为一组。每组精度最高的若干个 Bundle(共 N 个)会被选中并交由下一步处理。
最后一步,Auto-HLS 产生精准硬件性能信息协助 Auto-DNN 更新原型网络。基于 Bundle 的 DNN 结构(图 2)拥有网络层数多寡、通道数增减等不同配置。Auto-DNN 使用随机坐标下降(SCD)算法探索 DNN 配置,并借助 Auto-HLS 产生的硬件性能信息(如运算延时、资源消耗等)为反馈,选择最适合目标硬件且精度最好的设计。
两大核心:「Auto-DNN」网络搜索引擎 +「Auto-HLS」加速器生成技术
本文提出了多个针对物联网终端设备设计 DNN 和 FPGA 加速器的创新点,包括通过采用在 DNN 设计初期注入硬件性能信息、适度限制 DNN/FPGA 协同设计空间等方案,加快协同设计速度的同时保留了生成网络的多样性,让协同设计同时满 足 AI 应用的精度与硬件性能要求等。作者着重介绍了两大核心技术 Auto-DNN 和 Auto-HLS。
「Auto-DNN」网络搜索引擎对输入 Bundle 作粗 / 细粒度评估,选择可行的 Bundle 构建网络并对网络结构进行更新,以达到在硬件资源限制条件下的精度与硬件性能要求。其中,粗粒度性能评估将通过短时间训练获取 Bundle 的在目标数据集的精度信息,并通过分析模型获取资源消耗和计算延时信息。评估结果如图三所示,在 Pareto 曲线上的 Bundle 将被选择进行更细粒度评估。
细粒度评估使用与数据量化相关的不同激活函数(ReLU、ReLU 4、8 等),用于揭示所选 Bundle 更深层的特性。如图 4 所示,Bundle 1 和 3 更利于为 DNN 带来高精度,而 Bundle 13 则更偏向硬件实现时的实时性。
然后,Auto-DNN 开始利用 Bundle 搭建原型 DNN 并对网络结构进行更新。这个过程中可被更新的参数包括 DNN 结构参数(网络层数、降采样次数及插入位置、通道数扩展因子)和硬件实现参数(例化的硬件 IP 数目、并行因子、量化方案)。更新算法采用随机坐标下降(详见文章算法 1)让 DNN 在每次迭代更新后进一步逼近预设的性能和精度目标。
「Auto-HLS」加速器生成技术用于自动生成基于 FPGA 的加速器代码,以大幅缩短加速器开发周期和设计工时。本文加速器采用迭代式总体架构(图 5a),Bundle 中包含的 IP(如图 5a 中的 Conv3x3,1x1 和 pooling IP)在硬件实例化后将被重复利用以节省硬件资源消耗。
为减少数据读取延时,加速器采用 FPGA 片上存储器(Block RAM)缓存 Bundle 内数据量较少的 IP 中间计算结果,采用片外存储器(DRAM)提供 Bundle 间数据交互,以及为数据量较大的 DNN 参数提供存储空间。本文的加速器设计还采用了以 tile 为基本计算单位的流水线结构,能进一步加快计算速度(图 5b)。
实例展示:DAC'18 目标检测系统挑战赛
为评估 DNN/FPGA 协同设计效果,作者选择了与 DAC'18 System Design Contest 中相同的任务(无人机视觉下低功耗物体检测系统设计),并使用同型号 FPGA 设备(Xilinx PYNQ Z-1)作对比。
在明确 AI 任务和输入目标硬件可用资源数目到系统后,作者设定了 3 个加速器性能目标(吞吐率为 10、15、20FPS)并由 DNN/FPGA 协同设计方案自动生成最合适的 DNN 及对应的加速器。结果如图 6 所示,该方案选取了 5 个 Bundle 并搭建了 68 个 DNN 以对应 3 个不同的性能目标。最终,表现最佳的 DNN1、2 和 3 及其加速器被选中,并与 DAC 挑战赛的前 3 名设计作对比。
与挑战赛 FPGA 组别的冠军模型相比,本文生成的 DNN1 在同型号 FPGA 上获取更快吞吐率(1.45 倍更高的 FPS)、更优秀单张图片处理能耗(2.5 倍更低的 Joule /Picture)的同时,取得 6.2% 更高的物体识别精度(IoU)。与 GPU 组别(使用 Nvidia TX2)的冠军设计对比,本文设计在使用更少计算存储单元、更低频率时钟的情况下,提供了相近的识别精度及 3.6 倍更低的单张图片能耗。
图 6 协同设计所有生成的 DNN(基于选中 Bundle 搭建)及其精度、硬件性能(FPS)信息
表 1 协同设计生成 DNN 及其加速器与 DAC'18 System Design Contest 获奖设计对比
结论
本文作者提出了一种 DNN/FPGA 协同设计方案。该方案使用创新性的「Auto-DNN」网络搜索引擎去生成适用于目标硬件的 DNN 结构,并能通过「Auto-HLS」自动生成加速器代码,快速部署于嵌入式 FPGA 上,为物联网终端设备提供高效 DNN 推理能力。