飛槳新一代框架3.0正式發(fā)布:加速大模型時(shí)代的技術(shù)創(chuàng)新與產(chǎn)業(yè)應(yīng)用
飛槳框架3.0已全面開(kāi)放,兼容2.0版本的開(kāi)發(fā)接口,歡迎廣大開(kāi)發(fā)者使用和反饋。
人工智能技術(shù)日新月異,深度學(xué)習(xí)框架作為技術(shù)底座深刻影響著算法創(chuàng)新的速度與產(chǎn)業(yè)落地的深度。飛槳框架以五大核心突破回應(yīng)時(shí)代命題,正式發(fā)布3.0版本。飛槳框架3.0實(shí)現(xiàn)了從底層硬件適配到頂層開(kāi)發(fā)體驗(yàn)的全面進(jìn)化,在訓(xùn)練效率、性能、兼容性等關(guān)鍵指標(biāo)上建立新標(biāo)桿,作為支撐千行百業(yè)智能化轉(zhuǎn)型的”AI操作系統(tǒng)”,此次升級(jí)不僅是技術(shù)參數(shù)的迭代,更是面向大模型工業(yè)化生產(chǎn)范式的革命性突破。無(wú)論是前沿算法研究還是產(chǎn)業(yè)級(jí)大模型落地,飛槳框架3.0都將成為開(kāi)發(fā)者的首選利器。
作為中國(guó)首個(gè)自主研發(fā)的產(chǎn)業(yè)級(jí)深度學(xué)習(xí)平臺(tái),飛槳一直堅(jiān)持開(kāi)源路線(xiàn),支撐產(chǎn)業(yè)智能化升級(jí)。2025年4月1日,飛槳框架迎來(lái)重大更新,發(fā)布飛槳框架3.0正式版。飛槳框架3.0版本不僅延續(xù)了飛槳框架2.0系列動(dòng)靜統(tǒng)一、訓(xùn)推一體的特性,更在自動(dòng)并行、神經(jīng)網(wǎng)絡(luò)編譯器、高階自動(dòng)微分等方面取得突破,為大模型時(shí)代的技術(shù)創(chuàng)新與產(chǎn)業(yè)應(yīng)用提供了強(qiáng)大支撐,為開(kāi)發(fā)者打造了一站式、高性能的深度學(xué)習(xí)開(kāi)發(fā)體驗(yàn)。
飛槳框架3.0具備以下五大新特性:
1)動(dòng)靜統(tǒng)一自動(dòng)并行:通過(guò)少量的張量切分標(biāo)記,即可自動(dòng)完成分布式切分信息的推導(dǎo),Llama預(yù)訓(xùn)練場(chǎng)景減少80%的分布式相關(guān)代碼開(kāi)發(fā)。
2)大模型訓(xùn)推一體:依托高擴(kuò)展性的中間表示(PIR)從模型壓縮、推理計(jì)算、服務(wù)部署、多硬件推理全方位深度優(yōu)化,支持文心4.5、文心X1等多款主流大模型,DeepSeek-R1滿(mǎn)血版單機(jī)部署吞吐提升一倍。
3)科學(xué)計(jì)算高階微分:通過(guò)高階自動(dòng)微分和神經(jīng)網(wǎng)絡(luò)編譯器技術(shù),微分方程求解速度比PyTorch快115%。
4)神經(jīng)網(wǎng)絡(luò)編譯器:通過(guò)自動(dòng)算子自動(dòng)融合技術(shù),無(wú)需手寫(xiě)CUDA等底層代碼,部分算子執(zhí)行速度提升4倍,模型端到端訓(xùn)練速度提升27.4%。
5)異構(gòu)多芯適配:通過(guò)對(duì)硬件接入模塊進(jìn)行抽象,降低異構(gòu)芯片與框架適配的復(fù)雜度,兼容硬件差異,初次跑通所需適配接口數(shù)比PyTorch減少56%,代碼量減少80%。
背景概述
在大模型時(shí)代,深度學(xué)習(xí)框架的重要性愈發(fā)凸顯,成為推動(dòng)人工智能技術(shù)發(fā)展的核心引擎。算法、算力、數(shù)據(jù)作為人工智能技術(shù)的三大要素,其相互作用與協(xié)同發(fā)展不斷催生著新的突破。越來(lái)越多的實(shí)例證明,算法創(chuàng)新能夠發(fā)揮出更為顯著的威力。DeepMind的AlphaFold3通過(guò)動(dòng)態(tài)擴(kuò)散算法突破蛋白質(zhì)結(jié)構(gòu)預(yù)測(cè)精度,已成功應(yīng)用于抗瘧疾等藥物分子設(shè)計(jì);DeepSeek通過(guò)算法創(chuàng)新,成功提升了DeepSeek V3模型的性?xún)r(jià)比,大幅降低了訓(xùn)練成本。這些突破性進(jìn)展表明,算法創(chuàng)新正在重構(gòu)技術(shù)發(fā)展的成本曲線(xiàn)。
然而,算法創(chuàng)新并非易事,當(dāng)前算法工程師和科研人員在使用現(xiàn)有深度學(xué)習(xí)框架進(jìn)行算法創(chuàng)新時(shí),仍面臨諸多挑戰(zhàn)。
1)大模型分布式開(kāi)發(fā)門(mén)檻高:大模型參數(shù)規(guī)模龐大,其分布式訓(xùn)練需使用復(fù)雜的并行策略,包括數(shù)據(jù)并行、張量并行、參數(shù)分片并行、流水線(xiàn)并行、序列并行、專(zhuān)家并行等。大模型開(kāi)發(fā)中,如何實(shí)現(xiàn)多種并行策略的高效協(xié)同已成為關(guān)鍵瓶頸。
2)模型推理部署困難重重:由于算法訓(xùn)練和推理任務(wù)的計(jì)算、通信存在較大差別,算法工程師在完成模型算法創(chuàng)新后,往往難以直接應(yīng)用于推理部署,需要大量的工程開(kāi)發(fā)工作。
3)前沿模型架構(gòu)靈活多變:科學(xué)智能(AI for Science)等新興領(lǐng)域的快速發(fā)展,對(duì)深度學(xué)習(xí)框架提出了新的要求,包括求解復(fù)雜微分方程所需的高階自動(dòng)微分、傅里葉變換等科學(xué)計(jì)算操作、復(fù)數(shù)的高效運(yùn)算等。
4)模型極致性能優(yōu)化難度大:以大模型為代表的很多場(chǎng)景對(duì)訓(xùn)練推理速度有嚴(yán)苛要求,為突破計(jì)算瓶頸,工程實(shí)踐中常需通過(guò)手寫(xiě)CUDA內(nèi)核代碼進(jìn)行性能優(yōu)化,這對(duì)算法工程師的底層編程能力提出了極高要求。
5)異構(gòu)芯片適配成本高:AI應(yīng)用場(chǎng)景豐富多樣、算力需求巨大,單一芯片難以滿(mǎn)足業(yè)務(wù)需求。而不同芯片之間的硬件架構(gòu)、軟件棧成熟度、開(kāi)發(fā)接口差異大,業(yè)務(wù)適配成本高、軟硬協(xié)同優(yōu)化難。
為此,飛槳新一代框架3.0應(yīng)運(yùn)而生:該版本提供了豐富的深度學(xué)習(xí)相關(guān)的各種開(kāi)發(fā)接口;表示層專(zhuān)注于計(jì)算圖的表達(dá)與轉(zhuǎn)換,通過(guò)高可擴(kuò)展中間表示PIR,實(shí)現(xiàn)動(dòng)轉(zhuǎn)靜、自動(dòng)微分、自動(dòng)并行、算子組合以及計(jì)算圖優(yōu)化等核心功能;調(diào)度層負(fù)責(zé)對(duì)代碼或計(jì)算圖進(jìn)行智能編排與高效調(diào)度,支持動(dòng)態(tài)圖和靜態(tài)圖兩種不同的執(zhí)行模式;算子層由神經(jīng)網(wǎng)絡(luò)編譯器CINN和算子庫(kù)PHI共同構(gòu)成,涵蓋了張量定義、算子定義、算子自動(dòng)融合和算子內(nèi)核實(shí)現(xiàn)等關(guān)鍵功能;適配層則用于實(shí)現(xiàn)與底層芯片適配,包括設(shè)備管理、算子適配、通信適配以及編譯接入等功能。

