绕开CUDA的第二条路:DeepSeek为什么押注TileLang而不是押注芯片
9月30日,DeepSeek官宣与华为合作,围绕昇腾芯片开源一套编程工具链:计算库、芯片间数据传输库,以及核心的算子语言 TileLang。双方还联合优化了128颗昇腾950组成的超节点集群。Reuters 的报道把它解读为"减少依赖",The Decoder 称之为"中国AI行业的抱团"。这些解读都对,但都停在贸易战的层面。真正值得深挖的是另一个问题:为什么打破 CUDA 垄断的突破口,是一家模型公司贡献的一门编程语言,而不是芯片厂商的硬件参数? 一、CUDA的护城河到底挖在哪里 过去十年,“挑战英伟达"的故事我们听过太多次:TPU、Trainium、MI300、Gaudi……硬件性价比屡屡逼近甚至局部反超,但市场份额纹丝不动。原因早已不是算力,而是算力之上的那一层——编程模型。 CUDA 的垄断本质是三层的叠加: 语言与编译器层:CUDA C++ 及其 17 年积累的编译优化; 算子生态层:cuDNN、CUTLASS、FlashAttention 等几十万开发者的持续贡献; 迁移成本层:一个团队的既有代码、调试经验、性能直觉,全部绑定在这套栈上。 第三层最致命。芯片可以买,语言可以学,但一个组织十年攒下的 CUDA 肌肉记忆无法平移。所以此前所有"兼容 CUDA"的路线(ROCm 的 HIP、各家芯片的转译层)都在第一层打转,试图让 CUDA 代码"免费"跑在自家硬件上——结果永远在追赶英伟达新指令集的尾灯。 TileLang 走的是完全相反的方向:不是让 CUDA 代码跑过来,而是让 CUDA 这一层变得不必要。 二、TileLang:把硬件细节"关进"语言里 TileLang 由北京大学开发,2024 年开源,是一门以"瓦片"为中心的 DSL:Python 做前端,开发者用几十行代码描述计算的分块、内存层级映射和并行策略,编译器负责生成针对具体后端的代码。用 DeepSeek 的话说,“编程模型比 CUDA 更简洁”。 这不是客套。传统 CUDA 写一个高性能 Attention kernel,需要手工管理 shared memory、warp 调度、bank conflict、流水线同步,代码上千行,调优数周。而 TileLang 把"tile 级编程"作为一等公民:你只说清楚"数据怎么切、块放哪、怎么搬”,剩下的交给编译器在不同硬件上各自落地。它已经在 FlashAttention、MLA(DeepSeek 自己的多头潜在注意力)等关键 kernel 上验证过性能。DeepSeek 透露已在 AGI 研发中实际使用约一年——也就是说,这不是实验室玩具,而是 V3.2 以来自家训练栈的一部分。 更值得注意的是适配广度:TileLang 已经与昇腾、摩尔线程、算能、沐曦等国产厂商完成适配合作。一门语言,多个硬件后端——这正是它对 CUDA 的结构性差异。CUDA 是"一家硬件的语言",TileLang 想做"一层计算的通用接口"。 ...