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