AIREITER

DeepSeek Ascend 基礎架構元件:對照 NVIDIA 生態系

最近更新: 2026-09-30 19:17:36

公開在 GitHub 上的程式碼,很容易讓人誤以為整套硬體架構已經隨時可用。DeepSeek 的 Ascend 開發確實具備實用價值,但它並不是能用一行指令取代 NVIDIA 叢集的完整方案:目前公開版本以 Ascend 950 kernel 為核心,並要求 CANN、torch_npu 與相容硬體。

先講結論:公開的是元件,不是開箱即用的 Ascend 叢集

DeepSeek 已公開多項針對 Ascend 的程式碼,包括 DeepGEMM-Ascend。這是一套採 MIT 授權、維持 DeepGEMM API 形狀,並改以 Huawei NPU 為目標的平台專用 kernel 函式庫。儲存庫的初始版本支援 Ascend 950 裝置,並將 CANN 9.20、torch_npu、Python 3.10 以上版本、C++20 工具鏈與 TileLang 列為環境組成。

對於手上已有相容 Ascend 資源的團隊來說,這些內容足以用來檢視、建置、測試效能,並整合特定 kernel。但它還不是一套完整的訓練或正式環境架構。

目前擁有 Ascend 設備的實驗室、雲端業者與企業團隊,都可以開始評估這些程式碼。只有 NVIDIA 硬體的開發者則可以研究程式,或使用 DeepSeek 面向 NVIDIA 的專案,但無法在 H100 或消費級 GeForce 顯示卡上執行這些 Ascend kernel。

DeepSeek 實際公開了哪些東西?

DeepSeek 的 open-infra-index 將基礎架構工作分成多個層次。原始索引大多以 NVIDIA/Hopper 為主:FlashMLA 是 Hopper GPU 的 MLA 解碼 kernel,DeepEP 是專家平行運算通訊函式庫,DeepGEMM 是 FP8 GEMM 函式庫,DualPipe 與 EPLB 處理分散式平行運算,而 3FS/Smallpond 則負責資料存取。

Ascend 版本的重點,是先替部分運算路徑更換硬體目標,而不是一次把所有層級完整替換。現階段最明確的公開成果是 DeepGEMM-Ascend,涵蓋:

  • BF16、FP8 與 FP4 GEMM;
  • MQA logits;
  • 分組 GEMM 與 MegaMoE 路徑;
  • mHC prenorm kernel;以及
  • Ascend 專用的 JIT 編譯與 layout 轉換。

專案表示其 API 與 DeepGEMM 相容。這對模型工程師很有價值,但不代表 CUDA 二進位檔可以直接移植。Ascend 的矩陣 layout、縮放因子封裝方式、編譯器、runtime 與裝置管理 API,仍然各有一套要求。

元件對照:把 Ascend 放進以 NVIDIA 為主的技術堆疊

下表對照的是各元件扮演的角色,不代表兩者採用完全相同的實作。所謂對應方案,是指處理相近工作;它可能使用不同的 API、通訊互連或 kernel 策略。

層級已確認的 Ascend 程式碼或依賴以 NVIDIA 為主的對應方案界線
矩陣乘法DeepGEMM-AscendDeepGEMM 加上 CUDA/Tensor Core kernel扮演相同 GEMM 角色,但硬體原語與資料 layout 不同
MoE 分組運算DeepGEMM-Ascend 中的 M-Grouped GEMM 與 MegaMoEDeepGEMM MoE layout 加上客製化 CUDA kernel融合專家運算,但 shape 與限制取決於平台
專家分派本次版本未確認包含完整的 DeepSeek Ascend 分派函式庫;需使用 Ascend collective 與 operator 整合DeepEP 搭配 NVLink/RDMA處理的是相近的系統問題,但兩者儲存庫不可互換
Attention/logitsDeepGEMM-Ascend 中的 MQA logits面向 Hopper 的 FlashMLA工作負載相近,但 FlashMLA 明確以 Hopper 為目標
PyTorch 裝置橋接TorchNPU(torch_npu)PyTorch CUDA backend、CUDA runtime 與 cuBLASTorchNPU 會呼叫 Ascend NPU,不會模擬 CUDA
編譯器與 operator 工具鏈CANN 與 Ascend C/Bisheng 工具CUDA Toolkit、NVCC、PTX、cuBLAS、TritonPython 程式碼看起來可能很熟悉,但裝置契約已經改變
分散式 runtimeTorchNPU collective 加上 Huawei/operator 部署工具NCCL、支援 CUDA-aware 的網路與 NVIDIA 叢集軟體互連、驅動程式、collective 與 framework 版本仍各自獨立
儲存與資料路徑這裡未確認有 DeepSeek 專用的 Ascend 儲存元件;儲存由業者提供DeepSeek 的 3FS/Smallpond 加上業者的儲存堆疊這套 kernel 版本不包含相應的儲存叢集

