一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

本文聚焦 NVIDIA FP8 訓(xùn)練與推理的實(shí)踐應(yīng)用。

FP8 訓(xùn)練利用 E5M2/E4M3 格式,具備與 FP16 相當(dāng)?shù)膭?dòng)態(tài)范圍,適用于反向傳播與前向傳播。FP8 訓(xùn)練在相同加速平臺(tái)上的峰值性能顯著超越 FP16/BF16,并且模型參數(shù)越大,訓(xùn)練加速效果越好,且其與 16-bits 訓(xùn)練在收斂性和下游任務(wù)表現(xiàn)上無(wú)顯著差異。FP8 訓(xùn)練通過(guò) NVIDIA Transformer Engine 實(shí)現(xiàn),僅需少量代碼改動(dòng),并且支持 FlashAttention、混合精度訓(xùn)練遷移等。支持 FP8 的框架包括 NVIDIA Megatron-LM、NeMo、DeepSpeed、飛槳 PaddlePaddle、Colossal AI、HuggingFace 等。

FP8 推理通過(guò) NVIDIA TensorRT-LLM 實(shí)現(xiàn),權(quán)重輸入先轉(zhuǎn)換為 FP8,并融合操作以提高內(nèi)存吞吐,但部分輸出仍需 FP16 進(jìn)行 reduction。NVIDIA 技術(shù)團(tuán)隊(duì)正研究直接 FP8 reduction 以實(shí)現(xiàn)端到端的加速優(yōu)化。

FP8 基本原理、采用理由和收益

4ff8ecb4-023c-11ef-a297-92fbcf53809c.png

圖 1. 四種數(shù)據(jù)類型

首先詳解 FP8 的概念,圖 1 展示了 FP8、FP16、FP32 與 BF16 四種數(shù)據(jù)類型。業(yè)界曾長(zhǎng)期依賴 FP16 與 FP32 訓(xùn)練,直至 GPT 橫空出世,BF16 因能避免計(jì)算過(guò)程中的數(shù)值溢出問(wèn)題而受到青睞。

近年來(lái),NVIDIA 技術(shù)團(tuán)隊(duì)在 FP8 領(lǐng)域持續(xù)投入,發(fā)布了多篇論文,并在歷屆 GTC 大會(huì)也分享了 FP8 在計(jì)算機(jī)視覺(jué) (CV)、自然語(yǔ)言處理 (NLP) 以及大模型訓(xùn)練中的實(shí)際效果。

500c9c3c-023c-11ef-a297-92fbcf53809c.jpg

圖 2. E4M3 與 E5M2 兩種數(shù)據(jù)格式

圖 2 表格展示了 E4M3 與 E5M2 兩種數(shù)據(jù)格式。其中可以看到,F(xiàn)P8 精度的 E5M2 數(shù)據(jù)格式的數(shù)部分,與 FP16 的保持一致。這意味著 FP8 精度的 E5M2 數(shù)據(jù)格式具備與 FP16 相當(dāng)?shù)膭?dòng)態(tài)范圍,因此該數(shù)據(jù)格式常被用在訓(xùn)練的反向傳播階段。而 E4M3 是在前向傳播中采用的 FP8 格式。圖 2 詳盡展示了 FP8 格式下各類特殊數(shù)值的表示方式。

當(dāng)我們考慮浮點(diǎn)數(shù)的數(shù)據(jù)精度會(huì)不會(huì)損失的時(shí)候,這個(gè)浮點(diǎn)數(shù)往往會(huì)落入圖 2 下半部分里粉色的 subnormal 區(qū)間。圖 2 下半部分是以 FP32 舉例的,讀者可根據(jù)圖 2 表格看到 FP8 的 subnormal 區(qū)間,因此我們?cè)谟?xùn)練模型時(shí)可進(jìn)行理論分析,探究數(shù)值精度是否影響模型效果。

501f1eca-023c-11ef-a297-92fbcf53809c.png

表 1. 援引的測(cè)試數(shù)據(jù)[1]僅供技術(shù)參考和討論

