0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FP8在大模型訓(xùn)練中的應(yīng)用

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 2025-01-23 09:39 ? 次閱讀

越來越多的技術(shù)團(tuán)隊開始使用 FP8 進(jìn)行大模型訓(xùn)練,這主要因為 FP8 有很多技術(shù)優(yōu)勢。比如在新一代的 GPU 上,F(xiàn)P8 相對于 BF16 對矩陣乘算子這樣的計算密集型算子,NVIDIATensorCores能夠提供兩倍的峰值性能,相對于 TF32 能夠提供四倍的加速,從而大大縮短計算密集型算子的計算時間。而對于訪存密集型的算子,由于 FP8 所需的數(shù)據(jù)量更少,可以減輕訪存壓力,加速這些算子。如果在訓(xùn)練時使用 FP8 精度,可以更方便快速的將 FP8 部署到推理側(cè),使 FP8 訓(xùn)練可以更容易順暢地與低精度推理相結(jié)合等。

同時,由于 FP8 的動態(tài)范圍和精度相對于之前使用的 FP16/BF16/FP32 更小,如果使用 FP8 代替原來的數(shù)值精度進(jìn)行訓(xùn)練,技術(shù)團(tuán)隊在模型和數(shù)據(jù)集上可能會遇到 FP8 精度的挑戰(zhàn)。

FP8 訓(xùn)練的主要問題及解決思路

通過與很多技術(shù)團(tuán)隊交流,我們把 FP8 訓(xùn)練的主要問題分為以下三類,并且對可以考慮的解決思路做一個簡單介紹。

Spike 問題,即 Loss Spike。其實這并不是 FP8 特有的問題,在 BF16 中也可能遇到。引起 Loss Spike 的原因比較多,比如可能與選擇的算法有關(guān),目前沒有特定的解決方案。但如果 FP8 的 Spike 與 BF16 類似,我們大概率可以認(rèn)為這是一個通用問題;但如果 FP8 的 Spike 更多且需要多次迭代才能恢復(fù)正常,則可能是 FP8 訓(xùn)練存在問題,需要進(jìn)一步檢查。

FP8 的 Loss 問題,可能會遇到 Loss 增加或發(fā)散的情況。我們又可以將其分為三種情況:

o 情況 1:訓(xùn)練開始時 Loss 就發(fā)散,這通常是軟件問題,可能存在 Bug,建議使用 NVIDIA 最新的NeMo /Mcore (Megatron Core) /TE (Transformer Engine)版本來減少出錯概率。

o 情況 2:檢查訓(xùn)練配置,是否使用了新的優(yōu)化點,如 CPU offloading、FP8 parameters 等新功能??梢試L試先關(guān)閉這些功能,看看是否是由此導(dǎo)致的問題。

o 情況 3:數(shù)值問題也可能導(dǎo)致 Loss 問題,可以嘗試使用 BF16 進(jìn)行 FP8 計算,輸入為 FP8 tensor,但使用 BF16 的 GEMM。Loss 問題發(fā)生在訓(xùn)練中期,比如訓(xùn)練了幾百個 token 后突然出現(xiàn) Loss 上漲或發(fā)散,可以嘗試其他 recipe,如 current scaling 或 fangrand scaling,或?qū)⒛承?fallback 到 BF16。最近的研究表明,因為首層和最后一層更敏感,將第一層和最后一層 fallback 到 BF16 效果提升明顯。

Loss 沒有問題,但下游任務(wù)指標(biāo)與 BF16 有差距,也可以概括為兩種情況。

o 情況 1:所有下游任務(wù)指標(biāo)都有問題。建議檢查下游任務(wù)指標(biāo)的 inference 流程是否正確,如是否讀取了正確的 scaling factor 和 weight。也可能是某些任務(wù)有問題,但其他任務(wù)可以與 BF16 對齊,這時可以嘗試改變 FP8 訓(xùn)練的 recipe,嘗試 current scaling 或部分層 fallback 到 BF16。

o 情況 2:inference 使用 BF16,但訓(xùn)練使用 FP8。由于模型已經(jīng)是 FP8 訓(xùn)練的結(jié)果,使用 BF16 進(jìn)行 inference 可能會引入更多誤差。建議嘗試使用 FP8 訓(xùn)練加 FP8 inference,看看下游任務(wù)打分是否恢復(fù)正常。

FP8 Debug 工具介紹

針對 FP8 訓(xùn)練過程中的 Debug 思路,可以參考“探索 FP8 訓(xùn)練中 Debug 思路與技巧”技術(shù)博客里面的總結(jié):