簡單說,每個 Ascend 對應方案都能補上某個系統角色,但不會因此消除 NVIDIA 軟體生態系的差異。

運算 kernel:DeepGEMM-Ascend 對上 DeepGEMM

DeepGEMM-Ascend 是這次發布中最具體的橋接元件。README 將它描述為建構在 Ascend MAD 原語之上的輕量抽象層,負責隱藏 fractal layout、對齊限制、位址計算與底層參數。同時,它也採用了稀疏資料載入與以 coroutine 為基礎的 pipeline 等 Ascend 專用技術。

官方列出的需求相當明確:Ascend 950 系列硬體、CANN 9.20、torch_npu、Python 3.10 或更新版本、相容 C++20 的標準函式庫、TileLang,以及包括 Tree-sitter 在內的建置依賴。文件中的安裝流程包含 git clone --recursive,接著執行 pip install . --no-build-isolation。

儲存庫回報,在 Ascend 950DT 測試環境中,dense-GEMM 使用率最高可達所列硬體上限的 99.8%。其中一個 BF16 案例為 431 TFLOPS,對照 432 TFLOPS 的硬體上限;FP8 案例則列出 861 對 865。這些是特定 shape 下的 kernel 結果,不是 DeepSeek 端到端吞吐量,也不能證明它與 NVIDIA 叢集效能相當。

MoE 執行:MegaMoE 與專家分派

DeepSeek 的 open-infra-index 已指出 V3/R1 系統使用專家平行基礎架構,因此真正重要的問題,不只是單次矩陣乘法有多快。Token 必須先路由,專家完成運算後,結果還要跨 rank 合併。

DeepGEMM-Ascend 的 MegaMoE benchmark 將專家平行分派、兩次分組 GEMM、SwiGLU 與 combine 融合在一起。其公開設定為 EP8、top-k 6、1 個共享專家,並以 8 個 rank 的結果取平均。以 384 個專家、16,384 個 token 的案例來看,README 在一組列出的 hidden/intermediate 設定中回報 846.3 TFLOPS,另一個列出的案例則有 103.3 GB/s 通訊頻寬。

NVIDIA 這邊的對應方案是 DeepEP,加上 DeepGEMM 的 MoE layout,以及周邊的 NCCL/NVLink/RDMA 環境。兩邊面對的是相似的架構問題,但若沒有對齊 token 數量、專家路由、精度、rank 數量與網路條件,就不能直接跨廠商比較這些數字。

模型專用 kernel:MQA logits 與 mHC prenorm

如果只把這次發布描述成「GEMM 移植版」,很容易忽略 Ascend 專案中另外幾個模型專用 kernel。DeepGEMM-Ascend README 將 MQA logits benchmark 標示為 DeepSeek Lightning Indexer 路徑的一部分,並列出 FP8 與 FP4 的 prefill、decode 案例;在文件所列的 shape 下,FP4 decode 為 124.2 微秒,FP8 則為 150.9 微秒。

同一份 README 也將 HC prenorm kernel 標示為 DeepSeek mHC 模組使用,也就是 Manifold-Constrained Hyper-Connections。在文件列出的 N 與 K 值下,M=8,192 時記憶體頻寬最高達 3,463 GB/s。這些數字說明專案針對特定工作負載做了調校,但不代表已涵蓋所有模型 operator 或 serving 路徑。

Framework 與 runtime:CANN、TorchNPU 對上 CUDA

Huawei 的 TorchNPU 儲存庫 將 TorchNPU 定義為 Ascend NPU 的 PyTorch adapter。功能清單包括原生與客製化 PyTorch API、FSDP2、DTensor、collective operation、graph capture、profiling、WatchDog 監控與記憶體管理功能。

在 NVIDIA 世界裡,概念上的對應組合是 PyTorch 加上 CUDA runtime 與相關函式庫。但實際部署差異不小:Ascend 環境需要彼此匹配的 CANN 版本、驅動程式、韌體、Python 版本、PyTorch 版本與 TorchNPU 版本。TorchNPU 文件中的範例安裝 CANN 9.1.0、PyTorch 2.12.0 與 torch-npu 2.12.0,而 DeepGEMM-Ascend 則另外記載 CANN 9.20。這個版本差異提醒我們,應該依照各儲存庫的相容性矩陣操作,不要把不同指南中的指令混在一起。

Huawei 自己的 CANN 文件將 CANN 定義為連接 framework 與 Ascend 硬體的軟體層,涵蓋 runtime 與 operator 開發路徑。實務上,CANN 更接近整個平台的基礎,而不是某一個單獨的 CUDA 函式庫。PyTorch 模型或許仍可保留熟悉的 Python 語法,但底層依舊需要 Ascend 專用 kernel、圖執行行為與除錯流程。

