注:这篇文章的副标题和之前张伟同学的文章有些相似,不过这里讨论的视角会以AI系统视角为切入点,所以信息量存在比较明显的差异,希望张伟同学看到不要觉得有盗标之嫌,因为我确实觉得这个副标题比较贴切:)。
每一代NV GPU的发布都会给业界带来新的想象空间。作为AI系统(这里主要代指深度学习系统)方向的从业者,最关心的自然是每一代GPU能够为AI系统领域带来哪些新的变量。
从之前NV GPU的甲方消费者,转变为现在的乙方提供者,视角变化让自己可以从不同角度来看待这个问题。这里会以深度学习系统的发展踪迹为应用载体,来回顾NV GPU架构的历史变迁。
整个回顾会从最早应用于深度学习计算加速的GTX 580 开始,直到最新的Ampere架构。对每一代GPU的回顾会从以下几个方面展开:
首先来看Fermi,这也是第一款应用于代表性深度学习加速场景(AlexNet)的GPU架构。
1. Fermi
Fermi是支持CUDA的第三代GPU架构,第一代是2006年推出的G80架构(公开材料没有查询到G80的whitepaper,相对详细一些的分析可以参见anandtech的这篇文章),第二代是2008年推出的GT200架构(类似G80,在NV官网上已经找不到类似Fermi的whitepaper,倒是在一些分析网站上有一些关联内容,比如beyond3d的这个和anandtech的这篇)。从Fermi时代开始,Tesla产品线的每一代GPU的whitepaper都提供了公开下载的链接,里面提到了大量的架构技术细节。这篇回顾文章正是以这些whitepaper为基础展开。在Fermi的这篇whitepaper里提到了这样一段话,读来让人感慨颇深:
When designing each new generation GPU, it has always been the philosophy at NVIDIA to improve both existing application performance and GPU programmability ; while faster application performance brings immediate benefits , it is the GPU’s relentless advancement in programmability that has allowed it to evolve into the most versatile parallel processor of our time . It was with this mindset that we set out to develop the successor to the GT200 architecture.以hindsight式的视角来看,将可编程性放在和性能相齐的位置,是一个重要的决策。因为可编程性的改善对于提升NV GPU的网络效应和用户切换成本,至关重要。在俞军的【产品方法论】里提到了 用户价值=新体验-旧体验-切换成本 。这个公式也适用于GPGPU这种To B性质的产品。以NV当前代际GPU代指新体验,上一代GPU代指旧体验,性能提升相当于在强化新体验,可编程性相当于在减少切换成本。以NV GPU代指旧体验,竞品代指新体验,这个公式同样成立,只不过可编程性相当于增加竞品的切换成本,性能提升相当于减少竞品提供的增益价值。在接下来的历代GPU架构回顾过程中,我们可以看到NV一以贯之地坚持践行这个理念,不断通过性能和可编程性(包括用于提升AI开发者生产效率的努力我也归结为广义的可编程性)的提升来强化自己产品相较于上代产品和竞品的用户增益价值。
任何事物都有其两面性。所以,对可编程性的重视,也存在风险,可能成为制约NV发展的阿喀琉斯之踵。从Google在2016年推出TPU开始(从开创AI DSA硬件先河的角度,引爆这一拨AI硬件技术演进大趋势的寒武纪也成立于2016年),行业里涌现出大量的AI芯片 start-up,仅从硬件层面AI绝对算力来说,这些公司里已经出现了和NV当前主流产品性能on-par的产品,如果从performance per watt的角度来看,也已经出现了超过NV的若干竞品。其核心原因也跟NV需要关注可编程性和历史用户习惯的包袱有关,而新兴公司没有积累也同样没有包袱,所以可以在架构设计的空间里以适当牺牲通用可编程性为代价来寻找更适合于挖掘AI计算效率的设计权衡点。相关原理在【创新者的窘境】里也有提到,这也是考验某个领域里头部企业的地方了。
回归正题。Fermi相较前两代架构,引入了比较大的架构变化:
从AI系统的角度,NV在Fermi这一代并没有为AI计算场景进行任何针对性的设计,包括 硬件和软件。其被应用在AlexNet上也更像是一个机缘巧合: Alex这样的算法科学家因为实际算法需求,在为钉子找锤子的过程中,发现GPU相较CPU更适合解决相关问题从而将其作为锤子引入进来。整个过程中NV的作用是相对passive的 。这和当前NV在AI计算领域的主动和激进存在着巨大的差异。
而在当时那个年代,为什么是NV GPU被选中作为锤子,而不是Intel CPU或AMD GPU?
让我们穿越过历史的故纸堆,试图做一些推测。
在2006年的这篇文章里,我们能够看到基于论文里的实验对比,Intel CPU上打开BLAS库,和NV GPU上的性能在on-par的水准,当时这个工作里并没有使用到CUDA,因为当年正是CUDA的元年。
有趣的是在这篇文章的脚注里提到了除了在NVIDIA GeForce 7800 Ultra, Intel Pentium 4上的性能实验之外,也准备加入ATI Radeon X1900上的实验结果。在2005年更早的一篇文章里,能够看到在CPU, ATI GPU, NV GPU上同时进行MLP加速实验对比的一些数据,看起来当时还有互有千秋。
而在2011年的这篇文章里,基于CUDA实现的卷积操作,性能最多已经达到了Intel CPU上的60倍。当时使用的硬件是Intel Core i7-920(2.66GHZ)以及基于Fermi架构的GTX480/GTX580显卡。年代久远,实测评估已经不太现实,不过,从多个途径的数据cross check的结果(这里,这里,还有这里)来看,i7-920 2.66GHZ的峰值算力大体在在 24~100GFlops 之间。关于i7-920的理论峰值算力, @李少侠 给出了一个比较专业的预估,我直接援引如下
nehalem cpu 只有 port0 的 sse 支持 FP32 乘法,port1 的 sse 只支持 FP32 加法,所以对于深度学习里典型的乘法加法 1:1 的场景,i7-920 理论算力是 4-way*4core*2(FP add + mul ILP)*sse_freq,sse_freq 取 2.66G,那么算力约 85Gflops,不过官方并没有公布sse密集情况下的多核频率,应该和这个数接近。这个数字和这里的一个推算基本是相当的。所以从客观公平性角度,不妨将i7-920的峰值算力按 85Gflops 来设定。而GTX580的峰值算力是 1.5TFlops ,大体是1个数量级的差异。再加上CUDA提供的可编程性,以及Fermi引入的提升软件开发人员效率的一些硬件feature(比如L2的引入),在2011年,NV GPU相较Intel CPU已经取得了在神经网络加速场景比较明显的优势了。结合文章里的这一段话,对于Fermi加入L2,并且在后续代际持续提升L2的容量的动作,就更容易有共鸣了。
The latest generation of NVIDIA GPUs, the 400 and 500 series (we use GTX 480 & GTX 580), has many advantages over older GPUs, most notably the presence of a R/W L2 global cache for device memory. This permits faster programs and simplifies writing the code. In fact, the corresponding transfer of complexity into hardware alleviates many software and optimization problems. Our experiments show that the CNN program becomes 2-3 times faster just by switching from GTX 285 to GTX 480. Manual optimization of CUDA code is very time-consuming and error prone. We optimize for the new architecture, relying on the L2 cache for many of the device memory accesses, instead of manually writing code that uses textures and shared memory. Code obtained by this pragmatic strategy is fast enough. We use the following types of optimization: pre-computed expressions, unrolled loops within template kernels, strided matrices to obtain coalesced memory accesses and registers wherever possible. Additional manual optimizations are possible in case future image classification problems will require even more computing power.需要指出的是,上面的对比,并没有做到完全基于第一性原理的公平性,比如Intel Core i7-920的工艺是 45nm ,而GTX580是 40nm ,集成的晶体管数量也存在明显的差异( 30B v.s. 0.731B )。不过考虑到i7-920的架构设计中,只有不到20%的芯片面积用于实际计算,参见下图(原图 来源于Fermi的whitepaper),已经可以认为论文里的性能差异是由GPU和CPU在架构设计权衡的定性差异所带来的,所以我们不再花费精力进行更精细的定量对比。
总的来说,在Fermi这一代,NV GPU虽然没有为AI计算场景进行特殊的定制,但因为其相异于CPU的设计理念使得其更适配于神经网络的并行计算特性,再加上CUDA和硬件层面改善可编程性的一系列努力,使得其「误打误撞」地契合了AlexNet的建模需求,在深度学习的第一个killer application上取得了不错的开局。
2. Kepler
Kepler架构在2012推出。这一代并没有引入多少AI计算相关的架构创新,更多是一些偏通用性质的架构改进,包括 :
关于Kepler时代的架构变化细节,可以参见这篇whitepaper以及GTX680的whitepaper,在此不再做信息搬运。
Kepler时代,NV在软件层面引入了针对AI计算场景的一个大的动作---cuDNN V1.0在2014年的发布,并集成进了Caffe等深度学习框架中。考虑到硬件迭代的成本,其发展通常会滞后于软件发展,所以2014年cuDNN的发布标志着深度学习已经进入了NV的视野,通过软件库的迭代加深对深度学习计算负载的理解,为后续硬件架构的演进提供信息反馈,大体可以推测是这个思路。而2016年Pascal架构的发布,也基本上佐证了这点。
在Kepler时代,生态方面有几个有代表性的事件:
阿里巴巴初具规模采购NV GPU,也是从Kepler时代开始的。腾讯使用GPU进行语音识别加速,也始于Kepler时代。百度使用GPU的历史则更为悠久一些,我不确定是不是在Kepler之前就开始在使用GPU了,有熟悉这段历史的朋友欢迎提供线索。
3. Maxwell
Maxwell架构在2014年被推出。和上一代Kepler架构相同,采用的也是28nm工艺。相同工艺,通常意味着可供腾挪的硬件晶体管资源数量不会有显著的上升,留给架构师的设计空间相对有限。不过在Maxwell时代,因为28nm工艺成熟度的改进,加上从前代产品迭代中学习到的经验,Maxwell仍然引入了一些比较出彩的变化:
在这里可以了解到更多Maxwell的架构细节。
Maxwell这一代,架构上也和Kepler和Fermi一样,并没有引入针对AI计算场景的特化考虑。
软件层面,在14年cuDNN V1.0推出以后,进行了持续的迭代,2015年3月发布了V2,2015年9月发布了V3,2016年2月发布了cuDNN V4,2016年3月伴随P100发布了cuDNN V5(cuDNN的发展过程中值得一提的是Scott Gray,这位兄台人不在NV,但通过逆向工程手写了Maxwell架构上的SASS assembler,并首次基于winograd实现了快速conv算法,最终这个作法被cuDNN团队吸纳入正式产品中),同时在V5版本也加入了对RNN/LSTM结构的优化支持,虽然现在RNN/LSTM结构的使用已经显得势微,但是在当时,对于机器翻译,语言模型等NLP场景(以及涉及序列建模的OCR及语音识别场景),RNN/LSTM实际上是当时的SOTA了,如果我们结合一些领域工作发表的时间做一下关联,会发现NV对RNN/LSTM的支持跟这些工作发表的时间距离非常之近,这从一个侧面体现出NV对于AI计算workload演化趋势跟进之紧密。同时这段时间涌现了一些具备killer application属性的深度学习模型,比如微软在2015年推出的ResNet。我没能在公开文献中检索到ResNet论文发表时所使用的具体GPU型号,不过按时间推算,应该使用的是Kepler或Maxwell架构的GPU。
Maxwell时代,行业生态层面有几件重要的事情发生:
回过头来审视,站在2016年Pascal推出的前夜,会有一种「山雨欲来风满楼」的感觉,于是就有了Pascal架构的发布。
4. Pascal
Pascal架构在2016年3月被推出,采用16nm和14nm的工艺,说其是NV面向AI计算场景发布的第一版架构,当不为过。在Pascal架构里引入了面向AI场景很重要的一些特性:
阿里大约是在2018年上线了具备NVLink的生产集群,而要到2019年才有比较多生产作业启用NVLink进行单机 多卡加速,距离NVLink架构特性的推出大约有近三年的时间差,可以参见这里的一些分析描述。
NVLink的技术细节简要来说可以分为NVHS,Sub-link,Link,Gang四个层次。一条NVHS的link提供单向20Gb/s的传输带宽带宽,8根NVHS构成一个Sub-link,两条Sub-links组成一条用于双向连接的Link,P100架构下的单机八卡配置,不同GPU之间会由四个Link组成一条Gang,所以Gang的双向汇总带宽是 20Gb * 8 * 2 * 4 = 160GB/s ,单向汇总带宽80GB/s,是PCIe提供带宽的 5x 。更形象一些的示意图如下:
在SM架构层面,Pascal引入的变化不算多。在我的理解中,更多是工艺提升带来更多可用晶体管资源以后,可以把更多料堆起来反映到SM的数量提升,属于增量式的变化。 从这一点也其实体现出NVIDIA从Fermi时代起结合CUDA所选择的计算架构的优越性----几乎每一代新架构(特别是SM相关)都能够以相对增量的方式将工艺提升带来的新增晶体管资源利用起来,而不是动辄引入大的架构调整。
在Pascal whitepaper里提及的将CPU和GPU进行统一内存访问的特性,我自己的经验,并没有感觉到这个特性对于AI计算领域提供了多少实际收益。记得在刚刚拿到P100以后,我们评测过其page migration engine的表现,当时的结论非常negative。我们当时的判断是想使用CPU内存来作为GPU显存的backup,并且保证性能下滑不要太明显,还是需要在AI框架层结合应用作业的特点来进行处理,而不是直接交给page migration engine来在后台自动完成。
在Pascal时代,另一个值得一提的是,能够看到NV在从芯片向整机系统迈进,在其whitepaper里提到了单机8卡的DGX-1 server,这也是从Fermi时代开始,第一次在whitepaper里出现单GPU之上整机的方案。考虑到DGX-1的成本,在大量生产环境布署的其实是参考DGX-1代工生产的类似GPU服务器机型。
软件层面,Pascal这一代针对AI场景也引入了更多变化,首先是面向推理加速场景的TensorRT的发布,然后是NCCL在2016年的发布。说到这里,我一直很好奇NCCL以开源形式存在至今(多机部分初始是以闭源形式提供,后来在框架自行提供多机通信库的压力下推动了NCCL多机通信版本的开源),而TensorRT则一直保持闭源形态,是什么导致这两个产品存在这样的差异?在NV的官方blog上提到NCCL最早是一个research project,而TensorRT的源起则并不是一个research project,所以可能在对外开放度上NCCL尺度会更大。不过从生态建设的角度,hindsight地来看,如果TensorRT在起步的时候,就考虑按一个开源项目的方式来运作,不确定会不会带来更快的迭代速度(如果迭代速度是一项重要的商业度量metrics)?这也是自己有时候会YY的问题之一-------如果有一款全新硬件,需要为其规划AI软件栈的技术路线的话,NV的哪些作法是应该借鉴的,哪些是应该改良的?
行业生态方面,有几个很有意义的事件
5. Volta
在距离Pascal架构推出仅过去一年之后,2017年5月的GTC keynote,NV宣布了下一代Volta架构的发布。考虑到Pascal代际引入了较大的架构升级,间隔这么短又发布了下一代的Volta架构,这并不是一个常规行为,实际上是源于Google TPU当时给NV带来的压力。在Volta之前,面向AI计算场景,NV GPU相较TPU其实是存在技术上的代际差异的,这就严重威胁到了NV在AI计算领域的地位。如果技术上不能及时拉平代际差异,仅靠CUDA生态建立的用户切换成本来进行对抗,很可能会出现【创新者的窘境】里的状况,被颠覆性的技术拉下马来。这个技术代际差异在Volta架构通过引入第一代TensorCore在训练场景进行了拉平,随后Turing架构的第二代TensorCore在推理场景上进行了拉平,直到Ampere时代,NV才算再次巩固了自己在AI计算领域的龙头地位。时隔四年,回顾这一段行业历史,还是感觉精彩之至。比如,为什么选择了先支持FP16,而不是Google提及的BF16?为什么考虑选择了4x4尺寸的TensorCore,而不是更大的尺寸?如何figure out出来和FP16配套的Loss scaling的训练策略?TensorCore的编程API如何对外暴露来尽量避免和现有CUDA体系形成撕裂?怎样让NV之外的开发者也具备在TensorCore上开发程序的能力?这里涉及到了大量的技术、非技术因素的综合权衡。一些结论决策,当时看是合理的,但现在来看,已经被推翻或迭代更新了。比如从最早支持FP16,到支持BF16,及至引入TF32。从4x4尺寸,到更大的8x8。CUDA层面暴露的API粒度也在发生演进变化。如此等等。这里重要的不是结论,而是探讨这些结论产生的过程。因为这些过程,是可以迁移到下一拨workload,下一拨架构创新机会上的,具体的结论则很可能未必。
Volta时代架构层面几个重要变化是
硬件层面,Volta时代的Tensor Core提供了单cycle完成4x4x4=64条半精度FMA计算操作的的能力,在计算能力提升的同时,因为原先由64条FP32指令完成的操作现在由一条TensorCore指令完成,也省掉了大量用于保存中间计算结果的寄存器资源消耗,提升了数据复用性。
Volta的每个SM内部除了跟Pascal时代一样的64个FP32/32个FP64/64个INT CUDA core以外,还提供了8个Tensor Cores。FP32 CUDA core和Tensor Cores数量差距如此之大,再加上Tensor Core对数据存取的需求和FP32 CUDA core存在明显的差异,如何将Tensor Core计算能力对CUDA软件开发人员暴露成为一个蛮考究的问题。从Volta架构开始,PTX指令中引入了Warp level的矩阵计算及存取指令,并不断扩展其灵活性,从只能使用wmma.load/wmma.store/wmma.mma按ISA约束的数据组织方式来进行存取,到使用mma指令由软件开发人员根据需要进行显式的数据组织排布(灵活性提升的同时也意味着编程复杂性的增加)。以及为了简化NV之外CUDA开发人员使用TensorCore的负担所推出的CUTLASS软件库。TensorCore编程复杂性的根源在于
总的来说,Volta时代的TensorCore在技术原理上帮助NV拉平了和Google在AI计算领域的技术代差,但是现在回头来看仍然存在比较多的局限性,包括 :
在Volta时代,深度学习模型层面也出现了一些新的变化,这些变化主要集中在自然语言处理领域。首先是2017年Transformer模型结构在机器翻译场景取得的效果突破,使得其开始替换之前SOTA的RNN/LSTM结构,被大量采用。然后是2018年BERT的出现,在展现其出色的预训练模型效果的同时,也给使用NV GPU预训练BERT带来了比较大的挑战和压力。NV对此的应对是迅速推出了32G显存的V100卡型,并在设计针对训练场景的下一代GPU架构时对显存容量给予了更高权重。另一个标志性的事件是2020年OpenAI对外公布其在微软提供的V100集群上完成了包含175B参数的GPT-3模型的训练过程。一个有意思但无从考证的坊间传言是,BERT的核心开发者之前在微软工作,在加入Google后,借助Google提供的软硬结合的AI算力,在比较短的时间内推出了BERT,微软的高层决策者收到这个反馈之后,投入了一大笔钱购买了DGX的服务器:)。
软件层面,NV在2017年底发布了CUTLASS,为NV之外的开发者开发TensorCore程序提供了一个比较好的参考基础。2018年Q3以开源代码的形式发布了跨结点的NCCL通信库(这里的一个背景是,NCCL 1.X 一直是开源的,2.0 加入了多机分布式支持之后一度闭源了一年左右,后续框架开始自行支持 AllReduce on RDMA的压力倒推NV最终将NCCL 2.0开源,最终成为多卡通信的事实标准),并在当年发布了TensorRT Inference Server(之后被更名为Triton Inference Server)。2018年NV为TensorFlow加入了TF-TRT的支持(还记得在NV推出这个工作之前,当时我还在阿里,我的同事易凡同学因为支持业务的需要,正好也完成了一个类似工作的原型,看到NV发布了撞车的tf-trt以后,感觉也是比较微妙),显著提升了基于TensorFlow使用TRT布署能力的易用性。单设备优化之外,继续向AI系统全链路渗透。
另外值得一提的是在V100时代,大模型训练的需求变得更加旺盛。在V100之前的时代,大模型训练场景主要包括三类:一类是大规模人脸分类,因为其会有一个巨大的全连接分类层需要进行模型并行;一类是ResNet101这种极深类型的模型,需要引入类似pipeline并行的作法;还有一种就是大规模稀疏搜推广模型,通过将大规模embedding table分片存放解决。从V100之后,我们会发现大模型训练所需要的技术核心点其实并没有变化,只不过场景更多以NLP为主。其推手当属BERT和GPT-3这两大killer application性质的模型。2019年,NV对外发布了支持Megatron-LM的工作,这也是Megatron-LM的第一次对外亮相,当时的工作基于32GB V100 GPU来完成,并且只支持Tensor Parallelism,不支持Pipeline Parallelism。与此同时,也已经能够看到业界有更多围绕大模型训练相关的工作,比较有代表性的当属微软DeepSpeed团队的工作,这支团队通过引入精细的显存优化技术从另一条技术路径对大模型训练进行探索,这个工作也是以V100 GPU为主要硬件平台来完成的。其他相关工作包括微软的PipeDream(在NV GPU上完成),Google的GPipe(同时使用了NV GPU和TPU作为硬件平台)等。这篇回顾文章的重点不是讨论分布式训练技术,所以不再展开更多相关细节,这里的关键是,这些大模型训练工作背后的支撑硬件,几乎清一色以NV GPU为主,以及若干Google发起的工作基于TPU来完成。
另一个值得一提的是,MLPerf training 0.5在2018年12月份结果的发布,从此MLPerf training先后历经0.5、0.6、0.7、1.0、1.1五个版本的迭代(MLPerf inference历经0.5、0.7、1.0、1.1四个版本迭代)。迭代过程中,因为有了清晰的优化标的,NV得以资源聚集,整套软硬技术全栈也经历了巨大的变化飞跃。虽然MLPerf里的不少优化结果并不能直接迁移到生产环境里(参考这里的一些讨论),但其对于行业技术进步的促进作用还是毋庸置疑的。
在V100时代,随着Tensor Core对Conv/GEMM这类计算密集算子带来显著加速,访存密集算子以及kernel launch开销对端到端性能的影响变得也越来越大,也是从V100时代开始,自动算子融合技术开始受到更多关注。在这方面,Google XLA应该是最早进行相关探索的团队。Google在为TPU设计XLA编译器的过程中,发现里面的一些技术对于GPU和CPU也同样能够带来收益,于是将XLA也使能到了GPU上(XLA CPU的投入一直乏善可陈,在此不提)。时至今日,无论是NV GPU还是新兴的AI芯片公司,算子融合技术已经是一项must了。
6. Turing
Turing架构在2018年9月的SIGGRAPH正式发布。和Volta相同,Turing也基于TSMC 12nm工艺完成生产。从AI计算的角度,Turing主要面向推理场景,相较Volta其架构上的变化主要有:
7. Ampere
Ampere架构在2020年5月发布。这一代架构引入了比较多的变化:
更多细节可以参考这里的whitepaper。
在Ampere时代,NV在整机之外,进一步推出集群解决方案SuperPOD,以及基于SuperPOD搭建的超算集群Selene,SuperPOD和Selene支持了Megatron-LM以及MLPerf training的大量性能优化工作,也作为解决方案,成功交付给了若干客户。这也是一个蛮有意思的行业信号。
软件方面,Ampere时代一个比较重要的工作是TensorRT和PyTorch的集成Torch-TensorRT,不过这个工作仍然面临一个大的挑战,那就是PyTorch的模型写法过于灵活,存在不少无法成功导出TorchScript的模型写法(比如NLP场景中decoding部分的循环生成结构),对于这部分如何进行高效自动推理加速,目前仍然是一个open的问题。
另一个NV GPU上软件相关有代表性的工作是对dynamic shape的支持,关于有效处理dynamic shape,大约从三年前业界就有过过呼声。TensorRT目前仍然是通过padding的策略来解决dynamic shape的问题。阿里在两个月前开源的BladeDISC是一个基于MLIR针对dynamic shape提供的E2E的AI编译解决方案,不过完备性还有待完善。Amazon的Nimble工作则基于TVM技术栈探索了另一条解决dynamic shape的技术方案。
无论是Torch-TensorRT,还是对dynamic shape的支持,都反映出对AI开箱即用性能优化的重视,这在一定程度上,也和AI当前更多进入到行业应用落地期的阶段有关。
模型方面,Ampere自2020年推出以后,直到现在,能够看到AI领域主要的关注焦点集中在大模型训练上,除了GPT-3,BERT类模型以外,MoE模型也受到了一定关注,相应地也催生了一系列工作,包括Google TPU之上的Gshard系列工作,GPU上的DeepSpeed-MoE工作等。但是大模型到底能够为业务层面带来多少实际收益,其收益是否足以justify新增的算力投入,是否需要更高效环保的模型设计方法以及AI算力提供方案,目前仍然是一个open的问题。
以上结合AI系统演进的视角,回顾了从Fermi到Ampere共7代架构,期望随着未来Ampere-Next以及Ampere-Next-Next的发布,我们可以再添加入相关的内容,一起经历见证AI系统领域和NV GPU架构的共同演进发展。
这篇回顾涉及到了比较长的时间跨度,比较宽的技术区域,整个回顾内容,有些是我亲身经历的,有些是我基于获取到的一手或二手信息提炼的,还有一些则是根据网络上的资讯进行交叉校验后汇总出来的,难免会有疏漏或不够准确之处,也欢迎同行朋友的批评指正。
文章撰写过程中感谢一些朋友指出其中错误以及提供建议,包括 :