Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器之心编辑部发布

UIUC联合IBM、Inspirit IoT推出最新DNN/FPGA协同设计方案,助力物联网终端设备AI应用

UIUC、IBM 和 Inspirit IoT, Inc(英睿物联网)的研究人员提出 DNN 和 FPGA 加速器的协同设计方案(DNN/FPGA co-design),通过首创的「Auto-DNN」网络搜索引擎 +「Auto-HLS」加速器生成技术,自动生成适用于终端设备的 DNN 模型及 FPGA 加速器设计。在使用相同的终端设备,由该协同设计自动生成的物体检测方案在检测精度、速度和效能方面均大幅领先现时最优的 DAC'18 System Design Contest 冠军方案。

全文地址: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 推理能力。

理论UIUCIBMFPGADNN
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

自动驾驶技术技术

从 20 世纪 80 年代首次成功演示以来(Dickmanns & Mysliwetz (1992); Dickmanns & Graefe (1988); Thorpe et al. (1988)),自动驾驶汽车领域已经取得了巨大进展。尽管有了这些进展,但在任意复杂环境中实现完全自动驾驶导航仍被认为还需要数十年的发展。原因有两个:首先,在复杂的动态环境中运行的自动驾驶系统需要人工智能归纳不可预测的情境,从而进行实时推论。第二,信息性决策需要准确的感知,目前大部分已有的计算机视觉系统有一定的错误率,这是自动驾驶导航所无法接受的。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

降采样技术

降采样是数位信号处理领域中的一种多速频数字信号处理(multi-rate digital signal processing)系统中采样率转换(sample rate conversion)技术的一种,或指代用来降低信号采样率的过程,与插值相反——插值用来增加取样频率——降采样通常用于降低数据传输速率或者数据大小。因为降采样会有混叠的情形发生,系统中具有降采样功能的部分称为降频器(decimator)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

无人机技术

无人机(Uncrewed vehicle、Unmanned vehicle、Drone)或称无人载具是一种无搭载人员的载具。通常使用遥控、导引或自动驾驶来控制。可在科学研究、军事、休闲娱乐用途上使用。

物体识别技术

计算机视觉领域的一个分支,研究物体的识别任务

物联网技术技术

物联网(英语:Internet of Things,缩写IoT)是互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。物联网一般为无线网,而由于每个人周围的设备可以达到一千至五千个,所以物联网可能要包含500兆至一千兆个物体。在物联网上,每个人都可以应用电子标签将真实的物体上网联结,在物联网上都可以查出它们的具体位置。通过物联网可以用中心计算机对机器、设备、人员进行集中管理、控制,也可以对家庭设备、汽车进行遥控,以及搜索位置、防止物品被盗等,类似自动化操控系统,同时通过收集这些小事的数据,最后可以聚集成大数据,包含重新设计道路以减少车祸、都市更新、灾害预测与犯罪防治、流行病控制等等社会的重大改变,实现物和物相联。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

推荐文章
暂无评论
暂无评论~