chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來(lái)源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 2024-09-06 14:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目前,市場(chǎng)上許多公司都積極開(kāi)展基于 FP8 的大模型訓(xùn)練,以提高計(jì)算效率和性能。在此,我們整理并總結(jié)了客戶及 NVIDIA 技術(shù)團(tuán)隊(duì)在 FP8 模型訓(xùn)練過(guò)程中的 debug 思路和方法,供大家參考。

在討論之前,建議大家使用我們推薦的 FP8 訓(xùn)練的 Recipe,即使用 Delayed scaling,在 History length 為 1024 的窗口中選取最大的 amax 數(shù)值作為計(jì)算 scaling factor 的方法。當(dāng)然,我們也在不斷優(yōu)化這個(gè) Recipe,未來(lái)隨著更多 FP8 的實(shí)踐案例,將繼續(xù)為大家總結(jié)和分享,期待共同探索和優(yōu)化 debug 的思路和方案。

在收集和整理了大量 FP8 訓(xùn)練的案例后,我們發(fā)現(xiàn),F(xiàn)P8 訓(xùn)練中遇到的問(wèn)題一般可以分成以下三類(lèi)。

第一類(lèi)問(wèn)題:Spike Issue

Spike Issue 其實(shí)并不是 FP8 訓(xùn)練所特有的,在 BF16 中也可能會(huì)遇到此類(lèi)問(wèn)題,并且實(shí)際上根據(jù) NVIDIA 技術(shù)團(tuán)隊(duì)內(nèi)部訓(xùn)練的一些曲線,可以看到 FP8 的 Spike Issue 要比 BF16 還要小一些。所以,如果遇到了 Spike Issue,很多情況下可以暫時(shí)不用特別關(guān)注 FP8。另外,這里推薦兩篇關(guān)于 Spike 的研究,供大家參考。

關(guān)于 Adam Optimizer 對(duì) Spike 的影響。

關(guān)于使用 SWA 增強(qiáng)訓(xùn)練的穩(wěn)定性,減少 Spike 出現(xiàn)的情況。

整體上,如果我們遇到的 Spike 和曾經(jīng)在 BF16 上遇到的差不多,這種情況很可能不是 FP8 的問(wèn)題。當(dāng)然,也有例外的情況,比如我們遇到的 Spike 需要很多迭代步才能夠恢復(fù)正常,那這種情況下可以說(shuō)明這個(gè) loss 和 BF16 有本質(zhì)上的差異, 可以考慮是第二類(lèi)問(wèn)題。

第二類(lèi)問(wèn)題:

FP8 loss 和 BF16 不匹配或者發(fā)散

在 Validation loss 曲線上,不論是預(yù)訓(xùn)練還是 SFT,如果有 BF16 作為 Baseline,并且可以看到 FP8 和 BF16 有差距,這種情況下應(yīng)該如何處理?

一般這類(lèi)問(wèn)題可以分成兩種情況,包括:

情況 1:在訓(xùn)練的初始階段,不論是 Train from scratch 還是 Continue train,如果剛切換到 FP8 進(jìn)行訓(xùn)練,一開(kāi)始就出現(xiàn)了 loss 比較大或者直接跑飛,這種情況下大概率是軟件問(wèn)題造成的,因此建議大家使用 NVIDIA 最新的 Transformer EngineMegatron Core 的軟件棧,這樣很多軟件的問(wèn)題可以及時(shí)被修復(fù),從而讓大家少跑一些彎路。同時(shí)還有另外一種情況,在軟件不斷的更新過(guò)程中,為了性能的優(yōu)化會(huì)增加很多新的特性。如果一些特性是剛剛加入的,可能在 FP8 上暫時(shí)還沒(méi)有遇到特殊情況,因此建議,大家如果使用了一些很新的特性,屆時(shí)可以先嘗試關(guān)閉掉這些新特性,檢查是否是由于這些新特性的實(shí)現(xiàn)不夠完善造成 loss 的問(wèn)題。

