DeepSeek 開源周的第三天,帶來了專為 Hopper 架構(gòu) GPU 優(yōu)化的矩陣乘法庫 — DeepGEMM。這一庫支持標(biāo)準(zhǔn)矩陣計算和混合專家模型(MoE)計算,為 DeepSeek-V3/R1 的訓(xùn)練和推理提供強(qiáng)大支持,在 Hopper GPU 上達(dá)到 1350+FP8 TFLOPS 的高性能。

DeepGEMM 的設(shè)計理念是簡潔高效,核心代碼僅約 300 行,同時在大多數(shù)矩陣尺寸下性能優(yōu)于現(xiàn)有解決方案。該庫支持三種數(shù)據(jù)排列方式:標(biāo)準(zhǔn)排列和兩種專為混合專家模型設(shè)計的特殊排列(連續(xù)排列和掩碼排列)。DeepGEMM 采用即時編譯技術(shù),不需要在安裝時進(jìn)行編譯,代碼結(jié)構(gòu)清晰易懂,非常適合學(xué)習(xí) GPU 優(yōu)化技術(shù)。

性能表現(xiàn)

DeepGEMM 在各種計算場景下表現(xiàn)出色。 對于標(biāo)準(zhǔn)矩陣乘法,與基于 CUTLASS 3.6 的優(yōu)化實(shí)現(xiàn)相比,速度提升 1.0 到 2.7 倍不等。小批量數(shù)據(jù)處理(M=64 或 128)獲得了最顯著的加速,最高達(dá)到 2.7 倍。

對于混合專家模型的計算,DeepGEMM 提供的兩種特殊數(shù)據(jù)排列方式也有明顯優(yōu)勢。 連續(xù)排列方式適用于訓(xùn)練和批量推理階段,速度提升約 1.1 到 1.2 倍;掩碼排列方式專為實(shí)時推理設(shè)計,支持與 CUDA 圖技術(shù)配合使用,同樣能提速 1.1 到 1.2 倍。

考慮到官方的數(shù)據(jù)不太易讀,我給重新做了 3 張,請叫我賽博菩薩



什么是 FP8 和 GEMM?

在計算機(jī)中,數(shù)值需要用二進(jìn)制位存儲,存儲方式?jīng)Q定了精度和所需空間。傳統(tǒng)上,AI 計算使用 32 位浮點(diǎn)數(shù)(FP32),這提供了很高的精度,但占用較多存儲空間和計算資源。

研究表明,很多 AI 任務(wù)實(shí)際上不需要這么高的精度。16 位浮點(diǎn)數(shù)(FP16)已被廣泛采用,而 8 位浮點(diǎn)數(shù)(FP8)是更進(jìn)一步的精度降低。雖然 FP8 精度較低,但對許多 AI 任務(wù)已經(jīng)足夠,同時能大大減少內(nèi)存使用并提高計算速度。 這就像用較粗的刻度測量大物體,雖然精度降低,但速度快得多,且在大多數(shù)情況下已經(jīng)足夠準(zhǔn)確。

GEMM(通用矩陣乘法)是深度學(xué)習(xí)中最基礎(chǔ)也最常見的計算操作。簡單來說,它計算兩個數(shù)據(jù)表格(矩陣)相乘的結(jié)果。這看似簡單,但在 AI 計算中,這些矩陣可能非常龐大,含有數(shù)百萬個元素,使得矩陣乘法成為整個系統(tǒng)中最耗時的部分之一。幾乎所有神經(jīng)網(wǎng)絡(luò)層的計算本質(zhì)上都包含矩陣乘法操作。

DeepGEMM 專門優(yōu)化了 FP8 精度的矩陣乘法,同時解決了 Hopper 架構(gòu)在處理 FP8 計算時可能出現(xiàn)的精度問題,確保計算結(jié)果準(zhǔn)確可靠。

標(biāo)準(zhǔn)矩陣乘法與混合專家模型計算

標(biāo)準(zhǔn)矩陣乘法處理的是完整矩陣之間的運(yùn)算,適用于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)架構(gòu),所有數(shù)據(jù)都經(jīng)過統(tǒng)一處理。

而混合專家模型(MoE)是一種特殊的神經(jīng)網(wǎng)絡(luò)架構(gòu),它包含多個”專家”網(wǎng)絡(luò)和一個”門控”網(wǎng)絡(luò)。 門控網(wǎng)絡(luò)負(fù)責(zé)決定將輸入數(shù)據(jù)分配給哪些專家處理,而不是所有數(shù)據(jù)都經(jīng)過所有專家。這種方法允許模型規(guī)模大幅增長,同時保持計算效率,因?yàn)槊看翁幚碇患せ畈糠帜P投侨俊?/p>

針對 MoE 模型,DeepGEMM 提供了兩種特殊數(shù)據(jù)排列方式:

Hopper GPU 與張量核心

NVIDIA 的 Hopper GPU 是專為人工智能和高性能計算設(shè)計的最新硬件平臺,提供了多項(xiàng)關(guān)鍵技術(shù)改進(jìn):

張量核心是 GPU 內(nèi)部的特殊計算單元,專門針對矩陣運(yùn)算進(jìn)行了優(yōu)化,能大幅加速深度學(xué)習(xí)計算。Hopper 架構(gòu)的張量核心支持 FP8 計算,比前代產(chǎn)品提供更高性能。

TMA(張量內(nèi)存加速器)是 Hopper 架構(gòu)引入的新功能,用于更快速、異步地移動數(shù)據(jù)。DeepGEMM 充分利用 TMA 技術(shù)加載和存儲數(shù)據(jù),并使用 TMA 多播和描述符預(yù)取等高級功能進(jìn)一步提升性能。