飛槳框架3.0架構(gòu)圖
飛槳框架3.0憑借強(qiáng)大的功能和優(yōu)化的設(shè)計(jì),幫助算法工程師和科研人員以更低的成本進(jìn)行算法創(chuàng)新,并實(shí)現(xiàn)產(chǎn)業(yè)應(yīng)用。以百度文心大模型為例,飛槳框架3.0在訓(xùn)練、推理等方面為文心大模型提供端到端優(yōu)化,訓(xùn)練方面重點(diǎn)提升訓(xùn)練吞吐、訓(xùn)練有效率和收斂效率,集群訓(xùn)練有效率超過(guò)98%;推理部署方面通過(guò)注意力機(jī)制量化推理、通用投機(jī)解碼等技術(shù)提升推理吞吐和效率;全面支持文心4.5、文心X1等大模型的技術(shù)創(chuàng)新和產(chǎn)業(yè)應(yīng)用。
一、全面支持自動(dòng)并行訓(xùn)練,降低大模型開(kāi)發(fā)訓(xùn)練門(mén)檻
在大模型時(shí)代,隨著模型規(guī)模和訓(xùn)練數(shù)據(jù)量的不斷增長(zhǎng),傳統(tǒng)的單機(jī)單卡訓(xùn)練已無(wú)法滿(mǎn)足需求,分布式并行訓(xùn)練成為加速大模型迭代的關(guān)鍵。然而,無(wú)論是動(dòng)態(tài)圖還是靜態(tài)圖,當(dāng)前市場(chǎng)上的并行訓(xùn)練框架普遍存在使用成本高的問(wèn)題。開(kāi)發(fā)者既要熟知模型結(jié)構(gòu),還要深入了解并行策略和框架調(diào)度邏輯,使得大模型的開(kāi)發(fā)和性能優(yōu)化門(mén)檻非常高,制約了大模型的開(kāi)發(fā)和訓(xùn)練效率。
針對(duì)這一痛點(diǎn),飛槳提出了動(dòng)靜統(tǒng)一自動(dòng)并行方案。該技術(shù)通過(guò)原生動(dòng)態(tài)圖的編程界面與自動(dòng)并行能力,同時(shí)保障了靈活性和易用性,大幅降低了大模型并行訓(xùn)練的開(kāi)發(fā)成本;同時(shí),利用框架動(dòng)靜統(tǒng)一的優(yōu)勢(shì),一鍵轉(zhuǎn)靜使用靜態(tài)優(yōu)化能力,提供極致的大模型并行訓(xùn)練性能。開(kāi)發(fā)者僅需少量的張量切分標(biāo)記,框架便能自動(dòng)推導(dǎo)出所有張量和算子的分布式切分狀態(tài),并添加合適的通信算子,保證結(jié)果正確性。具體工作流程如下圖所示:

