指數(shù)級(jí)增長的模型算力需求,宣告了大智算集群作為訓(xùn)練基礎(chǔ)設(shè)施的“剛需”時(shí)代已然來臨。?面對(duì)動(dòng)輒10^26FLOPS級(jí)的計(jì)算量和長達(dá)數(shù)十天的萬卡訓(xùn)練周期,單純擴(kuò)充集群規(guī)模已非良策。破局的關(guān)鍵在于多管齊下:?深挖低精度訓(xùn)練(尤其是FP8)帶來的巨大潛力以提升單卡效率;同時(shí),構(gòu)建高可靠、高可用的集群環(huán)境以保障大規(guī)模訓(xùn)練的持續(xù)穩(wěn)定運(yùn)行?。這不僅關(guān)乎成本,更決定著大模型研發(fā)的節(jié)奏與成敗。
7月25日,在WAIC2025期間舉辦的摩爾線程技術(shù)分享日上,摩爾線程副總裁王華以《基于FP8的國產(chǎn)萬卡訓(xùn)練》為主題,分享了在大規(guī)模集群上用FP8做訓(xùn)練的創(chuàng)新及思考。
以下為王華的演講實(shí)錄精華:
1、大智算集群成為訓(xùn)練的剛需
從行業(yè)模型發(fā)展的角度看,從2020年到2025年包括GPT、Llama、Grok等主流模型所需要的計(jì)算算力資源,需要的計(jì)算算力是非常大的。
整個(gè)趨勢(shì)在往上漲,在2020年的時(shí)候,還有許多并不需要很多算力的模型。舉例來說,2020年大模型算力TOP需求是1023flops。但是到2025年左右,現(xiàn)在Grok-4的算力需求更高,而Grok-3的算力需求在1026flops,差不多是1000倍的增長。驅(qū)動(dòng)增長的核心點(diǎn)是參數(shù)加數(shù)據(jù)。由于我們追求更好的模型效果,參數(shù)量在不斷增大,數(shù)據(jù)也在不斷增大,這是考慮到ScalingLaw這兩個(gè)數(shù)值增大會(huì)帶來模型效果的提升,最終帶來算力需求接近指數(shù)型增長。
再從一些熟知模型的實(shí)際算力需求,以及我們用不同規(guī)模的集群訓(xùn)練它們所需要的時(shí)間分析。從算力角度來講,因?yàn)榭紤]到橫向校正,全部拿英偉達(dá)的H100集群來做計(jì)算,這里有千卡集群、五千卡集群和萬卡集群。考慮到不同的計(jì)算效率,DeepSeek算力需求大概在3.4×1024flops,1024的千卡集群計(jì)算需要的時(shí)間大概是97天,五千卡集群需要22天,萬卡集群是13天。
最近剛剛發(fā)布的KimiK2是萬億參數(shù)模型,它的計(jì)算量是2.98×1024flops,計(jì)算的時(shí)間分別是85天、19天、11天。
而對(duì)巨無霸模型GPT-4,它的訓(xùn)練量是1025flops,又高了一個(gè)數(shù)量級(jí),我們看到的時(shí)間也是高了一個(gè)數(shù)量級(jí),千卡需要602天,五千卡集群需要137天,萬卡集群需要80天。早期運(yùn)行比較小的GPT-3等,參數(shù)并不少,但是數(shù)據(jù)量小,所以算得很快。
由上可以看到,數(shù)據(jù)和模型這兩個(gè)因素推動(dòng)著整個(gè)訓(xùn)練的算力需求在大幅度增長。
第二個(gè)是精度的變化,從開始的FP32到FP16,再到現(xiàn)在的FP8。精度下降帶來的好處是算力提升,精度每下降一半,算力會(huì)翻一倍,因?yàn)樗枰娘@存、緩存速度都在下降。另外精度下降會(huì)導(dǎo)致模型效果下降,主要由于精度下降會(huì)導(dǎo)致一些數(shù)值的損失。
2、低精度訓(xùn)練會(huì)帶來大規(guī)模訓(xùn)練效率提升
如何在其中找到平衡點(diǎn)?回到ScalingLaw,這里有兩個(gè)參數(shù),模型的loss值我們希望越小越好,參數(shù)量、數(shù)據(jù)量越大,loss值就會(huì)越小。引入精度之后,我們得到一個(gè)新的ScalingLaw,除了參數(shù)量、數(shù)據(jù)量還會(huì)有一個(gè)P(精度),隨著精度上升L更小,但是我們需要在P和N之間取一個(gè)平衡,變成在總的計(jì)算量固定的情況下,怎么樣合理配置這三個(gè)值。這一塊有一些研究,做了一系列的試驗(yàn)去擬合這個(gè)工具,最后我們得到一個(gè)結(jié)果。我們拿FP32、FP16、FP8、FP6以及FP4來對(duì)比。我們看到FP32對(duì)應(yīng)的是220M,精度下降一半這塊就會(huì)變成440M,整個(gè)loss值在FP6、FP8是一個(gè)最佳的"甜點(diǎn)區(qū)域",到FP4反而會(huì)上升。我們從近期研究的結(jié)果來看,引入精度這個(gè)ScalingLaw之后,比較合理的值是在FP8,所以我們現(xiàn)在用FP16做訓(xùn)練,用FP8替換之后有了很大的提升空間。
但是用低精度做訓(xùn)練也遇到了很多的挑戰(zhàn)。這是低精度的表達(dá)范圍,當(dāng)中包含我們?nèi)〉淖畲笾?、最小值,另外在每一個(gè)區(qū)間上,它表達(dá)的尾數(shù)位數(shù)少,整體的數(shù)量會(huì)少。這兩個(gè)限制會(huì)導(dǎo)致的問題,第一個(gè)是我們的取值范圍小,它就容易上溢和下溢,上溢是梯度爆炸的錯(cuò)誤,下溢會(huì)導(dǎo)致數(shù)據(jù)丟失,從而梯度消失。我們?cè)谡麄€(gè)訓(xùn)練過程當(dāng)中會(huì)有不同的操作,不同操作對(duì)精度的需求和敏感度不同,我們可以做一個(gè)大致的分類。這里面按照精度不敏感到中度敏感到高度敏感進(jìn)行排列,不敏感的部分比如說矩陣乘,矩陣乘一般兩個(gè)數(shù)直接相乘,操作次數(shù)不會(huì)太多,它的精度敏感度相對(duì)比較低。像累加/歸約類,會(huì)把很多數(shù)放在一起操作,精度要求是中等的,非線型函數(shù)則可能是指數(shù)級(jí)增長,對(duì)精度要求是高的。我們針對(duì)不同的精度需求,有一個(gè)比較直白的做法就是混合精度訓(xùn)練,在FP32、FP16的時(shí)代就已經(jīng)采用這種技術(shù)了,F(xiàn)P8引入之后我們也可以用類似的方式,對(duì)非敏感的部分采用FP8去做計(jì)算。
FP8出現(xiàn)之后,F(xiàn)P8技術(shù)有了很大的發(fā)展,有很多技術(shù)點(diǎn)支持FP8的訓(xùn)練。比如說硬件上就是TensorCore,新的TensorCore都是支持FP8的,比如說英偉達(dá)的,在輸入上可以用FP8輸入,輸出是高精度矩陣。
另外是權(quán)重Backup,我們把權(quán)重更新部分用FP32去表達(dá)。而TensorScaling,在縮放的時(shí)候,先把它縮放到一個(gè)合理的值。在縮放因子的選擇上,包括選擇的時(shí)間點(diǎn)上和顆粒度上都會(huì)有不同的方式方法,有很多相關(guān)的研究。
FP8走進(jìn)現(xiàn)實(shí)很重要的一個(gè)點(diǎn)就是,我們使用FP8技術(shù)真的可以訓(xùn)出效果很好的模型。DeepSeek在訓(xùn)練過程當(dāng)中,不同的操作對(duì)精度的要求不一樣。DeepSeek在訓(xùn)練當(dāng)中以矩陣乘操作,DeepSeek前向和反向傳播的3次矩陣乘都使用了FP8去做,還有激活值的緩存和傳輸也使用FP8來做。但是對(duì)于一些精度相對(duì)來說比較敏感的部分,DeepSeek里面還是繼續(xù)用高精度來運(yùn)算。但是從整個(gè)訓(xùn)練過程來講,已經(jīng)帶來很大的收益,因?yàn)檫@里面很大一部分計(jì)算量是矩陣乘帶來的。
摩爾線程對(duì)FP8的訓(xùn)練提供了軟硬件全棧的完整支持。硬件方面,我們的GPU是一個(gè)全功能GPU,算力精度上支持從FP64、FP32到FP8的全精度算力。
從軟件棧上講,我們有三個(gè)開源框架,一個(gè)是Torch-MUSA,這是我們?cè)赥orch棧上構(gòu)建的MUSA底層插件,可以在MUSA上把整個(gè)Torch跑起來。這里面我們已經(jīng)實(shí)現(xiàn)了對(duì)FP8數(shù)據(jù)類型的完整支持。
二是MT-MegatronLM,這里面支持FP8混合并行訓(xùn)練。框架,支持Dense、多模態(tài)、MoE模型的高效訓(xùn)練,支持FP8混合精度訓(xùn)練、高性能muDNN庫和MCCL通信庫。
三是MT-TransformerEngine。主要用于Transformer的高效訓(xùn)練和推理優(yōu)化,支持FP8混合精度訓(xùn)練,通過算子融合、并行加速等技術(shù),提升訓(xùn)練和推理的效率。
經(jīng)過這些軟件棧,成功復(fù)現(xiàn)了DeepSeek-V3整個(gè)訓(xùn)練過程,因?yàn)榇蠹抑繢eepSeek最開始并沒有開源,即便開源只是開一部分。我們是在這個(gè)軟件?;A(chǔ)上,實(shí)現(xiàn)了它一系列的相關(guān)技術(shù),比如說MTFlashMLA和DeepGEMM庫等等。我們是行業(yè)里到率先能復(fù)現(xiàn)DeepSeek滿血版訓(xùn)練的廠商,其他家都在嘗試做推理的復(fù)現(xiàn)。
我們?cè)贔P8訓(xùn)練上也做了很多的探索和實(shí)驗(yàn)。主要做了兩個(gè)探索性的工作,第一個(gè)是在scalingfactor的選擇上面,像我們有不同顆粒度的Per-Tensor或者是Per-Block。根據(jù)我們的觀察,像AMX這個(gè)值,如果說在Per-Tensor這個(gè)維度上,它的最小值在200左右,它并不是特別小。我們最大值大概是在2000左右,所以我們做scalingfactor的時(shí)候,用最大值去除的話,不會(huì)把這個(gè)值除的非常小,所以我們?cè)赥ensor這個(gè)維度上,可以Per-Tensor的一個(gè)scalingfactor。但是對(duì)Per-Block,它的最小值非常小是0,除的話容易把結(jié)果除得很大,所以在這個(gè)維度上,我們就會(huì)用JIT動(dòng)態(tài)的scalingfactor的選擇。
另外一個(gè)是outlier的影響,因?yàn)镕P8取值范圍比較小,所以出現(xiàn)一些異常值的時(shí)候,一旦數(shù)值增大,容易把FP8取值范圍上限給超了,從而導(dǎo)致訓(xùn)練不穩(wěn)定。一個(gè)比較有效的技術(shù)就是SmoothSwiGLU,也是在我們的框架里面復(fù)現(xiàn)了本身帶來的問題,用SmoothSwiGLU怎么去降低這個(gè)問題,核心點(diǎn)我們?cè)诹炕?,先去乘一個(gè)縮放因子,第二次量化之后再把這個(gè)縮放因子再給恢復(fù)回來,去降低FP8階段的時(shí)候,出現(xiàn)上溢的這種風(fēng)險(xiǎn)。
在集群訓(xùn)練方面的技術(shù)考慮點(diǎn)。首先在大規(guī)模訓(xùn)練上,一些數(shù)值估算的東西,我們不可能所有東西都靠實(shí)驗(yàn)性來做,因?yàn)橘Y源消耗太大,很多工作都是通過模擬器方式來做的。我們有Simumax這樣一個(gè)軟件,這個(gè)已經(jīng)開源了,大家可以在GitHub上下載到。
它解決的問題一個(gè)是理論與仿真結(jié)合去估算我們一系列感興趣的開銷,我們可以支持各種不同的并行策略,優(yōu)化策略等等。在一些主流模型上都可以用理論分析以及各種策略的設(shè)置去得出它大概的資源消耗。一方面可以估算我們需要的資源,如果說我們出現(xiàn)一些性能偏差,我們比較容易找到這其中出現(xiàn)的性能問題。
做法是我們會(huì)在計(jì)算圖上去根據(jù)SPEC整個(gè)計(jì)算過程,根據(jù)經(jīng)驗(yàn)數(shù)據(jù)或者是理論分析的數(shù)據(jù)去跑一下計(jì)算圖,去收集各種各樣的開銷,匯總起來得到最后的結(jié)果,這需要我們對(duì)整個(gè)計(jì)算圖的各種模擬做到比較全的覆蓋。
3、集群可靠性對(duì)大規(guī)模訓(xùn)練至關(guān)重要
大規(guī)模集群訓(xùn)練的可靠性非常重要,因?yàn)榧阂?guī)模大了之后,單機(jī)故障率不會(huì)那么高。但是我們一個(gè)節(jié)點(diǎn)出問題,這個(gè)訓(xùn)練就掛掉了,數(shù)量大了之后,這將是很恐怖的故障率。我們做了很多可靠性相關(guān)的工作。
首先,我們的訓(xùn)練生命周期的管理,包括它的監(jiān)控、故障檢測(cè),我們引入了大規(guī)模訓(xùn)練的起飛檢查、飛行檢查和落地檢查。起飛檢查就是訓(xùn)練開始之前我們它用到的硬件做全面檢查,不是一個(gè)單點(diǎn)的檢查,我們會(huì)做包括網(wǎng)絡(luò)的,甚至?xí)芤恍┬∝?fù)載看整個(gè)棧是不是有問題。另外在檢查過程當(dāng)中,一旦發(fā)現(xiàn)有異常節(jié)點(diǎn)我們會(huì)自動(dòng)給踢掉,這樣會(huì)降低人工排查帶來的時(shí)間成本和人力成本。
在飛行檢查過程與訓(xùn)練過程當(dāng)中,可能會(huì)出現(xiàn)hang、異常退出、訓(xùn)練亞健康等問題,我們要檢測(cè)到這些問題,然后做相應(yīng)的處理。最后是落地檢查,在過程中出現(xiàn)亞健康或者是故障的情況,我們?cè)谟?xùn)練停掉的時(shí)候,能夠找到故障點(diǎn),以及自動(dòng)抓取故障的上下文,然后做分析。
在同步訓(xùn)練模式下,一個(gè)節(jié)點(diǎn)變慢之后,整個(gè)訓(xùn)練會(huì)拖慢,那我們?cè)趺醋サ竭@些慢節(jié)點(diǎn),避免我們整個(gè)訓(xùn)練的過程會(huì)變慢?其實(shí)慢節(jié)點(diǎn)是我們遇到一個(gè)比較常見的問題,通過解決慢節(jié)點(diǎn),我們經(jīng)常會(huì)有10%、20%的性能提升。這一塊的解決包括兩方面檢查,第一是在起飛檢察階段,我們會(huì)做一些小工作負(fù)載的測(cè)試,我們找到它明顯比其他節(jié)點(diǎn)慢的節(jié)點(diǎn);二是在訓(xùn)練過程當(dāng)中,如果說它的通信執(zhí)行時(shí)間和其他節(jié)點(diǎn)不一樣,我們就把這樣的節(jié)點(diǎn)挑出來。
容錯(cuò)訓(xùn)練方面,在大規(guī)模集訓(xùn)上,尤其到萬卡、十萬卡這樣的規(guī)模上,完全靠現(xiàn)有的方式是不可行的,到這種級(jí)別,我們的模式就是發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)之后,這個(gè)節(jié)點(diǎn)可能是一個(gè)DP,如果說出了故障之后,我們就把這個(gè)DP從通信組上摘出去,這個(gè)通信組可以繼續(xù)工作。對(duì)于大DP,我去摘一個(gè)DP成本很高,還可以在一個(gè)DP里去摘一個(gè)節(jié)點(diǎn),這種情況下對(duì)這一部分參數(shù)的計(jì)算或者更新,我們會(huì)把它Skip,但對(duì)這種大規(guī)模的海量數(shù)據(jù)來說,這么一點(diǎn)點(diǎn)的數(shù)據(jù)對(duì)它整體性能影響并不大,但是我們省掉了停掉整個(gè)集群重新拉起的開銷。
最后做一個(gè)總結(jié),我的分享主要是三點(diǎn):
第一,算力需求的發(fā)展趨勢(shì),使得大智算集群成為訓(xùn)練的剛需。
第二,低精度的訓(xùn)練,會(huì)帶來大規(guī)模訓(xùn)練效率的提升。
第三,集群的可靠性對(duì)大規(guī)模訓(xùn)練至關(guān)重要。
大家可以關(guān)注一下今年10月摩爾線程MUSA開發(fā)者大會(huì),我們也會(huì)在MUSA開發(fā)者大會(huì)上為大家?guī)砀嗉夹g(shù)上的探索。
《玄幻:我家老祖超無敵》:這是一個(gè)源靈的世界,也是人族凋零的世界...
《玄幻:我家老祖超無敵》:這是一個(gè)源靈的世界,也是人族凋零的世界,萬族鎮(zhèn)壓,人族前路何在?王戰(zhàn)穿越源靈大陸《玄幻:我家老祖超無敵》作者:戎筆江山 金剛不在猶豫,退出隊(duì)伍,突圍而出。作為跟隨青鸞數(shù)年的將領(lǐng),已經(jīng)培養(yǎng)出一種默契,遇到這種事,哪怕死也要將消息傳回去。在金剛退出后,青鸞伸出秀手,比了個(gè)手勢(shì),一群戰(zhàn)士頓時(shí)改變隊(duì)形,成扇形,將追擊金剛的妖魔全部擋住__。“出手吧,別讓那螻蟻逃了!”山巔之上的二十位妖魔首領(lǐng)看到這一幕,嗤笑道。話音落下,..小說:玄幻之我家老祖超無敵,他是人族最后的希望!