什么是浮點(diǎn)精度?
浮點(diǎn)精度是一種以二進(jìn)制格式表示數(shù)字的方法,計(jì)算機(jī)將數(shù)字解讀為由 0 和 1 組成的二進(jìn)制序列。本文將聚焦于更小眾的低精度格式——FP8、FP6和FP4,這類格式更適用于神經(jīng)網(wǎng)絡(luò)與人工智能領(lǐng)域。
在浮點(diǎn)數(shù)表示中,第一個(gè)二進(jìn)制位表示數(shù)字的正負(fù)(符號(hào)位);接下來(lái)的一組二進(jìn)制位構(gòu)成指數(shù)位,以 2 為基數(shù)表示數(shù)字的量級(jí);最后一組二進(jìn)制位為尾數(shù)位(也稱為有效數(shù)字位),表示數(shù)字的小數(shù)部分。在這些低精度格式中,核心目標(biāo)并非保持?jǐn)?shù)學(xué)精度,而是盡可能節(jié)省計(jì)算資源、內(nèi)存空間和帶寬,從而提升人工智能任務(wù)的響應(yīng)速度與整體性能。
低精度格式為何存在?
首先需要說(shuō)明,浮點(diǎn)數(shù)精度降低的核心原因并非數(shù)學(xué)限制,而是數(shù)據(jù)移動(dòng)的瓶頸。
將權(quán)重和激活值在內(nèi)存中傳輸所消耗的時(shí)間與能量,遠(yuǎn)高于對(duì)它們進(jìn)行乘法運(yùn)算的成本。隨著模型規(guī)模不斷擴(kuò)大(尤其是大語(yǔ)言模型),性能瓶頸逐漸轉(zhuǎn)向內(nèi)存帶寬、緩存容量和功耗,而非浮點(diǎn)運(yùn)算吞吐量。降低數(shù)值精度是緩解這些瓶頸最有效的手段之一。
這也是行業(yè)從 FP32 轉(zhuǎn)向 FP16 和 BF16 的原因——且即便如此,精度降低的需求仍未得到滿足。
降低精度可實(shí)現(xiàn)以下優(yōu)勢(shì):
縮小模型體積,提升緩存局部性
提高有效內(nèi)存帶寬
降低單次運(yùn)算的能耗
提升計(jì)算資源利用率
人工智能神經(jīng)網(wǎng)絡(luò)訓(xùn)練本身具有一定的近似容錯(cuò)性:訓(xùn)練過(guò)程中會(huì)刻意引入噪聲,采用隨機(jī)優(yōu)化方法,且評(píng)估的是整體表現(xiàn)而非精確的數(shù)值正確性。因此,精度不再是固定要求,而是需要謹(jǐn)慎分配的“資源預(yù)算”。
問(wèn)題的核心也從“應(yīng)使用何種精度?”轉(zhuǎn)變?yōu)椤熬仍谀男┉h(huán)節(jié)至關(guān)重要?”
什么是 FP8?
FP8 指的是一類 8 位浮點(diǎn)數(shù)格式,而非單一標(biāo)準(zhǔn)。與更大的 IEEE 浮點(diǎn)數(shù)類型類似,F(xiàn)P8 包含兩種版本:E4M3 和 E5M2(命名直觀反映其位分配規(guī)則)。
對(duì)于 8 位長(zhǎng)度的浮點(diǎn)數(shù),單一格式無(wú)法同時(shí)兼顧足夠的數(shù)值范圍和精度。因此,現(xiàn)代硬件與框架會(huì)混合使用兩種 FP8 變體:
FP8 E4M3 適用于數(shù)值精度更關(guān)鍵的場(chǎng)景
FP8 E5M2 適用于動(dòng)態(tài)范圍成為限制因素的場(chǎng)景
在實(shí)際應(yīng)用中,F(xiàn)P8 極少單獨(dú)使用:計(jì)算過(guò)程通常以 FP8 執(zhí)行,而累加運(yùn)算則在 FP16 或 FP32 精度下進(jìn)行。這種方式在大幅降低存儲(chǔ)和計(jì)算精度的同時(shí),保障了訓(xùn)練與推理的穩(wěn)定性。
FP8 被廣泛應(yīng)用于多款人工智能加速器,核心原因在于其能夠完美適配混合精度工作負(fù)載。
什么是 FP8 E4M3?
FP8 E4M3 優(yōu)先保證精度而非范圍。更多的尾數(shù)位使其能更精確地表示接近零的數(shù)值,因此非常適合分布相對(duì)集中的激活值和梯度。其位分配如下:
1 位:表示正負(fù)的符號(hào)位
4 位:以 2 為基數(shù)的指數(shù)位
3 位:尾數(shù)位/有效數(shù)字位/小數(shù)位(即小數(shù)點(diǎn)后的數(shù)值部分)
什么是 FP8 E5M2?
FP8 E5M2 將部分尾數(shù)位分配給指數(shù)位,以犧牲精度為代價(jià)擴(kuò)大了可表示的數(shù)值范圍。這使其對(duì)異常值和大動(dòng)態(tài)范圍具有更強(qiáng)的魯棒性,適用于權(quán)重和中間結(jié)果等場(chǎng)景。其位分配如下:
1 位:表示正負(fù)的符號(hào)位
5 位:以 2 為基數(shù)的指數(shù)位
2位:尾數(shù)位/有效數(shù)字位/小數(shù)位(即小數(shù)點(diǎn)后的數(shù)值部分)