動(dòng)靜統(tǒng)一自動(dòng)并行流程圖
飛槳框架3.0動(dòng)靜統(tǒng)一自動(dòng)并行技術(shù)的具體特點(diǎn)如下:
1)簡(jiǎn)單易用,大幅降低大模型并行訓(xùn)練開(kāi)發(fā)成本。飛槳自動(dòng)并行功能允許用戶(hù)在不考慮復(fù)雜分布式通信的情況下完成算法實(shí)現(xiàn)。僅需借助少量API調(diào)用,即可將算法轉(zhuǎn)換為并行訓(xùn)練程序,顯著簡(jiǎn)化開(kāi)發(fā)過(guò)程。以L(fǎng)lama2的預(yù)訓(xùn)練為例,傳統(tǒng)實(shí)現(xiàn)方式需要開(kāi)發(fā)者精細(xì)調(diào)整通信策略,以確保正確高效執(zhí)行,而自動(dòng)并行實(shí)現(xiàn)方式相比傳統(tǒng)方式減少80%的分布式核心代碼,極大降低了開(kāi)發(fā)復(fù)雜度。
2)全面可用,適用于眾多大模型訓(xùn)練場(chǎng)景。基于飛槳大模型開(kāi)發(fā)套件(PaddleNLP、PaddleMIX),飛槳框架已全面驗(yàn)證Llama、QwenVL等從大語(yǔ)言模型到多模態(tài)模型的預(yù)訓(xùn)練、精調(diào)階段的自動(dòng)并行訓(xùn)練。
3)輕松加速,一鍵動(dòng)轉(zhuǎn)靜提供極致性能優(yōu)化。得益于飛槳框架獨(dú)特的動(dòng)靜統(tǒng)一設(shè)計(jì),用戶(hù)僅需簡(jiǎn)單添加一行代碼,即可輕松實(shí)現(xiàn)從動(dòng)態(tài)到靜態(tài)的轉(zhuǎn)換。這一轉(zhuǎn)換使得我們能夠充分利用多種靜態(tài)優(yōu)化技術(shù),匹敵甚至超越經(jīng)過(guò)極致優(yōu)化的動(dòng)態(tài)圖訓(xùn)練效率。
4)協(xié)同文心,開(kāi)源多項(xiàng)大模型獨(dú)創(chuàng)優(yōu)化策略。飛槳協(xié)同文心創(chuàng)新實(shí)現(xiàn)精細(xì)化重計(jì)算、稀疏注意力計(jì)算優(yōu)化、靈活批次的流水線(xiàn)均衡優(yōu)化等,這些優(yōu)化技術(shù)在飛槳框架3.0中開(kāi)源,助力開(kāi)發(fā)者進(jìn)行極致的大模型訓(xùn)練性能優(yōu)化。
未來(lái),我們將進(jìn)一步探索無(wú)需使用張量切分標(biāo)記的全自動(dòng)并行,讓開(kāi)發(fā)者可以像寫(xiě)單機(jī)代碼一樣寫(xiě)分布式代碼,進(jìn)一步提升大模型的開(kāi)發(fā)體驗(yàn)。

