You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
14 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 09 | Nvidia 与AI 芯片:超越摩尔定律
你好,我是邵巍。
我曾经在一个财经新闻中看到过一段话“以纳米尺寸工艺制造的芯片是人类自工业革命至今能够量产的最精巧、最神奇的造物。目前高性能芯片的运算能力早已远超人类且正在源源不断地帮人类把人工智能AI这种过往只存在于科幻小说和科学家们头脑中的概念转化为现实。”
这一段话我知道搞财经投资的朋友们有自己的目的但是他们确实把半导体的行业之光写得非常文艺也非常到位。以纳米尺寸工艺制造芯片那是我上一讲分享的台积电的功绩而把AI、科学家头脑中的概念转化为现实的这就是我今天要好好讲讲的英伟达。
另外要提一下财经投资的朋友们可不是只动嘴巴夸夸英伟达他们真的下场投资。如果论营收看2021年4月中旬的数字Intel是英伟达的近5倍但是如果论市值英伟达是Intel的1.5倍。为什么凭什么营收算是行业内部给予一个公司的评价真金白银的买产品而市值就是大众对于公司的社会价值的肯定那么大众肯定的是什么是跟我一样看到的是超行业、超摩尔定律的速度还是大众对于AI这个大浪潮更有想象力
今天我就给就你讲一讲英伟达这家公司是如何以GPU开局并逐步在AI领域占据绝对优势的。
## GPU开局
让我先从英伟达的主要产品说起。看看下面这张英伟达财报中的表格2020年英伟达收购成功Mellanox表格上“Compute&Networking”那一行的收入就来源于此如果不算这部分英伟达就是一个GPU的公司。
![](https://static001.geekbang.org/resource/image/99/97/99dfc161f643050bb26a9c74264f9197.png)
我在基础知识篇给你讲过了什么是GPU通俗一点理解GPU就是加速绘图的处理器。
关于绘图的任务我可以给你讲讲大概的原理。现在的显示器分辨率是1080p就是说这个显示器上的所有的图形都是由水平方向1920行垂直方向1080列的光点矩阵组成算一下1920x1080也就是207万个光点组成。
这些光点会被记录成一个二维数组就是一张图。每一个光点专业上称为像素是由红绿蓝三种基本颜色调和而成。而这三个颜色都是以0-255之间的一个数字表示。也就是一个像素就是3个数字例如一个红色的像素就是25500。那么要生成一张红色的图在1080p的分辨率下就需要提供207万个25500红色像素的数组。而且这只是一张静态的图像如果是视频每秒有60帧图像那一秒就需要处理上亿个像素了。
其实在GPU处理图像特别是3D图像的时候倒不是一个像素一个像素处理的而是把3D图形转换成可以在2D屏幕上展现出来的由顶点构成的无数个三角形。然后根据每个三角形的三个顶点把这个三角形所覆盖区域换算成像素然后再做颜色效果基本上就得到了屏幕上的最终效果。
下面是用GPU处理一个3D桌子图像的绘制示意图你大概可以理解这个处理过程。
![](https://static001.geekbang.org/resource/image/3d/76/3d0202b2d306e9dyyfeb3041f41a5276.jpeg)
另外我放了一个OpenGL做渲染的处理流程图。OpenGL是一个渲染图形的跨语言、跨平台的应用程序编程接口API。所谓的渲染就是绘制图形的主要操作。
![](https://static001.geekbang.org/resource/image/3d/88/3d8ed525c045c1dc5005757258c8d088.png)
从我上面说的图像处理的原理可以看到绘图任务需要并行处理海量数据这对擅长做串行数据处理的CPU来说既不合适又负担很重。于是在1980-1990年代图形加速卡这种外设开始出现。当1993年黄仁勋创建英伟达的时候市面上有100多家图形加速相关的公司。这是一个可怕的在性能、标准、市场层面的混战当时的市场主要是游戏和PC市场。
当然PC和游戏市场的残酷也给了英伟达两个非常宝贵的经验第一超摩尔速度就是被业界称为“黄氏定律”的“半年更新一年换代”第二就是软硬件之间的标准的重要性。
在游戏市场英伟达和竞争对手竞争的早期微软的Direct X可以说是能左右游戏开发生死的翻云覆雨手它是一套优秀的应用程序编程接口既为软件开发者提供与硬件的无关性又为硬件开发提供策略。说白了它就在做软硬件之间的标准。
这也是英伟达花10年苦功投入CUDA软件生态建设把软硬件之间的标准移到了自己一侧的动力。关于CUDA我下面会讲到。
对于GPU开局这部分内容当然我的重点不是分析传统的GPU市场老实说回顾英伟达的公司历史至少从股价市值的方面市场给予了GPU这个产品正常认可度。在2016年之前英伟达的市值和跟营收曲线基本上相符。**GPU这个产品存在的价值就是从CPU上卸载图形处理工作是依附在PC和游戏机这两个市场的。因此长期以来英伟达是被放在Intel这个坐标系下评价的。****这也是为什么****如果固守PC和游戏机这两个已经成熟的市场英伟达的发展有限。**
英伟达的转折点或者用理论一点的术语描述英伟达的第二曲线是我下面要说的GPGPU与CUDA。
## GPGPU点亮并行计算的科技树
2007年英伟达首席科学家David Kirk非常前瞻性地提出GPGPU的概念把英伟达和GPU从单纯图形计算拓展为通用计算强调并行计算鼓励开发者用GPU做计算而不是局限在图形加速这个传统的领域。GPGPU前面这个GP就是General Purpose通用的意思。
而且英伟达这样一个芯片公司以12分的努力和投入开始建设CUDA这样的软件框架。GPGPU和CUDA让英伟达从计算机图形学开始走出来把并行计算这个重要任务记在自己的名下。
这里我要重点说一下CUDACompute Unified Device Architecture统一计算架构CUDA不仅仅是一个GPU计算的框架它对下抽象了所有的英伟达出品的GPU对上构建了一个通用的编程框架**它实质上制定了一个GPU和上层软件之间的接口标准**。
前面有提到在GPU市场的早期竞争中英伟达认识到软硬件之间的标准的重要性花了10年苦功投入CUDA软件生态建设把软硬件之间的标准变成自己的核心竞争力。英伟达可以说是硬件公司中软件做得最好的。
同样是生态强大Wintel的生态是微软帮忙建的ARM-Android的生态是Google建的而GPU-CUDA的生态是英伟达自建的。
这个标准有多重要?这么说吧,一流企业定标准,二流企业做品牌,三流企业做产品。**在所有的半导体公司中制定出软件与硬件之间的标准而且现在还算成功的只有3个一个是x86指令集一个是ARM指令集还有一个就是CUDA了。**
2007年英伟达推出了基于CUDA的GPGPU beta版之后公司的所有GPU都支持CUDA因此其实GPGPU和GPU可以完全通用。各种编程语言的工程师纷纷用英伟达的GPU进行开发大大增强了GPU的开放性和通用性。而且因为英伟达是用GPU进行并行计算这个领域的第一因此所有这个领域的软件、应用都支持了CUDACUDA实际上成为并行计算的事实标准。
![](https://static001.geekbang.org/resource/image/31/2c/313d469d57e6b92eyy03dee63614a72c.png)
GPGPU提出之后在提供算力这个方面上每个英伟达的GPU都有了一个统一的框架。英伟达在算力和存储带宽两个方向上对比CPU都以超10倍甚至100倍的优势领先如上图。GPU相对CPU的TOPS per Watt花费每瓦特电能可以获得的算力的差异竞争优势它的本质就是将晶体管花在计算上而不是逻辑判断上。
在提出GPGPU和做CUDA的时候英伟达面向的科学计算就是冲着HPC和超算这个市场去的。也确实挺成功的。2020年超级计算机TOP500更新榜单可以看到TOP10的超级计算机中有8台采用了英伟达GPU、InfiniBand网络技术或同时采用了两种技术。TOP500榜单中有333套三分之二采用了英伟达的技术。
但是HPC和超算市场有限。有易用统一的CUDA编程标准有算力和存储带宽都远超CPU的计算能力有明确的技术优势万事具备英伟达的腾飞就差一个应用面更广大的通用问题了。
## AI的风口下英伟达腾飞
其实,**悬而未解的重要通用问题**是一直存在,这就是人工智能。如果说计算机科学有几大前沿方向,人工智能一直排在前列。关于人工智能,整个计算机行业的人,有过几轮的努力,很多不同的研究方向,其中一个方向是机器学习,而深度学习就是机器学习的一个最重要最成功的方式。下面一张图,把人工智能、机器学习和深度学习的关系表明了。
![](https://static001.geekbang.org/resource/image/3a/4f/3a761e1818a092bd03f524f884d0514f.png)
深度学习实现人工智能,就是拿神经网络模拟大脑,把推理判断过程转化成简单的,可以“训练”的数学方程。我们就以下面的从照片中识别“猫”的这个案例解释一下:
![](https://static001.geekbang.org/resource/image/93/67/93597f17ee288dc0abde0048a4d0dc67.jpg)
首先,准备一个充满数学公式的深度神经网络,如下图,然后提供大量猫的图片给这个网络做训练,这个网络通过层层计算被训练识别这些图片中哪些是猫,哪些不是。当这个网络训练好了,再拿一张新图片过来,这个网络就能推理出来,这张图片是不是猫。
![](https://static001.geekbang.org/resource/image/ef/e5/ef3aa1f7acbc7e5761061cf528b86de5.png)
深度学习依赖于数学和统计学计算。深度学习中的用到的各种神经网络例如人工神经网络ANN、卷积神经网络CNN和循环神经网络RNN都是典型的并行结构每个节点的计算简单且独立但是数据庞大通常深度学习的模型需要几百亿甚至几万亿的矩阵运算。因此深度学习的成功有两个要素海量的训练数据高速的并行计算能力。
几百亿甚至几万亿的矩阵运算这一听就很GPU因为GPU在进行图像渲染时就是做大量的矩阵乘法运算。
每秒进行大量的矩阵乘法运算,这就是图形渲染和深度学习统一的地方。
统一的问题,给出统一的答案:英伟达 GPU。
搞算法的科学家在用CPU的年代里无所作为于是努力改进自己的算法希望能少用一点计算但并没有太大效果。后来有人用上了GPU算法不变算力提升10倍效果立马就不一样了。混沌大学创办人李善友总是说要注意差10倍的那种变量一个方向上出现了差10倍的一个变量一定有大事要发生了
我非常赞成中国著名AI专家、格灵深瞳公司CEO赵勇博士的评价有人说是深度学习成全了英伟达的GPU其实我认为反而是GPU成全了深度学习。
赵勇博士讲得很清楚了我直接把原话放在这里“如果没有英伟达的CUDA平台科学界证实深度学习巨大潜力的时间不知道还要推迟多久。更难能可贵的是GPGPU技术使得在PC级别的计算机上进行高密度的高性能运算成本大幅降低以至于一个普通科研人员的台式电脑都有可能部署上万个并行处理内核。这使得深度学习技术迅速地在科技界发展和普及起来。可以这么说如果没有GPGPU坚持研究了多年的神经网络算法的欣顿教授们恐怕还得继续在学术界沉默不少年。”
之前我们提到过硬件行业的3次风口第一次PC第二次手机与移动互联网第三次就是AI+5G+IoT。
英伟达在整个PC时代里它是配角也尝试过手机最后黯然离场。但是AI的大风刮来英伟达成为人工智能这场大戏的主角英雄。为什么它能成为主角因为它解决了CPU没有解决好的两个问题并行计算、高数据吞吐能力。而且它还给自己建造了一个护城河并行计算的软硬件之间的事实标准CUDA。
后来的所有AI芯片各种xPU们在落地之前做的第一件事就是匹配CUDA。而每一个流行起来的学习算法框架底层也全部支持了CUDA。AI的新算法新框架越活跃参与AI的开发者越多CUDA的优势就越突出。
英伟达一直保持相对于CPU的10倍的计算力这个10倍速变量让它成为一个合适问题的关键答案也完美地验证了超越摩尔定律的都是好公司的业界通识。
当然作为从业人士我其实是想提一个小悖论的。GPU的计算性能比CPU高10倍如果人类社会的任务比例是逻辑计算就是适合CPU那些任务是1数据计算是10的话CPU和GPU的比例是1:1英伟达的最高点就是跟Intel同规模。只有逻辑计算是1数据计算是100CPU和GPU的比例才是逆转的1:10英伟达才会有Intel的10倍规模。你可以理解我说的么欢迎给我留言我们一起讨论。
## 总结
最后,我来给你总结一下英伟达这家公司。同样有几个要点:
1. 现在市值超越Intel的英伟达是从做图形加速的GPU开始的早期GPU一直作为CPU的加速器存在。
2. 但是英伟达用CUDA建立了并行计算的事实标准无论是科学计算还是计算机图形科学、计算机辅助设计CUDA都向上构建了最底层的编程框架向下抽象了英伟达的所有GPU微架构。自此英伟达从一个做产品的公司进阶为做标准的公司。
3. GPU和机器学习相互成就替人类打开了人工智能方向的一扇全新的大门人类世界对英伟达的回报就是超出业界预计的高市值。
这就是英伟达,一个半导体行业的老兵,三步封神之路。
## 思考题
你觉得英伟达的护城河深么这波AI的大风能把英伟达送到多高那些号称解决AI问题的xPU有优势么欢迎在评论区给我留言。