Administrator
Published on 2026-10-06 / 6 Visits
0
0

DeepSeek 昇腾移植:算清 AI 基础设施兼容性预算

DeepSeek 的昇腾移植把 AI 基础设施兼容性变成了一笔可以拆解的预算。应用侧能够复用包名、API 和部分开发流程,性能关键路径则继续依赖数据布局、编译器、内核、通信拓扑和验证环境。真正有用的问题因此变成:哪些层已经省下成本,哪些层仍要重做,以及每一条性能结论需要什么证据才能进入采购和生产决策。

阅读时间:约 8 分钟 · 证据核验日期:2026 年 10 月 6 日

TL;DR

  • DeepGEMM-Ascend 保留 deep_gemm 包名和公开 API,同时引入昇腾专用的 scale 布局、对齐规则、编译器和 kernel。
  • FlashMLA、DeepSelect 在同一 Python 接口下提供 CUDA 与 Ascend 路径,但两边支持的 dtype、索引类型、算子和模型版本存在差异。
  • DeepEP-Ascend 延续 EPBuffer 抽象,部分集合通信、负载均衡、Engram、graph capture 仍处于开发、实验或未支持状态。
  • 官方微基准证明代码能够在指定环境中有效利用硬件。生产替代还要通过整模负载、可靠性、升级和成本门禁。
  • 兼容性预算至少包含六层:接口、数据、编译运行时、kernel、通信、生产验证。

把兼容性从布尔值改成预算表

硬件迁移经常被压缩为一个问题:兼不兼容。这个口径会把大量成本藏在同一个绿色勾里。

更实用的表达是:

兼容性预算 =
  接口适配
  + 数据与数值适配
  + 编译器和运行时集成
  + kernel 与通信调优
  + 生产验证和运维
  + 后续升级回归

DeepSeek 在 9 月 30 日公开或更新的一组代码,已经明显压低了前几项成本。调用方式更熟悉,参考实现与测试入口公开,Ascend 950 的优化路径也已经存在。仓库同时公开了工具链要求、布局差异、能力缺口和性能条件。预算并未消失,它从应用代码层下沉到了基础设施层。

这正是 T01 基础设施优于组件在硬件迁移中的具体表现。一个 API 能否调用,只决定迁移的起点。数据怎样摆放、代码怎样编译、通信怎样跨卡、结果怎样复现,决定迁移能否完成。

六层兼容边界

层级 已复用部分 仍具平台差异的部分 验收证据
包名与 API 包名、公开函数、buffer 抽象 参数组合与支持模式 导入测试、API 合同测试
数据与数值 tensor 角色和上层 dtype 语义 scale 打包、stride、索引类型、KV layout、累加精度 跨后端正确性与误差测试
编译与运行时 JIT 流程、部分构建习惯 CANN、Bisheng、torch_npu、HCCL/HCOMM、设备探测 冻结环境矩阵、干净构建
Kernel 算子名称和参考行为 CUDA 与 Ascend 的独立实现、调度、流水线和对齐 分 shape 正确性与性能曲线
通信 EPBuffer 生命周期、dispatch/combine 概念 NCCL/NVLink/RDMA 与 UBMEM/URMA/HCCL 拓扑 目标拓扑上的多 rank 测试
生产验证 负载定义和服务目标 故障、监控、升级、尾延迟和 TCO 端到端回放、故障演练、合格负载成本

上层复用减少代码改动,下层差异决定性能和稳定性。兼容性预算的目标,就是让这两部分分账。

API 复用确实省钱

DeepGEMM-Ascend沿用 deep_gemm 包名,并把 kernel API 指向原版 DeepGEMM。公开范围包含 BF16、FP8、FP4 GEMM、MQA logits 和 MegaMoE 等操作。

DeepEP-Ascend保留 deep_ep 包与 EPBuffer 模型,训练、prefill 和 decode 继续围绕同一套 buffer 生命周期组织。FlashMLA 和 DeepSelect 则把 CUDA 与 Ascend 支持放在同一仓库和 Python 接口下。

这些工作将完整应用重写收敛为后端资格验证。调度逻辑、调用结构和相当一部分测试词汇可以继续使用。对于已经围绕 DeepSeek 基础设施开发的团队,这是直接可计量的迁移收益。

下一层开始支付硬件差异成本。

数据布局是第一笔隐性支出