動(dòng)靜統(tǒng)一自動(dòng)并行訓(xùn)練速度對(duì)比
二、大模型訓(xùn)推一體,提升推理部署效率
在完成模型的開(kāi)發(fā)和訓(xùn)練后,我們需要面對(duì)推理部署場(chǎng)景的挑戰(zhàn):如何低門(mén)檻、低開(kāi)發(fā)成本、快速地將模型部署到業(yè)務(wù)場(chǎng)景,并提供低時(shí)延、高吞吐、低算力成本的推理服務(wù)。自2.0版本起,飛槳便采用了“動(dòng)靜統(tǒng)一、訓(xùn)推一體”的設(shè)計(jì)理念,3.0版本也繼續(xù)秉持這一理念,并在大模型場(chǎng)景下持續(xù)優(yōu)化,發(fā)揮更大作用。
在推理部署方面,相較于動(dòng)態(tài)圖,靜態(tài)圖不僅可部署范圍更為廣泛,它能夠通過(guò)整圖導(dǎo)出的方式,擺脫對(duì)Python源代碼和執(zhí)行環(huán)境的依賴(lài);而且更適合進(jìn)行全局調(diào)優(yōu),可通過(guò)手寫(xiě)或者借助編譯器自動(dòng)實(shí)現(xiàn)算子融合等方式來(lái)加速推理過(guò)程。
得益于動(dòng)靜統(tǒng)一的架構(gòu)和接口設(shè)計(jì),飛槳能夠完整支持動(dòng)態(tài)圖和靜態(tài)圖這兩種不同的運(yùn)行模式,并且具備出色的整圖導(dǎo)出能力。飛槳的動(dòng)轉(zhuǎn)靜整圖導(dǎo)出成功率高達(dá)95%,高于PyTorch 62%。“訓(xùn)推一體”意味著能夠在同一套框架下,盡可能復(fù)用訓(xùn)練和推理的代碼,特別是復(fù)用模型組網(wǎng)代碼。在完成模型的開(kāi)發(fā)訓(xùn)練后,只需進(jìn)行少量的開(kāi)發(fā)工作,即可實(shí)現(xiàn)快速推理部署。與業(yè)界當(dāng)前先使用PyTorch和DeepSpeed進(jìn)行訓(xùn)練,再采用vLLM、SGLang、ONNXRuntime等推理引擎進(jìn)行推理部署的方案相比,飛槳采用訓(xùn)練和推理使用同一套框架的方式,能夠有效避免不同框架之間可能出現(xiàn)的版本兼容性問(wèn)題,以及因模型結(jié)構(gòu)變化、中間表示差異、算子實(shí)現(xiàn)差異等帶來(lái)的困擾。

飛槳訓(xùn)推一體架構(gòu)設(shè)計(jì)
大模型的推理部署需要更好地平衡成本、性能和效果,飛槳框架3.0全面升級(jí)了大模型推理能力,依托高擴(kuò)展性的中間表示(PIR)從模型壓縮、推理計(jì)算、服務(wù)部署、多硬件推理全方位深度優(yōu)化,能夠支持眾多開(kāi)源大模型進(jìn)行高性能推理,并在DeepSeek V3/R1上取得了突出的性能表現(xiàn)。飛槳框架3.0支持了DeepSeek V3/R1滿(mǎn)血版及其系列蒸餾版模型的FP8推理,并且提供INT8量化功能,破除了Hopper架構(gòu)的限制。此外,還引入了4比特量化推理,使得用戶(hù)可以單機(jī)部署,降低成本的同時(shí)顯著提升系統(tǒng)吞吐一倍,提供了更為高效、經(jīng)濟(jì)的部署方案。在性能優(yōu)化方面,我們對(duì)MLA算子進(jìn)行多級(jí)流水線(xiàn)編排、精細(xì)的寄存器及共享內(nèi)存分配優(yōu)化,性能相比FlashMLA最高可提升23%。綜合FP8矩陣計(jì)算調(diào)優(yōu)及動(dòng)態(tài)量化算子優(yōu)化等基于飛槳框架3.0的DeepSeek R1 FP8推理,單機(jī)每秒輸出token數(shù)超1000;若采用4比特單機(jī)部署方案,每秒輸出token數(shù)可達(dá)2000以上,推理性能顯著領(lǐng)先其他開(kāi)源方案。此外,還支持了MTP投機(jī)解碼,突破大批次推理加速,在解碼速度保持不變的情況下,吞吐提升144%;吞吐接近的情況下,解碼速度提升42%。針對(duì)長(zhǎng)序列Prefill階段,通過(guò)注意力計(jì)算動(dòng)態(tài)量化,首token推理速度提升37%。