https://developer.nvidia.com/zh-cn/blog/fp8-training-debug-tips/

18da13bc-d8b4-11ef-9310-92fbcf53809c.png

圖片來源于 NVIDIA FP8 debug 工具

FP8 的訓(xùn)練效果我們一般通過觀察 Loss 曲線或下游任務(wù)的指標(biāo)來進(jìn)行評估。比如,會檢查 Loss 是否發(fā)散,從而判斷 FP8 是否有問題。同時我們也希望找到一些其他指標(biāo),能在訓(xùn)練過程中用于評估 FP8 的穩(wěn)定性。此外,我們還希望通過一些指標(biāo)來評估量化的誤差,如果出現(xiàn) FP8 訓(xùn)練問題,問題是發(fā)生在某個特定的層或張量上。通過這些深入的了解,我們可以幫助選擇更好的訓(xùn)練方案,同時在訓(xùn)練過程中進(jìn)行調(diào)整。

因此我們開發(fā)了一個 FP8 Debug 工具,這個工具中包含了一些指標(biāo),用于觀察 FP8 訓(xùn)練的狀態(tài),包括MSE 和余弦相似性(用于 BF16 和 FP8 之間的量化誤差),Tensor 的 Underflow 和 Overflow(用于查看是否因為 FP8 的動態(tài)范圍比 BF16 小而導(dǎo)致過多的 Underflow 或 Overflow,進(jìn)而引起的精度問題)。

其次,我們還記錄了一些統(tǒng)計值,如對比 Delayed Scaling 的 Scaling Factor 與使用當(dāng)前 Tensor 的 Current Scaling 的 Scaling Factor 之間的誤差(這代表 Delayed Scaling 是否能準(zhǔn)確表征當(dāng)前 Tensor 的表現(xiàn))。

除了這些指標(biāo)外,我們還可以將這些 Tensor Dump 出來,并動態(tài)選擇 Dump 哪些層,記錄這些指標(biāo)。

目前這個工具可以與 NVIDIA 任何版本的NeMo Megatron兼容,沒有改動這些框架的內(nèi)部代碼,因此無論使用哪個版本的框架,都可以使用這個工具進(jìn)行相應(yīng)的分析。

18f9fee8-d8b4-11ef-9310-92fbcf53809c.png

在使用 Debug 工具進(jìn)行分析的時候,我們會 Dump 一些 Tensor 并進(jìn)行分析,可以看到:

包括了 Tensor 的名稱和 Layer 的名稱,即哪一層的哪一個 Tensor。例如,我們會 Dump Forward 的 Input,即 GEMM 的 Input 和 Weight,以及反向傳播時的 Dy 的 Tensor。

可以周期性地打印不同 Step 的結(jié)果,觀察整個過程中的變化,從而了解不同 Step 的情況。

可以觀察不同的指標(biāo),如 AMin 和 AMax,以及 Current Scaling 和 Delay Scaling 這兩種 Scaling 的區(qū)別。

通過打印出來的值,觀察余弦相似性 MSE 這兩種量化誤差,以及 Underflow 和 Overflow 的比例來判斷表現(xiàn)。

19157aa6-d8b4-11ef-9310-92fbcf53809c.png

數(shù)據(jù)來源于 NVIDIAFP8 debug工具

工具也可以將對應(yīng)的 FP8 Tensor 保存下來,以便后期進(jìn)行更多的指標(biāo)分析。

這些指標(biāo)主要來自我們技術(shù)團(tuán)隊基于一些技術(shù)論文以及業(yè)務(wù)實踐中的討論和總結(jié)。

內(nèi)部實驗中觀察到的案例:

19325144-d8b4-11ef-9310-92fbcf53809c.png

數(shù)據(jù)來源于 NVIDIAFP8 debug工具

如上圖所示,紅色線條代表 FP8 正常收斂的 good case,沒有出現(xiàn) Loss 發(fā)散,Loss 在正常下降。而綠色線條則代表 FP8 的 bad case,訓(xùn)練到 2000 步后開始發(fā)散。這兩個 case 是我們?nèi)藶闃?gòu)造的,通過調(diào)整學(xué)習(xí)率來展示 good case 和 bad case。

以下是幾個指標(biāo)情況:

195031d2-d8b4-11ef-9310-92fbcf53809c.jpg

數(shù)據(jù)來源于 NVIDIA 內(nèi)部實驗