DeepGEMM-Ascend 明确记录了一项差异:沿 K 维的每两个 UE8M0 scaling factor 会打包进一个 int16,再按 MN-major 保存。仓库专门提供转换函数,因为高效布局已经发生变化。

DeepSelect提供了更直观的能力边界。Ascend 路径当前支持 BF16 输入和 int32 索引;FP32 sampling 与 int64 索引属于 CUDA 路径。输入行还要满足 stride 和连续性要求,TopK 上限为 4096。

FlashMLA在 9 月版本中修改了 FP8、FP4 KV cache 格式,当前分支面向 DeepSeek V4.1,同时移除了 Hopper 和更早 DeepSeek 模型的支持。部分 fused sparse kernel 与 dense MHA 仍为 CUDA-only,Ascend 主要覆盖 sparse prefill 与 decode。

这些差异反映了合理的系统设计。硬件特性不同,高性能实现自然会采用本地布局与调度。工程验收需要把 dtype、shape、stride、模型 revision、KV 格式和误差容限写进合同。共享函数名负责入口一致,能力矩阵负责实际边界。

开发流程可以迁移,工具链和 kernel 需要重建

DeepGEMM-Ascend 的公开要求包括 Ascend 950、CANN 9.20、Bisheng、torch_npu、Python 3.10+ 和支持 C++20 的工具链。FlashMLA 在构建时识别 CUDA 或 Ascend,然后选择各自的源文件。DeepSelect 也分别维护 csrc/cuda_kernels 与 csrc/ascend_kernels。

真正复用的是架构:JIT 编译、Python binding、参考实现、测试入口。真正重写的是机器执行路径。

因此,以下工作都属于兼容预算:

  1. 冻结经过验证的 driver、firmware、CANN、PyTorch、torch_npu、编译器和仓库 revision。
  2. 为每条硬件路径生成不可变镜像。
  3. 覆盖生产会遇到的 shape、dtype、alignment 和运行模式。
  4. 分别维护性能基线,因为一个后端的优化可能把另一个后端的瓶颈推到不同位置。
  5. firmware、编译器、模型布局或 kernel revision 变化后重新验收。

vLLM Ascend 的安装矩阵在更高一层印证了这个逻辑:HDK、CANN、NNAL、PyTorch、TorchNPU、Triton Ascend、vLLM 与 vLLM Ascend 被当作一组兼容版本验证。可用性属于一套冻结栈,而非单独一颗芯片。

通信让拓扑进入兼容合同

大模型系统的限制经常从 GEMM 转移到 dispatch、combine、collective 和跨卡内存访问。

NVIDIA 侧 DeepEP依赖 CUDA、NCCL、NVLink 和 RDMA。DeepEP-Ascend 延续上层 buffer 抽象,底层改为 HCCL/HCOMM、UBMEM 与 URMA。

仓库也列出了当前边界:

  • batched all-gather 已提供,Ascend reduce-scatter 与 all-reduce kernel 仍在开发;
  • 负载均衡 API 已对齐,对应 Ascend 通信 kernel 尚未完成;
  • PP 与 Engram 仍属实验能力;
  • hybrid communication、CPU-backed Engram storage 与 graph capture 当前未支持。

于是,同一套 EPBuffer 能否完成迁移,取决于具体工作负载。只使用 expanded dispatch 与 BF16 combine 的系统可能已经具备验证条件。依赖 graph capture、CPU 后备存储或缺失 collective 的系统,还要增加绕行方案和维护成本。

性能数字必须带着测试单元一起走

几个仓库给出了很强的性能信号。

FlashMLA 报告 Ascend 950 sparse prefill 最高 410 TFLOPS,sparse decode 最高 360 TFLOPS,官方分别标注为理论峰值的 95% 和 83%。DeepSelect 报告相对 torch.topk 的 2 至 20 倍加速。DeepEP-Ascend 则公布了多个 EP size 下的 dispatch 与 combine 带宽。

这些数字能够支持三层结论:实现真实存在,公开测试路径存在,代码在指定微基准单元中可以高效利用硬件。

更强的生产结论需要继续升级证据。DeepEP-Ascend 明确说明,其性能结果来自 Ascend 950DT、CANN 9.2.0、DeepSeek 获得的 PoC HDK 和额外手工配置。该配置并非公开发行版。FlashMLA、DeepSelect 的数字同样属于仓库作者运行结果。本次核验没有 Ascend 950 环境,无法执行独立复测。