DeepSeek模型單機(jī)推理速度對(duì)比(H800上256并發(fā)不含MTP測(cè)試)
三、助力科學(xué)前沿探索,提升微分方程求解速度
人工智能正以前所未有的方式重塑科學(xué)研究范式,成為推動(dòng)科學(xué)發(fā)現(xiàn)與技術(shù)創(chuàng)新的“超級(jí)加速器”。例如,布朗大學(xué)團(tuán)隊(duì)首次提出物理信息神經(jīng)網(wǎng)絡(luò)(PINNs),通過(guò)自動(dòng)微分實(shí)現(xiàn)物理約束與數(shù)據(jù)驅(qū)動(dòng)的結(jié)合;NVIDIA實(shí)驗(yàn)室提出全球高分辨率氣象預(yù)報(bào)模型FourCastNet,預(yù)報(bào)時(shí)長(zhǎng)從幾個(gè)小時(shí)縮短到幾秒鐘;2025年1月,Baker團(tuán)隊(duì)在《Nature》發(fā)表研究,利用RFdiffusion算法從頭設(shè)計(jì)出能夠高效中和眼鏡蛇蛇毒中三指毒素的蛋白質(zhì)。科學(xué)智能(AI for Science)為解決科學(xué)問(wèn)題帶來(lái)新方法的同時(shí),也對(duì)深度學(xué)習(xí)框架帶來(lái)諸多新挑戰(zhàn)。對(duì)科學(xué)問(wèn)題機(jī)理化的探索,需要深度學(xué)習(xí)框架能夠具備更加豐富的各類(lèi)計(jì)算表達(dá)能力,如高階自動(dòng)微分、傅里葉變換、復(fù)數(shù)運(yùn)算、高階優(yōu)化器等等;此外,如何實(shí)現(xiàn)深度學(xué)習(xí)框架與傳統(tǒng)科學(xué)計(jì)算工具鏈的協(xié)同,也是需要思考的問(wèn)題。
為了解決這些挑戰(zhàn),飛槳框架3.0提出了基于組合算子的高階自動(dòng)微分技術(shù),如下圖所示,該技術(shù)的核心思想是將復(fù)雜算子(如log_softmax)拆解為多個(gè)基礎(chǔ)算子的組合,然后對(duì)這些基礎(chǔ)算子進(jìn)行一階自動(dòng)微分變換。重要的是,基礎(chǔ)算子經(jīng)過(guò)一階自動(dòng)微分變換后,其所得的計(jì)算圖仍然由基礎(chǔ)算子構(gòu)成。通過(guò)反復(fù)應(yīng)用一階自動(dòng)微分規(guī)則,我們可以輕松地獲得高階自動(dòng)微分的結(jié)果。這一機(jī)制不僅完美兼容動(dòng)態(tài)圖模式和靜態(tài)圖模式,而且在動(dòng)態(tài)圖模式下支持N+1階微分的靈活拆分,同時(shí)在靜態(tài)圖模式下能夠進(jìn)行高效的編譯器融合優(yōu)化。

基于組合算子的高階自動(dòng)微分技術(shù)
基于飛槳框架的高階自動(dòng)微分和編譯優(yōu)化技術(shù),實(shí)現(xiàn)了方程求解類(lèi)模型性能的大幅提升,英偉達(dá)Modulus的41個(gè)不同方程實(shí)驗(yàn)顯示,飛槳的微分方程求解速度比PyTorch開(kāi)啟編譯器優(yōu)化后的2.6版本平均快 115%。此外,飛槳還實(shí)現(xiàn)了傅里葉變換、復(fù)數(shù)運(yùn)算、高階優(yōu)化器等功能,這些方法在航空航天、汽車(chē)船舶、氣象海洋、生命科學(xué)等多個(gè)領(lǐng)域都具有廣泛的應(yīng)用潛力,為科學(xué)研究和工程實(shí)踐提供了有力的支持。在模型層面,我們成功研發(fā)了賽槳(PaddleScience)、螺旋槳(PaddleHelix)等系列開(kāi)發(fā)套件,為科學(xué)計(jì)算提供了更為便捷、高效的解決方案。飛槳對(duì)DeepXDE、Modulus等主流開(kāi)源科學(xué)計(jì)算工具進(jìn)行了廣泛適配,并成為DeepXDE的默認(rèn)推薦后端。

飛槳AI for Science全景圖
四、神經(jīng)網(wǎng)絡(luò)編譯器技術(shù),實(shí)現(xiàn)框架通用性能提升
在眾多深度學(xué)習(xí)的應(yīng)用場(chǎng)景中,如大模型訓(xùn)練、自動(dòng)駕駛等,對(duì)模型的訓(xùn)練與推理速度均提出了極高的要求。然而,要實(shí)現(xiàn)訓(xùn)練與推理速度的提升并非易事,這需要我們緊密結(jié)合模型結(jié)構(gòu)與硬件特性,開(kāi)展大量的工程實(shí)現(xiàn)與優(yōu)化工作。在模型結(jié)構(gòu)層面,模型結(jié)構(gòu)正日益呈現(xiàn)出多樣化的趨勢(shì),從基礎(chǔ)的全連接網(wǎng)絡(luò),到復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、Attention網(wǎng)絡(luò)、狀態(tài)空間模型、圖神經(jīng)網(wǎng)絡(luò)等,每一種模型結(jié)構(gòu)都擁有其獨(dú)特的計(jì)算模式與優(yōu)化需求。在硬件特性方面,算力的增長(zhǎng)速度遠(yuǎn)遠(yuǎn)超過(guò)了訪(fǎng)存性能的提升,訪(fǎng)存性能的瓶頸限制了訪(fǎng)存密集型算子(如歸一化層、激活函數(shù)等)的執(zhí)行效率。特別是,當(dāng)前市場(chǎng)上硬件平臺(tái)種類(lèi)繁多,我們需要投入大量的人力物力,進(jìn)行針對(duì)性的優(yōu)化工作,這將嚴(yán)重拖慢算法創(chuàng)新和產(chǎn)業(yè)應(yīng)用的速度。
讓我們通過(guò)一個(gè)實(shí)例來(lái)闡釋這一點(diǎn)。我們以L(fǎng)lama模型中經(jīng)常使用的RMS Normalization(Root Mean Square Layer Normalization)為例,其計(jì)算公式相對(duì)簡(jiǎn)單明了。