表 1 旨在闡述采用 FP8 的原因,以在 NVIDIA H100 Tensor Core GPU 上為例,單位是 TFLOPS,相較 FP16 和 BF16,F(xiàn)P8 的峰值性能能夠?qū)崿F(xiàn)翻倍。并且此表展示的基準(zhǔn)測(cè)試數(shù)據(jù)是在 2023 年采集的,當(dāng)前性能提升更為顯著。

502e5516-023c-11ef-a297-92fbcf53809c.jpg

圖 3. 測(cè)試數(shù)據(jù)僅供技術(shù)參考和討論

圖 3 左側(cè)圖表對(duì)比了不同參數(shù)規(guī)模的 GPT-3 模型在 H100 上做 FP8 訓(xùn)練,以及在 NVIDIA A100 Tensor Core GPU 上做 FP16/BF16 訓(xùn)練的吞吐加速比。這個(gè)加速效果隨模型規(guī)模正向變化,比如參數(shù)規(guī)模為 5B 至 40B,它的加速效果約為 2 到 3 倍。

右側(cè)表格則進(jìn)一步對(duì)比了不同參數(shù)規(guī)模的模型同在 H100 GPU 上,使用 FP8 訓(xùn)練相對(duì) BF16 的性能加速比。就 126M 至 175B 參數(shù)的模型而言,除了個(gè)別特殊任務(wù)外,F(xiàn)P8 訓(xùn)練的加速效果同樣隨模型規(guī)模增大而提升。換言之,模型規(guī)模越大,采用 FP8 訓(xùn)練的收益越大。

5039e638-023c-11ef-a297-92fbcf53809c.jpg

圖 4. 援引的測(cè)試數(shù)據(jù)[2]僅供技術(shù)參考和討論

圖 4 援引的是行業(yè)測(cè)試數(shù)據(jù)。左側(cè)圖表顯示的是對(duì) GEMM 單一計(jì)算任務(wù)的加速對(duì)比。在 H100 GPU 上 FP8 訓(xùn)練相對(duì)于 A100 GPU 上 BF16 訓(xùn)練的峰值性能加速比約為 6 倍,而在 GEMM 任務(wù)測(cè)試中接近 5 倍。并且鑒于底層 CUDA 內(nèi)核持續(xù)優(yōu)化,未來(lái)性能將進(jìn)一步提升。

右側(cè)表格則展示了在不同規(guī)模的 GPT 模型做 FP8 訓(xùn)練的實(shí)際加速效果,模型參數(shù)規(guī)模分別為 1B、3B、7B 和 30B。該圖表分別對(duì)比了在 H100 GPU 與 A100 GPU 上做 BF16 和 FP8 訓(xùn)練的加速效果。可以看到 BF16 訓(xùn)練對(duì) 1B、3B 模型的加速比約為 2.2 倍,而 FP8 訓(xùn)練的加速比分別達(dá) 2.7 倍、2.8 倍,對(duì) 7B、30B 模型加速比則達(dá)到 3 倍和 3.3 倍,說(shuō)明 FP8 訓(xùn)練的性能優(yōu)化效果更加顯著。

FP8 的訓(xùn)練性能和收斂性

50456ef4-023c-11ef-a297-92fbcf53809c.png

圖 5. 測(cè)試數(shù)據(jù)僅供技術(shù)參考和討論

圖 5 展示了 FP8 訓(xùn)練的性能與收斂性。右圖顯示在不同規(guī)模的 GPT 模型上使用 BF16 與 FP8 進(jìn)行訓(xùn)練的 loss (損失值)曲線,并以困惑度 PPL(Perplexity) 為度量指標(biāo)。同色曲線代表相同模型規(guī)模,實(shí)線代表 BF16,虛線為 FP8。觀察 PPL 曲線走勢(shì),可見(jiàn)隨著訓(xùn)練進(jìn)程,F(xiàn)P8 與 BF16 的曲線幾乎完全吻合,表明兩者收斂性并無(wú)顯著差異。

