deepseek對訓練fp8量化的觀察和解決方法都很有啟發,希望能看到fp8訓練繼續大放異彩
原標題:簡單聊聊Deepseek V3的FP8訓練
文章來源:智猩猩GenAI
內容字數:8368字
DeepSeek V3 FP8訓練詳解及對硬件的展望
本文概要介紹了DeepSeek V3中FP8訓練的細節,包括量化方法、CUDA Core累加、整體量化流程以及對未來硬件改進的建議。文章基于作者對DeepSeek V3技術報告和相關資料的解讀,并結合個人理解進行闡述,如有錯誤,歡迎指正。
1. FP8量化概述
FP8量化是一種新興的低精度數值表示方法,通過將FP16或FP32降低到8位浮點數,可以顯著減少模型的內存占用和計算開銷,提升推理速度和能效比。它提供E4M3和E5M2兩種格式,DeepSeek V3主要使用E4m3以保證精度。FP8量化需要特定硬件支持,例如NVIDIA Hopper架構GPU。
2. DeepSeek V3中的FP8量化位置
DeepSeek V3主要在MoE上的MLP和Attention前后的MLP上使用FP8量化,Embedding、Attention、gating和Norm等部分則使用原始精度(BF16或FP32)。 由于FP32/BF16到FP8轉換可能導致溢出,因此需要進行量化并引入scale。
3. 量化方式
文章介紹了幾種常見的量化方式:per tensor、per token、groupwise和tile wise。DeepSeek V3在訓練中采用groupwise和tilewise的混合方法:輸入采用groupwise量化,權重采用tilewise量化。這種方法在Tensor Core上進行FP8矩陣乘法,然后在CUDA Core上進行累加和解量化。
4. CUDA Core累加與WGMMA
由于NVIDIA H800 GPU上FP8 GEMM的累加精度只有約14位,DeepSeek V3選擇在進行若干次WGMMA (Warpgroup MMA) 計算后,在CUDA Core上進行累加,以提高精度。文章推測其切分方法,并指出在H800架構上,可以一個group進行矩陣乘法,另一個group進行累加,以提高Tensor Core利用率。
5. 整體量化流程
文章描述了DeepSeek V3 FP8訓練的前向和反向傳播流程。前向傳播中,輸入使用BF16,權重使用FP32,量化到FP8,累加后輸出為FP32,再轉換為BF16。反向傳播中,wgrad累加后為FP32,優化器狀態使用BF16,權重以FP32更新,dgrad FP8反向后轉換為BF16繼續傳播。Attention輸出的反向傳播使用了特殊精度E5M6。
6. 量化選擇和Tile Wise量化問題
DeepSeek V3采用在線量化,每次量化前統計最大值計算scale。Tile wise量化雖然有效,但在反向傳播中,激活梯度需要不同的分組方式,這增加了計算開銷。作者探討了使用相同scale的可能性,但實驗表明input對塊級量化非常敏感。
7. 對硬件的期待
文章最后總結了DeepSeek V3對未來硬件改進的期待,包括:更高的FP8 GEMM累加精度、對Tile和Block量化的原生支持、對在線量化的硬件支持、對轉置GEMM操作的支持等,這些改進將進一步提升FP8訓練的效率。
8. 總結
DeepSeek V3在FP8訓練方面取得了顯著進展,其量化策略和對硬件的改進建議為未來FP8訓練的研究提供了寶貴的經驗。文章也展現了對FP8訓練未來的展望,期待其在自動駕駛等領域大放異彩。
聯系作者
文章來源:智猩猩GenAI
作者微信:
作者簡介:智猩猩旗下公眾號之一,深入關注大模型與AI智能體,及時搜羅生成式AI技術產品。