
构建 CUDA 替代方案从来都不是一件容易的事。
克里斯·拉特纳(Chris Lattner)在Modular带领着一支120人的团队,他们已经为此努力了三年,目标不仅仅是取代CUDA,而是要彻底从头打造一个全新的人工智能软件栈。
“这需要做些什么呢?实际上,构建一个CUDA的替代品相当困难,这得花上好几年的时间。” 拉特纳告诉《电子工程时报》(EE Times),“在过去的三年里,我们一直在研究编程语言、图形编译器、大语言模型(LLM)的优化,把所有这些东西都梳理清楚,大规模地实现、测试并验证。”
现有的人工智能软件栈存在问题,根源在于它发展得非常迅速,并且仍在快速演变;为了跟上新的应用场景和模型,软件栈不断快速添加新的层级。如今,在CUDA之上有诸如OneMKL这样的库,用于推理服务的vLLM,英伟达的TensorRT-LLM,以及现在英伟达的NIM微服务——拉特纳称之为 “庞大的一堆东西”。拉特纳指出,CUDA本身已经有16年的历史了。换句话说,在生成式人工智能应用场景出现之前,以及在张量核心和FP4等GPU硬件特性被发明出来之前,CUDA就已经存在了。拉特纳所说的 “一次性框架”,也就是软件栈中那些被采用但在被取代之前使用期限很短的部分,也无济于事。
“一切都在变化,而且它并非为通用性而设计,最终就会被淘汰,” 他说,“我们为企业构建的是一个真正能够扩展的技术平台,这样他们就能跟上人工智能发展的步伐。”
CUDA的替代品此前也有其他项目旨在取代CUDA,或者提供某种程度的CUDA代码可移植性,或者两者兼具。
其中最成功的项目之一是开源项目Apache TVM。TVM的主要目标是通过自动化内核融合,使人工智能能够在各种不同的硬件上高效运行,但事实证明,生成式人工智能是一个技术挑战,因为其算法比老式的计算机视觉应用程序的算法更大、更复杂。生成式人工智能算法也更依赖特定的硬件(比如FlashAttention)。TVM的核心贡献者成立了一家名为OctoAI的公司,该公司为企业集群开发了一个生成式人工智能推理栈,但最近被英伟达收购了,这让该项目的未来蒙上了一层阴影。
另一个广为人知的技术是OpenCL,这是一个旨在实现GPU和其他类型硬件之间代码可移植性的标准。它已在移动和嵌入式设备中被广泛采用。然而,这个标准的批评者(包括拉特纳)指出,它缺乏跟上快速发展的人工智能技术的灵活性,部分原因是它是由相互竞争的公司之间的 “竞合” 所驱动的,这些公司通常不愿意分享任何关于未来硬件特性的信息。
拉特纳说,其他类似性质的商业项目仍处于早期阶段。
“构建一个演示程序、解决一个模型和一个应用场景,与构建一个能够大规模通用的东西之间存在着很大的差距,后者实际上能够跟上人工智能研究的步伐,这是非常重要的。” 他说。
据拉特纳称,作为一家纯软件公司,Modular在构建适用于所有硬件的软件栈方面更具优势。
“我们只是希望软件开发人员能够使用他们的芯片,” 他说,“我们正在帮助打破这些障碍,多年来在多代硬件上进行投资,以实现这一目标。”
高性能的可移植性Modular的人工智能推理引擎Max于2023年推出,最初支持x86和Arm架构的CPU,最近又增加了对英伟达GPU的支持。这意味着Modular现在有了一个完整的CUDA替代品,包括CUDA编程语言以及构建在其之上的大语言模型服务栈。
关键的是,拉特纳表示,对于英伟达A100和H100 GPU,Max能够达到与CUDA相当的性能。
“(英伟达)比我们起步得早一些——他们得到了全世界的帮助来为他们的硬件进行优化,而且在那时A100已经推出4年了,人们对它非常了解并进行了充分的优化,所以这是一个很高的标准。” 他说,“(在A100上达到与CUDA相当的性能)这让我明白:我们拥有一个能够扩展的软件栈,而且我们有一个能够执行的团队。”
从首次引入对H100的支持到在H100上实现生成式人工智能推理性能达到或超过CUDA,Modular只用了两个月的时间——拉特纳相信,对于下一个目标硬件:英伟达的布莱克韦尔(Blackwell)一代GPU,他的团队也能够取得同样的成绩。
“我们以一种能够扩展的方式进行工程设计。” 拉特纳说,“我们在两个月内就达到了与H100相当的性能,而不是两年,因为(我们的)技术投资使我们能够扩大规模并切实解决这些问题。”
最终目标是在所有类型的人工智能硬件之间实现高性能的可移植性。
“没有其他软件栈能做到这一点,” 拉特纳说,“就连英伟达也没有实现性能可移植性…… CUDA在某种程度上可以在A100和H100上运行,但实际上,你必须重写代码才能获得良好的性能,因为(英伟达)在H100中引入了像张量内存加速器(TMA)单元这样的新特性。”
张量内存加速器(TMA)单元是为Hopper一代的GPU引入的,用于实现张量在全局内存和共享内存之间的异步传输。Modular通过对像这样的硬件特性进行更高级别的抽象,实现了高性能的可移植性。拉特纳说,该公司的目标是成为芯片制造商和只想使用硬件的软件开发人员之间的桥梁。
“随着我们释放(这项技术的力量),我们现在才刚刚开始做到这一点,我们可以让全新的一类人能够为所有新推向市场的硬件编程,并且以一致的方式做到这一点。” 他说,“开发人员不必了解硬件方面或人工智能研究方面的所有复杂性。他们可以专注于构建他们的智能工作流程或定制的检索增强生成(RAG)解决方案,并从生态系统中发生的所有创新中受益;我们可以让这一切变得简单且易于采用。”
Modular对非英伟达GPU和其他类型加速器的支持将在2025年底开始。
集群管理Modular也在为其软件栈开发集群管理功能。
传统的云系统具有弹性——即能够根据需求动态添加更多节点来处理请求的能力——但基于GPU的云系统的工作方式有所不同。由于GPU价格昂贵,用户会在数月或数年的时间里预订固定数量的GPU,拉特纳表示,从成本管理的角度来看,这与购买和销售本地部署的GPU相当。
此外,像聊天机器人这样的生成式人工智能工作负载是有状态的;也就是说,它们需要存储和访问用户之前的输入,以便用于未来的会话。这意味着处理来自同一用户的查询的最有效方式是在同一节点上,而不是将查询发送到任何可用的CPU。
再加上不同类型的异构硬件——甚至是具有不同内存大小的英伟达GPU——以及可能受内存或计算能力限制的大语言模型层,平台团队面临的复杂程度就更高了。这些团队面临着管理人工智能业务中多个工程团队不断变化的工作负载和需求的挑战。
Modular已经构建了数据平面和控制平面,能够在节点之间连贯地路由请求,管理集群中的状态和分布。
“你需要一定程度的抽象,这样你就可以说,我想把这个(工作负载)放到这么多台机器上。” 拉特纳说,“所以你需要能够确定哪个模型在哪个地方运行得最好。通常情况下,没有人真正了解这些东西是如何工作的,但我们了解。我们可以利用对整个软件栈的理解能力,说好吧,我们将构建这个智能路由器,我们实际上会在其中加入一些东西,使它非常容易推出和扩展。这就是我们目前正在研究的内容,非常令人兴奋。”
其理念是在合适的时间将查询智能地路由到合适的硬件上,同时考虑到诸如批量大小和序列长度支持等权衡因素。拉特纳说,将工作负载的不同部分分离到最合适的GPU上,这是排名前十的公司能够做到的事情,但几乎其他所有人都不想去考虑这些。
“我们不会从你手中夺走你的人工智能,相反,我们会为你提供工具和技术,让你可以在你的计算机上部署人工智能,无论是本地部署还是在云端。” 他说,“这与很多(公司)的做法非常不同,那些公司会说人工智能太难了,把你所有的数据、所有的模型都给我们,我们来帮你做。我们的观点是:让人工智能民主化。把它交还给软件开发人员。让平台团队能够掌控人工智能。”
Modular在英伟达的GPU技术大会(GTC)上进行了展示。英伟达对这个CUDA的替代品有什么看法呢?Modular的产品是否能融入CUDA生态系统呢?
“情况很复杂。” 拉特纳说,他指出英伟达已经宣布了一些即将推出的软件特性,他认为这些特性受到了Modular的启发,其中包括一些与Modular对Python编程的关注相呼应的内容。
“(英伟达的增强功能)目前还不存在,它也不能在所有的GPU上运行,而且我推测它永远不会在其他公司的GPU上运行。” 拉特纳说,“但我认为这是对Modular方法的极大认可。我欢迎这个领域的好想法,而且我很高兴他们(英伟达)也认为我们走的方向是正确的。”
*声明:本文系原作者创作。文章内容系其个人观点,我方转载仅为分享与讨论,不代表我方赞成或认同,如有异议,请联系后台。
想要获取半导体产业的前沿洞见、技术速递、趋势解析,关注我们!