情況 2:我們已經(jīng)訓(xùn)練了一段時(shí)間,比如已經(jīng)訓(xùn)練了幾百 Billion 的 Tokens,loss 出現(xiàn)了差距,這種情況一般就不是軟件問(wèn)題了。問(wèn)題可能是給大家推薦的這個(gè) Recipe 并不適用于某些數(shù)據(jù)集或某些模型結(jié)構(gòu)。這種情況下,可以通過(guò)下面的案例去進(jìn)行拆解。

第三類(lèi)問(wèn)題:FP8 loss 非常吻合,

但是 Downstream tasks 會(huì)有一些差異

訓(xùn)練中,我們的 Validation loss 曲線吻合的非常好,比如 loss 差距的量級(jí)大概是在十的負(fù)三次方,但是在一些下游任務(wù)上打分的方面可能會(huì)出現(xiàn)問(wèn)題,那應(yīng)該如何處理?這樣的問(wèn)題一般分為兩種情況,包括:

情況 1:進(jìn)行下游任務(wù)打分的時(shí)候,會(huì)進(jìn)行多任務(wù)打分。如果所有的任務(wù)和 BF16 baseline 對(duì)比,或者和當(dāng)時(shí)上一代的模型對(duì)比,打分結(jié)果差異很大,這種情況大概率是評(píng)估過(guò)程中出現(xiàn)了問(wèn)題。比如,Checkpoint 導(dǎo)出來(lái)的格式不對(duì),或者 Scale 沒(méi)有取對(duì)等評(píng)估流程的問(wèn)題。因此我們還需要進(jìn)行排除,確認(rèn)是否是導(dǎo)出模型和評(píng)估流程出現(xiàn)了問(wèn)題。

情況 2:另一種情況,如前文提到的“在訓(xùn)練了幾百 Billion 的 Token 之后,loss 出現(xiàn)了差距”,和這種情況很相似,此時(shí)大部分任務(wù)都沒(méi)問(wèn)題,只有個(gè)別的一兩個(gè)任務(wù)發(fā)現(xiàn)跟 BF16 的 Baseline 有明顯差距,如 3% 或者 5% 的掉點(diǎn)。這種情況下,建議改變 FP8 訓(xùn)練的 Recipe,默認(rèn)的 Recipe 是 Delayed scaling,即選用先前迭代步存下來(lái)的 scale 值,我們可以替換成 Current scaling,即選用當(dāng)前迭代步的 scale 值,或者把部分的矩陣做一些回退到 BF16 的操作,具體方法下文會(huì)進(jìn)行介紹。

以下是一個(gè)案例,通過(guò)這個(gè)案例,可以初步了解哪些方法在現(xiàn)階段可以進(jìn)行嘗試。

wKgZombaox2AA-QIAACNQpC9OX8898.jpg

這是一個(gè)類(lèi)似于 Llama 2 的模型,雖然模型規(guī)模較小,但已經(jīng)訓(xùn)練了 1.1T 個(gè) Tokens,使用了如下推薦的配置,包括:

Pytorch 23.10 版本

TE Commit 為 d76118d

FP8 format:hybird

History Length:1024

Algo:Max

FP8 Wgrad Override:True

我們發(fā)現(xiàn),比較接近 loss 末尾的時(shí)候,差異就會(huì)隨之出現(xiàn),并且顯然已經(jīng)不是十的負(fù)三次方的量級(jí),這種情況下,可以考慮以下的步驟進(jìn)行問(wèn)題的排查。

wKgaombaZZWADmmKAAB_pnXO4Qo355.jpg

第一步:Sequence Parallel off