什么是 FP6?
FP6 并非單一的標(biāo)準(zhǔn)化格式,而是一類 6 位浮點(diǎn)數(shù)表示方法。與 FP8 類似,F(xiàn)P6 也由符號(hào)位、指數(shù)位和尾數(shù)位組成——但由于僅含 6 位,其優(yōu)勢(shì)與取舍更為極端。
盡管具體實(shí)現(xiàn)存在差異,但大多數(shù) FP6 方案遵循以下通用模式:
FP6 E2M3
1 位:表示正負(fù)的符號(hào)位
2 位:以 2 為基數(shù)的指數(shù)位
3 位:尾數(shù)位/有效數(shù)字位/小數(shù)位(即小數(shù)點(diǎn)后的數(shù)值部分)
FP6 E3M2
1 位:表示正負(fù)的符號(hào)位
3 位:以 2 為基數(shù)的指數(shù)位
2 位:尾數(shù)位/有效數(shù)字位/小數(shù)位(即小數(shù)點(diǎn)后的數(shù)值部分)

FP6 相關(guān):E2M3 與 E3M2 詳解
不同的指數(shù)位-尾數(shù)位分配比例適用于不同場(chǎng)景,但所有 FP6 格式都存在數(shù)值范圍或精度極度受限的問(wèn)題——通常兩者同時(shí)受限。與 FP8 不同,單一 FP6 格式幾乎沒(méi)有平衡范圍與精度的空間。因此,使用 FP6 幾乎必然需要采用激進(jìn)的數(shù)值縮放策略和嚴(yán)格的數(shù)值分布控制。
相較于 FP8,F(xiàn)P6 帶來(lái)的效率提升有限,但復(fù)雜度成本卻顯著增加。在多數(shù)情況下,F(xiàn)P8 已能捕獲大部分性能和內(nèi)存優(yōu)勢(shì),同時(shí)不會(huì)將數(shù)值穩(wěn)定性推向崩潰邊緣。
FP6 僅在以下條件下具有可行性:
數(shù)值分布狹窄且規(guī)律
按層或按張量實(shí)施數(shù)值縮放
累加運(yùn)算在 FP16 或 FP32 精度下進(jìn)行
什么是 FP4?
FP4 是當(dāng)前實(shí)際討論中精度最低的浮點(diǎn)數(shù)格式。僅 4 位的長(zhǎng)度將浮點(diǎn)數(shù)的性能推向絕對(duì)極限,其存在的核心目的幾乎完全是為了滿足硬件吞吐量和密度目標(biāo)。截至目前,僅有 NVIDIA Blackwell 系列 GPU 原生支持 FP4 精度。
FP4 沒(méi)有統(tǒng)一標(biāo)準(zhǔn),但典型設(shè)計(jì)的位分配如下:
符號(hào)位:1 位
指數(shù)位:2 位
尾數(shù)位:1 位

