| |
|
知识库 -> 数码 -> 英伟达终为 CUDA 添加原生 Python 支持,他有什么目的? -> 正文阅读 |
|
[数码]英伟达终为 CUDA 添加原生 Python 支持,他有什么目的? |
[收藏本文] 【下载本文】 |
今年,英伟达可谓是全力押注,明确表示要确保 Python 成为 CUDA 并行编程框架中的“一等公民”。 多年以来,英伟达为 GPU 开发的 CUDA… |
因为看到了 Triton 的巨大成功呗。 过去在 CUDA 设计时,可能默认目标用户群体都会写 C++,所以根本没考虑去支持 native Python interface。 但其实 ML 社区里有不少人没有 C++ 编程经验,却完全有能力做 GPU programming,这点从各种 Triton 的 open-source 项目中就能看出来。Triton 的成功,完全是它足够拥抱 Python 社区的结果。 不过 Triton 在易用性和灵活性之间的权衡严重倾向前者,导致很多稍微复杂一点的功能很难实现。同时它在 H100 这类新卡上的支持也不太充分,常常碰到各种迷之 compiler bug。 如果 NVIDIA 能在这个时间点推出一个(1)原生支持 Python、方便 ML 从业者快速上手,同时(2)保留 block-level 的 GPU 编程粒度但解决 H100 支持和编译错误,或者进一步(3)像 ThurdenKitten (TK) 和 TileLang 一样把粒度细化到 tile-level,从而增强表达能力,那完全有机会切走一大部分 Triton、TK、TileLang 的目标用户,甚至还能吸引一部分懒得写 CUDA 的 cutlass 用户。 (TK 虽然被很多擅长 C++ 的人觉得好用,但像我这种 Python 小将来说,只能望而却步。TileLang 倒是有原生 Python 支持,用起来也挺顺手的,但整体编译器生态感觉还不够成熟,之前用下来迷之compiling bug比triton更多) |
当然是怕了 逆开源社区而行,教育用户做事,是deepseek火起来之前的做法,上个版本苹果称王规训用户 去年大家的共识是,如果AMD出个几千块钱的显卡,然后性能跟4090一样,哪怕没有AI加速相关驱动,开源社区也会帮忙写一个。结果今年AMD真做到这个价格了 送礼物 还没有人送礼物,鼓励一下作者吧 |
你还不如信我Julia是CUDA编程的一等公民(笑)。毕竟我大Julia真的能在做到同一份代码可以编译到CPU和GPU,还支持垃圾回收+io print+边界检查,神不神奇。这套基于LLVM技术从原理上说,吊打现有所有实现(可能除Rust外)。 用CUDA的人除了深度学习社区以外就是传统数值计算的人,前者的需求我觉得C++ CUDA和Triton/Jax更多的DSL可以解决(Python真正比C++优越的地方在于用动态派发取代了模版,这就是个更特化的Julia,代价是DSL破坏了组合性),后者的需求嘛,我觉得Python解决不了,因为CPU的部分你反正也要在一个高性能语言里写。 |
再不搞cutile的话Triton就真的垄断了。。Triton可以基于CUDA也可以non CUDA啊。。 说实话Triton对模型的训练优化比CUDA本身方便多了,效果也没差距,甚至偶尔还有小惊喜。。 另外一些吹嘘CUDA的可能连CUDA编程都没做过,gpu物理结构都不了解。。 CUDA封装了sm,未来Triton为啥不能封装。。如果算子固化,大家都去深挖效率,CUDA的护城河可就有危险了。。 卖铲子的人自然希望用铲子的方式和姿势越多越好,可是用铲子的人只想有个标准步骤123,一铲子下去就能出金子。。现在显然用铲子的人有主导权,卖铲子的不按着用铲子人的需求进步,别怪未来用铲子的人把标准步骤优化完成以后找其他造铲子的人进行直供了。。 |
我认为python发展到今天的地步,往后会往方言化发展。一种方言保留了原生的灵活性,另一种方言则在引入类型系统和动态派发的基础上往高性能发展(疑似mojo)。这在py3.13里已经有一些苗头。 原生的python支持其实并不算难事,这点我在写julia的gpu程序时有比较深的感触。大致是在首次运行程序时多一个编译过程,这样即便不做任何类型标注,只要传参类型稳定并且不涉及多余的内存分配,编译器可以根据首次运行的参数推导出数据类型,正确地把核函数编译出来。 但这里困难的是在核函数中几乎大多数python库和数据结构都是没法用的,我几乎想象不出在kernel里操纵一个dict,dataframe,甚至随便一个全局变量之类的东西要怎么实现。python能站稳脚跟且受众多是因为足够的第三方库,而在kernel里几乎99%的三方库都直接被ban了。 回到题目,目的显然是很简单的,所有人都希望能用简单的语法就实现高性能的程序。这不是新鲜事,pyopencl就是一个例子。但python的运行时检查类型的设计注定和高性能是冲突的,因此如果能从现在python原生语法基础上拉一个分支出来,正确引入模板和类型标注系统,在此基础上再讨论python成为cuda一等公民的事情,还是比较有盼头的。 |
Numba CUDA 2017年就开始了,支持Python(连风格也是Python而非苹果那种写一长串c++ mps然后当字符串传入再pipeline)写kernel然后自动llvm转了跑,主要开发者后来被Nvidia官方收编了,也是这次CUDA Python项目的重头戏 (不才,用Numba CUDA发两篇SCI了,嘻嘻 甚至连ROCm这种货色都partial support了,苹果对numba就一直是冷处理,宁可派人去做pytorch和tensorflow,或者直接下场做MLX,但绝对不开放LLVM给Numba开发者做Metal GPU并行加速。只能说苹果对非C++系的科研人员非常不友好,总不能让人用swift来写算法吧 送礼物 还没有人送礼物,鼓励一下作者吧 |
python作为最接近自然语言的编程语言。 还用分析他有什么目的? 任何新的方向,如果要扩大基础和易用性的话,必然会用python 送礼物 还没有人送礼物,鼓励一下作者吧 |
Nvidia终于意识到CUDA的用户正在大量的流失向Triton了。ML research里有大量场景都需要用到一些kernel来提升algorithm的速度,如果只有CUDA一个解决方案,考虑到学习成本,大量的人都是不愿意去写这个kernel的。Triton相比之下就会好很多,学习成本很低,一行 CUDA都不用写就能快速得到一个performance比较好的kernel,researcher也会更愿意去学习尝试。 就算最后的Performance不如CUDA(比如可能慢10%~20%),但是能够避免啃复杂的 CUDA API和CUDA 文档也还是很爽。所以说Triton 非常适合做快速原型验证想法,等算法基本成熟后再决定要不要用 CUDA 重写。 不过由于Triton将coding做了极其大量的简化,很多操作都是十分受限的。如果Nvidia能够在这些地方做的比Triton更好,还是有机会从triton手里抢下来很多用户的。Triton将GPU Kernel抽象成Block为单位,但无法控制Warp-Level的一些操作。并且Triton对张量形状的灵活控制严重不足,只能拿interleave或者split做一些稍微高级一点的操作。如果希望kernel需要对tensor做复杂的reshape或者切片,Triton几乎是完全做不到的。如果它能支持复杂切片操作的话我估计会乐意试试nvidia之后推出的产品(笑) 题外话是ThunderKittens,设计理念是提供比Triton更细粒度的 GPU 控制,同时尽可能保持简单易用。最近朋友推荐说性能不错,写起来也远比Cutlass或者CuTE简单,我也正在开始学习研究一下。对于只懂 Python 的用户来说,上手门槛还是高了一些,没有CUDA/C++背景写起来可能还是有一些难度。 相比之下,再去写Cutlass和CuTe显得有些吃力不讨好。Cutlass/CuTe 的学习曲线相当陡峭,想要自己去修改一个 kernel支持一些自定义操作,也会牵涉到很多模板参数调整,何必为难自己呢。 |
可能是因为大部分基于CUDA的计算都是由python应用触发的吧。。。 然后这行当越来越大,它们发现越来越多的从业人员压根写不好c++了 |
进一步扩展cuda生态,让更多的人使用呗 |
入选框架是numba,不是tvm和triton,nvidia是懂产品和玩具的区别的 |
学python太容易了,比我们90年代在小学学的汇编方便很多。 送礼物 还没有人送礼物,鼓励一下作者吧 |
JIT编译快 |
All in triton,根本不需要写C++,性能很快就会上来 |
英伟达想搞垄断了 |
互联网各领域资料分享专区(不定期更新): Sheet 最近全球科技圈都被老黄刷屏了! 就在上周的GTC大会上,英伟达扔出一颗"核弹"——宣布CUDA工具包将原生支持Python!消息一出,全球2500万Python开发者集体沸腾,Reddit论坛当天直接瘫痪3小时。 要知道过去15年里,用CUDA搞GPU编程就像在米其林餐厅吃火锅——明明有现成的电磁炉(显卡),非得用C++这个"炭火铜锅"。现在好了,Python党终于能甩开膀子直接开涮! 一、Python上位史:从"备胎"到"C位"的逆袭 十年前你要是说用Python写显卡程序,绝对会被C++大佬们笑掉大牙。那时候的Python在GPU界就是个"跑龙套的",想搞点并行计算还得靠Numba、CuPy这些"二道贩子"。 但时代变了!现在连NASA都在用Python算天体轨迹,OpenAI用Python调教出ChatGPT。老黄这次亲自盖章认证:"Python就是AI时代的C语言!" 看看这组数据就知道: PyTorch用户年增长217%Python在AI框架使用率高达87%全球每天新增50万行Python代码 英伟达CTO直接摊牌:"我们就是要让每个Python程序员都能成为GPU魔术师!" 二、老黄的"阳谋":左手生态,右手印钞机 明眼人都看出来了,这波操作藏着英伟达的"三重算计": 1. 收割AI红利 现在哪个AI项目不用Python?从Stable Diffusion到Llama 3,哪个不是Python全家桶?直接打通CUDA-Python,等于给英伟达显卡装上了"印钞加速器"。 2. 构建护城河 AMD的ROCm、英特尔的oneAPI最近都在挖CUDA墙角。老黄这招直接绑定全球最大的开发者社区,就像在自家花园里种满仙人掌——看谁敢来碰瓷! 3. 培养下一代"显卡原住民" 00后程序员都是泡在Python里长大的。现在让他们从入门就习惯CUDA生态,这波用户黏性直接拉满三十年。 三、真香警告:你的显卡要开始"说人话"了 实测新版本CUDA-Python,这几点改动堪称史诗级进化: 告别"套娃式"编程 以前要在Python里调用CUDA,得先写C++内核,再用ctypes包装,最后用PyBind11对接。现在直接import cuda,三行代码启动GPU!内存管理原地起飞 自动内存回收+零拷贝数据传输,内存泄漏?不存在的!实测MNIST训练速度提升40%,显存占用减少35%调试不再"开盲盒" 原生支持pdb调试器,断点能直接打在GPU内核上。有程序员调侃:"这感觉就像给F1赛车装上了倒车影像" 更绝的是支持Jupyter Notebook实时渲染,现在连调参都能看着显卡温度搞可视化! 四、暗流涌动:显卡江湖要变天? 消息一出,科技巨头们连夜改PPT: AMD紧急官宣"ROCm for Python"路线图英特尔推迟发布Arc显卡驱动更新连谷歌的TPU团队都开始研究Python接口 但最慌的可能是云计算厂商。现在随便一个大学生都能用Colab笔记本调用A100,谁还去买天价云服务? 业内人士预测:未来3年,掌握CUDA-Python将成为算法工程师的标配技能,就像现在人人都要会Git一样。 五、普通开发者能薅到什么羊毛?学习成本暴跌 官方推出"CUDA-Python速成秘籍",GitHub上示例代码多到看不过来硬件门槛降低 实测RTX 3060就能跑通LLM微调,游戏本秒变炼丹炉就业市场洗牌 猎头透露:会CUDA-Python的简历直接进优先池,薪资平均上浮30%写在最后 这次更新看似是技术迭代,实则是英伟达的生态霸权宣言。当Python遇上原生CUDA,就像给火箭装上AI导航——接下来的算力爆炸,可能会超出所有人想象。 有程序员在推特吐槽:"刚学会CUDA C++就要失业?"底下最高赞回复是:"不,是你终于不用再写C++了!" 所以问题来了:当显卡开始说Python,你准备好迎接这个"人均调卡师"的时代了吗? |
扩大生态,进一步增加市场占有率。 |
|
[收藏本文] 【下载本文】 |
上一篇文章 下一篇文章 查看所有文章 |
|
|
娱乐生活:
电影票房
娱乐圈
娱乐
弱智
火研
中华城市
印度
仙家
六爻
佛门
风水
古钱币交流专用
钓鱼
双色球
航空母舰
网球
乒乓球
中国女排
足球
nba
中超
跑步
象棋
体操
戒色
上海男科
80后
足球: 曼城 利物浦队 托特纳姆热刺 皇家马德里 尤文图斯 罗马 拉齐奥 米兰 里昂 巴黎圣日尔曼 曼联 |
网站联系: qq:121756557 email:121756557@qq.com 知识库 |