DeepSeek开源昇腾基础设施:TileLang、Ascend C与六组CUDA侧组件对应关系详解

2026年9月30日,DeepSeek面向华为昇腾平台开放了一组大模型训练与推理基础设施。相关内容覆盖TileLang昇腾支持、矩阵计算、专家并行通信、通用算子、注意力以及TopK等环节。

把公开仓库逐个对照,可以看到DeepSeek给一组已经在NVIDIA/CUDA平台使用的项目补上了昇腾实现,范围远超几个零散算子。

一、开源组件与CUDA侧项目如何对应

昇腾侧组件或后端对应的CUDA侧项目或后端核心功能
TileLang Ascend后端TileLang CUDA后端高性能算子DSL、代码生成、调度和同步
DeepGEMM-AscendDeepGEMM CUDA版本GEMM、MoE等大模型核心计算内核
DeepEP-AscendDeepEP 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两条实现路径。上层接口尽量对齐,底层分别针对硬件优化。

对开发者而言,能读代码、跑测试、报问题,比“对标”两个字有用得多。

“一花独放不是春,百花齐放春满园”,昇腾生态建设也需要更多开发者、企业与开源项目共同参与,才能让技术能力真正沉淀为可持续发展的产业生态。

参考资料

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