目前仍不在這次發布範圍內的部分

DeepSeek 原本的 open-infrastructure index 還包含 3FS、Smallpond 等儲存與系統層級專案,也介紹 DualPipe、EPLB 與推論系統架構。這些專案確實是重要的參考,但不能把這次 Ascend 專用 kernel 發布解讀成所有元件都已完成移植。

正式環境的叢集仍需要硬體配置、驅動程式與韌體、CANN 安裝、互連設定、分散式 runtime 支援、可觀測性、checkpoint、故障復原,以及 serving 或訓練 orchestrator。Huawei Cloud 的 DeepSeek 部署指南,便透過執行個體、網路、子網路與安全群組說明基礎架構層面的工作;但這些服務是部署前提,並不屬於 DeepGEMM-Ascend 本身。

對訓練工作而言,這個界線尤其重要。公開 kernel 可以降低某個瓶頸,卻不能證明只靠公開儲存庫,就能重現前沿規模的訓練作業。

目前哪些人能使用這套技術?

使用者或組織現在能用嗎?需要什麼實務判斷
擁有 Ascend 950 硬體的團隊可以,限於支援的 kernelLinux 環境、相符的驅動程式/韌體、CANN 9.20、TorchNPU、編譯器,以及相容的 Python/PyTorch 設定最適合的早期使用者
擁有 Ascend 資源的 Huawei Cloud 或企業業者有可能支援的執行個體/叢集,加上完整軟體版本矩陣與部署能力適合受控環境的評估與 serving
使用較舊 Ascend 硬體的研究實驗室不能直接假設確認裝置支援情況;初始版 DeepGEMM-Ascend 是以 Ascend 950 系列開發與驗證不要假設相容 910B/910C
只有 NVIDIA 工作站的使用者不能執行 Ascend kernel文件明確要求 Ascend 硬體改用面向 NVIDIA 的 DeepSeek 儲存庫
沒有加速器資源的一般 PyTorch 開發者無法以有意義的 runtime 方式使用可以檢視程式碼與研究 API,但無法重現硬體 benchmark能讀文件,不等於能執行
想找一套開箱即用前沿訓練替代方案的團隊目前沒有除了 kernel 儲存庫,還需要完整叢集、系統整合與正式環境驗證應視為基礎架構計畫,而不是一次 pip install

從需求也能看出實際界線:在目前文件所描述的版本中,軟體仍綁定 Ascend 950 硬體、CANN 與 torch_npu。這比「支援一般加速器移植」的說法要窄得多。

公開數據能證明什麼,又不能證明什麼?

99.8% 的 dense-GEMM 數字,足以證明列出的 Ascend kernel 在特定 shape 下能有效利用測試裝置。MegaMoE 表格則進一步顯示,DeepSeek 處理的不只是單一矩陣乘法,也包含融合後的專家平行工作負載。

但這些結果仍無法回答採購或訓練團隊最後一定會問的問題:

  • 完整模型的端到端每秒 token 數是多少?
  • 在目標 batch size 下,每個 token 的成本是多少?
  • 長時間執行與重啟的穩定性如何?
  • 哪些 operator 會退回效能較差的路徑?
  • 互連、記憶體與功耗,和預定採用的 NVIDIA 叢集相比如何?
  • 離開原始測試環境後,能否重現相同結果?

DeepSeek 已公開具備完整設定細節與部分效能表格的 Ascend kernel 工作。這次發布降低了已在 Ascend 生態系內的團隊採用相關軟體的門檻,但硬體與版本門檻依然存在。

常見問題

DeepSeek Ascend 基礎架構是完全開源的嗎?

不是。DeepGEMM-Ascend 與相關文件已公開,但目前並沒有提供一套包含所有依賴與營運流程、可以直接使用的 DeepSeek 訓練叢集。

可以在 NVIDIA GPU 上執行 DeepGEMM-Ascend 嗎?

不行。它的目標硬體是 Ascend 950。NVIDIA 使用者應該改用面向 NVIDIA 的 DeepSeek 專案。

這是否證明 DeepSeek 使用 Ascend 訓練前沿模型?

不代表。它只能證明 DeepSeek 已公開 Ascend kernel,並針對特定工作負載進行 benchmark。這並未建立一套公開、端到端的前沿模型訓練重現方案。

如果你已經掌握受支援的 Ascend 資源,也有能力處理 CANN/TorchNPU 的相容性工作,現在就可以開始使用這套技術。若手上只有 NVIDIA 硬體,應把這次發布視為技術參考,而不是可以直接執行的 backend。