关注老石谈芯,一起探究芯片本质
微信的推送规则进行了调整
如果文章对你有用,请在文末点击“在看”,“分享”和“
这样就不会错过老石的每一篇推送了
谁是人工智能时代的最大赢家?是用阿尔法狗横扫围棋高手的谷歌,还是借着AI的东风,兴起、发展、消失,但创始人实现财富自由的一批初创公司?
不管从技术的角度,还是财富增长的角度,吃了人工智能时代最大红利的都是英伟达。我们可以看看数据:它的股价从2012年的3.5美元左右,一路猛涨到现在的200多美元,并且一度超过315美元;在整个数据中心GPU市场的这个大蛋糕里,英伟达的占比超过了80%。
不久前,英伟达发布了名为霍普的下一代GPU架构,以及最新的H100 GPU。老黄在会上说,H100比前一代的A100在训练性能上提升9倍,推理性能提升30倍,高性能计算性能提升6~7倍
事实上,在过去的10年里,GPU的发展一直保持着非常高速的推进。从最早的开普勒,到上一代安培,再到最新发布的霍普,10年里GPU在AI应用里的性能提升超过了300倍。
那么问题就来了,GPU是如何从一个图像处理芯片,一步一步成为推动人工智能发展的最重要的力量?英伟达又是如何抓住了GPU在AI时代的重大机遇实现了起飞?接下来GPU的发展前景如何,我们又应该如何去把握、并从中受益?今天的文章就尝试解答这些问题。
AI与GPU:究竟谁成就了谁
AI的发展和GPU的发展,其实是交织在一起不断螺旋前进的过程。这个特点,贯穿了英伟达GPU发展的整个阶段。接下来我们就把它拆解开一点一点来看。