MSE - 這個指標(biāo)上邊的是 bad case,下邊是 good case。我們把這兩個放在一起,可以看到對于 forward X,bad case 下幾個矩陣的 MSE 最大值都已經(jīng)達(dá)到了 10 的三次方。也就是說 FP8 和 BF16 的量化誤差已經(jīng)到了 10 的三次方。但是對于 good case 來說,量化誤差其實只有 10 的負(fù)二次方。通過這樣的對比,我們可以看到對于 forward X 的 tensor 來說,它可能是有問題的。

1967662c-d8b4-11ef-9310-92fbcf53809c.jpg

數(shù)據(jù)來源于 NVIDIA 內(nèi)部實驗

Underflow 對比 - bad case 上 FC2 的 forward X,有 80% 的最大 Underflow 比率。但對于下邊 good case 來說,它最大的情況下也只有 1% 。

所以對于 forward 的 FC2 來說,X 可能需要格外關(guān)注并考慮,比如是否要 fallback 到 BF16?或者用一些其他的 scaling 策略來保證它的精度。

目前,F(xiàn)P8 Debug 工具還在內(nèi)部測試階段,如果希望了解或嘗試該工具,可以聯(lián)系您對接的 NVIDIA 技術(shù)團(tuán)隊,也歡迎您提供建議共同豐富這個工具的功能。

本文摘選自“NVIDIA AI加速精講堂 —— FP8在大模型訓(xùn)練中的應(yīng)用、挑戰(zhàn)及實踐”,可訪問NVIDIA 官網(wǎng)觀看完整在線演講。

關(guān)于作者

黃雪

NVIDIA 解決方案架構(gòu)師,碩士畢業(yè)于哈爾濱工業(yè)大學(xué),主要負(fù)責(zé)深度學(xué)習(xí)訓(xùn)練方面工作,在深度學(xué)習(xí)框架、超大規(guī)模模型訓(xùn)練,分布式模型訓(xùn)練加速優(yōu)化等技術(shù)方向有豐富的研究經(jīng)驗。

GTC 2025 將于2025 年 3 月 17 至 21 日在美國加州圣何塞及線上同步舉行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5072

    瀏覽量

    103512
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4767

    瀏覽量

    129203
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2532

    瀏覽量

    3002

