第九章:并行计算与GPU:当你的显卡变成超级计算机
在我们的时空旅行者刚刚从第八章“并发地狱”的厨房噩梦中1死里逃生、浑身沾满“死锁”和“竞争条件”的污泥时,我们必须抓紧时间,带他参观一个全新的“厨房”。这个新厨房不仅更大,而且……更愚蠢。但正是它的这种“愚蠢”,最终拯救了计算世界,并(完全出于偶然)点燃了人工智能的革命之火。
欢迎来到并行计算的疯狂世界,一个由游戏玩家的贪婪、科学家的“黑客”行为和一种被称为GPU的、被误解的硬件共同打造的世界。
9.1 免费午餐的悲惨终结,以及我们为何一头撞上“功率墙”
对于我们这位从80年代归来的“恐龙级”程序员来说,他记忆中最美好的黄金时代,莫过于英特尔(Intel)那有如节拍器般精准的“Tick-Tock”战略。在那个(现在看来)田园牧歌般的时代,程序员是全宇宙最幸福(也可能是最懒惰)的职业2。
为什么?因为你什么都不用做。
你刚写完一个慢得像拖拉机一样的烂程序。没关系,你不需要优化它。你只需要去度个假,等上18个月,英特尔就会发布一款速度翻倍的新CPU3。摩尔定律(Moore's Law)就是你的专属“免费午餐”2。你的烂代码会自动变得飞快,你的老板会给你加薪,计算的黄金时代似乎将永远持续下去。
然后,大约在2005年,午餐被(物理学)无情地撤走了。
英特尔的CPU路线图上那些曾经承诺的、令人垂涎的10GHz、15GHz芯片神秘地消失了4。CPU的主频(Clock Speed)——那个自个人电脑诞生以来就一直在飙升的数字——突然撞上了一堵看不见的墙,然后停了下来5。自那以后,十几年过去了,我们今天的高端CPU主频依然可怜地徘徊在4-5 GHz。
发生了什么?我们撞墙了。一个非常、非常热的墙。工程师们给它起了一个毫不客气的名字:“功率墙”(The Power Wall)4。
要理解这堵墙,我们必须揭露一个隐藏的秘密:我们所热爱的“免费午餐”的真正厨师,其实并不是摩尔定律本人。摩尔定律只承诺了一件事:芯片上(塞得像沙丁鱼罐头一样的)晶体管数量,每两年(大约)会翻一番3。但这并没有保证性能会免费提升。
真正的魔术师,是摩尔定律的好基友,一个名叫罗伯特·登纳德(Robert Dennard)的家伙在1974年提出的“登纳德缩放比例”(Dennard Scaling)6。
登纳德定律是一个近乎于“炼金术”的物理奇迹7。它指出:
- 当你把一个晶体管的尺寸缩小30%(即乘以0.7);
- 它的面积就会缩小大约51%();
- 同时,你可以(也必须)把驱动它所需的电压也降低30%(乘以0.7)。
现在,魔法发生了:芯片的功耗密度(Power Density,即每平方毫米散发的热量)保持不变6。
这意味着,在不增加功耗或散热的前提下,芯片制造商每过一代,就可以(A)塞给你两倍的晶体管(摩尔定律),并且(B)将时钟频率提高40%(登纳德定律)6。
这就是“免费午餐”的真正配方:更多的晶体管 + 更高的频率 = 免费的性能飙升。
这个魔法在2005年到2007年左右,当芯片工艺进入90纳米乃至65纳米节点时,彻底失效了6。晶体管变得如此之小(今天我们谈论的是3纳米,比DNA链还窄3),以至于一个被称为“量子隧穿”(Quantum Tunneling)的幽灵出现了。
说人话就是:“漏电”(Leakage Current)8。
电子开始不守规矩,它们会直接“穿过”那些薄得可笑的绝缘壁。因为这种无处不在的“漏电”,工程师们再也无法按比例降低电压了8。
灾难降临了。
我们来复习一下高中物理:功耗(P)约等于电压的平方(V²)乘以频率(f)()9。
在登纳德缩放比例的黄金时代,(电压)在下降,抵消了(频率)的上升。
但在“后登纳德时代”,(电压)被卡住了8。如果你还想继续提高(频率),功耗(P)就会指数级飙升6。
你的CPU会变得像个小型的电烤炉。英特尔的工程师们4确实可以给你造出10GHz的芯片,但它会在你启动Windows之前,先把你的主板、桌子和方圆五米内的所有东西一起熔化掉10。
这就是“功率墙”4。单核性能的狂飙之路,被热力学定律(Law of Physics)4彻底堵死了。
这场危机,迫使整个行业做出了一次绝望的U型转弯。英特尔和AMD的工程师们彼此对视,耸耸肩说:“好吧,既然我们不能让一个核心变得更快,那我们就给你更多的(慢)核心吧。”4
于是,双核、四核、八核CPU诞生了。硬件工程师们把“免费午餐”的账单,连同“多核危机”,一起扔到了软件工程师的桌子上。这,就是第八章“并发地狱”1的真正起源。
9.2 厨房噩梦(重温):一个至关重要的技术澄清
在我们寻找“功率墙”危机的解药之前,我们必须暂停一下,像最讨厌的学究一样,来厘清两个在行业里被(至今)疯狂滥用的词汇:
- 并发 (Concurrency)
- 并行 (Parallelism)
这两个词在中文里经常被混用,但在技术上,它们描述的是两件截然不同的事情。搞混它们,就等于分不清“菜谱”和“厨房”。
为了让我们的时空旅行者彻底理解这一点,我们将使用两个(在Stack Overflow上被点赞了455次的)经典比喻11:
比喻一:收银台11
- 并发 (Concurrency): 想象一个生意火爆的快餐店,有两条队伍,但只有一个收银员11。这个收银员(一个CPU核心)精力充沛,他在两条队伍(两个线程)之间飞快地切换。他一会儿帮A队的顾客点餐,一会儿帮B队的顾客结账。在任何一个精确的瞬间,他都只在为一个人服务。但是,通过这种快速的上下文切换,看起来(illusion)12两条队伍都在稳步推进。
- 并行 (Parallelism): 还是这家店,老板终于(在撞上“功率墙”之后)雇了第二个收银员。现在有两条队伍,两个收银员11。在同一个精确的瞬间,两个收银员(两个CPU核心)真正地同时在为两个人服务。
比喻二:厨房13
- 并发 (Concurrency): 想象一个“地狱厨房”里的一位米其林大厨1,他试图同时烹饪三道菜13。他(一个单核)一会儿切(任务A)的蔬菜,一会儿(切换去)搅(任务B)的酱汁,再一会儿(切换去)检查(任务C)的烤箱13。他只是在切换,他并没有同时做三件事。
- 并行 (Parallelism): 想象一个拥有三位厨师(多核)的厨房13。在同一时刻,厨师A在切菜,厨师B在搅酱汁,厨师C在看烤箱。这才是真正的同时发生13。
结论
- 并发是一种逻辑结构(Logical Structure)13,是关于管理(managing)和组织多个任务的艺术。你可以在一个单核CPU上(通过时间分片)实现并发。
- 并行是一种物理现实(Physical Execution)13,是关于同时执行(simultaneous execution)多个任务的蛮力。你必须拥有多个物理核心才能实现并行。
第八章的“并发地狱”1——那些死锁和竞争条件——是那位“米其林大厨”在试图管理多道菜(并发)时,不小心用(任务A)的刀砍了(任务B)的手(共享内存冲突)的逻辑噩梦。
而“功率墙”4告诉我们,我们不能让这个大厨转得更快,我们唯一的出路,就是雇更多的大厨(并行)。“并行”硬件(多核CPU),是我们被迫用来解决“并发”噩梦的唯一解药。
但很快,程序员们就发现,管理(比如)四个米其林大厨(四核CPU)一起做一道国宴,其难度比管理一个大厨高出了不止四个数量级。
9.3 天降神兵:米其林大厨(CPU) vs. 麦当劳厨房(GPU)
管理几个(MIMD架构的)“米其林大厨”协同工作是如此困难,以至于程序员们开始寻找别的出路。就在这时,一个被忽视已久的、藏在电脑机箱角落里、每天只顾着玩游戏的“小工”,突然举起了手。
它就是 GPU (Graphics Processing Unit),图形处理器。
为了理解GPU如何改变了一切,我们必须深入理解它和CPU在“厨房哲学”上的根本分歧。
主角A:CPU (中央处理器)
- 隐喻: 米其林三星大厨1;少数几个大师级工匠14;一个全能的中央厨房15。
- 架构: 它拥有很少(比如4、8或16个)的核心,但每一个核心都是一个超级天才16。
- 专长: 低延迟(Low Latency)17。它的设计目标是立刻响应你的需求。当你点击鼠标时,它必须(在纳秒内)放下手头的一切,立刻处理这个“点击”事件。它擅长处理复杂的、充满分支和判断的串行任务。
- 工作模型:MIMD (Multiple Instruction, Multiple Data,多指令多数据流)18。这是关键。它的每一个核心(大厨)都是独立的、聪明的。核心1可以(在同一时间)执行Word(指令A)处理你的文档(数据A),而核心2正在执行浏览器(指令B)播放音乐(数据B)。
主角B:GPU (图形处理器)
- 隐喻: 一整个麦当劳厨房1;一个堆满了CNC机床的巨型工厂14;一个专门的披萨厨房15;或者,一个拿破仑时代的线列步兵团19。
- 架构: 它拥有成千上万个(!)核心,但每一个核心都是一个只会做一件事的“傻瓜”20。
- 专长: 高吞吐量(High Throughput)20。它完全不在乎“延迟”。它不在乎一个汉堡要多久才能煎好;它只在乎一小时内能同时煎好一万个汉堡。
- 工作模型:SIMD (Single Instruction, Multiple Data,单指令多数据流)18。这是GPU的灵魂。它不是MIMD。它更像一个(控制单元)对它手下1024个“工人”(核心)同时大喊一声:“开火!”(Single Instruction),然后这1024个工人在同一时刻、用完全相同的方式,处理他们面前的各自的数据(Multiple Data)19。
为什么GPU能有“成千上万”个核?
这并不是因为NVIDIA掌握了什么外星科技。答案21很反直觉:因为GPU的核心更“笨”。
一个CPU核心(米其林大厨)是MIMD架构,它需要自己专属的、极其复杂的控制单元、指令解码器、分支预测器和巨大的缓存(L1, L2)16——它是一个独立的大脑。
而GPU的几百上千个核心是SIMD架构,它们共享同一个控制单元(那个喊“开火”的军官)21。它们是不独立的。
这意味着,在同一块宝贵的硅片上,你用来制造一个“米其林大厨”(MIMD核心)所花费的晶体管预算,足以制造出几百个“麦当劳工人”(SIMD核心)。
GPU的“核多”不是因为它更先进,而是因为它更简单。它用剥夺每个核心“自由意志”(独立执行指令的能力)的代价,换来了管理成千上万个核心的可能性。
我们把这个对决总结为下表:
表格 9.1:厨房大对决:CPU vs. GPU 架构哲学
| 特性 | CPU (米其林大厨) | GPU (麦当劳厨房) |
|---|---|---|
| 核心隐喻 | 几个(4-16个)大师级工匠14 | 成千上万(1000s+)的流水线工人20 |
| 核心数量 | 少而精16 | 多而简21 |
| 设计哲学 | 低延迟 (Latency)17 | 高吞吐量 (Throughput)20 |
| 架构模型 | MIMD (多指令多数据)18 | SIMD (单指令多数据)18 |
| 工人智能 | 极高(可处理复杂、分支的串行任务) | 极低(只能和邻居一起执行同一条简单指令) |
| 典型任务 | 运行操作系统、分支判断、数据库 | 图像渲染、矩阵乘法、暴力破解22 |
这个为“高吞吐量”而生的“麦当劳厨房”,是如何钻进千家万户的电脑里的呢?
9.4 一个游戏宅的遗产:GPU是如何被《雷神之锤》(Quake)“逼”出来的
我们的时空旅行者会感到困惑:“等等,在我那个年代(80年代),显卡(比如VGA或EGA)就是个愚蠢的帧缓冲器(framebuffer),它唯一的任务就是点亮屏幕上的像素。它怎么就变成一个‘巨型工厂’了?”
答案是:游戏玩家。更具体地说,是他们对“酷炫”的无尽追求。
在90年代初,CPU(米其林大厨)还是大包大揽,它负责处理一切事务,包括渲染图形。像《德军总部3D》(Wolfenstein 3D)和《毁灭战士》(Doom)这样的开创性游戏,其图形完全是由CPU一个像素一个像素“算”出来的,这个过程被称为“软件渲染”(Software Rendering)23。它们甚至不是“真3D”,而是一种巧妙利用2.5D技巧(Raycasting)的障眼法24。
然后,1996年,大地震发生了。
id Software的传奇程序员约翰·卡马克(John Carmack)25和他的同事迈克尔·阿布拉什(Michael Abrash)26发布了《雷神之锤》(Quake)26。
《雷神之锤》不是障眼法。它是PC上第一个真正的、全多边形的、实时的3D世界26。它是一个技术奇迹,也是一个性能怪兽。
它对CPU(米其林大厨)的浮点运算能力提出了毁灭性的要求27。CPU被要求在1/30秒内,既要处理游戏逻辑(AI、输入、网络),又要(在没有“工厂”帮助的情况下)独自计算屏幕上每一个多边形的位置、光照和纹理。
CPU(大厨)当场崩溃。
但《雷神之锤》是如此的成功,它的火爆催生了一个全新的硬件市场:“3D加速卡”(3D Accelerator)28。
其中最著名的,当属3dfx Interactive公司推出的Voodoo(巫毒)显卡29。这些“附加板”(Add-in Boards, AIBs)29的诞生,是一个典型的“功能外包”案例。CPU(大厨)实在是忙不过来了,它对Voodoo(新来的厨房小工)说:“嘿,我负责思考(游戏逻辑),你,去负责那些最耗时、最重复、最不需要动脑的苦力活——把这些多边形给我画出来!”23
这个“苦力活”,就是海量的3D数学运算。
“GPU”的诞生
这个术语(GPU)最早是由索尼(Sony)在1994年为其PlayStation游戏主机的图形芯片(由东芝设计)所创造的30。
但在PC世界,这个词的流行要归功于NVIDIA(英伟达)。1999年,NVIDIA发布了GeForce 256,并在其营销中(非常响亮地)将其称为“世界首款GPU”30。
NVIDIA之所以敢这么说,是因为GeForce 256是第一款在硬件上集成了“T&L”(Transformation and Lighting,变换与光照)引擎的消费级芯片31。
“T&L”听起来很高级,但它本质上就是一堆(曾由CPU负责的)3D数学苦力活,尤其是矩阵乘法。
为了让游戏看起来更酷,游戏行业32无意中资助并完善了一个完美的并行计算引擎。这个引擎的SIMD架构18,恰好就是为了“图形数学”(即海量的、重复的矩阵运算)21而量身定做的。这个引擎,就是GPU。
9.5 “灵光一闪”:当科学家们开始“黑入”显卡
时间快进到21世纪初。一边,是游戏玩家们在《毁灭战士3》的动态光影中乐此不疲;另一边,是全世界的科学家们,他们正苦哈哈地排队,等着使用(基于CPU的)超级计算机的宝贵机时,来模拟星系碰撞、计算流体动力学33或研究蛋白质如何折叠34。
然后,某个(或某群)绝望的科学家35迎来了那个“灵光一闪”的时刻。
他36看着自己办公桌上那块价值500美元、用来(在上班时摸鱼)玩《半条命2》的游戏显卡,突然意识到:这块“游戏卡”每秒可以执行的浮点运算(FLOPS)次数,居然超过了隔壁机房里那台价值数百万美元的CPU集群。
一个疯狂的想法诞生了:我能用这玩意儿来算蛋白质折叠吗?
这就是GPGPU(General-Purpose computing on Graphics Processing Units,GPU上的通用计算)的蛮荒时代35。
问题: 在2007年之前,NVIDIA和ATI(后来的AMD)没有提供任何用于“科学计算”的工具。GPU是为游戏而生的,它只听得懂“图形”指令(比如来自微软的DirectX或开放标准的OpenGL)37。
解决方案: 科学家们被迫成为了“黑客”。他们必须把自己的科学问题,伪装成一个3D游戏34。
这个过程34的荒谬程度,堪称计算机历史上的奇观:
- 打包数据: 你想模拟一个物理场?对不起,GPU不认识什么“物理场”。你必须把你的数据(比如温度、压力)编码成一张“纹理”(Texture),也就是一张图片。
- 编写算法: 你想运行你的核心物理方程?对不起,GPU不认识什么“方程”。你必须把你的方程(用一种叫Cg或HLSL的语言)写成一个“像素着色器”(Pixel Shader)——这玩意儿的本职工作,是计算一个多边形上的某个像素应该显示成什么颜色。
- 运行计算: 你想开始计算?你必须(假装在做游戏)命令GPU:“请在屏幕上(虚拟地)绘制一个矩形。”
- 获取结果: GPU的“麦当劳厨房”(SIMD核心们)会(非常高兴地)开始并行计算这个矩形上每一个像素的“颜色”。计算完成后,你再赶紧从显存里把这张“图片”(纹理)读回来,解码那些“颜色值”——这些“颜色”,就是你那堆物理方程的答案。
它居然成功了!
尽管这个过程被斯坦福大学的Vijay Pande教授形容为“极其繁琐和困难”(tedious and difficult)34,但它奏效了。
Pande教授的Folding@home项目成为了GPGPU的早期旗手34。这是一个分布式计算项目,它号召全世界的志愿者(在不玩游戏时)贡献出他们PC上的GPU算力,来模拟蛋白质的折叠过程34。后来,他们甚至把目标对准了索尼的PlayStation 3游戏机,因为PS3的Cell处理器(一个CPU和GPU的混合体)也是一个并行计算的怪物38。
很快,医学成像33、计算金融、线性代数39……各行各业的“黑客”们都开始使用这种“GPGPU黑魔法”。
GPGPU的蛮荒时代39证明了一个被压抑已久的、庞大的市场需求:对廉价、可访问的并行计算的需求36。
NVIDIA的工程师们40震惊地发现,这群奇怪的(不玩游戏的)书呆子,正在用他们的“披萨厨房”15干着分子生物学34的活儿。他们意识到,自己正坐在一座巨大的金矿41上,但这座金矿的入口,却被“像素着色器”这种奇怪的、布满尖刺的锁给锁住了。
市场已经用“黑客”行为验证了需求。NVIDIA只需要做一件事:造一把钥匙。
9.6 “那把钥匙”:CUDA如何打开了潘多拉魔盒
那把“钥匙”,在2007年降临了。它将NVIDIA从一家(很成功的)游戏硬件公司,变成了(万亿市值的)AI帝国40。
这把钥匙,名叫 CUDA (Compute Unified Device Architecture,计算统一设备架构)42。
英雄登场:伊恩·巴克 (Ian Buck)
在NVIDIA内部,推动这场革命的关键人物是伊恩·巴克43。他2004年加入NVIDIA44,而他的博士论文项目43——一个名叫“Brook”的系统——正是GPGPU的先驱之一45。他比任何人都清楚科学家们的痛苦和GPU的潜力。
CUDA的“解锁”魔力37
CUDA42的革命性不在于硬件,它是一个软件平台和API(应用程序编程接口)42。
它的发布,无异于向全世界的程序员和科学家发出了一个清晰的信号37:
“停下!
先生们,女士们,请立刻停止把你们的分子动力学伪装成《雷神之锤》!
你们不需要再假装自己在“画画”了34。
从今天起,你们可以用你们最熟悉的标准 C/C++ 语言46,编写一个叫做‘Kernel’(内核)的普通函数。
然后,你们可以直接对我们的GPU下达(非图形)命令:‘嘿,麦当劳厨房,请把这个‘煎汉堡’(Kernel)函数,在你的1024个灶台(核心)上,并行执行100万次。’”
这是一个“民主化”(democratized)的时刻42。
突然之间,释放GPU全部(非图形)计算能力的门槛35,从“必须是图形学博士”,降低到了“任何一个懂C++的程序员”。
物理学家、生物学家、金融分析师37、密码学家……成千上万的开发者涌入了NVIDIA的平台。
NVIDIA的“护城河”
CUDA是NVIDIA历史上最重要的一次战略赌博。它表面上是免费的46,但它有一个(魔鬼般的)细节:
CUDA是专有的(Proprietary)。它只在NVIDIA的GPU上运行。41
在CUDA之前,GPGPU的“黑魔法”是硬件中立的,你可以在NVIDIA的卡上用,也可以在ATI/AMD的卡上用39。
但CUDA提供了如此巨大的便利性37,以至于它迅速成为了学术界和研究界的事实标准。
这就形成了一个强大的41“锁定”循环:
- 一个博士生花了6个月,用CUDA写出了他的科学模拟程序37。
- 这个程序现在只能在NVIDIA的GPU上运行。
- 当他毕业后去组建自己的实验室,他会买什么硬件?他必须买NVIDIA的GPU。
- 他的下一个博士生,会继续在CUDA上编写代码……
NVIDIA免费提供的软件(CUDA工具包),最终为它的硬件(GPU)挖出了一条全行业最深、最宽的“护城河”41。
当几年后,AI革命的“大爆炸”44来临时,所有的研究人员47都骇然发现,他们几乎别无选择——他们所有的工具、所有的经验、所有的库,都默认建立在CUDA之上。
9.7 插曲:麦当劳厨房的“黑工”
一旦“麦当劳厨房”对所有(非游戏)客户开放,它立刻就被雇佣去干各种五花八门的“脏活、累活、重复活”。这些工作有一个共同点:它们都是“易并行”(Embarrassingly Parallel)48的任务——即,可以被分解为数百万个互不相干的独立子任务。
苦力活 1:加密货币挖矿 (Crypto Mining)
2009年,比特币(Bitcoin)诞生。它的“工作量证明”(Proof of Work)机制,基于一种叫“SHA-256”的哈希算法49。
所谓“挖矿”,本质上就是在暴力破解一个数学彩票50。你需要不断地50尝试不同的随机数(Nonce),对它们进行SHA-256哈希,直到你“猜”中一个小于特定目标的值。
这简直是为GPU量身定做的工作:
- CPU (米其林大厨): 它的“大脑”很复杂,但它50一次只能17“买”几张彩票。
- GPU (麦当劳厨房): 它的50数千个“工人”(核心)20,可以在SIMD模式下,同时、并行地每秒钟尝试数十亿张彩票50。
结果是灾难性的(对游戏玩家而言)。全世界的“矿工”们51涌入市场,把游戏显卡(尤其是AMD的卡,它们在早期挖矿算法上效率更高52)成卡车地运走,组建成“矿场”50,导致显卡价格飙升,游戏玩家们51哀鸿遍野。
(注:后来,针对SHA-256的“ASIC”专用芯片49被发明出来,取代了GPU在比特币挖矿上的地位。但GPU挖矿的“传统”在其他加密货币上延续了下去。)
苦力活 2:密码破解 (Password Cracking)
这和“挖矿”是完全相同的逻辑22。
想象一下,一个黑客偷到了一个53数据库,里面全是哈希(Hashed)过的密码(比如SHA-256或MD5)54。黑客无法“反向”解出密码,他只能正向“猜”。
他会拿一本“字典”(包含数十亿个常用密码),然后:
- CPU (大厨): 慢吞吞地尝试 "123456",计算它的哈希,对比。再尝试 "password",计算哈希,对比……
- GPU (麦当劳厨房): 使用一块顶配游戏显卡(如NVIDIA RTX 4090),它可以并行地22将“字典”里的数十亿个词组同时丢给它的数千个核心,每秒钟尝试1640亿次(164 GH/s)密码组合22。
其后果是:在现代GPU面前,任何少于8位、不含特殊字符的密码,都55和明文没什么区别。
加密货币和密码破解是“易并行”问题48的完美(且有点反社会)的范例。这些工作的共同点是:它们都是海量的、简单的、重复的、各自独立的数学运算。
这个能力特点,正是一个巨大的、跨越几十年的“巧合”。它指向了GPU的真正天命。
9.8 最终的天命:AI革命的“物理引擎”
现在,我们来到了本章的高潮。我们将揭示这个“麦当劳厨房”的最终命运。
它不是为游戏而生的(那只是它的童年)。
它不是为挖矿而生的(那只是它打的黑工)。
它仿佛是等待人工智能而生的。
历史背景:2012年之前
在2012年之前,人工智能(AI)还处于漫长的“寒冬”1之中。主流的“机器学习”方法是SVM、随机森林等56。“深度神经网络”57这个概念在80年代1就已经存在,但它一直被学术界主流视为一种“古怪的”、“理论上可行但实践中无法训练”的“黑匣子”58。
改变世界的时刻:2012年,ImageNet挑战赛58
ImageNet是一个59包含数百万张已标记图片的大型视觉数据库。每年,全世界的顶尖AI实验室都会参加59ILSVRC挑战赛,比试谁的算法图像识别准确率最高。
“AlexNet时刻”56
2012年,来自多伦多大学的Alex Krizhevsky、Ilya Sutskever和他们的导师Geoffrey Hinton57,提交了一个(在当时看来)极其庞大且“深”的卷积神经网络(CNN),它被命名为“AlexNet”60。
“屠杀”现场59
比赛结果公布时,整个AI界都沉默了。
这不是一次险胜。这不是“更高、更快、更强”。这是一个物种(神经网络)对另一个物种(传统AI)的碾压。这是AI的“寒武纪大爆发”。
“搞什么鬼?”——行业的巨震
当人们开始研究AlexNet是如何取胜时,一个更令人震惊的事实浮出水面。
就在同一年61,科技巨头谷歌(Google)刚刚宣布了一个61重磅成果:他们构建了一个包含16,000个CPU核心61的超级计算机集群,成功地(在看了海量YouTube视频后)“学会”了识别猫。
而AlexNet——这个在ImageNet竞赛中碾压了全世界的、划时代的模型——它是在哪里训练的?
答案是:两块(2)NVIDIA GTX 580 游戏显卡58。
这是一个61让谷歌56和整个行业58感到无比尴尬的时刻。一个研究生用两块47价值几百美元的“游戏配件”,其AI计算能力,居然秒杀了一个61由16,000个昂贵CPU56组成的超级计算机。
“为什么?”——揭示终极巧合
为什么GPU能做到62CPU做不到的事?
答案就在于AI的“心脏”。训练一个深度神经网络63,其核心计算的99%,都归结为64一件65极其枯燥乏味的工作:
矩阵乘法 (Matrix Multiplication)66
当数据(比如一张图片的像素值)流过一层神经网络时,它所做的,就是被乘以一个巨大的“权重”矩阵。在“反向传播”1期间,为了计算“错误”并调整权重,它所做的,还是矩阵乘法。
而“矩阵乘法”这个运算67,在数学上是什么?
它就是海量的、简单的、重复的、各自独立的乘法和加法运算。
等等!
这个描述——“海量、简单、重复、独立”——是不是非常、非常耳熟?
- 它就是“1同时煎10000个汉堡”。
- 它就是“68同时渲染200万个像素”。
- 它就是“50同时计算50亿次哈希”。
- 它就是“22同时尝试1640亿个密码”。
- 它就是“易并行”(Embarrassingly Parallel)问题48!
最终的顿悟:
AI革命不是在2012年发明的。它只是在2012年被触发了56。
触发它的,是那个58第一次将一个古老的算法(80年代的神经网络1)和一种廉价的硬件(90年代为游戏而生的GPU58)通过一把钥匙(2007年的CUDA37)完美连接起来的实验(AlexNet)。
历史的讽刺在于21:
这个为游戏31而生的“麦当劳厨房”1,被科学家34“黑”入,被NVIDIA37“解锁”,被“矿工”49“滥用”,最终,它在第四个完全不相关的领域(AI69)找到了自己的真正天命。
9.9 本章小结:欢迎来到“并行天堂”(或者说,麦当劳)
对于我们这位“复活”的时空旅行者而言,这趟旅程是颠覆性的。
我们从一个4终结了“免费午餐”6的物理学危机(“功率墙”)开始。
我们11学会了区分管理(并发)和执行(并行)。
我们20发现我们有两种“厨房”:一种是聪明但稀少的(CPU),一种是愚蠢但庞大的(GPU)。
我们27追溯了“庞大厨房”的起源——它竟然是为了玩《雷神之锤》。
我们34见证了科学家们如何用“黑魔法”将其用于科学,以及NVIDIA如何用CUDA37提供了打开宝库的“钥匙”。
最终,我们56目睹了这个为游戏而生的引擎,如何意外地成为了AI革命的唯一物理引擎——只因为神经网络66和3D游戏21恰好共享同一种数学语言:矩阵。
现在,我们已经彻底理解了AI的“肌肉”(GPU)。在后续的章节中,我们将深入探索AI的“大脑”(第十五章:神经网络与反向传播)1。
引用的著作
-
程序员复活手册:从BASIC到AI(大纲) ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
The End of Moore's Law: Silicon computer chips are nearing the limit of their processing capacity. But is this necessarily an issue? Copenhagen Institute for Futures Studies : r/Futurology - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/Futurology/comments/y91xtu/the_end_of_moores_law_silicon_computer_chips_are/ ↩︎ ↩︎
-
The Death of Moore's Law: What it means and what might fill the gap going forward, 访问时间为 十月 27, 2025, https://cap.csail.mit.edu/death-moores-law-what-it-means-and-what-might-fill-gap-going-forward ↩︎ ↩︎ ↩︎
-
The Power Wall For CPU Chips - Edward Bosworth, 访问时间为 十月 27, 2025, http://www.edwardbosworth.com/My5155_Slides/Chapter01/ThePowerWall.htm ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
Food for thought: Single-core CPU performance really hasn't improved all that much in the past ~15 years : r/buildapc - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/buildapc/comments/1i9a53o/food_for_thought_singlecore_cpu_performance/ ↩︎
-
Understanding Dennard scaling - Rambus, 访问时间为 十月 27, 2025, https://www.rambus.com/blogs/understanding-dennard-scaling-2/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
Dennard scaling - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/Dennard_scaling ↩︎
-
What is Dennard scaling? - Quora, 访问时间为 十月 27, 2025, https://www.quora.com/What-is-Dennard-scaling ↩︎ ↩︎ ↩︎
-
electronics.stackexchange.com, 访问时间为 十月 27, 2025, https://electronics.stackexchange.com/questions/654819/need-help-understanding-the-concept-of-power-wall#:~:text=It%20simply%20means%20you%20can,%2C%20and%20frequency%20(f). ↩︎
-
Here's why chips are still getting faster... - RedShark News, 访问时间为 十月 27, 2025, https://www.redsharknews.com/technology-computing/item/2148-why-aren-t-processors-getting-faster-anymore ↩︎
-
language agnostic - What is the difference between concurrency ..., 访问时间为 十月 27, 2025, https://stackoverflow.com/questions/1050222/what-is-the-difference-between-concurrency-and-parallelism ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
Why Parallelism Isn't Always Concurrency (and Vice Versa)? - Hackernoon, 访问时间为 十月 27, 2025, https://hackernoon.com/why-parallelism-isnt-always-concurrency-and-vice-versa ↩︎
-
Concurrency vs. Parallelism: What's the Difference and Why Should ..., 访问时间为 十月 27, 2025, https://www.freecodecamp.org/news/concurrency-vs-parallelism-whats-the-difference-and-why-should-you-care/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
CPU vs GPU : r/ElectricalEngineering - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/ElectricalEngineering/comments/1bo98q6/cpu_vs_gpu/ ↩︎ ↩︎ ↩︎
-
AI is Powered by GPUs. It's Time to Understand What They Are. | by Technormal - Medium, 访问时间为 十月 27, 2025, https://medium.com/@technormal/ai-is-powered-by-gpus-its-time-to-understand-what-they-are-79787495141d ↩︎ ↩︎ ↩︎
-
GPU vs CPU - Difference Between Processing Units - AWS, 访问时间为 十月 27, 2025, https://aws.amazon.com/compare/the-difference-between-gpus-cpus/ ↩︎ ↩︎ ↩︎
-
CPU vs. GPU: What's the Difference? - CDW, 访问时间为 十月 27, 2025, https://www.cdw.com/content/cdw/en/articles/hardware/cpu-vs-gpu.html ↩︎ ↩︎ ↩︎
-
Exploring Parallel Processing: SIMD vs. MIMD Architectures | by Aditya Bhuyan | Medium, 访问时间为 十月 27, 2025, https://aditya-sunjava.medium.com/exploring-parallel-processing-simd-vs-mimd-architectures-a2f9e7abb354 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
u/popejustice gives the best explanation I've ever seen of the difference between CPU and GPU in true ELI5 fashion : r/bestof - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/bestof/comments/ev6c3w/upopejustice_gives_the_best_explanation_ive_ever/ ↩︎ ↩︎
-
CPU vs. GPU: What's the Difference? - Intel, 访问时间为 十月 27, 2025, https://www.intel.com/content/www/us/en/products/docs/processors/cpu-vs-gpu.html ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
ELI5: What about GPU Architecture makes them superior for training ..., 访问时间为 十月 27, 2025, https://www.reddit.com/r/explainlikeimfive/comments/zpso6w/eli5_what_about_gpu_architecture_makes_them/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
[New research] How well does SHA256 protect against modern password cracking?, 访问时间为 十月 27, 2025, https://specopssoft.com/blog/sha256-hashing-password-cracking/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
How were 3D effects created before GPUs? [closed] - Retrocomputing Stack Exchange, 访问时间为 十月 27, 2025, https://retrocomputing.stackexchange.com/questions/2309/how-were-3d-effects-created-before-gpus ↩︎ ↩︎
-
John Carmack makes the case for future GPUs working without a CPU : r/hardware - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/hardware/comments/1hfaadz/john_carmack_makes_the_case_for_future_gpus/ ↩︎
-
John Carmack - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/John_Carmack ↩︎
-
Quake engine - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/Quake_engine ↩︎ ↩︎ ↩︎
-
The Next Generation in Graphics, Part 1: Three Dimensions in ..., 访问时间为 十月 27, 2025, https://www.filfre.net/2023/04/the-next-generation-in-graphics-part-1-three-dimensions-in-software-or-quake-and-its-discontents/ ↩︎ ↩︎ ↩︎
-
What was the first game that used a 3D graphics card? - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/gaming/comments/a8rxql/what_was_the_first_game_that_used_a_3d_graphics/ ↩︎
-
Graphics card - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/Graphics_card ↩︎ ↩︎
-
Graphics processing unit - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/Graphics_processing_unit ↩︎ ↩︎
-
The Evolution of GPUs: From Simple Renders to AI Processors | OrhanErgun.net Blog, 访问时间为 十月 27, 2025, https://orhanergun.net/the-evolution-of-gpus-from-simple-renders-to-ai-processors ↩︎ ↩︎
-
The Evolution of Graphics Cards: A Historical Perspective | by Matt Davies Stockton, 访问时间为 十月 27, 2025, https://medium.com/@stocktonmattdavies/the-evolution-of-graphics-cards-a-historical-perspective-609be03e421c ↩︎
-
History of GPU Computing Demystified - NUA Dev, 访问时间为 十月 27, 2025, https://nuadev.com/history-of-gpu-computing-demystified/ ↩︎ ↩︎
-
The GPU Revolution | Science & Technology | Chemical ..., 访问时间为 十月 27, 2025, https://pubs.acs.org/cen/science/88/8844sci1.html ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
What is GPGPU? - Supermicro, 访问时间为 十月 27, 2025, https://www.supermicro.com/en/glossary/gpgpu ↩︎ ↩︎ ↩︎
-
Part IV: General-Purpose Computation on GPUS: A Primer | NVIDIA Developer, 访问时间为 十月 27, 2025, https://developer.nvidia.com/gpugems/gpugems2/part-iv-general-purpose-computation-gpus-primer ↩︎ ↩︎
-
What Is CUDA? The GPU Platform Powering Computer Vision, 访问时间为 十月 27, 2025, https://blog.roboflow.com/what-is-cuda/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
Folding@home - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/Folding@home ↩︎
-
General-purpose computing on graphics processing units - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/General-purpose_computing_on_graphics_processing_units ↩︎ ↩︎ ↩︎
-
Nvidia - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/Nvidia ↩︎ ↩︎
-
Ian Buck's doctoral thesis Stream Computing on Graphics Hardware (2006) an... | Hacker News, 访问时间为 十月 27, 2025, https://news.ycombinator.com/item?id=36223864 ↩︎ ↩︎ ↩︎ ↩︎
-
What Is CUDA? | Supermicro, 访问时间为 十月 27, 2025, https://www.supermicro.com/en/glossary/cuda ↩︎ ↩︎ ↩︎ ↩︎
-
Ian Buck Author Page | NVIDIA Blog, 访问时间为 十月 27, 2025, https://blogs.nvidia.com/blog/author/ian-buck/ ↩︎ ↩︎
-
CUDA - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/CUDA ↩︎ ↩︎
-
NVIDIA T4 with Ian Buck and Kari Briski | Google Cloud Platform Podcast, 访问时间为 十月 27, 2025, https://www.gcppodcast.com/post/episode-168-nvidia-t4-with-ian-buck-and-kari-briski/ ↩︎
-
An Even Easier Introduction to CUDA (Updated) | NVIDIA Technical Blog, 访问时间为 十月 27, 2025, https://developer.nvidia.com/blog/even-easier-introduction-cuda/ ↩︎ ↩︎
-
[D] ML old-timers, when did deep learning really take off for you? - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/MachineLearning/comments/hoo6m8/d_ml_oldtimers_when_did_deep_learning_really_take/ ↩︎ ↩︎
-
Embarrassingly Parallel :The Hidden Superpower of GPUs | by G Nithish Kumar | Medium, 访问时间为 十月 27, 2025, https://medium.com/@g.nithish100/embarrassingly-parallel-the-hidden-superpower-of-gpus-0dd0843a79ce ↩︎ ↩︎ ↩︎
-
What Is a Bitcoin Mining Rig & How Does It Work? - Gemini, 访问时间为 十月 27, 2025, https://www.gemini.com/cryptopedia/crypto-mining-rig-bitcoin-mining-calculator-asic-miner ↩︎ ↩︎ ↩︎
-
GPU Usage in Cryptocurrency Mining - Investopedia, 访问时间为 十月 27, 2025, https://www.investopedia.com/tech/gpu-cryptocurrency-mining/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
GPU mining - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/GPU_mining ↩︎ ↩︎
-
ELI5: Why are AMD GPUs good for cryptocurrency mining, but nvidia GPUs aren't? - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/buildapc/comments/6fv2qi/eli5_why_are_amd_gpus_good_for_cryptocurrency/ ↩︎
-
A Study on the Security of Password Hashing Based on GPU Based, Password Cracking using High-Performance Cloud Computing, 访问时间为 十月 27, 2025, https://repository.stcloudstate.edu/cgi/viewcontent.cgi?referer=&httpsredir=1&article=1032&context=msia_etds ↩︎
-
Security of Password Hashing in Cloud - Scientific Research Publishing, 访问时间为 十月 27, 2025, https://www.scirp.org/journal/paperinformation?paperid=90861 ↩︎
-
AI-powered consumer GPUs speed up password cracking with bcrypt - SecurityBrief UK, 访问时间为 十月 27, 2025, https://securitybrief.co.uk/story/ai-powered-consumer-gpus-speed-up-password-cracking-with-bcrypt ↩︎
-
AlexNet: The Deep Learning Breakthrough That Reshaped Google's ..., 访问时间为 十月 27, 2025, https://dejan.ai/blog/alexnet-the-deep-learning-breakthrough-that-reshaped-googles-ai-strategy/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
The Story of AlexNet: A Historical Milestone in Deep Learning | by James Fahey | Medium, 访问时间为 十月 27, 2025, https://medium.com/@fahey_james/the-story-of-alexnet-a-historical-milestone-in-deep-learning-79878a707dd5 ↩︎ ↩︎
-
AlexNet and ImageNet: The Birth of Deep Learning | Pinecone, 访问时间为 十月 27, 2025, https://www.pinecone.io/learn/series/image-search/imagenet/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
AlexNet: Revolutionizing Deep Learning in Image Classification - Viso Suite, 访问时间为 十月 27, 2025, https://viso.ai/deep-learning/alexnet/ ↩︎ ↩︎ ↩︎ ↩︎
-
AlexNet - Wikipedia, 访问时间为 十月 27, 2025, https://en.wikipedia.org/wiki/AlexNet ↩︎ ↩︎
-
Why did it take until 2013 for machine learning to be ran on GPU's : r/MLQuestions - Reddit, 访问时间为 十月 27, 2025, https://www.reddit.com/r/MLQuestions/comments/1hwynby/why_did_it_take_until_2013_for_machine_learning/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
CPU vs. GPU for Machine Learning - IBM, 访问时间为 十月 27, 2025, https://www.ibm.com/think/topics/cpu-vs-gpu-machine-learning ↩︎
-
Why GPUs Are Better for Machine Learning? | by Amit Yadav | Biased-Algorithms | Medium, 访问时间为 十月 27, 2025, https://medium.com/biased-algorithms/why-gpus-are-better-for-machine-learning-cdff6c129291 ↩︎
-
GPUs Go Brrr - Hacker News, 访问时间为 十月 27, 2025, https://news.ycombinator.com/item?id=40337936 ↩︎
-
Introducing Triton: Open-source GPU programming for neural networks - OpenAI, 访问时间为 十月 27, 2025, https://openai.com/index/triton/ ↩︎
-
Why Deep Learning Need GPU - GeeksforGeeks, 访问时间为 十月 27, 2025, https://www.geeksforgeeks.org/deep-learning/why-deep-learning-need-gpu/ ↩︎ ↩︎ ↩︎
-
Why can GPU do matrix multiplication faster than CPU? - Stack Overflow, 访问时间为 十月 27, 2025, https://stackoverflow.com/questions/51344018/why-can-gpu-do-matrix-multiplication-faster-than-cpu ↩︎
-
What is a GPU? - Graphics Processing Unit Explained - AWS, 访问时间为 十月 27, 2025, https://aws.amazon.com/what-is/gpu/ ↩︎ ↩︎
-
Why GPUs Are Great for AI - NVIDIA Blog, 访问时间为 十月 27, 2025, https://blogs.nvidia.com/blog/why-gpus-are-great-for-ai/ ↩︎