隨著深度學習模型(尤其是大規模生成模型)參數規模的擴張,對更高效的計算與儲存方案的需求愈發強烈。降低資料類型位寬(精度)是一條行之有效的途徑,但如何在降低位寬的同時保持精準度是一大挑戰。
在預訓練過程中,用更少的位元來表示模型參數以及相關張量,已成為在不犧牲精準度的前提下提升 GPU 效率的必備技術。NVIDIA Blackwell 代 GPU 中引入的 Microscaling(MX)格式,將窄位寬浮點類型與更細粒度的按塊縮放因子相結合,是這一方向的重要進展;它讓更多張量可以被量化,並讓對這些張量的運算更高效。
deepseek一句話引爆國產算力晶片,國產晶片迎來突圍質變關鍵點?從產業角度來看,未來的工作遠不如看起來這麼簡單,前路依然慢慢修遠!
DeepSeek V3.1 公開點名用了 UE8M0 FP8 scale 並暗示“下一代國產晶片”協同,媒體集中報導後,A 股/港股裡“國產晶片、FP8 概念”短線大漲,話題瞬間出圈。同期,部分國產 GPU/NPU 宣稱“原生 FP8 / Block FP8”或工具棧可支援 FP8/MX,進一步強化了“軟硬協同 → 釋放頻寬/功耗紅利”的敘事。
UE8M0/FP8(MX)不是新概念,早在2023 年 OCP 就發佈了
Microscaling(MX)v1.0(塊大小 K=32、共享尺度 UE8M0 等),把“塊級縮放 + 窄位寬浮點”寫成了行業規範。而到了2025 年,AI晶片之王NVIDIA
Blackwell 把 MXFP8/6/4 做成張量核原生資料類型,硬體裡直接處理“每 32 個數一個 2^k 尺度”的邏輯(UE8M0),不再靠軟體拼。官方資料與開發者部落格都強調了這點。有了原生支援後,MXFP8 訓練端到端吞吐≈BF16 的 2×,而不是只在核心裡“紙面提速”。(論文與官方文件均有說明。)
特意把相關論文翻出來看了一下,內容不多,10多頁,最新論文把能穩定預訓練的大模型的可復現做法講清了:所有張量(含啟動梯度)統一用 E4M3;尺度用 UE8M0,且對 log2(amax/destmax) 取“向上整”,避免因溢出導致的發散——這點明確區別於 OCP v1.0 的默認取整建議。並給出 8B/15T tokens 與 BF16 等精度的實證。
而其實最為關鍵的依然在底層的軟體與算子生態,Transformer Engine、cuDNN/cuBLAS 落地了 FP8/MX 的算子與資料流;NVIDIA NeMo、TE 使用者手冊給出了工程路徑。
大模型側的真實案例越來越多:Nemotron-H、Llama 系列等公開材料都提到用 FP8 路線(早期多為按張量縮放,如今轉向更細的塊縮放/MX)。甚至有 vLLM 線上 FP8 生成的路徑。這些都把“訓練—推理—部署”的鏈條打通了。生態也在跨廠蔓延(例如 ROCm 側的 Transformer Engine),進一步提升“通用感知”。
動態範圍不過載:整張量一次縮放常照顧不了“大值/小值”同時存在,容易溢出或壓成 0;按塊縮放能“就近對齊”,資訊損失更小。
1)UE8M0 / FP8 / MXFP8 各自是什麼?
UE8M0不是“另一種FP8”,而是MX(Microscaling)格式裡的“塊級縮放因子”——8 bit 全給指數(E8M0),只編碼2的冪,用於給同一小塊(典型 K=32)裡的FP8元素統一定標;這樣解碼只需指數移位(shift),不必做浮點乘法,硬體關鍵路徑更短,頻寬/能耗也更友好。
常見誤區有那些?
一個 MX 格式由:塊大小 K、每塊共享的縮放因子 X、塊內元素的資料類型共同指定。K=32(適用於所有 MX 類型)。X 的類型是 UE8M0(8 位指數、無尾數、無符號),表示 NaN 或 2 的冪(範圍 2^(−127) 到 2^127)。
給定源格式(通常 FP32)的 K 個資料 V_i,轉換到 MX 格式時,需要計算 X 與 Q_i,使得 Q_i×X ≈ V_i。儲存時寫入 X 與 Q_i。Blackwell 的張量核心會消費 X 與兩側塊的 Q_i 來做點積;若累加輸出為 FP32,則在後續算子需要 MX 格式時再將其回量化為 MX。
8位浮點的兩種常用編碼(1符號 + 指數 + 尾數),業界已廣泛用於訓練/推理。E4M3精度更高、E5M2動態範圍更大。
把一個張量按固定小塊(典型 K=32)切分;每塊共享一個“縮放因子 X”(以冪次形式存放),塊內元素用低位寬格式(如FP8)儲存。這樣既保留8位元的低頻寬優勢,又靠更細顆粒的定標獲得更大的可用動態範圍與更穩的數值。MX 的塊尺度與元素格式相互獨立。
縮放因子的具體格式——無符號(U)、8位指數(E8)、0位尾數(M0),即只有指數,沒有符號/尾數;“ExMy”記法在 OCP 規格里明確:當 y=0(如E8M0)就不含符號位。它僅表示 2 的整數冪,因此硬體解碼是移位,不需浮點乘法。
指“元素為FP8”的MX格式集合;所有MX具體格式的共享縮放,統一採用 E8M0。常用的就是“UE8M0 + FP8(E4M3/E5M2),塊大小K=32”。
論文顯示在80 億參數、15T 詞元的預訓練中,觀察到 MXFP8 的驗證困惑度與 BF16 匹配(全程差異 <0.5%)。下游任務(MMLU、9 項推理基準)分數也相當。類似等價性在更小模型/資料上同樣成立,從而使 MXFP8 成為更高效的預訓練選項。
模型配置:32 層 Transformer,32 頭,隱藏 4096,GQA 組 8,KV 通道 128,預訓練序列長 8192。學習率 6e-4 餘弦衰減至 6e-6;資料混合兩階段(先多樣性、後高品質),60% 處切換。
訓練平台:Megatron-LM;3072 張 Hopper GPU;批次 768。MX 運算通過將 BF16 輸入在 GEMM 前轉換為 MXFP8、GEMM 後再轉回 BF16 來模擬。
評測:MMLU(5-shot)、9 項通用推理(1-shot)平均分。
MXFP8 維持 BF16/FP8 級精準度;在 Blackwell 上,MXFP8 張量核吞吐 ~2×BF16,端到端預訓練更快;與傳統 FP8 相比,MXFP8 配方更簡單(所有層均可量化,縮放由硬體處理),吞吐相當或更佳。
2)它究竟解決了什麼數值&硬體問題?
數值層面,傳統“整張量縮放”在子8位(<8b)或極端值分佈下容易溢出/壓成0;按塊縮放能“就近”匹配每塊的幅度分佈,更好覆蓋大/小值,減少飽和與下溢。實證表明在多項任務裡,MX 直接替代 FP32 推理、甚至用於低位元訓練,也能接近/對齊 FP32/BF16 的精度。
E4M3 vs E5M2 的選型:在有了細顆粒塊縮放的前提下,實踐上經常統一用 E4M3(更高“採樣精度”)能得到更穩的訓練/下游表現;Blackwell 的 MX 訓練配方也給出類似建議。
硬體/系統層面
UE8M0 = 2^k→ 解碼只需移位;不必做浮點乘法、規格化或舍入,縮短關鍵路徑、利於高頻設計與能耗控制。
縮放中繼資料更輕:每塊只多 8 bit 的 scale。相較“每塊存一個 FP32 縮放”(32 bit),縮放中繼資料流量減少 75%;(整體塊資料從 256b→264b 對比 256b→288b,總流量也更低)。
生態對齊:NVIDIA Blackwell 已將 MXFP8/6/4 做成張量核原生資料類型(K=32、X=UE8M0),在其平台上 MXFP8 相比 BF16 的矩陣核吞吐標稱 ~2×。這為上游模型與下游硬體的“共同語言”定了規。
3)為什麼說它“貼合下一代國產晶片”?
大多數已量產國產AI加速器仍以 FP16/BF16 + INT8 通路為主,對完整 FP8 FMA 的硬體棧支援不一;而 UE8M0 的移位解碼 + 塊級FP8存算,實現難度和代價更低,更符合階段性演進路徑。
頻寬/容量制約,更敏感的環境裡,FP8+塊縮放能顯著降低 HBM/DDR 壓力;這正是國產晶片在功耗/能效/頻寬方面最希望“用演算法/格式把水再擠出來”的方向。
國內媒體與機構報導裡,摩爾執行緒 MUSA 架構宣稱原生 FP8 張量加速,並點名能很好支援 UE8M0 FP8 Scale;芯原 VIP9000 NPU 亦被多家產業媒體與高管採訪稿提到增加 FP8(E4M3/E5M2)支援,強調與主流框架/工具鏈的易部署性。
DeepSeek 明確採用 UE8M0 FP8 scale,把軟體側配方與國產硬體的“最佳工作點”對齊,實際上是在建構軟硬協同的一致坐標系,降低生態碎片化成本。
註:具體廠商/型號是否“原生 FP8 張量核”或“Block FP8”要以官方規格書/驅動版本說明為準;媒體稿件與三方文章的口徑可能滯後或存在表述差異。上文引用為公開報導與產業採訪。
4)它與“常規 FP8”的關係(怎麼搭配用)?
仍用 E4M3/E5M2(通常 E4M3 全程更穩),共享縮放用 UE8M0;典型塊大小 K=32。這就是MXFP8。訓練/推理常見做法:權重/啟動/梯度在 GEMM/CONV 裡用 MXFP8,歸一化/softmax/殘差等用 BF16/FP32;累加一般在 FP32,主權重常保一份 FP32 “母本”。縮放演算法按塊取 amax 決定指數,向上取整以避免溢出,再做飽和式量化(超過上限則鉗位)。這類配方在 Blackwell 的 MX 論文裡給了具體步驟與對比。
5)對模型精度與吞吐的“量化預期”
精度,在分類/語音/LLM 上,MX 直接投產/微調後能接近/對齊 FP32/BF16;對大模型的預訓練,MXFP8 在合適配方下可與 BF16 等價的困惑度/下游得分。
吞吐/成本,在原生支援 MX 的硬體上,矩陣核吞吐~2×BF16,端到端訓練/推理時間和視訊記憶體佔用相應下降(真實收益取決於是否算子/頻寬/通訊受限)。
UE8M0 FP8(MX)把模型數值配方和硬體實現成本一起最佳化到了“相容 & 高效”的均衡點:更穩的精度、更低的頻寬、更短的關鍵路徑。DeepSeek 把訓練/權重格式對齊到 MX 標準,等於在國產硬體側“放下對接道釘”。隨著更多晶片把 MXFP8 做成“一等公民”,軟硬協同的性價比才會真正體現出來。
所以,我們可以看到,UE8M0 FP8(MX)是好“格式”,能顯著降低頻寬/功耗、擴大可量化範圍;但“效果”取決於系統工程:是否有原生 MX 張量核、是否搞定轉置重量化和雙副本開銷、是否站在 NVLink 級互聯上擴展、以及工具鏈是否把配方一把梭。在這些方面,NVIDIA 目前端到端更完整,所以你看到的“明顯差距”本質上是平台差距,而不是“UE8M0/MX 這條路線不行”。
所以,國產晶片再一次沸騰,但是我們依然需要冷靜!
“有了 UE8M0 FP8(MX)格式是不是就等於立刻得到輝達那樣的實際效果”?
答案是不能!差距往往不在“格式本身”,而在算子/核心、記憶體與互聯、框架與工具鏈、以及標準細節的一致性。從工程角度拆開講,可以看到那些短板會直接吃掉我們在論文或宣傳裡看到的收益。
1)數值與演算法:標準一致性還沒“完全對齊”
MX 的定義(K=32、每塊共享 UE8M0 尺度、塊內元素用 FP8/FP6/FP4 等)是 OCP 標準的一部分;UE8M0 隻編碼 2 的冪(−127…127),本身很輕量。問題是:“如何取整到 2 的冪”這件事,不同實現不完全一致。NVIDIA 的 MXFP8 訓練配方裡明確把尺度取整改為向上取整(ceil(log2)),並給出消融:按 OCP v1.0 建議的“向下取整”在大規模預訓練裡會更易溢出/發散。若硬體/軟體仍按 v1.0 來做,訓練穩定性就可能對不上。
E4M3 “全量化”選擇:NVIDIA 的結論是權重/啟動/啟動梯度都用 E4M3(塊縮放後需要的是精度而不是更大的指數範圍),這和很多“FP8=梯度用 E5M2”的老經驗不一樣。配方差一口氣,效果就會“看著像 MX,跑起來不像”。
2)算子與核心:沒“原生 MX”就有隱性開銷
MX 需要在張量核裡處理很多“每塊一次”的尺度。在軟體裡頻繁處理這些縮放,非常貴;Blackwell 在硬體層把尺度取整與量化塞進張量核指令路徑,才把這筆開銷吃掉。沒有這條硬體“捷徑”,你在別家晶片上用 MX,核心層面的額外讀改寫/重量化會吞掉收益。
轉置問題:Blackwell 的 MX 要求“沿歸約維的塊資料連續”,訓練時前後/反傳會頻繁換歸約維;普通 FP8 轉置是重排,MX 的轉置要“重量化”,這在沒做專門硬體/核心最佳化時會非常痛。
雙軸兩份量化副本:為了同時服務行/列兩條歸約軸,訓練框架通常需要給每個張量保兩份 MX 量化版本;這既吃視訊記憶體也增加資料搬運。NVIDIA 的論文和 TE 的工程 issue 都點名了這一點。
3)記憶體與互聯:系統“地基”差異放大效果差距
NVLink / NVSwitch 的規模化優勢:Blackwell 代把 NVLink 頻寬拉到每 GPU 1.8 TB/s,並通過 NVLink Switch 把 72 GPU 拉進一個1.8 TB/s 保持的 NVLink 域,還能跨機櫃擴展;這直接決定了FP8/MX 的頻寬紅利能否真正轉化成叢集吞吐。如果替代平台只有 PCIe 或傳統以太/IB,通訊相對吃緊,同樣的 MX/FP8 算力優勢會被All-Reduce/張量平行通訊抵消。
4)生態與通用性:工具鏈還在“接入期”
框架 dtype 與編譯工具支援未完全成熟:PyTorch 核心層面對 MX 的基礎類型(比如 E8M0、FP4)仍在推進中;Triton 也有“如何在語言裡暴露 MX/轉置模式”的開放問題。沒有一線框架的原生一等支援,通用性就會打折。
跨廠商 FP8 的“細節不一致”:比如 AMD 文件就明確寫到 MI300 的 FP8 編碼與 H100 不同;再疊加 MX 的尺度取整差異,你在多家硬體之間遷移“同名 FP8/MX”模型,可能需要重轉換/重校準才能穩定。
非輝達平台的 MX 現狀:
AMD:公開資料已在教學/白皮書層面引入 OCP MX 概念與 FP8 支援,但是否有“原生 MX 塊縮放硬體管線”尚非標配,多為軟體路徑實驗/過渡。
Intel Gaudi:官方強調 FP8 訓練/推理算力與推理教學,但並未宣稱 MX 原生塊縮放;若只是常規 FP8(按張量/軸縮放),與 MX 的落地複雜度與收益曲線不同。
5)結果差距通常來自那幾件“最傷”的事?
數值細節不一致(尺度取整、梯度格式):訓練不穩或需要更保守的超參 → 有效吞吐下降。
但對於夾縫中求存的國內晶片來說,這也是算是一種不多的求變模式,未來任重而道遠。
那怕沒有“原生 FP8 張量核”,也能通過“FP8 存取 + 快速移位解碼 → 進 FP16/BF16 乘加”這條混合路徑拿到頻寬/視訊記憶體層面的實效;硬體只需加輕量的尺度表處理與移位單元。同樣的記憶體頻寬、同樣的功耗預算下,模型可以更大、批次可以更足,單位 TCO 的吞吐更好看。DeepSeek 等模型側明確用 UE8M0 的塊縮放範式,軟體棧(量化、校準、推理引擎)更容易在國產晶片上做統一適配,減少“各玩各的”的碎片化成本。相比“一步到位做全功能 FP8 FMA 核”,先把 MX(按塊縮放 + 移位解碼)打通更現實,屬於漸進式演進:
第一步:推理先行(權重 FP8 + 啟動 BF16/FP16,累加 FP32);
第二步:部分訓練鏈路 FP8 化(GEMM 主幹 FP8,歸一化/Softmax 等保高精度);
第三步:硬體代際升級,再做原生 MX/FP8 張量核。
“達不到輝達效果,所以只是退而求其次、更適合端側小場景?”
U1S1,當前確實存在差距:沒有“原生 MX”張量核、沒有高頻寬互聯(NVLink/NVSwitch 同級)、算子/框架支援不全時,UE8M0/FP8 的紙面優勢會被核心開銷和通訊瓶頸吃掉。這是當下不少平台的現實。
但不等於“只能端側”:
什麼時候用它“最划算”?
所以,UE8M0 FP8(MX)= 低頻寬 + 低實現門檻 + 足夠穩的數值,對當下仍以 FP16/BF16+INT8 為主的國產晶片,是一條現實且漸進的增量路線。
不是只能端側,但端側/功耗敏感場景的“性價比提升”最立竿見影;資料中心要想接近頭部效果,需要算子級融合、塊縮放下沉到核心、以及更好的互聯頻寬。先把權重/存取的紅利吃到,再推進計算路徑與互聯,這條路能走通,而且短期就有肉吃。 (貝葉斯之美)