左側(cè)表格則匯總了歷屆 GTC 大會(huì)中分享的下游任務(wù)數(shù)據(jù),包括 PPL 指標(biāo)及 FP8 與 16-bits 訓(xùn)練的對(duì)比,涵蓋 NLP 模型和 CV 模型。結(jié)果顯示,使用 FP8 訓(xùn)練的模型與 16-bits 訓(xùn)練的模型在各項(xiàng)指標(biāo)上的數(shù)值差異甚微,證實(shí)了 FP8 訓(xùn)練能達(dá)到同等效果。

518e5848-023c-11ef-a297-92fbcf53809c.png

圖 6. 援引的測(cè)試數(shù)據(jù)[3]僅供技術(shù)參考和討論

圖 6 展示了我們?cè)诒镜販y(cè)試的一個(gè) 1.3B 參數(shù)模型的實(shí)際訓(xùn)練結(jié)果,共進(jìn)行了約 2.5 萬(wàn)步訓(xùn)練。結(jié)果顯示,該模型的 loss 曲線與預(yù)期基本相符,僅有微?。泓c(diǎn)零幾)的差異。

這里列舉在 FP8 訓(xùn)練中實(shí)際采用的配置??梢钥吹绞褂?FP8 訓(xùn)練時(shí)對(duì)代碼的改動(dòng)極少,只需添加幾行代碼即可,后文將詳細(xì)解釋這些代碼的具體含義。

--fp8-hybrid
--transformer-impl transformer_engine
--fp8-amax-history-len 1024
--fp8-amax-compute-algo max

此外,我們?cè)趯?shí)際訓(xùn)練中的常見(jiàn)問(wèn)題解答如下:

目前廣泛采用 BF16 進(jìn)行混合訓(xùn)練,轉(zhuǎn)用 FP8 是否需要自行編譯 kernel 或進(jìn)行復(fù)雜的數(shù)據(jù)類型轉(zhuǎn)換? 答案是否,建議使用 NVIDIA Transformer Engine 預(yù)置的多種 FP8 kernel(Linear、MLP、LayerNorm 等基礎(chǔ)算子及基于這些算子的fused kernel),無(wú)需開(kāi)發(fā),直接調(diào)用即可。

如果沒(méi)使用 NVIDIA Megatron 或 DeepSpeed 框架,而是采用自定義框架,可以無(wú)縫使用 Transformer Engine 進(jìn)行 FP8 訓(xùn)練嗎? 答案是可以。只需在 PyTorch 上使用 Transformer Engine 提供的 fp8_autocast 包裝器(wrapper),即可在原生 PyTorch 環(huán)境中開(kāi)展 FP8 訓(xùn)練。此 wrapper 主要用于提供一系列 FP8-safe 的算子,自動(dòng)將高精度的輸入數(shù)據(jù)轉(zhuǎn)換為 FP8,簡(jiǎn)化了低精度訓(xùn)練的實(shí)現(xiàn)過(guò)程。在上述過(guò)程中,需要對(duì)每個(gè) tensor 更新其縮放因子 (scale),為此我們引入 amax(maximums of absolute value)的概念,fp8_autocast wrapper 會(huì)更新 amax 值。此外,根據(jù) amax 值,該 wrapper 還會(huì)自動(dòng)計(jì)算每個(gè) tensor 的實(shí)際 scale 值。

Transformer Engine 除提供 FP8 layer-wise 模塊和自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換外,還有什么功能? 答案是它還支持 FlashAttention 機(jī)制。這意味著 Transformer Engine 也能夠提升傳統(tǒng) BF16、FP16 訓(xùn)練的性能。

對(duì)于已使用 BF16 訓(xùn)練的存量模型,能夠使用 FP8 做繼續(xù)訓(xùn)練嗎? 答案是可以。實(shí)踐證明,BF16 格式的 checkpoint 可以直接導(dǎo)入進(jìn)行 FP8 繼續(xù)訓(xùn)練;反之亦然,即在預(yù)訓(xùn)練階段使用了 FP8,那么在 SFT(supervised Fine-Tuning) 階段,出于對(duì)模型精度或數(shù)據(jù)健壯性的考慮,仍舊可以從 FP8 無(wú)縫切換到 BF16 做繼續(xù)訓(xùn)練。Transformer Engine 全面支持此類精度遷移的操作。

