李飞 作者

英伟达的AI芯片霸主之路!

随着人工智能发展如火如荼,我们看到Nvidia的GPU成为了人工智能时代的基础设施,为人工智能服务提供必不可少的算力。本文为大家回顾Nvidia走上人工智能加速硬件主导者位置的历程,希望能给大家带来一些启示。

Nvidia缘起:PC游戏时代

Nvidia的诞生还要追溯到多媒体PC机时代。在上世纪90年代,PC机走向了多媒体时代,其中3D游戏又是多媒体时代最闪耀的明星。为了能加速3D游戏的运行,图像处理芯片就成了多媒体PC时代的一种热门新品类。最初,加速3D游戏运行在常规的显示卡之外还需要一张3D加速卡,而3D加速卡的首创者——3dfx也凭借着其Voodoo系列加速卡成为了当时的3D加速引领者。
看到了3D显示这个巨大机会的并不只3dfx一家公司。Nvidia于上世纪90年代中成立,公司的目标市场就是显示市场。1998年,Nvidia推出了TNT系列显卡,拥有了与3dfx同台竞技的资格。之后,3dfx的后几代显卡产品存在各种问题,而Nvidia却在2000年顺势拿出了同时支持3D加速和transformation and lighting (T&L,指一系列图像处理中需要的坐标和光照变幻运算)的GeForce系列显卡,在性能上大幅领先3dfx,并最终奠定了其游戏显卡领域的霸主地位。事实上,在GeForce之前,显卡并不负责繁重的T&L计算,而必须由CPU来做这些运算;GeForce是第一个用显卡支持T&L来大幅提升系统性能的显卡,并且Nvidia认为显卡支持了之前必须由CPU来完成的工作,因此提出了GPU这个概念。可以说GeForce是Nvidia最重要的产品之一,同时我们也可以从GeForce的诞生看到Nvidia并不是拘泥于产品传统品类定义的公司,而是会积极地拓宽其产品的应用范围。这样的公司基因也直接造就了之后Nvidia在人工智能领域的领先地位。

GPGPU和CUDA:Nvidia最好的一笔投资

在推出GPU之后,Nvidia顺利地占领了游戏显卡市场的主导地位。游戏市场虽然不小,但是其增长天花板也较低。因此,Nvidia也在尝试各种不同的市场机会。

在2000年左右,学术界对于使用GPU做通用计算(GPGPU)产生了兴趣。当时,主要面向执行通用算法的CPU是执行科学计算的主力,但是CPU为了能在通用算法上都有较好的性能,因此很多芯片面积事实上用在了片上内存和分支预测等控制逻辑,而真正用于计算的单元并不多。相反,GPU架构中的控制逻辑较为简单,绝大多数芯片面积都用于渲染、多边形等计算。学术界发现,科学运算中的矩阵等计算可以很简单地映射到GPU的处理单元,因此能实现非常高的计算性能。

当时,GPGPU最主要的瓶颈在于难以使用。由于GPU是面向图像应用而开发,因此要在其编程模型中支持通用高性能计算并不容易,需要许多手工调试和编码,因此造成了很高的门槛,能熟练使用的人并不多。另一方面是厂商对于GPGPU应用的态度。事实上,当时GPGPU的研究主要在学术界,在工业界并没有很多人清楚GPGPU未来能有多少价值,不少公司虽然也有研究GPGPU的团队,但是大多仅仅是做一些评估和尝试性的工作,并没有认真打算大规模应用。

Nvidia对于GPGPU却是抱着另一种态度。在2006年,Nvidia推出了Tesla架构。在这个架构中,Nvidia一改之前使用矢量计算单元做渲染的做法,而是把一个矢量计算单元拆成了多个标量计算渲染单元,并称之为“unified shader”。这样一来,Tesla GPU的渲染单元除了在渲染性能更强之外,也更适合做通用计算了。在2007年,Nvidia顺势推出了CUDA系列编程环境。CUDA是GPGPU领域的一个创举,通过CUDA可以大大降低用GPU做通用计算的难度,因此大大降低了GPGPU应用的门槛。

究竟是Nvidia之前就策划要做GPGPU,因此才推出Tesla架构以及CUDA,还是Nvidia在推出Tesla架构之后为了充分发挥其潜力而顺便推出CUDA,我们今天不得而知。但是,我们能看到的是,CUDA首先在GPGPU领域引起了很大的反响,因此在第二年有了开源版本的OpenCL来在其他GPU上实现类似的功能;另一方面,我们看到Nvidia在GPU领域最大的竞争对手AMD在当时对于GPGPU并没有太多动作,以至于一年后的OpenCL事实上是苹果而非由AMD发起的。在当时,苹果希望能在各种设备(尤其是移动设备)上充分利用GPU来完成计算,因此发起了OpenCL组织,参与的公司除了苹果之外还有ARM、AMD、Nvidia等。然而,为了兼容性考量,OpenCL并无法在所有GPU上都实现最优的性能,因此相比于专注于给自家GPU做优化的CUDA来说性能差了一截。AMD在当时并没有自己提出一个与CUDA争锋相对的协议而只是选择加入OpenCL组织也证明了当时AMD对于GPGPU的观望态度。