假設(shè)我們需要實(shí)現(xiàn)RMS Normalization的計(jì)算,最簡(jiǎn)單的辦法是,我們可以使用飛槳框架提供的張量運(yùn)算開(kāi)發(fā)接口,調(diào)用平方、求和、除法、開(kāi)根號(hào)等操作來(lái)完成,代碼如下:
class RMSNorm(paddle.nn.Layer):
def __init__(self):
super().__init__()
self.variance_epsilon = 1e-6
self.weight = paddle.create_parameter(shape=[768], ...)
def forward(self, x):
variance = x.pow(2).mean(-1, keepdim=True)
x = paddle.rsqrt(variance + self.variance_epsilon) * x
return x * self.weight
上述代碼開(kāi)發(fā)簡(jiǎn)單,但是由于存在大量的訪(fǎng)存操作導(dǎo)致性能很差,且顯存占比較多;為了突破訪(fǎng)存瓶頸,開(kāi)發(fā)者可以選擇通過(guò)手寫(xiě)CUDA代碼的方式實(shí)現(xiàn)一個(gè)融合的FusedRMSNorm算子,但是對(duì)于開(kāi)發(fā)者要求更高,開(kāi)發(fā)成本也更高,更重要的是這種方式極大降低了可維護(hù)性和靈活性。
為此,飛槳框架3.0研制了神經(jīng)網(wǎng)絡(luò)編譯器CINN(Compiler Infrastructure for Neural Networks),相比于PyTorch 2.0的Inductor加Triton的兩階段編譯方案,CINN支持直接從神經(jīng)網(wǎng)絡(luò)中間表述編譯生成CUDA C代碼,通過(guò)一階段的編譯方案,CINN避免了兩階段編譯由于中間表示信息傳遞和表達(dá)能力限制所造成的信息損失,具備更通用的融合能力和更好的性能表現(xiàn)。具體一些技術(shù)創(chuàng)新如下:
1)以Reduce為核心的算子融合技術(shù)。摒棄傳統(tǒng)的粗粒度pattern匹配模式,支持維度軸自動(dòng)變換對(duì)齊融合,在保證計(jì)算正確性的同時(shí),具有更強(qiáng)的算子融合能力,帶來(lái)更大的性能優(yōu)化潛力。
2)動(dòng)靜態(tài)維度的高效后端Kernel調(diào)優(yōu)技術(shù)。算子全面支持reduce、broadcast、transpose等多種算子的不同組合方式,針對(duì)各類(lèi)算子組合和數(shù)據(jù)類(lèi)型,自適應(yīng)不同維度大小與不同硬件配置,進(jìn)行全場(chǎng)景高效調(diào)優(yōu)。通過(guò)自動(dòng)向量化提高BF16、FP16等小數(shù)據(jù)類(lèi)型的訪(fǎng)存效率。通過(guò)分析與分桶機(jī)制,實(shí)現(xiàn)動(dòng)靜態(tài)運(yùn)行時(shí)配置生成,根據(jù)運(yùn)行時(shí)的硬件配置,在無(wú)需profiling的情況下生成高效的kernel。
3)動(dòng)態(tài)維度的復(fù)雜表達(dá)式化簡(jiǎn)技術(shù)。建立了分層化簡(jiǎn)體系,Lower、Schedule、CodeGen階段執(zhí)行不同等級(jí)化簡(jiǎn)方法,解決傳統(tǒng)化簡(jiǎn)方法中多場(chǎng)景疊加后化簡(jiǎn)困難、化簡(jiǎn)不徹底問(wèn)題。實(shí)現(xiàn)了復(fù)雜表達(dá)式結(jié)構(gòu)化簡(jiǎn),抽取融合算子經(jīng)過(guò)編譯、調(diào)優(yōu)后的固定子結(jié)構(gòu)進(jìn)行專(zhuān)項(xiàng)化簡(jiǎn),且靈活支持自定義化簡(jiǎn)方法。

神經(jīng)網(wǎng)絡(luò)編譯器CINN流程圖
借助神經(jīng)網(wǎng)絡(luò)編譯器技術(shù),我們能夠在維持高度靈活性和易用性的基礎(chǔ)上,實(shí)現(xiàn)性能的顯著提升。以下為A100平臺(tái)上RMSNorm算子的性能測(cè)試結(jié)果:相較于采用Python開(kāi)發(fā)接口組合實(shí)現(xiàn)的方式,經(jīng)過(guò)編譯優(yōu)化后的算子運(yùn)行速度提升了 4倍;即便與手動(dòng)算子融合的方式相比,也實(shí)現(xiàn)了14%的性能提升,在靈活性與高性能之間尋找到了較為理想平衡點(diǎn)。我們?cè)赑addleX開(kāi)發(fā)套件里選取了超過(guò) 60模型進(jìn)行實(shí)驗(yàn),使用CINN編譯器后超60%模型有顯著性能提升,平均提升達(dá) 27.4%。重點(diǎn)模型相比PyTorch開(kāi)啟編譯優(yōu)化后的版本平均快18.4%。