原文標(biāo)題:FP8 在大模型訓(xùn)練中的應(yīng)用、挑戰(zhàn)及實踐

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【大語言模型:原理與工程實踐】大語言模型的預(yù)訓(xùn)練

    增長。DeepMind相關(guān)論文中指出,模型大小和訓(xùn)練Token數(shù)應(yīng)以相似速率增長,以確保最佳性能。因此,構(gòu)建與模型規(guī)模相匹配的預(yù)訓(xùn)練數(shù)據(jù)至
    發(fā)表于 05-07 17:10

    Pytorch模型訓(xùn)練實用PDF教程【中文】

    本教程以實際應(yīng)用、工程開發(fā)為目的,著重介紹模型訓(xùn)練過程中遇到的實際問題和方法。機(jī)器學(xué)習(xí)模型開發(fā),主要涉及三大部分,分別是數(shù)據(jù)、
    發(fā)表于 12-21 09:18

    基于Keras利用訓(xùn)練好的hdf5模型進(jìn)行目標(biāo)檢測實現(xiàn)輸出模型的表情或性別gradcam

    CV:基于Keras利用訓(xùn)練好的hdf5模型進(jìn)行目標(biāo)檢測實現(xiàn)輸出模型的臉部表情或性別的gradcam(可視化)
    發(fā)表于 12-27 16:48

    Ubuntu上使用Nvidia GPU訓(xùn)練模型

    問題最近在Ubuntu上使用Nvidia GPU訓(xùn)練模型的時候,沒有問題,過一會再訓(xùn)練出現(xiàn)非??D,使用nvidia-smi查看發(fā)現(xiàn),顯示GPU的風(fēng)扇和電源報錯:解決方案自動風(fēng)扇控制
    發(fā)表于 01-03 08:24

    分享一種用于神經(jīng)網(wǎng)絡(luò)處理的新8位浮點交換格式

    ,以便更好地匹配值(權(quán)重、激活,漸變等)被處理,而不是僅僅依賴于 FP8 格式。此外,模型可以FP8 相同的格式下進(jìn)行訓(xùn)練和部署,而定
    發(fā)表于 09-15 15:15

    推斷FP32模型格式的速度比CPU上的FP16模型格式快是為什么?

    CPU 上推斷出 FP32 模型格式和 FP16 模型格式。 FP32
    發(fā)表于 08-15 08:03

    小米預(yù)訓(xùn)練模型的探索與優(yōu)化

    導(dǎo)讀:預(yù)訓(xùn)練模型NLP大放異彩,并開啟了預(yù)訓(xùn)練-微調(diào)的NLP范式時代。由于工業(yè)領(lǐng)域相關(guān)業(yè)務(wù)的復(fù)雜性,以及工業(yè)應(yīng)用對推理性能的要求,大規(guī)模預(yù)訓(xùn)練
    的頭像 發(fā)表于 12-31 10:17 ?2651次閱讀
    小米<b class='flag-5'>在</b>預(yù)<b class='flag-5'>訓(xùn)練</b><b class='flag-5'>模型</b>的探索與優(yōu)化

    【AI簡報20231103期】ChatGPT參數(shù)揭秘,中文最強(qiáng)開源大模型來了!

    訓(xùn)練擴(kuò)展模型大小,節(jié)約訓(xùn)練成本的最關(guān)鍵技術(shù)之一。相比于當(dāng)前的 16 位和 32 位浮點混合精度訓(xùn)練,使用
    的頭像 發(fā)表于 11-03 19:15 ?1519次閱讀
    【AI簡報20231103期】ChatGPT參數(shù)揭秘,中文最強(qiáng)開源大<b class='flag-5'>模型</b>來了!

    FP8NVIDIA GPU架構(gòu)和軟件系統(tǒng)的應(yīng)用

    深度學(xué)習(xí)和人工智能的快速發(fā)展背景下,尤其是大語言模型(Large Language Model,LLM)的蓬勃發(fā)展,模型的大小和計算復(fù)雜性不斷增加,對硬件的性能和能效提出了極高要求。
    的頭像 發(fā)表于 03-28 14:09 ?941次閱讀
    <b class='flag-5'>FP8</b><b class='flag-5'>在</b>NVIDIA GPU架構(gòu)和軟件系統(tǒng)<b class='flag-5'>中</b>的應(yīng)用

    NVIDIA GPU架構(gòu)下的FP8訓(xùn)練與推理

    FP8 訓(xùn)練利用 E5M2/E4M3 格式,具備與 FP16 相當(dāng)?shù)膭討B(tài)范圍,適用于反向傳播與前向傳播。
    的頭像 發(fā)表于 04-25 10:01 ?853次閱讀
    NVIDIA GPU架構(gòu)下的<b class='flag-5'>FP8</b><b class='flag-5'>訓(xùn)練</b>與推理

    FP8模型訓(xùn)練Debug優(yōu)化思路

    目前,市場上許多公司都積極開展基于 FP8 的大模型訓(xùn)練,以提高計算效率和性能。在此,我們整理并總結(jié)了客戶及 NVIDIA 技術(shù)團(tuán)隊 FP8
    的頭像 發(fā)表于 09-06 14:36 ?377次閱讀
    <b class='flag-5'>FP8</b><b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>中</b>Debug優(yōu)化思路

    FP8數(shù)據(jù)格式大型模型訓(xùn)練的應(yīng)用

    本文主要介紹了 FP8 數(shù)據(jù)格式大型模型訓(xùn)練的應(yīng)用、挑戰(zhàn)及最佳實踐,展示了 FP8
    的頭像 發(fā)表于 11-19 14:54 ?442次閱讀
    <b class='flag-5'>FP8</b>數(shù)據(jù)格式<b class='flag-5'>在</b>大型<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>中</b>的應(yīng)用

    如何使用FP8新技術(shù)加速大模型訓(xùn)練

    利用 FP8 技術(shù)加速 LLM 推理和訓(xùn)練越來越受到關(guān)注,本文主要和大家介紹如何使用 FP8 這項新技術(shù)加速大模型訓(xùn)練。 使用
    的頭像 發(fā)表于 12-09 11:30 ?266次閱讀

    GPU是如何訓(xùn)練AI大模型

    AI模型訓(xùn)練過程中,大量的計算工作集中矩陣乘法、向量加法和激活函數(shù)等運(yùn)算上。這些運(yùn)算正是GPU所擅長的。接下來,AI部落小編帶您了解GPU是如何
    的頭像 發(fā)表于 12-19 17:54 ?198次閱讀

    采用FP8混合精度,DeepSeek V3訓(xùn)練成本僅557.6萬美元!

    一, 前言? ? AI領(lǐng)域,訓(xùn)練一個大型語言模型(LLM)是一個耗時且復(fù)雜的過程。根據(jù)之前《從零開始訓(xùn)練一個大語言
    的頭像 發(fā)表于 01-13 11:12 ?143次閱讀