在軟件前期的時(shí)候,首先盡可能?chē)L試關(guān)閉一些根據(jù)經(jīng)驗(yàn)判斷可能有問(wèn)題的特性。比如在引入 FP8 初期,軟件上的 Sequence Paralleism(SP)經(jīng)常會(huì)引起一些問(wèn)題,因此可以先嘗試進(jìn)行關(guān)閉,如果發(fā)現(xiàn)關(guān)閉后并沒(méi)有問(wèn)題,可以初步判斷 loss 不是由軟件引起的,從而大概率可以推斷是 Recipe 不夠完善造成的。

第二步:我們可以做一個(gè)恢復(fù)性實(shí)驗(yàn)

嘗試看一下當(dāng)前訓(xùn)練出現(xiàn)問(wèn)題的 FP8 的 Checkpoint,比如最后一個(gè)點(diǎn),把這個(gè) Checkpoint 切換到 BF16 訓(xùn)練,查看是否可以恢復(fù)到 BF16 的 Baseline。我們目前遇到的大多數(shù)情況都是可以恢復(fù)的。因此在這個(gè)基礎(chǔ)的情況下,可以繼續(xù)嘗試下一步 debug 的方法。

第三步:三類(lèi)矩陣的問(wèn)題排查

大多數(shù)情況下,整個(gè)模型跑在 FP8 上并不多見(jiàn)。對(duì)于 Transformer layer 的每個(gè) Gemm 來(lái)說(shuō),整個(gè)訓(xùn)練過(guò)程中,有三類(lèi)矩陣跑在 FP8 上,包括它的前向 Fprop,以及反向 Wgrad 和 Dgrad,因此現(xiàn)在需要判斷三類(lèi)矩陣的哪個(gè)矩陣出了問(wèn)題,當(dāng)然,更細(xì)致一些應(yīng)該判斷具體是哪一個(gè) Transformer layer 的矩陣出了問(wèn)題。不過(guò),這個(gè)特性還在開(kāi)發(fā)過(guò)程中,目前還是一個(gè)比較初步的判斷,需要檢查是前向的矩陣還是反向的兩個(gè)矩陣其中之一出現(xiàn)了差錯(cuò)。因此這一步中,可以首先把這三類(lèi)矩陣全部轉(zhuǎn)成 BF16 訓(xùn)練。不過(guò),我們做的是一個(gè) Fake quantization,通俗的解釋就是使用 BF16 進(jìn)行訓(xùn)練,但是在做 BF16 計(jì)算之前,會(huì)先把它的輸入 Cast 成 FP8,然后再 Cast back 回到 BF16。這個(gè)時(shí)候,其實(shí)數(shù)據(jù)表示它已經(jīng)是 FP8 表示范圍內(nèi)的值了, 自然這個(gè) scaling 使用的就是 Current scaling,或者說(shuō)沒(méi)有 Scaling。這種情況下,會(huì)發(fā)現(xiàn)把三類(lèi)矩陣全部都切回 Fake quantization 進(jìn)行訓(xùn)練的時(shí)候,此時(shí)的 loss 曲線是可以貼近 BF16 Baseline 的。因此,下面需要一個(gè)矩陣一個(gè)矩陣的進(jìn)行排除。

wKgZombaozmAF7h-AAFeySPfF5M564.jpg

三類(lèi)矩陣包括前向的 Fprop,以及反向的 Wgrad 和 Dgrad。因此我們可以遵循一個(gè)相對(duì)簡(jiǎn)單的思路——逐一嘗試,就是每次訓(xùn)練把其中一個(gè)矩陣設(shè)置為 BF16 計(jì)算, 經(jīng)我們嘗試后,可以看到:

在 Fprop 矩陣上面做 BF16 計(jì)算,會(huì)發(fā)現(xiàn)對(duì) loss 的影響并不是很大。

在 Wgrad 矩陣上面做 BF16 計(jì)算,影響也非常小。

在 Dgrad 矩陣上面做 BF16 計(jì)算,即只有 Dgrad 計(jì)算執(zhí)行在 BF16,而 Fprop 和 Wgrad 全部執(zhí)行在 FP8,此時(shí)會(huì)發(fā)現(xiàn) loss 會(huì)回到 BF16 的 Baseline。