神經(jīng)網(wǎng)絡(luò)編譯器CINN訓(xùn)練速度對(duì)比
五、標(biāo)準(zhǔn)化統(tǒng)一硬件適配,加速軟硬協(xié)同優(yōu)化
在深度學(xué)習(xí)的創(chuàng)新探索與產(chǎn)業(yè)落地進(jìn)程中,單一芯片往往難以滿(mǎn)足復(fù)雜多變的業(yè)務(wù)需求,因此通常需要融合運(yùn)用多種芯片來(lái)構(gòu)建解決方案。大模型應(yīng)用對(duì)于算力的需求極為龐大,而單一芯片的供應(yīng)數(shù)量有限,遠(yuǎn)不足以支撐大模型的高效運(yùn)行。不僅如此,不同場(chǎng)景對(duì)芯片性能有著差異化的嚴(yán)苛要求,單一芯片更是難以全面滿(mǎn)足。例如,在大模型訓(xùn)練場(chǎng)景中,需要芯片具備大顯存、高帶寬以及高可靠性的特性;自動(dòng)駕駛場(chǎng)景則強(qiáng)調(diào)低時(shí)延與高可靠性,以保障行車(chē)安全;端側(cè)場(chǎng)景則聚焦于低功耗,以延長(zhǎng)設(shè)備的續(xù)航時(shí)間。
飛槳框架自發(fā)布之初就考慮了多硬件適配的需求,歷經(jīng)持續(xù)迭代與演進(jìn),3.0版本構(gòu)建了一套成熟且完善的多硬件統(tǒng)一適配方案:
1)飛槳聚焦于硬件接口的抽象。飛槳將硬件接口細(xì)分為設(shè)備管理、計(jì)算執(zhí)行、分布式通信等多個(gè)類(lèi)別,通過(guò)標(biāo)準(zhǔn)化的硬件接口成功屏蔽了不同芯片軟件棧開(kāi)發(fā)接口之間的差異。通過(guò)合理的抽象,減少了適配所需的接口數(shù)量,以昇騰芯片適配為例,初步跑通所需適配接口數(shù)比PyTorch方案減少56%,適配代碼量減少80%。
2)基于標(biāo)準(zhǔn)化適配接口的定義,飛槳實(shí)現(xiàn)了松耦合、可插拔的架構(gòu)。在此架構(gòu)下,每類(lèi)芯片僅需提供標(biāo)準(zhǔn)化適配接口的具體實(shí)現(xiàn),便能輕松融入飛槳后端,極大地簡(jiǎn)化了芯片接入的流程。
3)考慮到不同芯片軟件棧成熟度的差異,飛槳提供了豐富多樣的接入方式,涵蓋算子開(kāi)發(fā)、算子映射、圖接入、編譯器接入等。針對(duì)大模型訓(xùn)練與推理需求,飛槳還具備全棧優(yōu)化能力,如支持動(dòng)靜統(tǒng)一編程范式、超大規(guī)模分布式訓(xùn)練技術(shù),提高了模型開(kāi)發(fā)與部署效率。
4)飛槳與芯片廠(chǎng)商攜手合作,共同構(gòu)建了官方代碼合入機(jī)制、例行發(fā)版機(jī)制和持續(xù)集成測(cè)試等研發(fā)基礎(chǔ)設(shè)施,還建立了日級(jí)別例行功能與精度監(jiān)測(cè),保障開(kāi)發(fā)者使用體驗(yàn)。
這些舉措提升了研發(fā)效率,確保飛槳與各類(lèi)芯片的適配工作高效、穩(wěn)定推進(jìn)。