GPU的全名叫Graphic Processing Unit,中文翻译过来是图形处理器。所以顾名思义,GPU的老本行就是用来做图形图像处理的。一张图片其实是由很多的像素点组成的,为了显示一张图片,其实就是把这些像素点一个一个的显示出来。至于先显示哪个再显示哪个,这个顺序其实并不重要。
因此GPU最大的特点就是包含成百上千个计算核心,我们可以让每个核心处理一个像素点,这样就可以在同一时间完成一张图片里所有像素点的处理了。
GPU的这种基于大量计算核心的结构,也是它与中央处理器CPU的最大区别。有个很有名的举例,CPU像一个知识渊博的大教授,各种微积分都会做,但是工资非常高,而且这种人也非常难培养。而GPU就像一群只会加减乘除的小学生。但是对于大量的简单运算来说,用几十个小学生算的速度肯定要快过一个大教授。所以,GPU特别擅长做哪些计算密集、并且可以大量并行执行的应用
好巧不巧的是,深度学习和AI应用就符合这个特点。比如神经网络里有大量相互独立的神经元,可以用来做并行运算;而且AI应用里最常见的卷积运算,本质就是简单的乘法和加法。
2012年,被称作“神经网络之父”和“深度学习鼻祖”的多伦多大学教授杰弗里辛顿和他的博士生Alex发表了AlexNet,就是用了深度学习加GPU的方案,并且一举获得了ImageNet LSVRC-2010竞赛的冠军,错误率只有15.3%,远超第二名的26.2%。
恰恰就在2012年,英伟达发布了名叫“开普勒”的GPU架构,并且由此开始了GPU在AI时代的升级打怪之路。在去年底的DAC会议上,英伟达首席科学家Bill Dally做了主题演讲,并且提到从2012年的开普勒,到2020年的安培,GPU的单芯片性能在8年里提升了317倍。
之所以能取得这样的性能提升,主要有两个方面的原因。首先不可忽视的是半导体制造工艺的进步,从28纳米到7纳米,再到H100的4n工艺,至少跨越了六到七代。也就是说,即使芯片架构保持不变,单靠工艺升级的红利,性能也会有好几倍的提升。当然了这部分功劳属于台积电和三星这些芯片制造商。
取得性能提升另外一个重要的原因,就是在英伟达自己在芯片架构上的优化。首先是最典型的张量核心(Tensor Core),它就是专门用来优化计算矩阵相关的乘法-累加运算的。而这部分运算就是AI算法里最常见的运算形式。
这就像装机的时候如果CPU是性能瓶颈,我们可以换个更强的CPU,如果主板是瓶颈,就换个更好的主板。总之打通了瓶颈之后,系统性能自然就提升了。
第二个架构优化,就是在GPU里支持更低精度的数据运算。比如从开普勒的32位浮点,到图灵开始支持8位整型下的AI推理。这是因为研究AI算法的人发现,推理的时候降低运算精度虽然会导致准确度下降,但这种损失是可以忽略不计的。这是个重大发现,它意味着我们可以通过选择更低的精度,来换取几乎免费的算力提升。
第三个架构优化,就是同样能带来免费算力提升的结构化剪枝技术。剪枝是MIT的韩松教授提出的一种AI模型的压缩技术,他发现在AI模型中,神经元之间的联系有着不同的紧密程度。而剪掉一些不那么重要的连接,基本不会影响模型的精度,但运算量就大大减少了。
虽然从理论上听起来这个方法简单直接,但从硬件电路的角度来看,真正实现这个方法还是颇有难度。最重要的,就是如何高效的处理剪枝带来的稀疏性。
在2020年发布的安培架构里,英伟达引入了对结构化剪枝和稀疏张量核心的支持,可以通过设置一定的约束条件,保证权重矩阵中被剪枝的元素满足一定的分布规律,从而能够有效地将剪枝带来的稀疏性转化为更高的AI模型处理效率。
还记得我们刚才说的吗,AI的算法与芯片这两条发展主线是螺旋交替前进的。一个发展到一定程度,会拽着另一个发展起来,甚至发展的更快,这样才能开启下一个阶段。
在距离开普勒GPU发布10个年头的时候,接下来该如何发展呢?
霍普架构:地表最强AI GPU?
和前一代基于安培架构的A100相比,基于霍普架构的H100在执行AI训练和推理任务时,性能有高达9倍和30倍的提升。
取得这些提升的主要原因有三个,分别是低精度运算、专用电路和动态编程。
首先,霍普支持8位浮点数运算。之前我们说的低精度运算,主要针对的是推理领域。但研究者们逐渐意识到,除了推理,在大部分的训练任务里,过高的数据精度也不是必须的。所以如果把支持的浮点数精度从前一代的FP16下探到FP8,单凭这一项改变便可以带来一倍的算力提升。
除此之外,霍普还引入了更多的专用电路。从某种意义上来说,所有的芯片设计其实都是专用和通用的权衡。这里面的逻辑和道理是这样的,如果我们拿专用电路来取代一定的通用电路,就能让芯片在处理一些特定任务的时候高效得多,因为专用芯片就是为了这些任务而设计的。但是这样一来,就意味着芯片的应用场景和这些具体的任务捆绑起来了。
这有点像指甲刀和普通剪刀的区别,用它剪指甲肯定更加游刃有余,但用它剪纸肯定就不行了。当然我们也可以把剪刀和指甲刀都做在一起,就像一个瑞士军刀一样。但是现在已经很少有人用瑞士军刀了,因为它虽然什么都能做,但好像什么都做不好。早年间FPGA还拿瑞士军刀自比,现在也很少这么说了。
再回来说芯片里的专用电路,苹果的M1芯片就是很有代表性的例子。之前介绍过,通过大量采用专用电路,M1在视频剪辑这些特定任务里性能拔群。而苹果之所以要堆硬件去发力这个领域,是因为视频剪辑内容创作就是苹果电脑最重要的应用场景,专业摄影师音乐家程序员买苹果电脑就是干这个用的。
所以,是否牺牲通用性来换取专用性,背后反映的其实是一家公司对于某种技术、某个市场的预期和把握。
那么回到英伟达新发布的霍普和H100,它里面就集成了对Transformer这种神经网络模型的专用硬件支持。和卷积神经网络CNN相比,Transformer是神经网络模型里的一个势头很猛的“新人”。

