作者 | 张晓帆
编辑 | 陈大鑫
斯皮尔伯格指导的电影《头号玩家》相信大家都不陌生,电影中高度成熟发达的VR(虚拟现实)技术是每一位科技爱好者都会憧憬的场景:
谁又不想在这个光怪陆离的世界里来一场惊心动魄的冒险之旅呢~
然鹅纵使理想再美好,现实中的VR技术却还有很长一段路要走......
在众多VR技术的难题当中,如何让高质量VR应用在资源及功耗受限的移动设备上部署成为可能是一大关键。
而近日,来自UIUC(伊利诺伊大学厄班纳香槟分校)和FRL(Facebook Reality Labs)Research的研究人员发表了题为《F-CAD: A Framework to Explore Hardware Accelerators for Codec Avatar Decoding》的论文,为移动终端设备部署新一代高拟真VR人像应用提供硬件加速器设计方案。
F-CAD是首个探讨VR虚拟人像加速需求,提供加速器设计及优化方案的工作。该论文已经被今年召开的全球顶级EDA会议Design Automation Conference(国际设计自动化会议,CCF-A类会议)全文接收。
论文链接:https://arxiv.org/abs/2103.04958
图 1 利用Codec avatar高拟真用户虚拟形象进行更具临场感的交流
1
VR黑科技:Codec Avatar
FRL自2019年开始打造Codec Avatar项目,其目标是通过头显(head-mount display)集成的传感器实时捕捉用户表情变化,为用户提供高拟真虚拟头像以打造更沉浸的VR社交体验。
图1 展示了这个项目的使用场景,两位用户各自的高拟真虚拟形象在对方头显中被实时显示出来。与常见的卡通虚拟形象不同,Codec Avatar 需要捕捉用户面部表情和身体动作的多种细节,制作成VR世界中对用户外表近乎完美复制的虚拟形象,以实现突破空间界限的“真实“人与人交流。
为此,项目需要大量先进的三维图像传感、人工智能算法和系统设计技术,用于在可移动头显上实时收集并创建用户的虚拟形象。
图2:用户使用实时生成的高拟真虚拟形象在VR环境中作远程交互示意图
在图 2,作者展示了一个Codec Avatar系统框图。在发送端,用户A佩戴的头显将实时收集用户面部表情(如眼球、嘴巴、眉毛的动作等)并通过编码器输出包含所有信息的编码。
该编码经网络传输到用户B的头显并交给解码器处理。解码器进一步根据接收者(用户B)的观察角度与虚拟环境生成用户A实时虚拟形象。
图3:Codec Avatars生成流程
Codec Avatar系统可被表示为如图 3所示的一个与观察视点相关的变分自编码框架(view-dependent Variational AutoEncoder (VAE) framework)。
头显内部传感器捕获的图像输入由深度神经网络(DNN)组成的编码器,并把图像信息转化成一个L维编码(TX code)。
随后,编码与记录接收端用户观察角度及虚拟环境的view code一并被输入到解码器生成Codec Avatar。解码器是一个拥有多分支的深度神经网络(multi-panch DNN),每一个分支对应生成Codec Avatar的不同部分。在图 3例子中,解码器生成包含n个顶点的面部3D多边形网格模型(mesh)以及与观察角度相关的RGB脸部纹理(texture)。
2
Codec Avatar部署难题
图 4 Codec Avatar解码器使用的多分支深度神经网络
在最新一代的Codec Avatar系统中,解码器比编码器复杂很多,所需计算量占整个变分自编码框架的90%。在移动端头显部署时,解码器容易成为性能瓶颈,进而影响整个系统工作。
本文作者关注的解码器结构如图 4所示:这个是一个包含3条分支的深度神经网络,对应输出3D多边形网格模型,脸部纹理和模型的镜面效果。整个网络在前向运行时需要13.9 GOP(Giga-operations),包含720万个参数。
与一般深度神经网络不同,解码器采用的网络模型不但引入拥有复杂数据依赖关系的多分支结构,还涉及到用于纹理图像的高分辨率输出及中间变量(最大的特征图尺寸为16x1024x1024)。
此外,模型采用的卷积层对输出的每一个像素均提供独立偏移量(untied bias),令网络参数量更庞大。多分支网络还会带来分支间计算量、参数量不平均的问题:例如最复杂的第二分支占了63.4%的计算量和67.0%的参数量,而第一分支只占有总计算量的10.5%和总参数量的12.1%。
解码器采用的这些特殊网络结构在实际执行时会对硬件计算单元提出极高的计算和存储要求。与非VR视频类应用相比,VR要求更高的刷新率(如90甚至120 帧/秒)用于缓解用户可能出现的晕动症(Motion Sickness)。若要把Codec Avatar部署在可移动的头显,移动端计算单元将面临更严格的资源和功耗限制,想要流畅运行Codec Avatar就将变得更加困难。
为了测试Codec Avatar解码器在不同硬件加速器上部署的性能,本文作者选择了Snapdragon 865 SoC [1], DNNBuilder [2] (代表采用流水结构的加速器)和HypidDNN [3] (代表采用迭代结构的加速器)三款近年发表自产业界和学术届的加速器。
由于后两者不能直接支持解码器采用的自定义卷积,作者将自定义卷积简化成普通卷积,希望通过这个与图 4原解码器结构相似的模拟解码器(mimic decoder,计算量比原解码器少3.7%)找出现有加速器在运行Codec Avatar解码时可能遇到的问题。
测试结果如表1所示,作者使用加速器推断的吞吐率(FPS)和效率(Efficiency:实际吞吐率与理论上限吞吐率之比)作为评价指标。
表1 现有加速器在运行解码器时的性能数据:
在这次对比中, 865 SoC虽然输出最高的吞吐率(35.8 FPS)但其效率非常低。原因在于其缓存器尺寸难以满足高分辨率中间变量和网络参数的存储,引起频繁数据搬移并最终限制了加速器性能。
为测试DNNBuilder 与HypidDNN这两款基于FPGA的加速器,作者在方案1~3中分别选择三款嵌入式FPGA(计算资源由少到多)进行测试。DNNBuilder采用的层间流水设计允许加速器设计有更好的针对性,因此在方案一获得最高效率。但是在方案2和3中,DNNBuilder面对更多可用计算资源却没法进一步拓展性能。
图5:使用DNNBuilder加速Codec Avatar解码时遇到的瓶颈
通过分析,作者发现DNNBuilder的并行优化方案受限于神经网络层的输入和输出通道数量。如图 5方案2中的第7层卷积(Conv7),该层只有16个输入和输出通道,导致DNNBuilder能获得的最高并行度仅为16x16=256。
在达到最高并行度后,更多资源也没办法减少该层执行时间。该层也因此成为瓶颈,阻碍加速器性能的进一步拓展。对于采用迭代结构的HypidDNN,它的拓展性比DNNBuilder稍好,但粗粒度的资源配置方案令该设计在方案3中也没办法进一步提高性能(碍于片内存储空间的不足)。
图 6:F-CAD 加速方案设计流程
3
F-CAD提供解决方案
为了解决现有硬件加速器在处理Codec Avatar解码时遇到的问题,本文作者提出针对多分支深度神经网络的硬件加速器设计及优化框架F-CAD,旨在探索能被部署在移动终端设备上且符合VR应用苛刻要求的加速器。
只需分析、构造和优化三步(图 6),F-CAD就可以在使用现有机器学习框架设计网络后自动提供对应的加速器设计方案。
F-CAD的输入包括在机器学习框架上设计的神经网络、目标硬件资源、用户自定义的性能指标和网络分支优先级(Codec Avatar解码对不同分支性能要求有所差异,如mesh分支可使用略低于texture分支的帧率而不影响用户感受)。
F-CAD在第一步先对输入的神经网络作分析,提取诸如分支数量、网络层依赖关系、网络层种类等关键参数,并计算每层网络的计算和存储需求。
在第二步,F-CAD会对网络层作融合,对计算或存储需求低的层会被合并到相邻的主要网络层里。多分支网络中复杂的层间依赖关系(如部分网络层被多个分支复用)也会在这一步被重组整理清晰,以方便把计算任务映射到本文提出的加速器架构中。
在第三步,F-CAD会利用设计空间探索(DSE)引擎交替进行Cross-panch与In-panch优化,并最终在复杂且高维度的加速器设计空间中找出满足资源限制和性能要求的加速器设计方案。
4
硬件加速器的创新设计
为了让移动终端设备也能满足VR应用苛刻的吞吐率与实时性要求,本文着重介绍了三大硬件加速器设计及优化的创新点:它们包括了“弹性加速器架构”,“动态加速器设计空间”和“分治策略DSE引擎”。
1)弹性加速器架构
图 7 F-CAD采用的弹性加速器架构
在加速器结构范式的选择上,F-CAD基于DNNBuilder上提出的细粒度流水拓展出能支持多分支深度神经网络的流水结构(图 7a)。此设计可在保留传统流水线结构高吞吐率特性的同时,通过大幅度重叠各级流水降低输出需要等待的时间以满足VR应用高吞吐、低延时的要求。
本文提出的弹性加速器架构可沿X-Y两个维度缩放,以满足不同多分支网络的加速需求。如图 7b所示,目标网络经融合和重组后,分支数量的多少与每条分支上网络层的数量会分别引起加速器沿Y轴和X轴方向拓展基本架构单元(Basic Architecture Unit)。
在每个基本架构单元中,作者设计了可配置的运算单元,片内缓存器(存放部分特征图以及即将被使用的权重)和片外存储器(存放神经网络权重信息)。为解决图 5中因通道数量不足而造成的并行度限制,本文设计的基本架构单元额外提供一个沿特征图H方向的并行维度(见图 8)。所以,此结构能合共提供3个能并行计算的维度(对应H方向并行,输入通道并行cpf和输出通道并行kpf)。
图 8 可支持3个维度并行的基本架构单元
2)动态加速器设计空间
为了更有效地描述F-CAD设计的硬件加速器,作者提出动态加速器设计空间的概念,用于归纳了所有可以被配置的加速器参数。这些参数见表2,对于每一条分支,设计空间都包含了一组与该分支网络层数相关的参数,如计算并行度(cpf,kpf,h)和批处理数量(batch size)。
这个设计空间的维度是动态可变的,当输入的深度神经网络拥有更多分支或更多网络层的时候,设计空间的维度会增加,加速器参数配置的组合方案也会变多。这样也有利于在不同条件下配置出性能最优的方案。
此外,用户还可以在这个设计空间中自定义数据量化方案(如使用16、8比特定点数据代替浮点数据),自定义不同分支最大可用的批处理数量,以及自定义不同分支优先级。在实际部署时,用户只需依据目标硬件设定好资源预算(如计算资源、片上缓存资源和外部存储器数据访问带宽),F-CAD就能在动态加速器设计空间中探索出符合用户自定义要求且性能最优的加速器配置。
表2 动态加速器设计空间包含的参数:
3)分治策略DSE引擎
在为最新一代Codec Avatar解码设计硬件加速器时,上述加速器设计空间虽能提供丰富而细粒度的配置,但同时也引入了在复杂高维度空间中探索最优解的难题。为了更高效地完成空间搜索,本文提出了遵循分治策略的DSE引擎,并把搜索问题分成两步:即先对每一条分支作硬件资源分配(分支间优化,cross-panch optimization),再根据每条分支的资源限制找出该分支最优的配置(分支内优化,in-panch optimization)。
DSE引擎在每一次迭代中首先执行分支间优化策略:随机生成P个备选资源分配方案,并在每一个方案中规定了对解码器不同分支的资源预算。随后,引擎执行分支内优化,对加速器的并行度配置作贪婪搜索直至硬件资源消耗达到上限。在每次迭代中,P个方案中性能最好的分配方案(此迭代的全局最佳)以及每个方案经历的最优方案会被记录,用于更新全局最佳和局部最佳方案。在进入下次迭代前,全部备选方案都会更新,并随机地接近全局最佳和局部最佳方案,以此实现对高维度设计空间的随机搜索。在完成指定次数的迭代后,DSE引擎会输出全局最佳硬件配置方案。
5
Codec Avatar加速效果明显
在实验部分,作者选择了三款嵌入式FPGA(Xilinx Z7045, ZU17EG, ZU9CG)并以此考验F-CAD对不同目标硬件的适应性并比较所生成加速器的性能。
在5组实验中,F-CAD能根据用户自定义要求(如数据量化方案、分支的批处理尺寸等),在2分钟不到的时间内探索出当前硬件资源预算下性能最优的硬件加速器设计。这些加速器对最新一代Codec Avatar解码器(图 4) 的加速效果如表3所示。
其中,第4组实验获得高达122.1帧/秒的高吞吐率,能有效满足VR应用需求;而第5组实验所生成的加速器在执行分支2时获得96.7%的最高效率,充分利用了终端嵌入式设备为紧缺的计算资源。
表3 F-CAD设计的加速器在执行Codec Avatar解码时性能与资源消耗:
在表4, F-CAD还与两款高性能深度神经网络加速器作对比。三款加速器均部署在相同的硬件平台上。其中,DNNBuilder与HypidDNN的目标网络是上文提及的模拟解码器(mimic decoder)而F-CAD的目标网络为图 4所示的解码器。
从实验结果可知,F-CAD在吞吐率和效率方面均大幅超越对手,有效提升现有采用流水和迭代结构加速器在对Codec Avatar解码时的性能和效率。
表4 加速器器性能对比:
6
结论
本文提出的F-CAD可为Codec Avatar应用提供自动化硬件加速器设计方案。
通过系统化的加速器设计及优化技术,F-CAD让高质量VR应用在资源及功耗受限的移动设备上部署成为可能。
为针对目标应用使用的多分支深度神经网络,作者介绍了三大硬件加速器设计及优化上的创新,包括“弹性加速器架构”,“动态加速器设计空间”和“分治策略DSE引擎”。
实验表明,F-CAD生成的加速器在嵌入式FPGA上依然能高效加速目标任务,大幅超越现有加速器设计。
作者简介
本文的第一作者为张晓帆,现为 UIUC 电气与计算机工程系在读博士生。他的研究方向包括AI硬件加速器及系统设计,边缘计算,软硬件协同设计,FPGA等。在2018年,他参与设计的 DNN 加速器自动生成工具 DNNBuilder 获电子设计自动化顶级会 ICCAD 最佳论文。在2019年,他参与了低功耗目标检测系统设计大赛(DAC-SDC)并包揽GPU与FPGA组别双冠军。在2020年, 他曾获得谷歌博士奖学金。
有关的更多信息可以查看「张晓帆:一个决定将47万奖金全部投入科研的博士生」一文。
个人主页:https://www.xiaofanzhang.net/
参考文献:
[1] Qualcomm. Snapdragon 865 5G mobile platform.
[2] DNNBuilder: an automated tool for building high-performance DNN hardware accelerators for FPGAs.
[3] HypidDNN: a framework for high-performance hypid DNN accelerator design and implementation.