AlexNet + Nvidia GPU引领了人工智能风潮

时间走到了2012年,Nvidia在经过移动市场的失望后,迎来了新的蓝海市场。2012年的重要性在于,深度学习开山鼻祖之一的Geoff Hinton的学生Alex Krizhevsky成功训练出了深度卷积神经网络AlexNet,并凭借该网络在图像分类识别领域大幅提升了性能(15%的错误率,比第二名真正高出了十个绝对百分点),从而成为人工智能的标志性事件。

在2012年之前,绝大多数图像分类任务都是使用类似支持矢量机(SVM)这样的经典算法实现。SVM这样的算法非常适合应用在数据量较少的应用中。然而,随着互联网时代的来临,人们积累的数据量远远大于之前的时代,而在拥有大量数据的情况下,神经网络就成了理论上更好的选择。然而,在当时训练一个深层神经网络还存在一个挑战,就是算力问题。使用普通的CPU在ImageNet上训练一个深度学习网络需要数年的时间,因此无法实用。而Alex Krizhevsky的创举在于使用Nvidia GPU成功训练了一个性能有突破性提升的深度神经网络,从而开启了新的人工智能时代。

AlexNet性能的大幅提升使得人工智能图像分类等有大量实际应用的场景达到了可用的性能,而Nvidia GPU则伴随着深度学习模型训练和推理所需要的大量算力成为了人工智能时代的新基础设施。这也可以说是Nvidia数年前在GPGPU领域投资所收获的回报:如果没有CUDA这样的高性能GPGPU编程工具,或许AlexNet就无法被训练出来,而人工智能时代可能就无法被开启。而在之后,随着深度学习网络热潮的兴起,高校和工业界在越来越多的场景使用深度学习——目前在图像、语音、自然语言处理推荐系统等大量场景深度学习都已经落地。随之而来的是对于GPU算力的进一步需求,而Nvidia也是顺势而为,在最近几年接连推出为了人工智能而优化的GPU以及相关配套软件资源(用于推理的TensorRT,基于CUDA的高性能深度学习加速库CuDNN,CuBLAS等等),从而让自己在人工智能时代的地位更加稳固。

反观AMD,事实上由于AMD一直处于追赶阶段,因此迟迟不敢下决心去做一些新的尝试。当年GPGPU领域AMD投入不足,导致Nvidia的CUDA占据了先机。在性能上,AMD所依赖的通用OpenCL性能据调查比起CUDA要差30%以上。更关键的是AMD的人工智能开发者生态一直做不起来,因为OpenCL性能差且使用不方便,导致使用OpenCL的开发者少,开发者少就更少人能为OpenCL开发方便的接口和共享设计资源,这进一步导致OpenCL开发社区人气不足,有GPGPU开发需求的开发者都会把Nvidia的CUDA作为其第一选择。在GPU硬件上,直到Nvidia已经推出专门针对人工智能优化的TensorCore之后,AMD对于要不要在GPU上加入对人工智能的支持仍然迟疑不决,一直到2018年才推出对人工智能的相关支持,因此导致在人工智能领域远远落后了。最后必须指出的是,一直以来AMD的思路都是性价比,而人工智能的主要客户却是对于价格不怎么敏感的企业客户,因此AMD之前的低价战术也没办法打动这些客户。

Nvidia人工智能的今天和未来

目前,Nvidia已经占据了人工智能算力领域的主导位置。在数据中心领域,即使有一些初创公司推出训练和推理加速芯片,但是想要取代Nvidia需要相当长的时间。首先,大规模部署芯片对于产品的可靠性有相当高的需求,而且分布式系统是一个系统工程,需要芯片在各类指标上(不只是算力,还包括通信,接口带宽等)都达到优秀的指标,光这一点就需要初创公司相当多的时间去打磨。此外,Nvidia更高的壁垒在于开发者生态,需要开发出一个易用的编程模型和相关编译器的难度并不亚于设计芯片,而要孵化开发者生态则需要更多的时间。我们认为,至少在未来3-5年内,Nvidia在数据中心的地位难以被撼动。

但这并不意味着Nvidia在人工智能时代就可以高枕无忧。Nvidia 的软肋仍然在于其移动端——随着人工智能从云端逐渐走向边缘和终端,边缘和终端类的AI加速芯片或许是其他公司的机会。Nvidia之前推出的终端/边缘类产品并不算特别领先或成功,例如Jetson系列终端GPU的能效比并不领先,芯片架构也是沿用数年前的设计。我们认为,AI加速在终端的市场份额可能会占据总体AI芯片市场不小的份额,如果Nvidia无法抓住终端AI市场,那么其最终在整个AI市场的份额可能会被局限在云端数据中心。

半导体行业观察
半导体行业观察

最有深度的半导体新媒体,实时、专业、原创、深度,30万半导体精英关注!专注观察全球半导体最新资讯、技术前沿、发展趋势。

产业AI芯片英伟达
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

图像处理技术

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~