当前位置: 华文星空 > 知识

Evolution of the Graphics Processing Unit (GPU)

2021-12-13知识

【Evolution of the Graphics Processing Unit】是Micro杂志在庆祝微处理器诞生50周年(Intel 4004)的专刊里邀请英伟达的几位工程师撰写的回顾式的文章,原文链接在这里。最早读这篇文章是收到了google scholar推送的通知,兴冲冲地跑过去读了一遍,觉得挺精彩。这个周末又有同事推荐,还提到了这一期专刊的内容,于是又读了一遍这篇文章,顺便还读了几篇其他文章(比如Intel的这篇回顾, Hennessy的这篇回顾,以及Faggin的这篇回顾),有些感触,聊作记录。

  • 如果以 1971 年Intel 4004诞生记为微处理器元年的话, 22年 后,也就是 1993年 ,NVIDIA这家公司才创立。如果我们以比较主流(比如以量化体系结构教材为参考)的体系结构技术演化代际来划分的话, 1993 年还处于Instruction Level Parallelism的黄金时代。如果我们强调NVIDIA异构计算的架构属性的话,那么直到 2006年 G80和CUDA发布之后,GPU代表的异构计算范式才算进入开发者视野,彼时恰是体系结构技术从ILP向多核以及Thread Level Parallelism转向的阶段。直到 2012年 ,Google基于48块GTX680 GPU替换掉之前由16000块CPU搭建的训练系统完成广受关注的「猫脸识别」深度学习网络训练,以及在同一年,由两块GeForce580支持训练的AlexNet在ImageNet比赛上大放异彩,借AI这一拨再兴起的东风,GPU才算在异构计算领域进入到一个黄金时代。而 17年 V100的发布,凭借第一代FP16 TensorCore的加持,NV在面向AI场景的峰值算力和当时的Google TPU形成了on-par的态势,避免了在关键时间点的技术掉队。并且随着接续几年硬件的迭代,最终在最新发布的MLPerf 1.1训练提交的结果的8个模型中,有6个模型(ResNet50和SSD模型相较TPU V4仍有些微差距)取得了第一名的成绩,才算是在技术上以及商业结果上暂时(这里说暂时是因为已经能够看到在未来一两年内围绕AI加速领域的激烈竞争态势了,包括Intel/AMD这样的传统大厂,寒武纪/Graphcore/Habana/Cerebras等新兴的AI芯片公司,以及AWS/Tesla/阿里/Google的垂直整合AI硬软技术栈,前行仍需如履薄冰)稳固了其在云端AI训练推理的龙头地位。93年到06年,06年到12年,12年到17年,17年到21年,每一个跨越,都殊为不易。芯片行业的规律,使得一次大的架构变化从蕴酿想法到最终落地发布,通常是以两年为单位(我个人对一年完成一款重要芯片流片之类的新闻其实是不太感冒,之前包括一些大厂,还有一些创业公司,会用一年之内完成一款重要芯片的发布说事,我总觉得明显有悖芯片行业规律,希望这样的新闻越少一些追捧对行业才更好一些),按这个规律推算,大体能够看到每一个跨越阶段所能够提供的硬件层面的试错机会数量。而硬件之外,还需要考虑到软件及生态的建设(和试错),这就更加复杂。说每一步重要决策如履薄冰,当不为过。自己在刚进入AI硬件行业的时候,还习惯性带有比较多软件的思维,等到略有一些体感以后,就会体会到这个行业很深的规律性和严肃性。仅靠加班加点和人海战术并不能保证在这个行业里的成功(虽然我也了解到这个行业里有公司靠着极强的纪律性和人海压强方式取得了不俗的成绩,但接触这个行业越久,反而会越觉得那种方式的损耗以及隐患和负作用可能是巨大的,之前的成功跟独特的历史阶段和国情有关。但长期推进这种方式不进行调整是否能够持久,我的态度会从之前的支持转变为现在的中立),除了技术上不断吸引优秀的人才之外,怎样针对这个行业的特点对生产关系,组织形态进行合理的设计,来确保决策质量及实施效率都是蛮值得考究之处。生产力决定生产关系,生产关系反作用于生产力,诚哉此理。
  • 上面的讨论稍微宏观务虚了一些。回归到具体一些的内容。从 2010年 Fermi代际的G80支持FP64计算操作开始( 750GFlops ),到 2020年 发布的Ampere GPU的 19.5TFlops 10年时间 FP64算力提升超过 20倍 ,年化增长率超过 35% 。如果我们再来看一下AI推理算力的演化,那么从 2012年 Kepler的 4TFlops 2020年 的Ampere的 1248Tops (INT8定点计算+结构化稀疏), 8年 时间推理算力提升超过 300倍 ,年化增长率超过 1倍 。与此同时,我们也能够看到模型复杂度上升带来的算力需求的变化,以NLP场景为例,从 2018年 的BERT模型到 2020年 的GPT-3,训练复杂度上升了 1000倍 ,2018年还是V100的当打之年,其峰值FP16算力是 125TFlops ,而Ampere面向训练场景的峰值算力是 312TFlops 。以单位芯片面积算力来衡量的话,相较V100只有 2.4倍 ,剩下的超过400倍的算力需求差距只能靠大规模并行来进行解决。 而大规模并行,对于普通建模用户来说,意味着训练成本的急速上升。这就可能会抑制AI技术的普惠落地。 借用文章里的观点,假设按最激进的 每年提升1倍 来估算,并且这种程度的提升可以再维持几个代际(假设代际数为 3 ),那么,按两年一个代际来计算,一共 6年 ,相较当前的Ampere也就是 64倍 的算力提升(这已经是一个比较理想化的数字,因为每年提升一倍是按推理场景来估算,训练场景的算力提升会显著低于这个数字)。这会给未来的技术演化会带来什么启示呢?抛开硬件架构本身的演化之外,我的一个推断是建模层面会需要新的范式创新,配合硬件架构升级来一起解决建模能力和算力需求之间的矛盾。一种可能是在当前hot的大模型之外,涌现出更多不那么大的「中小」规模模型技术,另一种可能是在当前大模型预训练模型基础之上,演化出更多相对cheap的下游finetune的应用范式,使得大模型训练成本高的问题变成免洗的固定成本。相关的工作,其实已经有相当一部分在开展中了。围绕AI算力优化,未来涌现出更多模型系统联合优化的工作,我想应该是一个值得预期的事情。
  • 上面讨论到了NV GPU的AI训练算力提升幅度离模型训练复杂性上升幅度有相当的距离,如果我们试图按第一性原理来做更进一步的分析,假设我们没有任何负担,从头做一个AI specific的DSA芯片 ,训练算力的提升还有多少margin呢?也许可以从这样的角度尝试回答这个问题。Tesla在今年Hotchips上announce的Dojo是一款典型的面向其内部场景垂直整合的AI加速芯片 ,其单芯片峰值算力是 362TFlops (FP16/CPF8),芯片面积是 645平方毫米 ,集成 50个Billion 的晶体管。相对照的是NVIDIA A100,其峰值算力是 312TFlops ,芯片面积 826平方毫米 ,集成 54 Billion 的晶体管。考虑到Dojo面向其垂直场景,并且没有任何过往架构的包袱,所以其单位面积的晶体管集成度超过A100的 18% 。我们做一个理想化的插值,以Dojo的峰值算力作为更接近第一性原理的数值的话,那么A100的峰值算力潜力可能达到 390TFlops 。以这个数值为基线,按上面提到的6年64倍算力提升预估可以达到 24960TFlops ,是V100的 199X 。距离GPT-3相较BERT的 1000X 算力需求提升,仍然有 5X 的差距。并且,这个数字是一个非常理想化的预估,因为同时加上了 只考虑单一场景的垂直优化 + 训练算力每年1倍提升 + 软件系统完美发挥硬件新增算力(几乎不可能 )+ 持续6年 的假设。所以,另一个可能的思路也许还真的是类似Cerebras的Wafer computing了:)?不过参考这里的一个对比分析,能够看到Cerebras的单位晶体管可获得的AI算力其实相比比A100还是有比较明显的差距,即便是按最新的7纳米工艺的WSE-2芯片最乐观的情况推断,也仍然有将近 3X 的gap,这可能也是在Cerebras的官网宣传材料里没有放出峰值算力指标的原因之一。
  • 单芯片范畴,通过当前的架构层面创新手段,带来数量级(类似当年TPU刚出来,以及Volta中加入TensorCore的时代,带来近 10X 算力提升)AI算力提升的时代,至少对于训练场景来说,恐怕在未来五年之内就会遇到瓶颈了。整个行业需要新的技术视角来解决有效AI算力提升的问题。这些视角可能来源于工艺封装,可能来源于模型结构的设计,可能来源于全栈系统的再梳理,也可能来源于新的体系结构层面的巨大突破。未来已来,路在脚下。
  • 最后,仍然打个招聘小广告,对上面讨论的话题,以及相关技术工作感兴趣的同学,欢迎联系我,一起打造更好的软硬全栈AI计算加速技术。关于招聘信息在之前的几篇帖子(这里,这里,还有这里)里都有提到,校招/社招/实习皆可,工作地点也比较flexible,感兴趣的朋友可以直接邮件我 [email protected] .