51adaeb4-023c-11ef-a297-92fbcf53809c.jpg

圖 7. 解讀 FP8 訓(xùn)練中新增的五行代碼

圖 7 旨在解讀前文提及的 FP8 訓(xùn)練中新增的五行代碼,代碼的功能是用于計(jì)算當(dāng)前 tensor 的 scale 值。我們采用名為 delayed scaling 策略,即當(dāng)前 tensor 的 scale 值并非基于實(shí)時(shí)計(jì)算得出,而是依據(jù)其歷史數(shù)據(jù),例如基于前幾個(gè)迭代周期的值計(jì)算得出。計(jì)算方法可選擇取 max 值,也可采用最近時(shí)間的值。

以該圖展示的 amax history 說(shuō)明,針對(duì)當(dāng)前 tensor,系統(tǒng)可存儲(chǔ) 1,024 個(gè) amax 值,并從中選取最大值作為當(dāng)前 tensor 的 amax 值。隨后,根據(jù)一個(gè)簡(jiǎn)化的 recipe 算法即可計(jì)算出 scale 值。

實(shí)際應(yīng)用中,Hopper GPU 上 FP8 訓(xùn)練相較于 BF16 的加速效果為 30%-40%,低于 FP8 在單一 GEMM 計(jì)算任務(wù)中理論可達(dá)的 5 倍加速比。為解釋此現(xiàn)象,本文借助圖 8 進(jìn)行闡述。

使用 Transformer Engine 訓(xùn)練 FP8 LLM

51ce9e76-023c-11ef-a297-92fbcf53809c.png

圖 8. FP8 訓(xùn)練在 Transformer Engine 上的完整流程

圖 8 顯示了訓(xùn)練中前向與反向計(jì)算的精度差異:紅線表示高精度(BF16、FP32),綠線為 FP8。在整個(gè)訓(xùn)練期間,圖片上半部分的權(quán)重(weight)及下半部分的梯度(gradient)始終以高精度存儲(chǔ)。僅在執(zhí)行 linear 操作時(shí),才對(duì)當(dāng)前 tensor 進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換(cast),轉(zhuǎn)為 FP8 精度計(jì)算,但 linear 輸出仍為高精度。因此,后續(xù) bias 計(jì)算等均在高精度上進(jìn)行。

圖示表明,實(shí)際訓(xùn)練中僅 GEMM 計(jì)算采用 FP8,其余計(jì)算保持高精度。盡管業(yè)界存在對(duì)非線性操作也采用 FP8 計(jì)算和存儲(chǔ)的激進(jìn)策略,并在部分下游任務(wù)中表現(xiàn)良好,但主流方案依然遵循上述精細(xì)化的精度分配原則。

目前支持 FP8 訓(xùn)練的分布式訓(xùn)練框架與工具包括 NVIDIA Megatron-LM、NeMo 框架,DeepSpeed、飛槳 PaddlePaddle、Colossal AI、HuggingFace 等,也就是說(shuō)這些框架均已集成了 Transformer Engine,可選用上述任一框架進(jìn)行大模型 FP8 訓(xùn)練。

51e53d20-023c-11ef-a297-92fbcf53809c.png

圖 9. 不同數(shù)據(jù)精度

集合Transformer Engine 的訓(xùn)練測(cè)試結(jié)果對(duì)比

圖 9 總結(jié)了上述重點(diǎn),通過(guò)對(duì)比三類測(cè)試情況:綠線代表僅使用 BF16 訓(xùn)練,橘線表示 BF16 訓(xùn)練結(jié)合 Transformer Engine(即在啟用 FlashAttention 的同時(shí),使用 Transformer Engine 內(nèi)置的 fused kernel),藍(lán)線為 FP8 訓(xùn)練結(jié)合 Transformer Engine。

