GPU效率暴漲!DeepSeek開源DeepGEMM,僅300行代碼 精華
今早9點,DeepSeek開啟了本周連續5天技術分享的第3天,開源了專用于執行高效FP8精度矩陣乘法運算庫——DeepGEMM。
DeepGEMM的核心代碼僅300行,但在GPU上可實現高達每秒1350 + FP8 萬億次浮點運算性能。在大多數矩陣規模下性能超過了專家調優的內核,同時支持密集布局和兩種 MoE 布局,適配不同的運算場景。
開源地址:https://github.com/deepseek-ai/DeepGEMM
看到DeepSeek又發布高效訓練方法,網友表示,英偉達股票又要下跌了。
在澳大利亞都能聽到英偉達股票下跌的慘叫聲~
DeepGEMM聽起來就像數學界的超級英雄。比快速計算器更快,比多項式方程更強大。我試著用了一下,現在我的GPU正在炫耀它的1350+ TFLOPS,好像準備參加AI奧運會一樣!
DeepGEMM正在改變我們使用FP8 通用矩陣乘法庫的方式,簡單、快速且開源。這就是人工智能計算的未來。
DeepSeek可能正在揭開英偉達那些不能說的秘密。我懷疑英偉達是故意這么做的,目的是為了賣出更多的顯卡。恭喜馬斯克的 20 萬張顯卡變成了 100 萬張。把馬斯克送到火星去,再帶上黃仁勛。
「AIGC開放社區」就簡單為大家解讀一下DeepGEMM。GEMM,全稱是General Matrix Multiplication,是線性代數中的一個基本操作,用于計算兩個矩陣的乘積。
例如,假設我們有兩個矩陣A和B,矩陣A的大小是 3×2,矩陣B的大小是 2×4,那么通過GEMM 計算后,我們可以得到一個大小為 3×4 的矩陣 C,即C=A × B。
這種矩陣乘法在深度學習中非常重要,尤其是在神經網絡的全連接層和卷積層中,幾乎每一個前向傳播和反向傳播的步驟都離不開它。
FP8 是一種8位浮點數格式,由 NVIDIA Hopper 架構引入。與傳統的 32 位浮點數或16位浮點數相比,FP8 占用的內存和計算資源更少,但同時在某些應用場景下仍能保持足夠的精度。
例如,一個傳統的 FP32 數字占用 4 個字節,而FP8 只占用 1 個字節,這意味著在相同的內存容量下,我們可以存儲更多的數據,從而加速大規模深度學習模型的訓練和推理,尤其適合硬件資源有限的情況。
而DeepSeek版本的GEMM是專為NVIDIA Hopper 架構設計的GEMM庫,并且所有內核在運行時動態編譯。
在性能方面,DeepGEMM 在 NVIDIA H800 GPU 上進行了廣泛的測試,結果表明它在多種矩陣形狀下都能顯著提升計算速度。例如,在密集矩陣乘法中,某些形狀的性能提升可達 2.7 倍;而在 MoE 模型的分組矩陣乘法中,性能提升也達到了 1.2 倍左右。
DeepGEMM采用了多種優化技術。它通過持久化的 warp 專業化,重疊數據傳輸、張量核心 MMA 指令和 CUDA 核心提升操作,優化了計算流程。還利用了Hopper 架構的張量內存加速器特性,實現更快的數據傳輸和異步操作。
為了應對 FP8 張量核心累加精度不足的問題,DeepGEMM 采用了 CUDA 核心的雙級累加技術。還采用了完全 JIT 設計,所有內核在運行時動態編譯,能夠根據具體的矩陣形狀和硬件特性進行優化。
此外,DeepGEMM 支持非 2 的冪次方的塊大小,以提高 GPU 的利用率,并通過修改編譯后的二進制指令優化細粒度縮放的性能。
使用方面很方便,DeepGEMM提供了簡潔的 Python 接口,方便用戶在深度學習項目中集成。它支持普通密集矩陣乘法,適用于常見的深度學習模型;也支持分組矩陣乘法,包括連續布局和掩碼布局。
例如,在MoE 模型的訓練前向傳播或推理填充階段,我們可以使用連續布局,將不同專家處理的輸入數據拼接到一個連續的張量中。
而在推理解碼階段,當每個專家處理的輸入數量未知時,我們可以使用掩碼布局,通過掩碼張量指示哪些部分是有效的輸入。
本文轉自 AIGC開放社區 ,作者:AIGC開放社區
原文鏈接:??https://mp.weixin.qq.com/s/U-ozfh5_bdgEAhF8qZyWiA??