現(xiàn)在我們已經(jīng)定位到了有問(wèn)題的矩陣是 Dgrad,是否還有方法再做進(jìn)一步的挽救從而避免性能損失太多?這種情況下,可以去進(jìn)行以下嘗試。

wKgZombao0iAU4iCAADVLDYd6mA643.jpg

在 Transformer Engine (TE) 的后續(xù)版本中,計(jì)劃支持用戶使用 Current scaling,即還是使用 FP8 去做 Gemm 的運(yùn)算。但是我們不用前面給大家推薦的這個(gè) Delayed scaling recipe,而是使用當(dāng)前輸入的 scale 值,雖然會(huì)損失一點(diǎn)性能,但是相比于把整個(gè) Gemm 回退到 BF16 做計(jì)算,它的性能損失會(huì)小很多。

當(dāng)對(duì) Dgrad 使用了 Current scaling 之后,會(huì)發(fā)現(xiàn) loss 曲線已經(jīng)和 BF16 的 Baseline 吻合了。

以上就是一個(gè)相對(duì)完整的 debug 的思路,供大家參考和討論。

關(guān)于作者

高慧怡

NVIDIA 深度學(xué)習(xí)解決方案架構(gòu)師,2020 年加入 NVIDIA 解決方案架構(gòu)團(tuán)隊(duì),從事深度學(xué)習(xí)應(yīng)用在異構(gòu)系統(tǒng)的加速工作,目前主要支持國(guó)內(nèi) CSP 客戶在大語(yǔ)言模型的訓(xùn)練加速工作。

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

    關(guān)注

    14

    文章

    5594

    瀏覽量

    109751
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3752

    瀏覽量

    52111
  • DEBUG
    +關(guān)注

    關(guān)注

    3

    文章

    95

    瀏覽量

    21382

