文|侃科技
外界常有这样一种错觉,因为英特尔CPU卖的好就将其归于一家成功的硬件公司,而事实上,英特尔统治桌面处理器的功臣是诞生于1978年的X86架构。
同样的错觉在英伟达身上也有。
英伟达之所以能够垄断人工智能训练芯片市场,CUDA架构绝对是幕后功臣之一。
这个诞生于2006年的架构,已经涉及计算机计算的各个领域,几乎被塑造成了英伟达的形状。航空航天、生物科学研究、机械和流体模拟及能源探索等领域的研究,80%在CUDA的基础上进行。
而在最火爆的AI领域,几乎所有的大厂都在准备Plan B:谷歌、亚马逊、华为、微软、OpenAI、百度……谁也不想让自己的未来攥在别人手中。
创业服务咨询机构Dealroom.co公布过一组数据,在这波生成式AI的热浪中,美国获得了全球投融资的89%,而在AI芯片的投融资中,中国AI芯片投融资世界第一,超过美国两倍。
也就是说,尽管中美企业在大模型的发展方式和阶段都存在诸多差异,但在掌控算力这件事,大家却显得格外一致。
为什么CUDA有这种魔力?
2003年,英伟达为了与推出4核CPU的英特尔竞争,开始着手发展统一计算设备架构技术,也就是CUDA。
CUDA的初衷是为GPU增加一个易用的编程接口,让开发者无需学习复杂的着色语言或者图形处理原语。英伟达最初的想法是为游戏开发者提供一个图形计算领域的应用,也就是黄仁勋口中的"make graphics programmable"。
不过CUDA推出后一直找不到关键应用,也缺少重要客户支持。而且英伟达还要花费大笔金钱来开发应用、维持服务并推广与行销,到2008年遭遇金融风暴,显卡销售不好的英伟达营收大跌,股价一度跌到只剩1.5美元,比AMD最惨的时候还要惨。
直到2012年,Hinton的两个学生用英伟达的GPU参加了一个叫做ImageNet的图像识别速度比赛。他们使用GTX580显卡,利用CUDA技术进行训练,结果算出的速度超过第二名数十倍,精确度也比第二名高10%以上。
让业内震惊的不只是ImageNet模型本身。这个需要1400万张图片、总计262千万亿次浮点运算训练的神经网络,一个星期的训练过程中仅用了四颗GTX 580。作为参考,谷歌猫用了1000万张图片、16000颗CPU和1000台计算机。
这次比赛不仅是AI的一次历史转折,也为英伟达打开了突破口。英伟达开始与业界合作推动AI生态,推广开源AI框架,并与Google、Facebook等公司合作推动TensorFlow等AI技术发展。
这等于完成了黄仁勋口中的第二步,"open up GPU for programmability for all kinds of things"。
当GPU的算力价值被发现后,大厂也猛然醒悟,英伟达此前数年迭代和铺垫的CUDA,已然成为AI绕不开的一堵高墙。
为了筹建CUDA生态,英伟达为开发者提供了丰富的库和工具,如cuDNN、cuBLAS和TensorRT等,方便开发者进行深度学习、线性代数和推理加速等任务。此外,英伟达还提供包括CUDA编译器和优化器在内的完整开发工具链,使开发者能够更方便地进行GPU编程和性能优化。
与此同时英伟达也与许多流行的深度学习框架(如TensorFlow、PyTorch和MXNet)紧密合作,为CUDA提供了在深度学习任务中的显著优势。
这种“扶上马,送一程”的奉献精神,使英伟达仅用了两年半时间,就将CUDA生态的开发者数量翻了一倍。
这还不够,过去十余年里英伟达将CUDA的教学课程推广到超过350所大学,平台内有专业的开发者和领域专家,他们通过分享经验和解答疑难问题,为CUDA的应用提供了丰富的支持。
更关键的是,英伟达深知硬件作为护城河的缺陷在于没有用户粘性,于是将硬件与软件捆绑,GPU渲染要用CUDA、AI降噪要用OptiX、自动驾驶计算需要CUDA……
尽管英伟达目前凭借GPU+NVlink+CUDA垄断了AI算力90%的市场,但帝国的裂缝已经不止一条了。
一条条裂缝
AI厂商苦CUDA久矣,并不是危言耸听。
CUDA的神奇之处就在于它处在软硬结合的关键位置,对软件来说它是整个生态的基石,竞争对手难以绕过CUDA去兼容英伟达的生态;对硬件来说,CUDA的设计基本就是英伟达硬件形态的软件抽象,基本每个核心概念都和GPU的硬件概念相对应。
那么对于竞争对手来说,就只剩两个选择:
1、绕开CUDA,重建一套软件生态,这就要直面英伟达用户粘性的巨大挑战;
2、兼容CUDA,但也要面临两个问题,一是如果你的硬件路线和英伟达不一致,那么就有可能实现的低效且难受,二是CUDA会跟随英伟达硬件特性演进,兼容这也只能选择跟随。
但为了摆脱英伟达的钳制,两种选择都有人尝试。
2016年,AMD推出的基于开源项目的GPU生态系统ROCm,提供HIP工具完全兼容CUDA,就是一种跟随路线。
但因为工具链库资源匮乏、开发和迭代兼容性代价较大等掣肘,使ROCm生态难以壮大。在Github上,贡献CUDA软件包仓库的开发者超过32600位,而 ROCm只有不到600个。
走兼容英伟达CUDA路线的难点在于,其更新迭代速度永远跟不上CUDA并且很难做到完全兼容:
1、迭代永远慢一步:英伟达GPU在微架构和指令集上迭代很快,上层软件堆栈的很多地方也要做相应的功能更新。但AMD不可能知道英伟达的产品路线图,软件更新永远会慢英伟达一步。例如AMD有可能刚宣布支持了CUDA11,但是英伟达已经推出CUDA12了。
2、难以完全兼容反而会增加开发者的工作量:像CUDA这样的大型软件本身架构很复杂,AMD需要投入大量人力物力用几年甚至十几年才能追赶上。因为难免存在功能差异,如果兼容做不好反而会影响性能(虽然99%相似了,但是解决剩下来的1%不同之处可能会消耗开发者99%的时间)。
也有公司选择绕开CUDA,比如2022年1月成立的Modular。
Modular的思路是尽可能降低门槛,但更像是一种奇袭。它提出“用于提高人工智能模型性能”的AI引擎,通过“模块化”方式解决“当前AI应用栈常与特定硬件和软件耦合”的问题。
为了配合这个AI引擎,Modular还开发了开源编程语言Mojo。你可以把它想象成一个“专为AI而生”的编程语言,Modular用它开发各种工具整合到前面提到的AI引擎里,同时又可以无缝衔接上Python,降低学习成本。
但Modular的问题在于,其所设想的“全平台开发工具”太过理想化。
虽然顶着“超越Python”的头衔,又有Chris Lattner名声作为背书,但Mojo作为一种新语言,在推广上还需要经过众多开发者的考验。
而AI引擎要面临的问题就更多,不仅需要与众多硬件公司之间达成协议,还要考虑各平台之间的兼容。这些都是需要长时间的打磨才能完成的工作,到时候的英伟达会进化成什么样子,恐怕没人会知道。
尾声
在英伟达展开宏大叙事的2006年,没有人认为CUDA会是一个革命性的产品,黄仁勋要苦口婆心的说服董事会每年投入5亿美金,来赌一个回报期超过10年的未知,而当年英伟达的营收也不过30亿美金而已。
但在所有以技术和创新作为关键词的商业故事里,总有人因为对长远目标的持久坚持而收获巨大的成功,英伟达和华为都是其中的佼佼者。
参考资料
[1] 英伟达的「镰刀」,不是AI芯片,硅基研究室
[2] 为了成为“英伟达平替”,大模型厂商开卷了,小饭桌创服
[3] 成立仅1年,这家AI明星创企,想挑战英伟达,镁客网
[4] 英伟达帝国的一道裂缝,远川研究所
[7] 2023年AIGC行业专题报告:AI 芯片四大技术路线,寒武纪复制英伟达,申万宏源
[8] CUDA如何成就NVIDIA:AI领域的巨大突破,腾讯云社区
评论