強(qiáng)大的芯片有效算力是作為“AI工廠(chǎng)”的核心競(jìng)爭(zhēng)力。而作為GPU的“靈魂”,其軟件能力深刻決定了硬件潛力的釋放程度,特別是驅(qū)動(dòng)與全棧系統(tǒng)軟件,是解鎖大規(guī)模集群極致性能效率的關(guān)鍵。
7月25日,在WAIC2025期間舉辦的摩爾線(xiàn)程技術(shù)分享日上,摩爾線(xiàn)程GPU計(jì)算軟件開(kāi)發(fā)總監(jiān)吳慶以《MUSA軟件棧助力KUAE集群釋放無(wú)限潛能》為主題,分享了摩爾線(xiàn)程MUSA軟件棧方面的創(chuàng)新實(shí)踐。
以下為吳慶的演講實(shí)錄精華:
MUSA驅(qū)動(dòng)和運(yùn)行時(shí)庫(kù),KUAE集群堅(jiān)實(shí)底座
推理場(chǎng)景對(duì)Kernel延時(shí)非常敏感。極致高效的MUSA驅(qū)動(dòng)和運(yùn)行時(shí)庫(kù),具有高效率的任務(wù)調(diào)度能力,使用戶(hù)的Kernellaunch開(kāi)銷(xiāo)極致縮減。
(1)即時(shí)任務(wù)下發(fā):通過(guò)軟硬協(xié)同,將核函數(shù)啟動(dòng)延遲降低到業(yè)界平均水平的1/2。舉個(gè)例子方便大家理解,比如現(xiàn)在剛好是仲夏,外面氣溫非常高,我們的車(chē)子停在外面暴曬,那如何讓大家一上車(chē)即時(shí)就享受到舒適的溫度?現(xiàn)在普遍的解決方案是軟硬協(xié)同,車(chē)要支持遠(yuǎn)程控制,還沒(méi)有到車(chē)上的時(shí)候就通過(guò)手機(jī)提前把車(chē)上的空調(diào)打開(kāi),這樣一上車(chē)以后馬上就有清涼舒適的溫度。這個(gè)原理類(lèi)似,我們把很多調(diào)度開(kāi)銷(xiāo)前置,上一個(gè)Kernel執(zhí)行結(jié)束之前,就可以把下一個(gè)Kernel要做的配置提前做好,這樣就最大限度地降低Kernel跟Kernel之間的調(diào)度延時(shí)開(kāi)銷(xiāo)。
(2)批量任務(wù)下發(fā):批量下發(fā)計(jì)算和通信任務(wù),將近千次下發(fā)開(kāi)銷(xiāo)優(yōu)化為單次,減少GPU等待時(shí)間。為方便大家理解,我再類(lèi)比一下,車(chē)上座椅調(diào)節(jié),調(diào)舒適位子有上下前后,包括靠背俯仰角度,有很多調(diào)節(jié)步驟對(duì)應(yīng)很多Kernel,但我們可以調(diào)節(jié)一次、打包,變成一鍵記憶功能,下次再上車(chē),不需要再重復(fù)那個(gè)步驟了。這就類(lèi)似于批量任務(wù)下發(fā),一系列操作打包、我們一次kick下去。Graphcapture階段對(duì)應(yīng)第一次調(diào)節(jié),后面再launch一個(gè)Graph的時(shí)候就類(lèi)似于我們喚醒座椅某個(gè)記憶配置。Graph這種批量任務(wù)下發(fā)的收益取決于Graph里面Kernel本身執(zhí)行時(shí)間、調(diào)度空泡的占比,Kernel執(zhí)行得越快,調(diào)度空泡在端到端總開(kāi)銷(xiāo)里占比越高,批量任務(wù)下發(fā)的端到端收益就越高,根據(jù)不同的應(yīng)用場(chǎng)景可達(dá)到百分之幾十甚至好幾倍的性能收益。
(3)引擎間依賴(lài)解析:GPU是多引擎可配置的,不同引擎之間要做依賴(lài)解析、交互同步,平湖支持硬件解析引擎間的依賴(lài)做同步,不再回到host,任務(wù)流之間的依賴(lài)解析延時(shí)可以大幅降低至1.5μs,優(yōu)于業(yè)界頭部算力卡。
(4)調(diào)優(yōu)工具接口MUPTI:專(zhuān)門(mén)用于性能分析和事件追蹤,幫助開(kāi)發(fā)者優(yōu)化MUSA應(yīng)用程序,可基于MUPTI開(kāi)發(fā)第三方的各種豐富工具。
(5)GPU錯(cuò)誤轉(zhuǎn)存功能(GPUCoreDump,GCD):高效定位疑難Bug,不需要去調(diào)度大量的集群和人力反復(fù)去復(fù)現(xiàn)“曇花一現(xiàn)”的錯(cuò)誤,用于在GPU程序崩潰或發(fā)生錯(cuò)誤時(shí)生成詳細(xì)的信息(類(lèi)似CPU程序CoreDump),精確保存錯(cuò)誤,提供一個(gè)log,極大提升MUSA核函數(shù)崩潰、非法顯存地址訪(fǎng)問(wèn)、硬件錯(cuò)誤等問(wèn)題定位的效率。
MUSA算子庫(kù)生態(tài)日趨完善,性能與廣度兼?zhèn)?/p>
算子庫(kù)的效率直接關(guān)乎分布式集群的訓(xùn)練效率。MUSA算子庫(kù)不僅追求極致性能,還兼容覆蓋廣度和兼容性。
MUSA算子庫(kù)生態(tài)會(huì)提供三大算子庫(kù):極致性能muDNN、易用MUTLASS、MUSAAITensorEngine開(kāi)源推理算子庫(kù)。
muDNN,是一款極致性能的開(kāi)箱即用標(biāo)準(zhǔn)算子庫(kù),完整覆蓋常見(jiàn)的前向和反向算子。其中最主要的特性是支持完整的XMMA,支持TensorCore全精度及所有量化模式,以及常用的神經(jīng)網(wǎng)絡(luò)算子操作。
一般來(lái)說(shuō),矩陣乘的效率大部分可以做到90%以上,摩爾線(xiàn)程muDNN矩陣乘算子效率可以做到98%。FlashAttention算子因?yàn)槎嗔藄oftmax等操作,基于國(guó)際一流水平廠(chǎng)商的FlashAttention3論文里提到的效率大約是75%,muDNN的FlashAttention可以做到95%。
影響FP8GEMM算子效率的重要因素是scale模式,scale是為了避免精度損失做的一個(gè)精細(xì)化的縮放因子,常見(jiàn)的有Per-Tensor、Per-Block,DeepSeekV3用的是Per-Block。
吳慶打了個(gè)比方,Per-Tensorscale是整個(gè)張量共用一個(gè)縮放因子,相當(dāng)于一面墻刷一個(gè)顏色,很好刷;Per-Blockscale則是每個(gè)小的矩陣塊共用一個(gè)縮放因子,相當(dāng)于一面墻有很多小方塊,每個(gè)方塊單獨(dú)一個(gè)顏色,刷墻的復(fù)雜度要高很多,會(huì)比一個(gè)顏色刷一面墻效率低10%-20%。
摩爾線(xiàn)程通過(guò)軟硬協(xié)同的深度算法優(yōu)化、指令編排,做到了Per-Block跟Per-TensorFP8GEMM計(jì)算效率幾乎相當(dāng),差距不到2%。
MUTLASS,是一個(gè)高性能的線(xiàn)性代數(shù)模板庫(kù),可極大降低在MUSA環(huán)境中自定義算子的開(kāi)發(fā)工作量,相當(dāng)于提供了一個(gè)可供二次開(kāi)發(fā)的模板。
MUTLASS已在Github上開(kāi)源,支持平湖架構(gòu)所有特性,包括Warp-levelMMA、WarpSquad-levelMMA、TensorMemoryEngine、AsyncBarrier等原語(yǔ)全面支持,同時(shí)提供高性能矩陣乘、卷積算子實(shí)現(xiàn),可在Kernel里調(diào)用模板庫(kù)就可以進(jìn)行二次開(kāi)發(fā),摩爾線(xiàn)程也提供Attention最優(yōu)化的示例,給用戶(hù)打樣,可以參考提供的最佳實(shí)踐,去開(kāi)發(fā)自定義的各種Attention的變種。
MUSAAITensorEngine,是摩爾線(xiàn)程即將發(fā)布的面向大語(yǔ)言模型的開(kāi)源推理算子庫(kù),可幫助開(kāi)發(fā)者快速搭建自定義推理引擎。該算子庫(kù)提供用戶(hù)友好的PythonAPI,進(jìn)一步降低開(kāi)發(fā)者使用門(mén)檻,無(wú)需花太多時(shí)間學(xué)習(xí)MUSAC,只要會(huì)Python就可以把MTX這個(gè)庫(kù)用起來(lái);未來(lái)會(huì)支持豐富的后端,包括模板庫(kù),對(duì)標(biāo)PTX虛擬指令集去開(kāi)發(fā)的極致算子庫(kù),也支持類(lèi)Triton的DSL。
高性能集合通信庫(kù)及通算并行,避免通信搶占計(jì)算核心資源
大模型分布式訓(xùn)練的主要瓶頸是通信。摩爾線(xiàn)程在MTTS5000上支持MTLINK2.0,配備GPU異步通信引擎,實(shí)現(xiàn)了高性能通信技術(shù)與計(jì)算高度并行。
最近十幾年,隨著模型規(guī)模增加,分布式集群規(guī)模也在增加,通信瓶頸會(huì)越來(lái)越明顯。DeepSeekV3報(bào)告中呼吁硬件廠(chǎng)商提供的芯片能不能做一個(gè)單獨(dú)的通信硬件來(lái)卸載通信,避免通信跟計(jì)算去搶SM計(jì)算單元。
平湖設(shè)計(jì)階段遠(yuǎn)早于DeepSeekV3發(fā)布的時(shí)間,彼時(shí)摩爾線(xiàn)程已洞察到行業(yè)痛點(diǎn),并提供了解決方案——在GPU上增加了一個(gè)異步通信引擎。
MTTS5000服務(wù)器拓?fù)涿抗?jié)點(diǎn)有8張GPU,通過(guò)MTLINK2.0全互連,每張GPU與其他7張GPU都有直連總線(xiàn)。
每個(gè)GPU上配置的異步通信引擎是原生支持豐富的reduce操作,支持常用的reduce操作有ADD、MIN、MAX(累加、最小值、最大值)等操作,支持Float、FP16、BF16等數(shù)據(jù)類(lèi)型,可直接通過(guò)MTLink進(jìn)行C2C跨系統(tǒng)的數(shù)據(jù)通信。
其ACE通過(guò)ZeroCopy技術(shù)進(jìn)一步提升性能。一般的集合通信會(huì)把數(shù)據(jù)buffer拷貝到通信buffer里,再去進(jìn)行C2C通信。ZeroCopy則避免了在本地上的D2D的拷貝,直接把數(shù)據(jù)buffer做跨卡通信。
摩爾線(xiàn)程在衡量集合通信庫(kù)性能的時(shí)候主要是兩大核心指標(biāo):通信延遲、通信帶寬。
基于全互聯(lián)(FC8)拓?fù)涞母咝ㄐ潘惴?,可大幅降低通信延遲。全互聯(lián)拓?fù)渲蠫PU兩兩互連,在A(yíng)llReduce場(chǎng)景中可以把其他GPU的數(shù)據(jù)一次性拿過(guò)來(lái),理論上FC8算法相比Ring算法,7步通信可變成1步完成。在單機(jī)8卡AllReduce延遲場(chǎng)景的實(shí)測(cè)也差不多,Ring算法大概是53us,用FC8算法可降低至7.8us,將近縮減至1/7,顯著提升了模型推理性能。
帶寬方面,Ring算法與FC8算法效率相當(dāng),以Ring算法為例,摩爾線(xiàn)程把FC8拆成了7個(gè)通信環(huán),每個(gè)通信環(huán)結(jié)合通信Kernel的優(yōu)化,基于MTLink2.0+FC8拓?fù)洌?jié)點(diǎn)內(nèi)充分利用全互聯(lián)的拓?fù)鋬?yōu)勢(shì),可做到單機(jī)8卡AllReduce帶寬利用率接近85%,與國(guó)際第一的廠(chǎng)商在軟件效率上對(duì)齊,實(shí)現(xiàn)高效的Scale-up通信。
高效Scale-out跨節(jié)點(diǎn)通信方面,摩爾線(xiàn)程結(jié)合通信庫(kù)做了網(wǎng)卡拓?fù)涓兄c自適應(yīng)優(yōu)化,每個(gè)GPU都能在PCIe拓?fù)渖险业窖舆t和帶寬效率最高的網(wǎng)卡端口進(jìn)行RDMA通信,還額外開(kāi)發(fā)了一個(gè)插件SmartNICAdaptor,在配置4張雙口網(wǎng)卡時(shí),可實(shí)現(xiàn)和8張單口網(wǎng)卡一樣的RDMA通信效率。
經(jīng)測(cè)試,其AllReduce帶寬可以做到194GB/s,RDMA通信帶寬利用率達(dá)到97%,而一般RDMA通信帶寬利用率約在80%-85%。
除了延遲和帶寬之外,摩爾線(xiàn)程還做了異步通信引擎的通信優(yōu)化。
MPC是計(jì)算核心。傳統(tǒng)做法是通信也走M(jìn)PC,就要分走一部分的計(jì)算單元。ACE則可以把通信部分卸載到單獨(dú)的通信引擎上,不跟MPC搶計(jì)算資源,同時(shí)在無(wú)數(shù)據(jù)依賴(lài)時(shí)完全做到overlap,通過(guò)優(yōu)化,結(jié)合MTTransformerEngine,在Llama模型上端到端計(jì)算通信性能可提升10%左右。
言情小說(shuō)《世家福妻》為什么一枝獨(dú)秀到如今?
三本穿越重生爽文,強(qiáng)推《世家福妻》,你是我捧在手心里的姑娘!
小說(shuō):重生少女逆襲世家福妻,華麗轉(zhuǎn)身成為絕世佳人!