即時編譯技術(shù)

即時編譯(Just-In-Time)是一種程序在運(yùn)行時才進(jìn)行編譯的技術(shù),而非傳統(tǒng)的在安裝或部署時預(yù)先編譯。DeepGEMM 采用完全即時編譯設(shè)計,所有計算內(nèi)核都在實(shí)際運(yùn)行時進(jìn)行編譯,這帶來幾個優(yōu)勢:

這種即時編譯方法顯著提高了小矩陣形狀的計算性能,技術(shù)思路類似于 Triton 等現(xiàn)代編譯器。

CUDA 與 CUTLASS

CUDA 是 NVIDIA 開發(fā)的并行計算平臺和編程模型,允許開發(fā)者利用 GPU 強(qiáng)大的并行處理能力。這是編寫 GPU 程序的基礎(chǔ)工具。

CUTLASS 是 NVIDIA 的開源矩陣乘法庫,提供了高性能的矩陣計算模板。DeepGEMM 借鑒了 CUTLASS 的一些思路,但沒有直接依賴其復(fù)雜的模板系統(tǒng),而是自行實(shí)現(xiàn)了一套更簡潔的代碼,既保證性能又易于理解和學(xué)習(xí)。

線程專業(yè)化技術(shù)

DeepGEMM 采用了線程專業(yè)化技術(shù),這是一種高效的任務(wù)分工方法。在這種設(shè)計中,不同的計算線程被分配專門負(fù)責(zé)特定任務(wù):一些負(fù)責(zé)數(shù)據(jù)移動,一些負(fù)責(zé)核心計算,一些負(fù)責(zé)結(jié)果處理。

這種分工使得數(shù)據(jù)移動、計算和后處理能夠同時進(jìn)行,形成高效的流水線,大大提高整體性能。

技術(shù)創(chuàng)新點(diǎn)

DeepGEMM 包含多項(xiàng)先進(jìn)技術(shù)創(chuàng)新:

非標(biāo)準(zhǔn)塊大小

傳統(tǒng)上,GPU 計算通常使用標(biāo)準(zhǔn)大小的數(shù)據(jù)塊(如 128×128)。DeepGEMM 支持非標(biāo)準(zhǔn)塊大?。ㄈ?112×128),這能更好地適應(yīng)特定矩陣形狀,提高硬件資源利用率。例如,對于 M=256,N=7168 的矩陣,標(biāo)準(zhǔn)塊大小只能利用 112 個計算單元,而使用非標(biāo)準(zhǔn)塊大小可以利用 128 個,效率提升明顯。

指令級優(yōu)化

通過分析不同編譯器版本產(chǎn)生的機(jī)器代碼,DeepGEMM 團(tuán)隊(duì)發(fā)現(xiàn)并實(shí)現(xiàn)了特殊的指令排序優(yōu)化。這種底層優(yōu)化調(diào)整了計算指令的執(zhí)行方式,使計算單元能更高效地并行工作,顯著提升了 FP8 計算性能。

統(tǒng)一調(diào)度系統(tǒng)

DeepGEMM 設(shè)計了一套統(tǒng)一的計算任務(wù)調(diào)度系統(tǒng),采用特殊的排布策略,增強(qiáng)緩存重用效率,減少內(nèi)存訪問,提高整體性能。

使用 DeepGEMM

使用 DeepGEMM 需要支持 sm_90a 的 Hopper 架構(gòu) GPU、Python 3.8 以上、CUDA 12.3 以上(推薦 12.8 以上獲得最佳性能)、PyTorch 2.1 以上以及 CUTLASS 3.6 以上。

Development

# Submodule must be cloned
git clone --recursive git@github.com:deepseek-ai/DeepGEMM.git

# Make symbolic links for third-party (CUTLASS and CuTe) include directories
python setup.py develop

# Test JIT compilation
python tests/test_jit.py

# Test all GEMM implements (normal, contiguous-grouped and masked-grouped)
python tests/test_core.py

Installation

python setup.py install

最后, import deep_gemm 就行了

DeepGEMM 提供了清晰的 Python 編程接口,包括:

同時,庫提供多個實(shí)用工具函數(shù),用于設(shè)置計算資源和數(shù)據(jù)格式,讓開發(fā)者能根據(jù)具體需求進(jìn)行配置。

回顧與展望

DeepGEMM 作為 DeepSeek 開源周的第三日發(fā)布,為 Hopper 架構(gòu) GPU 提供了高效的 FP8 矩陣乘法實(shí)現(xiàn)。 通過精心設(shè)計的 300 行核心代碼,這個庫在多種場景下超越了現(xiàn)有解決方案,為普通神經(jīng)網(wǎng)絡(luò)和混合專家模型提供了強(qiáng)大的計算基礎(chǔ)。

同時,其清晰的代碼,也堪稱是學(xué)習(xí) GPU 優(yōu)化技術(shù)的優(yōu)質(zhì)資源。

目前,DeepGEMM 專門針對 Hopper 架構(gòu) GPU 優(yōu)化,未來可能擴(kuò)展到更多硬件平臺。

文章轉(zhuǎn)載自:一文詳解:DeepSeek 第三天開源的 DeepGEMM

上一篇:

如何在本地運(yùn)行 DeepSeek

下一篇:

DeepSeek 第四天開源的模型設(shè)計套件
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實(shí)測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費(fèi)

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費(fèi)