CUDA正在被赶下神坛?

詹士 Alex 发自 凹非寺
转载自:量子位(QbitAI)

英伟达的软件护城河正在逐渐消失。

随着PyTorch支持更多GPU厂商,再加上OpenAI的Triton搅局,英伟达手中的利器CUDA 逐渐锋芒不再。

上述观点来自Semi Analysis首席分析师Dylan Patel,相关文章已引发一波业内关注。

05199e834563a7e53e5641b0c5d745c9.png

有网友看后评价:

英伟达沦落到此种境地,只因为了眼前利益,放弃创新。

4d35f0b90e94be1b4c82d06790386537.png

Pytorch的作者之一Sasank Chilamkurthy还补刀:

当英伟达之前提出要收购Arm时,我就对潜在的垄断感到非常不安。所以我开始做任何正常人都会做的事:让CUDA从的领先AI框架中被除名。

da384c37f1d810a4cbff1d507c89bdaa.png

下面展开谈一谈Patel提到的这些背后原因。

PyTorch成AI开发框架赢家,将支持更多GPU

这里先来简单说说CUDA昔日的辉煌故事。

CUDA是英伟达推出的并行计算框架。

CUDA之于英伟达,可谓历史的转折点,它的出现,让英伟达在AI芯片领域快速起飞。

在CUDA之前,英伟达的GPU只是一个负责在屏幕上绘制图像的“图形处理单元”。

而CUDA不仅可以调用GPU计算,还可以调用GPU硬件加速,让GPU拥有了解决复杂计算问题的能力,可以帮助客户为不同的任务对处理器进行编程。

363bb2b8875dca51464c541db22e7848.png

除了常见的PC机,无人车、机器人、超级计算机、VR头盔等多种热门的设备都有GPU;而在很长一段时间内,只有英伟达的GPU,才能快速处理各种复杂的AI任务

da0f9454c402682648783067b3accfec.jpeg

那么风光无限的CUDA,后来怎么就地位不稳了?

这还得从AI开发框架之争聊起,尤其是PyTorch VS TensorFlow

如果把PyTorch这些框架比做,那CUDA就是变速箱——它可以加速机器学习框架的计算过程,当在英伟达GPU上运行PyTorch等时,可以更快地训练、运行深度学习模型。

TensorFlow发育早,也是谷歌门下利器,但奈何近两年其势头逐渐被PyTorch超越。几大顶会上,PyTorch框架使用的比例也明显上涨:

bcdbba7afe6f1b5461e05066f459d6f0.png

图源:The Gradient,几大顶会中专门提到PyTorch的论文占比

还有TensorFlow深度使用者现身说法:“现在我改用PyTorch了。”

c53e402248391dd0d459147090dafc56.png

PyTorch能胜出,一个关键因素在于它比TensorFlow更灵活易用。

这一方面得益于PyTorch的eager模式,支持在C++运行环境下修改模型,还可以立即看到每一步操作的结果。虽然TensorFlow现在也有eager模式,但大多数大型科技公司已经在围绕着PyTorch开发解决方案。(扎心了……)

另一方面,虽然用这二者都写Python,但用的PyTorch的舒适度更胜一筹。

此外,PyTorch可用的模型更多,生态更丰富,据统计,在HuggingFace中,85%的大模型都是用PyTorch框架实现的。

过去,虽然各大AI开发框架之间打得火热,但更底层的并行计算架构CUDA可算独霸一方。

但时过境迁,在AI框架的角逐中,PyTorch最终赢过此前领跑的TensorFlow,地位暂时稳了,然后就开始搞事情。

近些年PyTorch在拓展支持更多GPU,即将发布的PyTorch2.0首个稳定版也会对其他各家GPU和加速器支持进行完善,包括AMD、英特尔、特斯拉、谷歌、亚马逊、微软、Meta等等。

也就是说,英伟达GPU不再是那个唯一了

不过这背后其实也还有CUDA自身的问题。

内存墙是个问题