多硬件統(tǒng)一適配方案
基于前述技術(shù),飛槳與芯片廠(chǎng)商緊密合作,攜手共建蓬勃發(fā)展的硬件生態(tài),當(dāng)前飛槳已與超過(guò)40家成員單位開(kāi)展合作,適配超過(guò)60個(gè)芯片系列。飛槳已與24家硬件廠(chǎng)商伙伴達(dá)成深度合作,共同推出了飛槳生態(tài)發(fā)行版。飛槳能夠有效屏蔽底層硬件之間復(fù)雜多樣的差異,為開(kāi)發(fā)者提供簡(jiǎn)潔易用的開(kāi)發(fā)接口。開(kāi)發(fā)者只需編寫(xiě)一份代碼,就可以讓程序在不同芯片上順暢運(yùn)行,輕松實(shí)現(xiàn)業(yè)務(wù)的跨芯片遷移。飛槳的跨平臺(tái)能力為業(yè)務(wù)在芯片選擇方面帶來(lái)了前所未有的靈活性,使開(kāi)發(fā)者能夠根據(jù)實(shí)際需求,更加自由、高效地規(guī)劃業(yè)務(wù)部署。
總結(jié)
飛槳框架3.0面向大模型、異構(gòu)多芯進(jìn)行專(zhuān)屬設(shè)計(jì),向下適配異構(gòu)多芯,充分釋放硬件潛能;向上一體化支撐大模型的開(kāi)發(fā)、訓(xùn)練、壓縮、推理、部署全流程,并助力科學(xué)前沿探索。具備動(dòng)靜統(tǒng)一自動(dòng)并行、大模型訓(xùn)推一體、科學(xué)計(jì)算高階微分、神經(jīng)網(wǎng)絡(luò)編譯器、異構(gòu)多芯適配五大新特性。
1)動(dòng)靜統(tǒng)一自動(dòng)并行:用戶(hù)只需在單卡程序上進(jìn)行少量的張量切分標(biāo)記,飛槳就能將其自動(dòng)轉(zhuǎn)換為并行訓(xùn)練程序,大幅度降低了產(chǎn)業(yè)開(kāi)發(fā)和訓(xùn)練的成本,使開(kāi)發(fā)者能夠更專(zhuān)注于模型和算法的創(chuàng)新。
2)大模型訓(xùn)推一體:同一套框架支持訓(xùn)練和推理,實(shí)現(xiàn)訓(xùn)練、推理代碼復(fù)用和無(wú)縫銜接,為大模型的全流程提供了統(tǒng)一的開(kāi)發(fā)體驗(yàn)和極致的訓(xùn)練效率,為產(chǎn)業(yè)提供了極致的開(kāi)發(fā)體驗(yàn)。
3)科學(xué)計(jì)算高階微分:科學(xué)計(jì)算提供了高階自動(dòng)微分、復(fù)數(shù)運(yùn)算、傅里葉變換、編譯優(yōu)化、分布式訓(xùn)練等能力支撐,支持?jǐn)?shù)學(xué)、力學(xué)、材料、氣象、生物等領(lǐng)域科學(xué)探索,微分方程求解速度比PyTorch開(kāi)啟編譯器優(yōu)化后的2.6版本平均快115%。
4)神經(jīng)網(wǎng)絡(luò)編譯器:采用與框架一體化的設(shè)計(jì),能夠支持生成式模型、科學(xué)計(jì)算模型等多種模型的高效訓(xùn)練與可變形狀推理,在計(jì)算靈活性與高性能之間提供了良好的平衡點(diǎn),顯著降低了性能優(yōu)化的成本。
5)異構(gòu)多芯適配:構(gòu)建了一套成熟且完善的多硬件統(tǒng)一適配方案,通過(guò)標(biāo)準(zhǔn)化接口屏蔽了不同芯片軟件棧開(kāi)發(fā)接口差異,實(shí)現(xiàn)可插拔架構(gòu),提供多種接入方式和基礎(chǔ)設(shè)施,支撐硬件廠(chǎng)商合入4001個(gè)PR,包括26584個(gè)commits。
飛槳框架3.0將為開(kāi)發(fā)者提供一個(gè)“動(dòng)靜統(tǒng)一、訓(xùn)推一體、自動(dòng)并行、自動(dòng)優(yōu)化、廣泛硬件適配”的深度學(xué)習(xí)框架,開(kāi)發(fā)者可以像寫(xiě)單機(jī)代碼一樣寫(xiě)分布式代碼,無(wú)需感知復(fù)雜的通信和調(diào)度邏輯,即可實(shí)現(xiàn)大模型的開(kāi)發(fā);可以像寫(xiě)數(shù)學(xué)公式一樣用Python語(yǔ)言寫(xiě)神經(jīng)網(wǎng)絡(luò),無(wú)需使用硬件開(kāi)發(fā)語(yǔ)言編寫(xiě)復(fù)雜的算子內(nèi)核代碼,即可實(shí)現(xiàn)高效運(yùn)行。目前3.0正式版本已面向開(kāi)發(fā)者開(kāi)放,并且兼容2.0版本的開(kāi)發(fā)接口,非常歡迎廣大開(kāi)發(fā)者使用和反饋。
官方活動(dòng)
直播課程:4月8日(下周二)晚7點(diǎn),百度杰出架構(gòu)師直播詳解飛槳新一代框架3.0的強(qiáng)大能力及技術(shù)實(shí)現(xiàn)!
有獎(jiǎng)測(cè)評(píng):飛槳框架3.0正式版現(xiàn)已全面開(kāi)放,誠(chéng)邀廣大用戶(hù)體驗(yàn)使用!在技術(shù)網(wǎng)站發(fā)布本人真實(shí)的測(cè)評(píng)報(bào)告/使用tips/實(shí)際場(chǎng)景應(yīng)用實(shí)例等經(jīng)驗(yàn)帖,并提交到官方(下方海報(bào)二維碼),通過(guò)驗(yàn)收的高質(zhì)量測(cè)評(píng)可獲得最高千元激勵(lì)金。
傳送門(mén):開(kāi)始安裝
https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/linux-pip.html