从晶体管到神经网络:GPU如何走到今天,又将去向何方


作者: Vitali Liouti

四十五年前,我父亲在苏联学习无线电工程。他研究的晶体管采用塑料封装,可以用拇指和食指捏住。而如今,一个手机处理器就包含数十亿个晶体管。

当芯片行业之外的人问我,这么多晶体管到底在做什么,我通常会从GPU讲起。

它最初是为了画图而生的。后来科学家借用它来做计算,它又进一步训练出了能够识别图像的系统,再后来是能够生成文本的系统。如今,这份恩情得到了回报:这些网络运行在GPU上,帮助它画出更好的图像,并生成视频和声音。

在这些变化中,有三个工程问题反复出现:同时进行大量计算、让数据保持就近、给程序员尝试新事物的空间。正是这三个问题塑造了E系列架构。


大量的小型计算

在游戏中转动镜头,世界的另一部分就会进入视野。反射随之变化,物体从墙后浮现。在每秒六十帧下,每16.7毫秒就要交出一张新图像。过去三十年里一些最精彩的故事,就是在这个时限内讲述的。

一张1080p图像包含略多于两百万个像素。在每秒六十帧下,这意味着每秒要生成超过1.24亿个输出像素。每个像素可能需要大量计算,来确定什么可见、如何被照亮、应该是什么颜色。

这个世界的大部分内容是用三角形来描述的。GPU计算出它们在屏幕上的位置,并计算它们的表面看起来如何。这些计算中有许多可以在不同三角形和像素之间并行运行,使图形成为适合这种“同时处理大量计算”的处理器的理想工作。

有一种反复出现的操作很简单:将两个数相乘,把结果加到一个累计值上,然后重复。这就是乘积累加:它帮助定位物体和计算光照。当应用于大型数字数组时,同样的操作也是神经网络的构建模块。

在20世纪90年代中期,这些芯片通常被称为3D加速器。许多芯片在三角形到达时逐一处理,反复读取和更新芯片外部内存中的颜色和深度信息。搬运这些数据可能会拖慢绘图。

在VideoLogic——那家后来成为Imagination的英国公司——Martin Ashton和Simon Fenney启动了一个后来成为PowerVR GPU的项目。他们的方法是将屏幕划分为小块(tile),把每个小块的工作颜色和深度数据保留在芯片上,以减少对外部内存的访问流量。他们还在着色之前先确定哪些表面可见,从而避免对被其他表面遮挡的表面做无用功。如果一堵墙完全挡住了一把椅子,计算椅子面料的颜色对图像毫无贡献。

这种组合被称为基于分块的延迟渲染:减少离开芯片的数据,避免无法影响画面的计算。一个源于节俭的想法,正如许多伟大的想法一样。

PowerVR GPU在1998年日本发售的世嘉Dreamcast中触达了更广泛的受众,不到十年后,它又进入了iPhone。随着图形转向手机,这种对内存流量的关注变得尤为宝贵,因为手机几乎没有散热空间。车载仪表计算机可能位于炎热的车厢中。头显则贴在脸上。在这类边缘设备中,功耗预算是用户会直接感受到的。


转换工作的空间

早期的加速器提供的基本上是一套固定的操作序列,开发者只能调整其中的设置。

后来,程序员获得了更多自由。在2000年代初,可编程着色器让他们能够自己编写更多的计算。他们可以发明更好的方式来表现水、皮肤和光。

科学家们看到了另一种可能性。一台能够对大量数据施加类似计算的机器,也可以模拟流体或粒子之间的力。

于是他们把数据伪装成图片。一组数字作为纹理输入,一个计算变成了应用于一个矩形的着色器。后来,CUDA和OpenCL让通用GPU计算变得更加直接。数字可以保持为数字。

2012年,一个使用名为AlexNet的神经网络架构的团队以大幅优势赢得了ImageNet图像识别竞赛。GPU帮助实现了这一结果。

训练一个网络涉及处理样本、衡量误差并调整数值参数。大部分工作需要将大型数字数组相乘并组合。GPU可以并行执行其中许多计算,缩短时间和精力,使更大规模的实验变得可行。原本为绘制物体而开发的硬件,正在帮助机器学会识别物体。


当图形与AI合为一体

在这一切过程中,GPU始终在画图。然后神经渲染将训练好的网络引入了这一过程。

最伟大的例子是神经时序超分辨率。一个训练好的网络利用之前的帧和关于场景如何运动的信息,从较低分辨率的渲染中重建出更高分辨率的图像。以一半宽度和一半高度渲染,起始图像的像素数只有四分之一。让网络足够聪明高效,你节省的渲染时间就会超过运行模型的成本,同时还能保持运动中的图像质量。

网络需要GPU刚刚生成的数据,因此它在哪里运行很重要。单独的AI加速器或许能高效执行,但在处理器之间传递工作可能增加内存流量、数据转换和同步。团队可能还需要集成单独的工具和驱动,协调执行并跨处理器调试。选择在哪里运行网络,意味着要把这些成本与计算本身一起考虑。

Imagination的E系列将专用矩阵硬件放置在GPU的着色集群内部,与算术单元共享寄存器存储。寄存器保存当前正在处理的值。这使得着色器程序能够在图形管线内使用矩阵加速,让计算保持在其所需数据的近旁。

E系列还减少了算术硬件内部的数据搬运。其Burst Processor将中间结果保持在使用它们的操作近旁,减少对寄存器存储的反复读写。

该架构通过Vulkan和OpenCL等接口保持可编程性。专用硬件加速常见操作,开发者决定如何组合它们。新算法仍然必须符合芯片的计算和内存限制,但软件在芯片固化之后仍可不断变化。

Imagination的神经超分辨率将所有这些想法带回屏幕,在图形管线内将E系列的矩阵加速应用于时序超分辨率。共享GPU仍然意味着争夺执行时间和内存带宽。再次转动镜头,几何、光照和神经重建必须在下一帧到来之前交出一张连贯的图像。但只要做得足够高效,你就能让硬件在相同的功耗约束下,做到远超以往所能做到的事情。


指尖之上

近期我们一直在向中国客户和媒体展示E系列。它背后的故事经历了一个非凡的转折:原本为绘制图像而打造的硬件,帮助现代AI成为可能。如今,AI正在帮助它绘图、思考和创作。

我不禁回想起四十五年前我父亲学习无线电工程的时光。那枚捏在指尖上的晶体管,是一个需要去理解的东西:它如何工作、能做什么、可以用它造出什么。这些问题至今仍让人感到熟悉。我们如今对包含数十亿晶体管的处理器提出同样的问题,而软件则给了我们新的方式去让它们发挥作用。

在游戏中转动镜头。一个门口进入视野。光线落在一个移动的表面上。几何、着色和一个训练好的网络协同工作,生成下一帧图像。时限依然是16.7毫秒。

在这个时限内,我们能做的事情在不断变化。而我们接下来会做什么,仍有待想象。


英文链接:https://blog.imaginationtech.com/from-graphics-to-ai-and-back-again

声明:本文为原创文章,转载需注明作者、出处及原文链接。

最新文章