前面提到,CUDA崛起与机器学习浪潮彼此促进,共赢生长,但有个现象值得关注:

近些年,领头羊英伟达硬件的FLOPS不断提高,但其内存提升却十分有限。以2018年训练BERT的V100为例,作为最先进GPU,其在FLOPS上增长一个数量级,但内存增加并不多。

690039762dd1911159f27b502beec038.png

 图源:semianalysis

在实际AI模型训练中,随着模型越来越大,内存需求也越来越大。

比如百度和Meta,在部署生产推荐网络时,需要数十TB内存来存储海量的embedding table。

放训练及推理中,大量时间实际上并未花在矩阵乘法计算上,而是在等待数据到达计算资源。

那为什么不搞更多内存?

简而言之,钞能力不足

d48ee282817af8cb972d7af3e4a2474c.jpeg

一般来说,内存系统根据数据使用需求,遵照从“又近又快”到“又慢又便宜”的结构安排资源。通常,最近的共享内存池在同一块芯片上,一般由SRAM构成。

在机器学习中,一些ASIC试图用一个巨大的SRAM来保存模型权重,这种方法遇到动辄100B+的模型权重就不够了。毕竟,即便是价值约500万美元的晶圆级芯片,也只有40GB的SRAM空间。

放英伟达的GPU上,内存就更小了:A100仅40MB,下一代的H100是50MB,要按量产产品价格算,对于一块芯片每GB的SRAM内存成本高达100美元。

账还没算完。目前来说,片上SRAM成本并没随摩尔定律工艺提升而大幅降低,若采用台积电下一代3nm制程工艺,同样的1GB,反而成本更高。

相比SRAM,DRAM倒是成本低很多,但延迟高一个数量级,且2012年来DRAM的成本也几乎没有明显压降。

随着AI继续向前发展,对内存的需求,还会增加,内存墙问题就是这么诞生的。

目前DRAM已占服务器总成本的50%。比如英伟达2016年的P100,比起最新的H100,FB16性能提升46倍,但内存容量只增加了5倍。

fe2fd86e28827d6c0876a327c45ac55b.png

 NVIDIA H100 Tensor Core GPU

另一个问题也与内存有关,即带宽。

计算过程中,增加内存带宽是通过并行性获得的,为此,英伟达使用了HBM内存(High Bandwidth Memor),这是一种3D堆叠的DRAM层组成的结构,封装更贵,让经费朴实的使用者们只能干瞪眼。

前面提到,PyTorch的一大优势在于:Eager模式让AI训练推理更灵活易用。但其内存带宽需求量也十分肥硕。

算子融合,即解决上述问题的主要方法。其要义在于“融合”,不将每个中间计算结果写入内存,而是一次传递,计算多个函数,这样就将内存读写量变少。

474609d6f080ea98b639787aed9680a9.png

 算子融合 图源:horace.io/brrr_intro.html

要落地“算子融合”,要编写自定义CUDA内核,要用到C++语言。

这时CUDA的劣势就显现出来了:比起写Python脚本,编写CUDA之于很多人真是难太多了……

相比下,PyTorch 2.0工具就能大幅降低这个门槛。其内置英伟达和外部库,无需专门学习CUDA,直接用PyTorch就能增加运算符,对炼丹师们来说,自然友好很多。

当然,这也导致PyTorch在近些年大量增加运算符,一度超过2000个(手动狗头)。

fefbab030fc625246332292cba835284.png

2022年末,刚发布的升级款PyTorch2.0更是大举发力,瞄准编译。

因添加了一个面向图像执行模型的编译解决方案,该框架在A100上训练性能提升86%,CPU推理性能也提升26%。

此外,PyTorch 2.0依靠PrimTorch技术,将原来2000多个算子缩到250个,让更多非英伟达的后端更易于访问;还采用了TorchInductor技术,可为多个加速器和后端自动生成快速代码。

而且PyTorch2.0还能更好支持数据并行、分片、管道并行和张量并行,让分布式训练更丝滑。

