遥想2012年,有手机厂商拿自家手机的性能去和Xbox 360游戏主机做比较。虽说10年前的这番对比是噱头大于实际,而且以手机的形态和体积可承载的功耗与发热,无论如何也难与游戏主机相提并论。但从那个时候开始,手游的画质也成为核心竞争力。
这两年《原神》这类沙盒游戏的出现,制作规模也有了3A之名,不得不令人慨叹智能手机平台的发展之快。这自然就要求手机GPU性能持续升级。不过随着摩尔定律的放缓,单纯堆砌晶体管数量已经很难满足当代游戏的算力需求。所以计算机科学这么多年来都在寻找新的方法,提升GPU性能及游戏体验。
AI技术成为一条重要的出路,比较典型的是基于深度神经网络,采用超分(super-resolution)方案实时地提升游戏的画质和游戏体验。简单来说,超分也就是把原本低分辨率的画面升格(upscale)为高分辨率的画面——具体到游戏,GPU只需要渲染低分辨率的画面,通过超分算法就能升格为高分辨率画面,也就降低了GPU的渲染负载,而且帧率也能得到保证。
PC平台,英伟达、AMD、Intel都在做类似的技术;而移动平台,基于AI做超分技术比较早的是联发科。实际上,我们认为手机这类小体积、续航敏感型设备是更迫切需要超分技术的,因为其体积和续航需求决定了,手机GPU算力和可持续性能更受限,要保证更好的体验,AI显然是不错的思路。联发科也表示,PC上超分技术的目标是实现更高的游戏帧率,而移动端超分技术的主要任务是保证提供接近原生画质的前提下降低芯片功耗。
本文就来谈谈AI超分技术在移动端的应用与价值。
AI超分技术究竟是怎么做的
一般我们说游戏的分辨率和帧率是一对互斥的概念,玩家梦寐以求的是想以4K甚至8K分辨率来玩游戏。但桌面端的旗舰游戏显卡也未必能在此等分辨率下得到60fps的帧率,算力和功耗要求太高。相对的,如果要更高的帧率,很多时候需要以降低分辨率来换取。分辨率换个词也就是指清晰度,而帧率则是指画面的流畅度。而越来越多的游戏对这两者同时提出了更高的要求。
超分技术理论上能够缓解这对矛盾体。如果把超分的概念广义化,将其理解为单纯的图像升格(image scaling),那么升格算法自古以来是多种多样的,比如说最简单的最近邻插值(nearest-neighbor interpolation)、双线性插值、傅立叶变换方法等,当然还有现在游戏超分常见的深度卷积神经网络,也就是AI。
桌面平台颇具代表性基于AI较早商用的技术,显然是英伟达DLSS(Deep Learning Super Sampling),DLSS发展至今已经有两次大版本迭代。另一类不基于AI的游戏超分算法,具代表性的是AMD的FSR。
微软去年也面向市场推出了低层级API DirectML——不过似乎应用范围有限(540p→1080p)。加上Intel最近也刚刚以XeSS技术,加入到AI游戏超分技术战局中来,这些都表明超分技术于PC游戏世界正走向全面普及。而且就实际效果来看,基于AI的超分算法必然成为主流。
去年的联发科天玑旗舰技术媒体沟通会上,联发科也着重谈到了自家的超分技术Game AI-SR。当时联发科就提到:“我们也认同游戏市场有这样的需求。我们未来会布局游戏超分在移动平台端的完整方案。目标上和英伟达一致,满足游戏开发者在性能和画质上的要求,芯片平台的性能、功耗也达到整体平衡。”鉴于移动端相比PC端还多出了低功耗的需求,超分技术在手机上的普及也是早晚问题。
现有基于AI的超分技术,公开细节比较多就属是英伟达DLSS了。虽然各家技术存在差异,但大方向应该是比较类似的。所以这里以DLSS技术为例,来简单谈谈AI超分是怎么做的。
DLSS 1.0版把分辨率升格操作分成了两个阶段。第一阶段有个图像加强网络,基于画面的当前帧和运动向量(motion vector)执行边缘加强和空间反锯齿;第二阶段就是分辨率升格,把低分辨率升格为高分辨率——基于每个低分辨率的原始帧进行升格。第二阶段用到的神经网络,需要针对每个不同的游戏做训练(training):大致思路是像素超采样(用超高分辨率画面,与低分辨率画面映射进行训练)。
初版DLSS获得的市场反响不佳,主要是因为不仅需要为每个游戏(和每种分辨率)做针对性训练,且仅单帧输入到神经网络,很难在工作的时候适配各种场景。英伟达后来也反省说游戏过程本身就是不可预期的。所以最早开启DLSS的效果并不算好,动态画面还容易出现伪像。
DLSS 2.0的网络训练流程没有发生大变化,但加入了时域反锯齿(TAA)。在流程中融入实时的运动向量信息,将运动向量应用到高分辨率的历史帧,就能预估下一帧(这个流程就是temporal feedback)。卷积autoencoder网络拿到低分辨率的当前帧,以及高分辨率的历史帧,就能生成高分辨率的当前帧了。
另外原本针对每个游戏训练,新版也改为单个通用的神经网络,以适配所有加入了DLSS特性的游戏。这个通用神经网络基于合成训练数据集,而不再是个别游戏。最终能够提供不同的分辨率升格选择。从最终效果来看,DLSS 2.0的表现比1.0强了不少。
抛开2.0的改进不谈,DLSS 1.0可认为游戏AI超分技术的大方向,虽然在具体实施的时候会有些差异。值得一提的是,这样的方案在本地进行AI inference也因此需要专门的硬件单元,所以英伟达在Turing架构时代就为GPU引入了所谓的tensor core,进行AI计算加速,或者说进行游戏超分加速。
当超分技术应用于移动端
不过英伟达、Intel的这类技术都是面向PC平台的,联发科是比较早将游戏AI超分技术应用到移动端的企业。可惜针对自家Game AI-SR技术,联发科谈的细节并不多,所以我们并不能很明确地知晓,当这样的技术应用到移动端的时候,都需要做哪些改动。
不过有些比较显著的问题还是可以拿来谈一谈。即便将范围收窄到图像或视频超分,早期的很多方案都并没有为效率、功耗,以及移动设备做优化。在移动设备上部署基于AI的解决方案,就需要为APU这类AI专核设计更高效的模型。毕竟如文首所述,手机的形态限制,决定了这类设备无法像PC那样以高功耗、大算力去全力输出。
实际上,移动平台的APU在超分所需的AI算力和效率上已经达到了较高的水平,至少它比CPU、GPU在卷积神经网络运算方面的效率要高出太多——而且这两年的AI硬件发展,也令APU有了在同类产品中更出色的性能和能效——下文还将提到这一点。只不过当应用传统AI超分方案时,移动平台仍然面临问题:RAM容量限制,以及对于许多通用深度学习层和操作的支持不够高效。
如此一来,要以标准神经网络模型来处理高分辨率数据就有难度,因此就需要针对移动AI硬件,进行每种架构的适配。典型的优化包括网络剪枝、压缩,低bit量化,AI硬件适配,移动平台感知神经网络搜索(Platform-aware Neural Architecture Search)等。
这方面的研究实际上还不少。“面向未来广阔的手游生态,联发科利用自身强大的计算资源训练和改进AI模型,把完成超分优化的AI模型提供给游戏开发商,或为游戏开发商自研超分提供工具,协助其完成游戏内的超分优化。”
虽然我们并不清楚联发科究竟针对移动端应用AI超分,具体做了些什么,但要在游戏画面的超分方案上取得令人满意的效果,应当是付出了不少心力的——包括如何最大化地降低功耗、提升效率,同时保证超分的画面可接近原生高分辨率输出的画面。而这些工作并不仅是很多人所知的硬件层面的APU架构、设计,还需要在面向游戏开发者的AI超分生态上做各种深入研究。
不过在游戏之外,联发科应该是有储备对应的超分技术的。比如这家公司一直以来擅长的电视机芯片领域。超分技术在电视机上的应用早就不罕见了,似乎几年以前联发科就已经在电视芯片上,实现通过AI技术进行画面升格操作,将2K升格为8K的影像输出。
这两年的CVPR(IEEE国际计算机视觉与模式识别会议)顶会上,我们也能看到联发科发布的不少paper,比如说2020年的《Unified Dynamic Convolutional Network for Super-Resolution with Variational Degradations》,探讨单图像超分技术,用Dynamic Convolution动态卷积来解决多样可变的degradation问题。
虽说这可能和游戏AI超分存在差异,且游戏画面具备更大的不确定性也增加了技术难度,但可想见的是联发科在该领域的积累时间应当也不短了。
AI专核与GPU之间的协同
如前文所述,DLSS的实现基础是英伟达在Turing架构GPU中加入了专门的tensor core张量核心。毕竟既然是基于AI的超分算法,自然应当由AI专核来做计算,以实现效率的最大化。移动平台也不例外,联发科Game AI-SR是一项联合了APU与GPU的技术。
去年11月,联发科面向全球发布了天玑9000手机SoC,这颗芯片之上的AI专核,也就是APU,用上了4个性能核与2个通用核。联发科在宣传中提到,天玑9000的APU 590在性能上达到了上一代的400%,能效提升4倍。与iPhone 13相比,“AI性能领先66%,能效高出31%”。
与此同时,在苏黎世联邦理工学院AI Benchmark(AI ETHZ v4)测试里,天玑9000的AI性能相比谷歌Tensor处理器,至多有超过200%的性能领先——而且注意观察,上面这张图中,达到203%性能领先的项目Video SR就是指视频超分,看来APU的确算是有备而来。
此前的媒体沟通会上,联发科在接受采访时也特别提到:“我们第一代游戏超分的规划方案,希望是结合GPU+APU的异构方案。在移动平台端,我们希望让GPU专心做渲染,APU则可以offload一部分超分的系统需求。”由GPU渲染低分辨率的画面,尔后将画面交给APU进行Game AI-SR计算,最终将超分后的游戏画面输出到屏幕。
通过APU与GPU的协作,对手机而言不仅能以接近原生画质的分辨率保证游戏体验,同时因为GPU仅以低分辨率渲染输出,APU在超分效率方面有保证,就起到了省电的目的。
更具体地说,联发科移动端游戏超分技术可实现的是1.5倍的分辨率升格,比如将GPU渲染的720p分辨率画面,由APU超分获得接近1080p画面效果。
超分游戏生态的落地
既然技术有了,前期的工具和硬件都准备就绪,接下来就要看游戏开发者采用超分技术的活跃度了。类似这类专有技术方案,在还没有全平台统一API接口问世之际,考验的就是芯片厂商的生态构建能力。基于联发科手机SoC在智能手机市场的市占率,联发科固然是掌握了先机和不少优势的。
就像PC平台的英伟达那样,如果这一生态能够组建成型,那么在整个手机市场,诸多游戏开发者、手机OEM厂商和手游玩家都将提高对于联发科AI技术的依赖程度。这对构建起芯片厂商理想中的未来市场,应当才是更终极的目标。
传言称,vivo很快就要推向市场的X80手机搭载天玑9000芯片,就将着重宣布游戏超分技术的支持。关注这则信息的重点理应在于,在这款手机发布之际,是否也将有支持联发科Game AI-SR超分技术的游戏随之而来——这将是我们拭目以待的。毕竟超分技术既能确保游戏体验,还有机会让手机在玩游戏时不再那么热,实在是众多手游玩家梦寐以求的。