綠線顯示,僅用 BF16 訓(xùn)練時(shí),模型在單 GPU 卡上即遭遇內(nèi)存不足(OOM),而在啟用 Transformer Engine 后,依舊采用 BF16,模型也能順利完成訓(xùn)練。若進(jìn)一步轉(zhuǎn)為 FP8,單次迭代時(shí)間可提升約 34.56%。

中間的圖表展示了各類測(cè)試的顯存占用情況。如前文所述,權(quán)重、梯度及優(yōu)化器(optimizer)的數(shù)據(jù)均以高精度存儲(chǔ),此外,F(xiàn)P8 訓(xùn)練因需在 checkpoint 中保存額外值,訓(xùn)練時(shí)顯存占用比 FP16 略高約 5% 以內(nèi)。須注意,推理階段的顯存占用與訓(xùn)練階段是完全不同的。

5205ee3a-023c-11ef-a297-92fbcf53809c.png

圖 10. Llama2-7B 模型做 FP8/BF16

繼續(xù)訓(xùn)練的 loss 曲線高度一致

圖 10 展示了對(duì) Llama2-7B 模型做 FP8 繼續(xù)訓(xùn)練的效果。本測(cè)試并未進(jìn)行長(zhǎng)時(shí)間的訓(xùn)練,目的是在為了提供概念驗(yàn)證 (PoC, Proof of Concept)。圖中共有四條曲線:灰色曲線代表全程使用 BF16 訓(xùn)練,其余三條線分別表示以 BF16 進(jìn)行預(yù)訓(xùn)練,保存 checkpoint 后,再分別以 BF16 與 FP8 繼續(xù)訓(xùn)練。從繼續(xù)訓(xùn)練的兩條曲線來(lái)看,loss 曲線高度一致,且與灰色曲線的趨勢(shì)也保持一致。

522160e8-023c-11ef-a297-92fbcf53809c.png

圖 11. Llama2-7B 模型 1.3 萬(wàn)步內(nèi)

全程 FP8/BF16 訓(xùn)練的 loss 曲線基本一致

圖 11 展示的是對(duì) Llama2-7B 在 1.3 萬(wàn)迭代步內(nèi)做全程 FP8 訓(xùn)練,可以看到它和全程 BF16 訓(xùn)練的 loss 曲線也幾乎一致。

FP8 推理流程

本章節(jié)分享使用 TensorRT-LLM 進(jìn)行 FP8 推理。前文圖 8 展示的 FP8 訓(xùn)練在 Transformer Engine 上的完整流程,而在進(jìn)入推理階段,圖 8 下半部分如梯度等訓(xùn)練特有部分可去除,僅保留上半部份即可。

訓(xùn)練時(shí)為確保梯度計(jì)算準(zhǔn)確,權(quán)重通常維持為高精度(如 BF16 或 FP32),這是由于訓(xùn)練時(shí)需更新參數(shù),而在推理時(shí),權(quán)重已固定,故可在模型加載或預(yù)處理階段提前將權(quán)重轉(zhuǎn)換為 FP8,確保模型加載即為 FP8 格式。此外,推理階段應(yīng)盡量進(jìn)行操作融合,如將 LayerNorm 與后續(xù)數(shù)據(jù)格式轉(zhuǎn)換操作整合,確保 kernel 輸入輸出盡可能維持 FP8,從而能夠有效提升 GPU 內(nèi)存吞吐。同樣,GeLU (Gaussian Error Linear Unit) 激活函數(shù)也要力求融合。

目前少量輸出仍會(huì)保持為 FP16,原因是 NVIDIA NCCL 僅支持高精度規(guī)約操作 (reduction),所以現(xiàn)在仍然需采用 FP16 進(jìn)行 reduction,完成后再轉(zhuǎn)化為 FP8。

523dd49e-023c-11ef-a297-92fbcf53809c.jpg

圖 12. FP8 推理流程