正是上述技术,再结合对英伟达之外厂商GPU和加速器的支持,原先CUDA为英伟达构筑的软件城墙就显得没那么高不可攀了。

52321d8362aef385bc50e038b7aae12f.png

身后还有替代者

这边英伟达自身内存提升速度没跟上,那边还有PyTorch2.0搞事,但还没完——

Open AI推出了个“简化版CUDA”:Triton。(直接偷家)

567a39adb6500ae070869e58a2fb564a.png

Triton是种新的语言和编译器。它的操作难度比CUDA低,但性能却可与后者媲美。

OpenAI声称:

Triton只要25行代码,就能在FP16矩阵乘法shang上达到与cuBLAS相当的性能。

OpenAI的研究人员已经使用Triton,生成了比同等Torch效率高出1倍的内核。

虽然Triton目前只正式支持英伟达GPU,但之后这个架构也会支持多家硬件供应商。

还有值得一提的是,Triton是开源的,比起闭源的CUDA,其他硬件加速器能直接集成到Triton中,大大减少了为新硬件建立AI编译器栈的时间。

不过话说回来,也有人觉得CUDA的垄断地位还远不算被打破。比如PyTorch的另一位作者、Meta杰出工程师Soumith Chintala就觉得:

(分析师Patel写的)这篇文章夸大了现实,CUDA将继续是PyTorch依赖的关键架构。

Triton并不是第一个(优化)编译器,目前大多数还是把注意力放在XLA编译器上面的。

37e4ac16ec8b629e954243e756ab2f75.png

他表示,现在尚不清楚Triton是否会慢慢被大家接受,这还得靠时间来验证。总之,Triton并没有对CUDA构成太大威胁。

文章作者Patel本人也看到了这条评论,然后回复称:

我可没说(CUDA的垄断地位)已经没了(Broken),而是说正在退步(Breaking)。

而且目前Triton还只正式支持英伟达GPU(没在别的GPU测试性能),如果XLA在英伟达GPU上的表现不占优势,那它恐怕不如Triton。

175747a660e4a2a27c8cf0f75d93e174.png

但Soumith Chintala反驳道,就算说CUDA的地位正在下滑也不妥。因为Triton要在硬件上推广的话,还有很多风险,还有很长的路要走。

e0da677e32954d9b86a628d548624739.png

有网友和这位PyTorch作者站在同一边:

我也希望垄断被打破,但目前CUDA还是最顶的,没了它,很多人构建的软件和系统根本玩不转。

bb69b4d895e940ebce5a5ee08690681a.png

那么,你觉得现在CUDA境况如何?

参考链接:
[1]https://www.semianalysis.com/p/nvidiaopenaitritonpytorch
[2]https://analyticsindiamag.com/how-is-openais-triton-different-from-nvidia-cuda/
[3]https://pytorch.org/features/
[4]https://news.ycombinator.com/item?id=34398791
[5]https://twitter.com/soumithchintala/status/1615371866503352321
[6]https://twitter.com/sasank51/status/1615065801639489539

本文仅做学术分享,如有侵权,请联系删文。
点击进入—>3D视觉工坊学习交流群

干货下载与学习

后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
3D视觉工坊精品课程官网:3dcver.com
1.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)8.从零搭建一套结构光3D重建系统[理论+源码+实践]
9.单目深度估计方法:算法梳理与代码实现10.自动驾驶中的深度学习模型部署实战11.相机模型与标定(单目+双目+鱼眼)12.重磅!四旋翼飞行器:算法与实战13.ROS2从入门到精通:理论与实战14.国内首个3D缺陷检测教程:理论、源码与实战15.基于Open3D的点云处理入门与实战教程16.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进
重磅!粉丝学习交流群已成立
交流群主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、ORB-SLAM系列源码交流、深度估计、TOF、求职交流等方向。
扫描以下二维码,添加小助理微信(dddvisiona),一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿,微信号:dddvisiona
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看,3天内无条件退款

高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值