【DeepSeek开源昇腾基础设施】
DeepSeek开源昇腾基础设施:TileLang、Ascend C与六组CUDA侧组件对应关系详解
2026年9月30日,DeepSeek面向华为昇腾平台开放了一组大模型训练与推理基础设施。相关内容覆盖TileLang昇腾支持、矩阵计算、专家并行通信、通用算子、注意力以及TopK等环节。
把公开仓库逐个对照,可以看到DeepSeek给一组已经在NVIDIA/CUDA平台使用的项目补上了昇腾实现,范围远超几个零散算子。
一、开源组件与CUDA侧项目如何对应
| 昇腾侧组件或后端 | 对应的CUDA侧项目或后端 | 核心功能 |
|---|---|---|
| TileLang Ascend后端 | TileLang CUDA后端 | 高性能算子DSL、代码生成、调度和同步 |
| DeepGEMM-Ascend | DeepGEMM CUDA版本 | GEMM、MoE等大模型核心计算内核 |
| DeepEP-Ascend | DeepEP CUDA版本 | MoE专家并行dispatch/combine通信 |
| TileKernels Ascend后端 | TileKernels NVIDIA后端 | MoE路由、量化、Engram、mHC、RoPE等算子 |
| FlashMLA Ascend内核 | FlashMLA CUDA内核 | MLA/DSA稠密及稀疏注意力 |
| DeepSelect Ascend内核 | DeepSelect CUDA内核 | DSA与采样使用的TopK |
这张表对应的是DeepSeek自己的项目。它不是NVIDIA官方CUDA Toolkit的替换清单。
从功能领域看,DeepGEMM-Ascend与cuBLAS、CUTLASS所覆盖的矩阵计算领域存在交集,DeepEP-Ascend与NCCL、NVSHMEM参与的多设备通信领域存在交集。但DeepGEMM更聚焦大模型特定计算内核,DeepEP更聚焦MoE专家并行,因此不能直接写成“DeepGEMM-Ascend等于cuBLAS”或“DeepEP-Ascend等于NCCL”。
二、各组件解决什么问题
1. TileLang:更高层的算子开发入口
TileLang是面向高性能GPU、CPU和NPU内核开发的领域专用语言。开发者使用Python风格语法和面向Tile的编程模型描述计算,再由编译器及不同硬件后端完成代码生成和调度。
TileLang增加昇腾支持后,同一套上层编程方式可以面向NVIDIA GPU与华为昇腾NPU。两个后端的实现并不相同,平台差异主要由编译器和后端处理。
2. DeepGEMM-Ascend:大模型矩阵计算
DeepGEMM-Ascend是DeepGEMM面向华为昇腾平台的移植。官方项目说明强调其与DeepGEMM的API兼容,并覆盖BF16、FP8、FP4 GEMM以及相关模型计算场景。
矩阵计算是大模型训练与推理的核心负载。保持上层接口相对一致,有利于模型和框架在不同硬件平台之间复用调用逻辑,但底层仍需针对昇腾架构重新进行数据布局和流水优化。
3. DeepEP-Ascend:MoE专家并行通信
MoE模型需要将Token分发给不同专家,并在计算完成后合并结果。DeepEP-Ascend提供dispatch、combine等专家并行通信能力,并基于昇腾侧通信基础设施实现。
它补充的是多NPU协同环节。只有计算内核而缺少高效通信,大规模MoE训练和推理仍可能受数据传输限制。
4. TileKernels:可复用高性能算子集合
TileKernels使用TileLang编写,覆盖MoE路由、量化、Engram、流形超连接、RoPE等操作。公开说明显示,项目增加昇腾后端后,可以在相同Python API下自动选择NVIDIA GPU或昇腾NPU实现。
这种设计有助于将平台差异收敛到算子和编译后端,而不是扩散到模型的每一层调用代码。
5. FlashMLA:注意力内核
FlashMLA提供MLA/DSA相关的注意力实现。当前仓库同时包含CUDA与Ascend构建目标,昇腾侧增加了相应的稠密或稀疏注意力内核。
注意力通常是大模型推理的重要性能热点。把相关内核与矩阵计算、TopK和通信组件一同开放,使优化对象从单个算子扩展到更完整的模型执行链路。
6. DeepSelect:TopK选择
DeepSelect是面向DeepSeek Sparse Attention和采样场景的高性能TopK实现。该项目同时支持CUDA和昇腾平台,但公开文档也列出了不同后端当前在数据类型、索引类型等方面的差异。
所以看到“支持双平台”时,还要继续查当前版本支持的数据类型、参数和硬件范围,不能只看项目首页的一句话。
三、TileLang与Ascend C是什么关系
可以将二者理解为不同抽象层的开发方式:
模型与框架
↓
TileLang / 高性能算子库
↓
原生代码生成 / Ascend C / PTO / AscendNPU IR等路径
↓
CANN编译及运行时能力
↓
昇腾NPU
Ascend C面向昇腾算子编程,允许开发者控制数据搬运、片上存储、计算流水和同步等底层过程。它能够提供较强的硬件控制能力,也是高性能实现的重要基础。
TileLang提供更高层的Tile编程模型。其昇腾生态可以通过原生代码生成、Ascend C、PTO或AscendNPU IR等不同路径连接硬件,具体方式取决于硬件和项目版本。它的目标是降低常见高性能算子的表达和维护成本。
因此,TileLang与Ascend C不是竞争或替代关系。对开发者而言,它们构成了“高层快速开发”和“底层精细优化”两种互补入口。
Ascend C继续开放底层能力,开发者就能保留手工精调的自由;TileLang通过高级编译降低常见算子的开发成本。两条路线并行,既照顾追求极致性能的专家,也给快速验证和批量开发留下入口。从生态建设看,开放不是附加项。只有底层能力足够透明、足够可用,上层工具和社区创新才有生长空间。
四、此次开源的工程意义
降低跨平台维护成本
部分项目保持同名API或统一Python接口,使模型上层代码能够尽量稳定。跨平台迁移仍需要测试和调优,但不必从完全不同的接口体系起步。
提供真实的Ascend C优化样本
开发者可以直接研究模型关键组件中的数据布局、流水调度、同步以及通信与计算重叠策略。这类真实负载的参考价值通常高于孤立的教学算子。
让计算和通信共同优化
DeepGEMM-Ascend、FlashMLA、DeepSelect和TileKernels覆盖计算热点,DeepEP-Ascend处理专家并行通信。二者进入同一套开放技术栈后,更有利于分析端到端瓶颈。
扩大昇腾开源协作面
代码开放后,算子覆盖、正确性、编译适配、性能回归和框架集成都可以形成具体议题。开发者不再只能讨论“是否支持”,而能进一步讨论“哪个Shape、哪种数据类型、哪个版本还需要优化”。
五、应当如何看待与CUDA生态的关系
CUDA生态包含编程模型、编译器、数学库、通信库、调试工具、框架适配和长期社区积累。几项开源组件不能直接等同于完整CUDA生态,也不能据此得出“已经全面替代CUDA”的结论。
这次发布带来的直接变化,是DeepSeek的部分关键模型基础设施有了NVIDIA GPU与昇腾NPU两条实现路径。上层接口尽量对齐,底层分别针对硬件优化。
对开发者而言,能读代码、跑测试、报问题,比“对标”两个字有用得多。
“一花独放不是春,百花齐放春满园”,昇腾生态建设也需要更多开发者、企业与开源项目共同参与,才能让技术能力真正沉淀为可持续发展的产业生态。
参考资料
更多推荐




所有评论(0)