經(jīng)過(guò)上述融合后,推理流程就簡(jiǎn)化為圖 12 所示。綠線代表 FP8 的輸入輸出(I/O),紅線表示高精度 I/O。圖中可見(jiàn),最前端的 LayerNorm 輸出與權(quán)重均為 FP8,矩陣輸出暫時(shí)保持 FP16,與前文描述一致。并且經(jīng)過(guò)測(cè)試驗(yàn)證可得,雖然矩陣輸出精度對(duì)整體性能影響較小,但與輸入問(wèn)題的規(guī)模相關(guān);且因其計(jì)算密集特性,對(duì)輸出形態(tài)影響微弱。

在完成 MHA(Multi-Head Attention)后,需要將結(jié)果轉(zhuǎn)換為 FP8 以進(jìn)行后續(xù)矩陣計(jì)算,Reduction 是以 FP16 執(zhí)行后再轉(zhuǎn)換到 FP8 的。對(duì)于 MLP1 和 MLP2,兩者邏輯相似,但不同之處在于:MLP1 的輸出可保持在 FP8,因?yàn)樗呀?jīng)把 GeLU 加 Bias 等操作直接融合到 MLP1 的 kernel。

由此引發(fā)的關(guān)鍵問(wèn)題是,能否將剩余紅線(高精度 I/O)全部轉(zhuǎn)為綠線(FP8 I/O),實(shí)現(xiàn)進(jìn)一步的加速優(yōu)化?這正是 NVIDIA 持續(xù)進(jìn)行的方向。以 reduction 為例,NVIDIA 正研究直接實(shí)現(xiàn) FP8 reduction,盡管中間累加仍需高精度,但在數(shù)據(jù)傳輸階段可采用 FP8。與現(xiàn)有 reduction 不同的是,F(xiàn)P8 reduction 內(nèi)部需引入反量化(de-quantization)與量化 (quantization)操作,故需定制開(kāi)發(fā) reduction kernel。

最佳實(shí)踐:使用 TensorRT-LLM 實(shí)現(xiàn) FP8 推理

TensorRT-LLM 是基于 NVIDIA TensorRT 構(gòu)建,其 FP8 能力也主要是通過(guò) TensorRT 提供。自 TensorRT 9.0 版本起,官方就已經(jīng)開(kāi)始支持 FP8 推理。要在 TensorRT 中啟用 FP8 推理,需完成以下幾步:

設(shè)置 FP8 標(biāo)志:通過(guò)調(diào)用 config.set_flag (trt.BuilderFlag.FP8) 在 TensorRT 配置中啟用 FP8 支持。類似 INT8、BF16、FP16,F(xiàn)P8 也是類似的啟用方式。

添加 GEMM 縮放因子(scale):主要針對(duì)輸入和權(quán)重,需在 weight.py (TensorRT-LLM 中的文件)中額外加載這些縮放因子。這是 FP8 推理中不可或缺的步驟。

編寫(xiě) FP8模型:現(xiàn)階段我們需要明確編寫(xiě)需要 FP8 支持的模型。具體做法如下:將原始 FP16 輸入量化至 FP8,隨后進(jìn)行反量化;權(quán)重同樣進(jìn)行量化與反量化操作。如此編寫(xiě)的模型,TensorRT 會(huì)自動(dòng)將量化與反量化操作盡可能與前一個(gè) kernel 融合,以及將反量化操作與 matmul kernel 融合。最終生成的計(jì)算圖表現(xiàn)為量化后的 X 與 W 直接進(jìn)行 FP8 計(jì)算,輸出也為 FP8 結(jié)果。

為了簡(jiǎn)化 FP8 在 TensorRT-LLM 中的應(yīng)用,TensorRT-LLM 已對(duì)其進(jìn)行封裝,提供了 FP8 linear 函數(shù)和 FP8 row linear 函數(shù)來(lái)實(shí)現(xiàn)。對(duì)于使用直接線性層(linear layer),則無(wú)需重新編寫(xiě)代碼,直接調(diào)用函數(shù)即可。

5248bda0-023c-11ef-a297-92fbcf53809c.png

圖 13. FP8 推理計(jì)算流程