FP4 相關(guān)詳解
部分變體通過(guò)調(diào)整指數(shù)偏置或完全移除特殊值來(lái)優(yōu)化性能。無(wú)論具體布局如何,F(xiàn)P4 的數(shù)值范圍都極度有限,且?guī)缀鯖](méi)有精度可言。FP4 的核心作用是通過(guò)實(shí)現(xiàn)極高的計(jì)算密度,最大化張量核心吞吐量并最小化內(nèi)存帶寬消耗。
從數(shù)值角度看,F(xiàn)P4 并非為單獨(dú)使用而設(shè)計(jì):它是一種計(jì)算格式,而非存儲(chǔ)或累加格式。當(dāng)硬件規(guī)格中提及FP4 時(shí),通常遵循以下邏輯:
數(shù)值通常經(jīng)過(guò)縮放或塊縮放處理
計(jì)算過(guò)程以 FP4 執(zhí)行
累加運(yùn)算在 FP16 或 FP32 精度下進(jìn)行
輸入和輸出通常以更高精度存儲(chǔ)
這一邏輯契合行業(yè)大趨勢(shì):計(jì)算環(huán)節(jié)采用越來(lái)越低的精度,而在誤差易累積的環(huán)節(jié)保留更高精度。
因此,F(xiàn)P4 更應(yīng)被視為一種硬件能力,而非通用的數(shù)值格式。其被納入 NVIDIA GPU 規(guī)格,反映的是 GPU 的性能極限方向,而非當(dāng)前多數(shù)模型的可運(yùn)行精度。計(jì)算過(guò)程中位長(zhǎng)度的減少,降低了運(yùn)算復(fù)雜度并加快了執(zhí)行速度——在 GPU 執(zhí)行人工智能訓(xùn)練與推理過(guò)程中萬(wàn)億次的運(yùn)算中,這種優(yōu)勢(shì)會(huì)不斷累積放大。
精度的應(yīng)用場(chǎng)景比精度位數(shù)更重要
現(xiàn)代人工智能系統(tǒng)并非采用單一精度運(yùn)行,而是刻意在存儲(chǔ)、計(jì)算和累加等環(huán)節(jié)混合使用不同精度,僅在數(shù)值誤差易累積的關(guān)鍵環(huán)節(jié)保留較高精度。
這也是極低精度格式能夠可行的核心原因:
計(jì)算環(huán)節(jié)使用 FP8、FP6 甚至 FP4,以最大化吞吐量
存儲(chǔ)環(huán)節(jié)優(yōu)先選擇能保證精度的最小格式
累加環(huán)節(jié)保留 FP16 或 FP32 精度,以維持?jǐn)?shù)值穩(wěn)定性
一種精度格式的有效性,與其位數(shù)關(guān)系較小,更取決于其在整個(gè)計(jì)算流程中的應(yīng)用場(chǎng)景。
FP8:最佳通用低精度浮點(diǎn)數(shù),適用于訓(xùn)練和推理計(jì)算,搭配高精度累加
FP6:實(shí)驗(yàn)性與專用性格式,僅在嚴(yán)格縮放和受控分布條件下可行
FP4:硬件驅(qū)動(dòng)的極限精度格式,僅在嚴(yán)格約束下作為計(jì)算格式使用,不可單獨(dú)應(yīng)用
低精度并非意味著在所有環(huán)節(jié)犧牲正確性,而是在關(guān)鍵環(huán)節(jié)合理分配精度資源,在其他環(huán)節(jié)回收效率收益。