2017年,当时还在Google工作的Ashish Vaswani等人发表了一篇论文,名叫《Attention is all you need》,第一次提出了Transformer,然后就爆火了。前几天这篇文章的引用量也突破了4万,这是个能吹一辈子的成就。这也直接体现了Transformer模型的巨大影响力。
Transformer这个模型之所以有这么大的影响力,是因为它基于注意力机制,有很强的通用性。它不仅在自然语言处理NLP相关的任务中有突出表现,更启发了很多性能优异的网络模型,比如BERT、GPT-3等等。近年来在语义识别、机器翻译许多这些NLP的子领域里取得的研究进展,都和Transformer息息相关。
不过,天下没有免费的午餐:处理Transformer模型通常会伴随着巨大的运算量。比如在2020年提出的GPT-3模型中,参数数量已经达到1750亿个。这么大的运算量,就给传统的芯片硬件带来了巨大的压力。
Transformer一方面有着极大的影响力,另一方面又需要更强的运算能力,所以英伟达选择开发专用的计算引擎来加速Transformer相关的运算。
在这个引擎中,一个重要的特点是它对混合精度的支持。它背后的原理是,即使在同一个Transformer模型中,不同层的运算对于计算精度的敏感性是不同的。也就是说,即使不用高运算精度来训练整个模型,最终得到的模型质量并不一定差。
所以英伟达的这个Transformer引擎可以自动化地选择合适的计算精度,对于精度敏感的层,就用FP16进行计算;反之就用FP8来处理。
除了H100里的Transformer Engine,学术界也有很多针对Transformer的硬件加速器研究,比如2020和2021年在计算机领域顶会HPCA上发表的A3和SpAtten这两篇文章,讲的都是这方面的内容。本文提到的所有论文、以及相关的技术资料,我都分享到知识星球里了,感兴趣的朋友可以去看看
霍普的第三个主要特点,就是引入了一组新的指令集DPX,用来支持动态规划的加速。它主要用来解决一些复杂的数学问题。
比如在数学里有个很有名的旅行商问题,它最早是英国的数学家在19世纪提出来的。它的问题描述其实很简单,就是有个旅行商要在不同城市之间往来做生意,这些城市之间的距离是确定的。那么如何选择最短的路径,让旅行商能够拜访所有的城市一次,而且最后回到出发的城市呢?
最简单的解法肯定是穷举法,但是如果城市数量很多,这个穷举的时间就会非常长。对于这类问题我们就可以使用动态规划的方法,把问题逐渐划分成简单的子问题,然后通过递归的方式得到解答。
之前解决这类问题通常是通过CPU或者FPGA来完成的,但这次通过DPX指令集,让霍普成为了英伟达的第一个支持对动态规划这类方法进行硬件加速的GPU架构。
结语
从开普勒到安培,再到霍普,今天我们从芯片硬件的角度,回顾了英伟达GPU在人工智能时代的发展轨迹。AI本身和芯片硬件的发展,是不断交替前进的,这也是这条发展轨迹里最重要的特点和趋势。当然除此之外还有通用与专用的选择、混合精度与编程语言的支持等等。
芯片硬件的发展会带来性能的提升,但为了把这部分性能提升用起来,软件是更重要的。所以除了GPU硬件本身的进化之外,英伟达还构建了成熟的CUDA软件生态。正是因为CUDA的易用性和通用性,才奠定了英伟达GPU广泛扩张和应用的基础,之后我们再细聊吧。
(注:本文不代表老石任职单位的观点。)
更多芯片技术解读和资料分享,并与老石一对一交流,欢迎加入知识星球:“老石谈芯-进阶版”,一个关乎技术与观点的互动社区。
继续阅读
阅读原文