本文用圖 13 總結(jié)上述內(nèi)容。首先權(quán)重以 FP8 精度存儲(chǔ)的,在進(jìn)行計(jì)算前,權(quán)重先經(jīng)歷一次反量化。注意,在此之前,權(quán)重的量化已在輸入前完成了,此處僅需進(jìn)行反量化操作。這意味著,在進(jìn)行矩陣內(nèi)部計(jì)算時(shí),實(shí)際上是使用反量化后的數(shù)據(jù),通常是 FP16 或甚至 FP32 來(lái)進(jìn)行運(yùn)算的。

矩陣層盡管以 FP8 表示,但累加是采用 FP32 完成,累加后再乘以 scale 的相關(guān)參數(shù),形成如圖所示的計(jì)算流程。最終得到的結(jié)果具備較高精度。由于累加器(accumulator)需要采用高精度的數(shù)值,因此,要獲得最終 FP8 的輸出結(jié)果,模型還需經(jīng)過(guò)一個(gè)量化節(jié)點(diǎn) (quantitation node)。

回顧整個(gè)流程,輸入經(jīng)歷了量化與反量化操作。其中,量化 kernel 發(fā)生在反量化 kernel 之前,而 TensorRT 則會(huì)智能地融合這些 kernel,確保計(jì)算的高效和準(zhǔn)確。

使用 Tensor-LLM 實(shí)現(xiàn) FP8 推理的性能

52602dfa-023c-11ef-a297-92fbcf53809c.png

表 2 測(cè)試數(shù)據(jù)僅供技術(shù)參考和討論

表 2 對(duì)比第一列不同的 batch size,其中 max 值指的是在設(shè)定輸入為 1,024,輸出為 256,模型為 GPT-J 6B,所能使用的最大 batch size。

列表顯示,F(xiàn)P16 的 max 值為 75,而 FP8 的 max 值則提升至 85。原因是 FP8 僅節(jié)省了權(quán)重部分的內(nèi)存,部分 tensor 以及 KV cache 仍保持在 FP16。表格最后一列展示了使用 FP8 KV cache 的情況,此時(shí)能夠看到其 max 值相比 FP16 的 max 值超出 2 倍。

在性能方面,單純啟用 FP8 會(huì)由于 batch size 提升有限,以及 KV cache 的影響,導(dǎo)致性能提升并不顯著。然而,一旦將 KV cache 也轉(zhuǎn)換至 FP8,通過(guò)減半其內(nèi)存消耗,模型吞吐量可以相較 FP16 提升約兩倍左右,這是一個(gè)相當(dāng)理想的性能提升幅度。

