「DeepSeek甚至繞過了CUDA」 工程師靈魂提問:英偉達護城河還在嗎?
英偉達剛從DeepSeek-R1引發的4兆元暴跌中緩過勁來,又面臨新的壓力?硬體媒體Tom’s Hardware帶來開年最新熱議:DeepSeek甚至繞過了CUDA,使用更底層的程式語言做最佳化。
這次是DeepSeek-V3論文中的更多細節,被挖掘出來。
來自Mirae Asset Securities Research(韓國未來資產證券)的分析稱,V3的硬體效率之所以能比Meta等高出10倍,可以總結為「他們從頭開始重建了一切」。
在使用英偉達的H800 GPU訓練DeepSeek-V3時,他們針對自己的需求把132個流式多處理器(SMs)中的20個修改成負責伺服器間的通信,而不是計算任務。
變相繞過了硬體對通訊速度的限制。
△ DeepSeek-V3技術報告
這種操作是用英偉達的PTX(Parallel Thread Execution)語言實現的,而不是CUDA。
PTX在接近彙編語言的層級上運行,允許進行細粒度的最佳化,如暫存器分配和Thread/Warp層級的調整。
這種程式設計非常複雜且難以維護,所以業界通用的做法是使用CUDA這樣的高階程式語言。
換句話說,他們把優化做到了極致。
有網友表示,如果有一群人嫌CUDA太慢而使用PTX,那一定是前量化交易員。
一位亞馬遜工程師提出靈魂質疑:CUDA是否還是護城河?這種頂尖實驗室可以有效利用任何GPU。
甚至有網友開始暢想,如果「新源神」DeepSeek開源了一個CUDA替代方案…
那麼事情是否真是如此?
01 DeepSeek真的繞過了CUDA?
首先要明確的是,PTX仍然是英偉達GPU架構中的技術,它是CUDA程式設計模型中的中間表示,用來連接CUDA高階語言程式碼和GPU底層硬體指令。
PTX類似組合語言,程式碼大概長這樣:
△來自tinkerd.net
在實際編譯流程中,CUDA程式碼先編譯為PTX程式碼,PTX程式碼再被編譯成目標GPU架構的機器碼(SASS,Streaming ASSembler)。
CUDA扮演了提供高階程式介面和工具鏈的作用,可以簡化開發者的工作。而PTX作為中間層,充當高階語言和底層硬體之間的橋樑。
另外,這種兩步驟編譯流程也使得CUDA程式具有跨架構的兼容性和可移植性。
反過來說,像DeepSeek這種直接寫PTX程式碼的做法,首先不僅非常複雜,也很難移植到不同型號的GPU。
有從業人員表示,針對H100優化的程式碼遷移到其他型號上可能效果打折扣,也可能根本不工作了。
所以說,DeepSeek做了PTX等級的最佳化不代表完全脫離了CUDA生態,但確實代表他們有優化其他GPU的能力。
事實上,我們也能看到DeekSeek已經與AMD、華為等團隊緊密合作,第一時間提供了對其他硬體生態的支援。
02 還有一件事
還有人提出,如此一來,讓AI擅長編寫組合語言是AI自我改進的一個方向。
我們不知道DeepSeek內部是否使用AI輔助編寫了PTX程式碼——
但是确实刚刚见证DeepSeek-R1编写的代码显著提升大模型推理框架的运行速度。
Llama.cpp项目中的一个新PR请求,使用SIMD指令(允许一条指令同时处理多个数据)显著提升WebAssembly在特定点积函数上的运行速度,提交者表示:
這個PR中的99%的程式碼都是由DeekSeek-R1編寫的。我唯一做的就是開發測試和編寫提示(經過一些嘗試和錯誤)。
是的,這個PR旨在證明大模型現在能夠編寫良好的底層程式碼,甚至能夠優化自己的程式碼。
llama.cpp專案的創始人檢查了這段程式碼後表示「比預期的更爆炸」。