原文標(biāo)題:探索 FP8 訓(xùn)練中 Debug 思路與技巧

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深層神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練:過(guò)擬合優(yōu)化

    為了訓(xùn)練出高效可用的深層神經(jīng)網(wǎng)絡(luò)模型,在訓(xùn)練時(shí)必須要避免過(guò)擬合的現(xiàn)象。過(guò)擬合現(xiàn)象的優(yōu)化方法通常有三種。
    的頭像 發(fā)表于 12-02 14:17 ?3656次閱讀
    深層神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>模型</b>的<b class='flag-5'>訓(xùn)練</b>:過(guò)擬合<b class='flag-5'>優(yōu)化</b>

    在Ubuntu20.04系統(tǒng)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗(yàn)

    , batch_size=512, epochs=20)總結(jié) 這個(gè)核心算法的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練過(guò)程,是用來(lái)對(duì)MNIST手寫(xiě)數(shù)字圖像進(jìn)行分類(lèi)的。模型將圖像作為輸入,通過(guò)卷積和池化層提取圖像的特征,然后通過(guò)全連接層進(jìn)行分類(lèi)預(yù)
    發(fā)表于 10-22 07:03

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

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

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

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

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

    大家?guī)?lái)小米在預(yù)訓(xùn)練模型的探索與優(yōu)化。 01 預(yù)訓(xùn)練簡(jiǎn)介 預(yù)訓(xùn)練與詞向量的方法一脈相承。詞向量是從任務(wù)無(wú)關(guān)和大量的無(wú)監(jiān)督語(yǔ)料中學(xué)習(xí)到詞的分布
    的頭像 發(fā)表于 12-31 10:17 ?3833次閱讀
    小米在預(yù)<b class='flag-5'>訓(xùn)練</b><b class='flag-5'>模型</b>的探索與<b class='flag-5'>優(yōu)化</b>

    介紹幾篇EMNLP&apos;22的語(yǔ)言模型訓(xùn)練方法優(yōu)化工作

    來(lái)自:圓圓的算法筆記 今天給大家介紹3篇EMNLP 2022語(yǔ)言模型訓(xùn)練方法優(yōu)化的工作,這3篇工作分別是: 針對(duì)檢索優(yōu)化語(yǔ)言
    的頭像 發(fā)表于 12-22 16:14 ?1658次閱讀

    【AI簡(jiǎn)報(bào)20231103期】ChatGPT參數(shù)揭秘,中文最強(qiáng)開(kāi)源大模型來(lái)了!

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

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

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

    TensorRT-LLM低精度推理優(yōu)化

    Optimizer(簡(jiǎn)稱(chēng) ModelOpt)及其快速實(shí)現(xiàn)量化功能的方法。第三部分為 Debug。隨后講解 FP8 的 Deep-Dive,并進(jìn)行總結(jié)。
    的頭像 發(fā)表于 11-19 14:29 ?2621次閱讀
    TensorRT-LLM低精度推理<b class='flag-5'>優(yōu)化</b>

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

    本文主要介紹了 FP8 數(shù)據(jù)格式在大型模型訓(xùn)練的應(yīng)用、挑戰(zhàn)及最佳實(shí)踐,展示了 FP8 在提升訓(xùn)練
    的頭像 發(fā)表于 11-19 14:54 ?3572次閱讀
    <b class='flag-5'>FP8</b>數(shù)據(jù)格式在大型<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)練越來(lái)越受到關(guān)注,本文主要和大家介紹如何使用 FP8 這項(xiàng)新技術(shù)加速大模型訓(xùn)練。 使用
    的頭像 發(fā)表于 12-09 11:30 ?2478次閱讀

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

    一, 前言? ? 在AI領(lǐng)域,訓(xùn)練一個(gè)大型語(yǔ)言模型(LLM)是一個(gè)耗時(shí)且復(fù)雜的過(guò)程。根據(jù)之前在《從零開(kāi)始訓(xùn)練一個(gè)大語(yǔ)言模型需要投資多少錢(qián)?》
    的頭像 發(fā)表于 01-13 11:12 ?1745次閱讀

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

    越來(lái)越多的技術(shù)團(tuán)隊(duì)開(kāi)始使用 FP8 進(jìn)行大模型訓(xùn)練,這主要因?yàn)?FP8 有很多技術(shù)優(yōu)勢(shì)。比如在新一代的 GPU 上,FP8 相對(duì)于 BF16
    的頭像 發(fā)表于 01-23 09:39 ?2241次閱讀
    <b class='flag-5'>FP8</b>在大<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>中</b>的應(yīng)用

    摩爾線程GPU原生FP8計(jì)算助力AI訓(xùn)練

    并行訓(xùn)練和推理,顯著提升了訓(xùn)練效率與穩(wěn)定性。摩爾線程是國(guó)內(nèi)率先原生支持FP8計(jì)算精度的國(guó)產(chǎn)GPU企業(yè),此次開(kāi)源不僅為AI訓(xùn)練和推理提供了全新的國(guó)產(chǎn)化解決方案,更對(duì)推動(dòng)國(guó)產(chǎn)GPU在AI大
    的頭像 發(fā)表于 03-17 17:05 ?1528次閱讀
    摩爾線程GPU原生<b class='flag-5'>FP8</b>計(jì)算助力AI<b class='flag-5'>訓(xùn)練</b>

    摩爾線程發(fā)布Torch-MUSA v2.0.0版本 支持原生FP8和PyTorch 2.5.0

    , 支持原生FP8數(shù)據(jù)類(lèi)型,支持PyTorch 2.5.0 ,并通過(guò)多項(xiàng)針對(duì)MUSA計(jì)算平臺(tái)的性能優(yōu)化,進(jìn)一步提升了對(duì)AI模型和大規(guī)模數(shù)據(jù)處理的支持能力。 FP8原生支持,國(guó)產(chǎn)GPU的
    的頭像 發(fā)表于 05-11 16:41 ?1673次閱讀