審核編輯:劉清
聲明:本文內(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

    文章

    5309

    瀏覽量

    106401
  • 計(jì)算機(jī)視覺(jué)

    關(guān)注

    9

    文章

    1709

    瀏覽量

    46777
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    368

    瀏覽量

    16087

原文標(biāo)題:NVIDIA GPU 架構(gòu)下的 FP8 訓(xùn)練與推理

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    將Whisper大型v3 fp32模型轉(zhuǎn)換為較低精度后,推理時(shí)間增加,怎么解決?

    將 openai/whisper-large-v3 FP32 模型轉(zhuǎn)換為 FP16、INT8 和 INT4。 推理所花費(fèi)的時(shí)間比在 FP
    發(fā)表于 06-24 06:23

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

    , 支持原生FP8數(shù)據(jù)類型,支持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的技術(shù)突破 作為
    的頭像 發(fā)表于 05-11 16:41 ?697次閱讀

    陣列云從訓(xùn)練推理

    在云場(chǎng)景,陣列云(分布式計(jì)算集群)從模型訓(xùn)練推理的完整技術(shù)流程可結(jié)構(gòu)化分解如下: 一、訓(xùn)練階段技術(shù)實(shí)現(xiàn) 1,資源動(dòng)態(tài)編排? 基于Kubernetes集群或云廠商彈性計(jì)算服務(wù)(如AW
    的頭像 發(fā)表于 03-28 08:32 ?328次閱讀

    摩爾線程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
    的頭像 發(fā)表于 03-17 17:05 ?606次閱讀
    摩爾線程<b class='flag-5'>GPU</b>原生<b class='flag-5'>FP8</b>計(jì)算助力AI<b class='flag-5'>訓(xùn)練</b>

    無(wú)法調(diào)用GPU插件推理的遠(yuǎn)程張量API怎么解決?

    運(yùn)行了使用 GPU 插件的遠(yuǎn)程張量 API 的推理。但是,它未能共享 OpenCL* 內(nèi)存,但結(jié)果不正確。
    發(fā)表于 03-06 06:13

    壁仞科技支持DeepSeek-V3滿血版訓(xùn)練推理

    DeepSeek在開(kāi)源周開(kāi)源了部分關(guān)鍵模塊的代碼及推理系統(tǒng)參考架構(gòu),再次引發(fā)行業(yè)震動(dòng),但目前尚未開(kāi)源DeepSeek-V3 滿血版完整訓(xùn)練代碼。壁仞科技憑借八大自主創(chuàng)新技術(shù),實(shí)現(xiàn)
    的頭像 發(fā)表于 03-04 14:01 ?1003次閱讀

    摩爾線程完成DeepSeek開(kāi)源庫(kù)FlashMLA和DeepGEMM適配

    MUTLASS,快速支持了FlashMLA。不僅如此,摩爾線程還基于MUTLASS在全新GPU架構(gòu)上優(yōu)化實(shí)現(xiàn)了FP8矩陣乘法,支持DeepGEMM的相應(yīng)功能,充分展示了摩爾線程MUSA架構(gòu)
    的頭像 發(fā)表于 02-27 14:40 ?562次閱讀

    使用NVIDIA推理平臺(tái)提高AI推理性能

    NVIDIA推理平臺(tái)提高了 AI 推理性能,為零售、電信等行業(yè)節(jié)省了數(shù)百萬(wàn)美元。
    的頭像 發(fā)表于 02-08 09:59 ?717次閱讀
    使用<b class='flag-5'>NVIDIA</b><b class='flag-5'>推理</b>平臺(tái)提高AI<b class='flag-5'>推理</b>性能

    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 ?1180次閱讀
    <b class='flag-5'>FP8</b>在大模型<b class='flag-5'>訓(xùn)練</b>中的應(yīng)用

    解鎖NVIDIA TensorRT-LLM的卓越性能

    Batching、Paged KV Caching、量化技術(shù) (FP8、INT4 AWQ、INT8 SmoothQuant 等) 以及更多功能,確保您的 NVIDIA GPU 能發(fā)揮
    的頭像 發(fā)表于 12-17 17:47 ?867次閱讀

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

    /fp8_primer.html#Introduction-to-FP8 其中,使用 FP8 進(jìn)行大模型訓(xùn)練具有以下優(yōu)勢(shì): 新一代 GPU 如?NV
    的頭像 發(fā)表于 12-09 11:30 ?1071次閱讀

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

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

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

    本文將分享 TensorRT-LLM 中低精度量化內(nèi)容,并從精度和速度角度對(duì)比 FP8 與 INT8。首先介紹性能,包括速度和精度。其次,介紹量化工具 NVIDIA TensorRT Model
    的頭像 發(fā)表于 11-19 14:29 ?1268次閱讀
    TensorRT-LLM低精度<b class='flag-5'>推理</b>優(yōu)化

    NVIDIA助力麗蟾科技打造AI訓(xùn)練推理加速解決方案

    麗蟾科技通過(guò) Leaper 資源管理平臺(tái)集成 NVIDIA AI Enterprise,為企業(yè)和科研機(jī)構(gòu)提供了一套高效、靈活的 AI 訓(xùn)練推理加速解決方案。無(wú)論是在復(fù)雜的 AI 開(kāi)發(fā)任務(wù)中,還是在高并發(fā)
    的頭像 發(fā)表于 10-27 10:03 ?828次閱讀
    <b class='flag-5'>NVIDIA</b>助力麗蟾科技打造AI<b class='flag-5'>訓(xùn)練</b>與<b class='flag-5'>推理</b>加速解決方案

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

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