FP8、FP6、FP4 常見(jiàn)問(wèn)題解答
1. 為何降低精度不會(huì)徹底破壞模型精度?
神經(jīng)網(wǎng)絡(luò)本身具有噪聲容錯(cuò)性。只要累加和縮放處理得當(dāng),低精度計(jì)算引入的微小數(shù)值誤差不會(huì)顯著影響最終輸出結(jié)果。
2. 為何選擇 FP8、FP6 等浮點(diǎn)數(shù)格式而非整數(shù)格式(如 INT8)?
浮點(diǎn)數(shù)格式能夠保留動(dòng)態(tài)范圍,這對(duì)激活值和梯度至關(guān)重要。整數(shù)格式需要顯式校準(zhǔn),且難以應(yīng)對(duì)快速變化的數(shù)值分布。
3. 為何累加運(yùn)算幾乎總是采用更高精度?
誤差會(huì)在累加過(guò)程中不斷累積。即使輸入是極低精度,使用 FP16 或 FP32 進(jìn)行累加也能避免微小的舍入誤差主導(dǎo)最終結(jié)果。
4. 為何 FP4 已有硬件支持卻未被廣泛使用?
FP4 的數(shù)值范圍和精度極度有限。若缺乏嚴(yán)格的縮放和受控的數(shù)值分布,數(shù)值誤差會(huì)迅速擴(kuò)大,超出多數(shù)模型的容忍范圍。
5. 如何在 FP8、FP6 和 FP4 之間選擇?
多數(shù)低精度計(jì)算場(chǎng)景優(yōu)先選擇 FP8;FP6 僅適用于專用或?qū)嶒?yàn)性場(chǎng)景;將 FP4 視為硬件優(yōu)化手段,而非通用數(shù)值格式。
總結(jié)
低精度浮點(diǎn)數(shù)格式在吞吐量、延遲或功耗為核心約束的場(chǎng)景中極具優(yōu)勢(shì),具體應(yīng)用包括:
大語(yǔ)言模型(LLM):FP8 越來(lái)越多地用于訓(xùn)練和推理計(jì)算,而 FP4 則在嚴(yán)格控制的推理內(nèi)核中使用,以最大化張量核心利用率
數(shù)據(jù)中心推理:FP8 和 INT8 降低了每 Token 的內(nèi)存帶寬消耗和能耗,直接提升成本效益和可擴(kuò)展性
機(jī)器人與自動(dòng)駕駛系統(tǒng):在嚴(yán)格的功耗和散熱限制下,低精度計(jì)算可提升控制環(huán)路速率,尤其適用于邊緣加速器
推薦與排序模型:這類模型對(duì)近似計(jì)算容忍度高,通過(guò)激進(jìn)的精度降低可滿足延遲目標(biāo)
含學(xué)習(xí)組件的科學(xué)與工業(yè)仿真:替代模型和學(xué)習(xí)求解器通常能在 FP8 精度下高效運(yùn)行,且性能無(wú)明顯下降
這些場(chǎng)景的共性并非應(yīng)用領(lǐng)域,而是核心約束:當(dāng)數(shù)據(jù)移動(dòng)成本高于計(jì)算成本時(shí),低精度格式能帶來(lái)顯著收益。
隨著硬件與軟件的協(xié)同演進(jìn),未來(lái)數(shù)值格式的發(fā)展方向?qū)⒏僖蕾?IEEE 標(biāo)準(zhǔn),更多取決于精度資源的高效分配能力。
本文轉(zhuǎn)自:聯(lián)泰集群 LTHPC
-
浮點(diǎn)
+關(guān)注
關(guān)注
0文章
32瀏覽量
13719 -
人工智能
+關(guān)注
關(guān)注
1820文章
50324瀏覽量
266908
發(fā)布評(píng)論請(qǐng)先 登錄
【RV32F與RV32D】之單精度和雙精度浮點(diǎn)數(shù)
FP6166 /FP6128 /FP6121 /FP6130 全新原裝正品 專注電源管理芯片 選擇凌曄科技
FP5207 VS FP5208
如何將浮點(diǎn)數(shù)據(jù)存儲(chǔ)至FLASH中呢
分享一種用于神經(jīng)網(wǎng)絡(luò)處理的新8位浮點(diǎn)交換格式
FLASH存儲(chǔ)浮點(diǎn)數(shù)據(jù)的解決辦法
縫縫補(bǔ)補(bǔ)的浮點(diǎn)數(shù)進(jìn)制轉(zhuǎn)換器
單精度和雙精度浮點(diǎn)數(shù)的區(qū)別
單精度和雙精度浮點(diǎn)數(shù)的區(qū)別
NVIDIA GPU架構(gòu)下的FP8訓(xùn)練與推理
FP8模型訓(xùn)練中Debug優(yōu)化思路
FP8數(shù)據(jù)格式在大型模型訓(xùn)練中的應(yīng)用
如何使用FP8新技術(shù)加速大模型訓(xùn)練
FP8在大模型訓(xùn)練中的應(yīng)用
低精度浮點(diǎn)數(shù)定義——什么是 FP8、FP6、FP4?
評(píng)論