可以用六级证据阶梯约束结论:

级别 证据 可以支持的结论
1 仓库与源码 已有公开实现
2 测试与基准方法 存在复现路径
3 冻结条件下的厂商结果 指定栈达到报告结果
4 目标硬件独立复跑 结果可迁移到采购方环境
5 整模负载与故障验证 满足生产服务合同
6 持续生产观测与 TCO 迁移具备长期经济价值

接近硬件峰值回答了软件能否驱动本卡。整模 tokens/s、任务质量、集群可靠性、升级成本和运维人力属于后续门禁。

一套可执行的昇腾迁移门禁

第一步:冻结真实负载

记录模型 revision、精度、上下文分布、batch、并发、训练或推理模式、EP size、拓扑、质量目标、延迟目标和故障预算。

第二步:建立能力矩阵

把每项必要操作分成四类:已支持且验证、支持但有约束、实验能力、缺失。数据布局和生命周期行为也要进入矩阵。

第三步:固定完整环境

保留容器 digest、HDK、firmware、CANN、PyTorch、torch_npu、编译器、仓库 commit、运行参数和拓扑。环境本身就是交付物。

第四步:先验正确性

用可信参考实现交叉检查结果,覆盖边界 shape、NaN、padding、alignment、determinism、数值误差和多 rank 行为。量化与 layout 转换完成后,再跑任务级质量评测。

第五步:寻找当前瓶颈

先测 kernel 曲线,再测完整 layer 与端到端回放。共同记录尾延迟、吞吐、显存、通信、编译时间、失败、恢复和合格任务率。每次有效优化后重新定位瓶颈。

第六步:验证运维与升级

演练冷启动、缓存失效、节点丢失、rank 失败、链路降级、回滚、监控和版本升级。第二套硬件后端会增加 CI 单元、镜像、仪表盘、值班知识和发布协调。

第七步:计算合格负载成本

把硬件、能耗、工程时间、支持费用、利用率、重试、故障恢复和升级回归放进同一个分母。比较完成且通过验收的工作负载,而非峰值算力。

这个门禁能够得出三种合理结果:迁移 Ascend、继续 CUDA、保留混合机群。统一证据合同可以让三种决策在同一张表上比较。

DeepSeek 真正改变了什么

DeepSeek 把昇腾支持的起点向前推进了一大步。采用方现在可以从公开、优化过的实现和对齐接口出发,应用结构更容易保留,kernel 团队也有可审计的参考工程。

剩余预算集中在硬件差异真正产生性能的地方:数据表达、编译行为、kernel 调度、通信拓扑和生产验证。DeepSeek 与华为通过模型、kernel、硬件团队的深度协同支付了其中一部分成本。普通采用方继承这些基础设施,再为自己的工作负载完成资格验证。

这比兼容口号更有价值。它给出了一张清楚的分工图:哪些能力可以复用,哪些能力还需要工程时间。

常见问题

原有 DeepGEMM 调用能直接迁到 DeepGEMM-Ascend 吗?

支持范围内可以保留包名和公开 kernel API。高效输入仍需遵守 Ascend 专用 scale 布局、对齐、工具链和硬件条件。源码兼容与运行边界兼容应分别验收。

API 一致能否保证性能一致?

API 一致减少应用改动。性能由 shape、dtype、layout、编译器、kernel、firmware、拓扑和负载共同决定,目标栈仍要重跑正确性与性能。

这些仓库能否覆盖更早的昇腾芯片?

固定版本的 DeepGEMM-Ascend 与 FlashMLA 文档面向 Ascend 950。DeepEP-Ascend 也明确限定了已测环境。其他代际和 CANN 版本需要独立能力矩阵。

官方基准是否足以证明 CUDA 可被替代?

官方基准证明指定测试单元中的实现效率。生产替代还要加入功能覆盖、整模负载、质量、可靠性、运维、升级与 TCO。

最小 PoC 应该做到什么程度?

选一个代表性负载,冻结完整栈,通过跨后端正确性,验证端到端服务目标,再完成一次故障和升级演练。这个小合同比大而全的功能清单更能暴露真实成本。

参考资料

下一步:为目标负载建立一页兼容性台账,把所有必需 API、dtype、shape、collective、编译器版本和故障模式标上证据等级,再进入采购或迁移排期。


Comment