DeepSeek V3 論文詳情:如何繞過 CUDA 的壟斷!

DeepSeek 最近發布的兩款機型 DeepSeek-V3 和 DeepSeek-R1,以更低的成本實現了與 OpenAI 類似機型相媲美的性能。

根據外國媒體報導,在短短兩個月內,他們在由 2,048 個 H800 GPU 組成的集群上,訓練出了一個擁有 6,710 億個參數的 MoE 語言模型,效率是頂尖 AI 的 10 倍。

這項突破並非使用 CUDA 實現,而是透過大量的細粒度最佳化,以及使用 NVIDIA 類似組合的 PTX (平行線程執行) 程式設計。

深度搜尋 被迫走上了一條與 OpenAI 和其他公司不同的道路,這些公司在硬體限制下依賴粗暴的運算能力。它運用了一系列的技術創新來降低模型的功耗需求,同時達到效能的提升。

一些網友的熱烈評論:

"在這個世界上,如果有任何一群人會瘋狂地說「CUDA 太慢了」這樣的話!

天才極客微調 PTX,將 GPU 效能發揮到極致

NVIDIA PTX (Parallel Thread Execution,平行線程執行) 是專為 GPU 設計的中間指令集架構,介於高階 GPU 程式語言 (例如 CUDA C/C++) 或其他語言前端與低階機器程式碼 (streaming assembly 或 SASS) 之間。

PTX 是一種低階指令集架構,將 GPU 呈現為資料平行運算裝置,可進行寄存器分配和線程/線程叢集層級調整等細粒度最佳化,這些都是 CUDA C/C++ 等語言無法實現的。

當 PTX 轉換為 SASS 時,會針對特定世代的 NVIDIA GPU 進行最佳化。

在訓練 V3 模型時,DeepSeek 重新配置了 NVIDIA H800 GPU:

在 132 個串流處理器核心中,有 20 個分配給伺服器間的通訊,主要用於資料壓縮與解壓縮,以突破處理器的連線限制,提高交易處理速度。

為了最大化效能,DeepSeek 還透過額外的細粒度線程/線程束層級調整,實現了先進的流水運算演算法。

這些優化遠遠超越了傳統 CUDA 開發的水準,但維護起來卻極為困難。然而,正是這種優化水平充分展現了 DeepSeek 團隊卓越的技術能力。

V3 論文特別提到 PTX 的詳細資訊

這是因為在全球 GPU 短缺和美國限制的雙重壓力下,DeepSeek 等公司不得不尋求創新的解決方案。

幸運的是,他們在這方面已取得重大突破。

一位開發人員認為「低階 GPU 程式設計是正確的方向。優化程度越高,成本就越低,也就是可以用於其他進度的效能預算,不需要額外支出"。

這一突破對市場產生了重大影響,部分投資者認為新模式將降低市場對高效能硬體的需求,可能影響 NVIDIA 等公司的銷售業績。

不過,包括 Intel 前執行長 Pat Gelsinger 在內的業界資深人士認為,AI 應用程式可以充分利用所有可用的運算能力。

Gelsinger 將 DeepSeek 的這項突破視為在大眾市場的低成本裝置中嵌入 AI 功能的新方法。

PTX 和 CUDA

那麼,DeepSeek 的出現是否意味著開發尖端 LLM 不再需要大型 GPU 集群?

Google 在計算資源上的龐大投資是否會、 OpenAI, Meta 和 xAI 最終會白費嗎?AI 開發人員的普遍共識是,情況並非如此。

但可以肯定的是,在資料處理和演算法最佳化方面仍有巨大的潛力可挖,未來一定會出現更多創新的最佳化方法。

由於 DeepSeek 的 V3 機型已開放原始碼,其技術報告中已詳細揭露了相關細節。

該報告記錄了 DeepSeek 進行的深層次底層優化。簡而言之,優化程度可以概括為「他們從底層重建了整個系統」。

如上所述,在使用 H800 GPU 訓練 V3 時,DeepSeek 自訂了 GPU 的核心運算單元(流式多處理器核心,或 SM),以滿足特定需求。

在總共 132 個 SM 中,他們特別分配了 20 個來處理伺服器間的通訊任務,而非運算任務。

這種客製化是在 PTX (平行線程執行) 層級完成,也就是 NVIDIA GPU 的低階指令集。

PTX 以接近於匯編語言的層級執行,並可進行微細的最佳化,例如暫存器分配和線程/線程束層級的調整。然而,這種精細控制既複雜又難於維護。

這就是開發人員通常喜歡使用高階程式語言(例如 CUDA)的原因,因為 CUDA 可以為大多數平行程式設計任務提供足夠的效能最佳化,並且省去低階最佳化的需求。

然而,當需要將 GPU 資源的效率發揮到極致,並達到特定的最佳化要求時,開發人員就必須求助 PTX。

然而,技術障礙仍然存在

對此,網友 Ian Cutress 表示:「Deepseek 使用 PTX 並不能消除 CUDA 的技術障礙」。

CUDA 是一種高階語言。它讓使用 NVIDIA GPU 開發函式庫和介面變得更容易,並支援快速迭代開發。

CUDA 可透過微調底層程式碼 (即 PTX) 來優化效能,而且基本程式庫也已經完成。目前大多數生產級軟體都是建置在 CUDA 上。

PTX 更類似於 GPU 可直接理解的彙編語言。它在低階運作,並允許微階最佳化。

如果您選擇在 PTX 中編程,這表示上述內建的 CUDA 函式庫都無法使用。這是一項非常繁瑣的工作,需要深入瞭解硬體和執行時問題的專業知識。

但是,如果開發人員完全瞭解他們正在做什麼,他們確實可以在執行時達到更好的效能和最佳化。

目前,NVIDIA 生態系統的主流仍是使用 CUDA。

想要從計算負載中獲得額外 10-20% 效能或電源效率的開發人員,例如在雲端部署模型並出售代幣服務的公司,確實已從 CUDA 層級最佳化至 PTX 層級。他們願意投入時間,因為長遠而言這是值得的。

應該注意的是,PTX 通常是針對特定硬體機型最佳化的,除非特別編寫適應邏輯,否則很難在不同硬體之間移植。

此外,手動調整計算核心需要極大的毅力、勇氣,以及保持冷靜的特殊能力,因為程式可能每 5,000 個週期就會發生一次記憶體存取錯誤。

當然,對於那些確實需要 PTX 的情況,以及那些有足夠薪資處理這些問題的開發人員,我們表示充分的理解與尊重。

對於所有其他開發人員,建議繼續使用 CUDA 或其他基於 CUDA (或 MLIR) 的進階變體。

類似職位

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *