1、飛槳框架技術創新之路百度杰出架構師/胡曉光目錄動靜統一自動并行飛槳框架關鍵技術飛槳框架總體設計飛槳框架總體設計人工智能技術棧模型層模型層框架層框架層芯片層芯片層應用層應用層New Bing百度新搜索MidjourneyChatGPTGeminiTPU深度學習框架核心功能易用的開發接口 數據抽象:Tensor 操作抽象:Operator Python,Numpy 避免了解硬件底層開發接口,如Cuda C,cuDNN,cuBlas等自動微分功能 只需要寫神經網絡的前向,通過鏈式法則自動計算Loss關于參數的梯度 高階自動微分 前向自動微分多硬件 隔離硬件差異,如Cuda C,oneAPI,XTDK
2、,BangC等等 充分發揮硬件性能分布式,合理排布計算、訪存、通信等操作可擴展,如硬件后端、算子、Pass、Dialect等模型和框架代碼規模對比 讓深度學習技術的創新與應用更簡單模型模型代碼規模代碼規模Llama3(推理)2千行StableDiffusion1.8萬行AlphaFold2.4萬行框架框架代碼規模代碼規模Tensorflow(去三方庫)420萬行PyTorch298萬行PaddlePaddle307萬行https:/ v2.0 Caffe開源PyTorch v0.1發布PyTorch v1.3LayerOperator符號微分動態圖模式+Graph模式+Eager模式圖像、語音
3、應用圖像、語音應用自然語言處理自然語言處理TransformerTransformer預訓練模型預訓練模型科學計算、生物計算等科學計算、生物計算等學術創新學術創新科技企業參與科技企業參與大規模產業應用大規模產業應用靜態圖模式2012Deep Belief NetsDeep Belief Nets更小的復用粒度更小的復用粒度融合兩種開發模式融合兩種開發模式靈活和效率的平衡靈活和效率的平衡PaddlePaddle開源(PArallel Distributed Deep LEarning)動靜統一千億模型混合并行靜態圖模式分布式訓練大模型時代大模型時代2023大規模分布式大規模分布式極致性能優化極致
4、性能優化PyTorch v2.0+Compile飛槳3.0 Beta待發布+Compile+shard_tensor大語言模型、多模態模型大語言模型、多模態模型飛槳2.0發布飛槳CINN探索Compiler大模型技術發展趨勢RWKV使用RNN網絡達到跟Transformer可比的效果Mamba:Linear-Time Sequence Modeling with Selective State SpacesSwitch Transformers:Scaling to Trillion Parameter Models with Simple and Efficient Sparsityhttp
5、s:/ 英偉達&西門子 基于AI和物理的風電場數字孿生以比傳統方法快 4,0004,000 倍2023年 DeepMind公司提出GraphCast氣象模型 90%氣象要素預測精度領先權威氣象臺2021年 DeepMind公司提出AlphaFold2模型突破生物學家50年未解蛋白質結構預測難題2024年 普林斯頓團隊用AI提前300毫秒預測核聚變等離子不穩定態開發者開發者飛槳框架飛槳框架AIAI技技術發術發展展硬件硬件產業產業落地落地MoE、多模態AI for Science極致性能:廣泛硬件適配、軟硬一體協同優化開發體驗:動靜統一、訓推一體、自動并行訓、壓、推全流程大模型時代的深度學習框架飛
6、槳框架架構圖英偉達GPU昆侖XPU海光DCU昇騰NPU寒武紀MLU芯片層芯片層大語言模型多模態模型科學計算計算機視覺語音模型層模型層動態圖執行引擎靜態圖新執行器內存/顯存管理優化執行層執行層張量表示數學計算組網優化器自動微分接口層接口層分布式表示層表示層 動轉靜動轉靜AST代碼轉寫字節碼模擬自動微分自動微分反向微分高階微分分布式分布式并行策略集合通信自動并行自動并行張量切分策略尋優Program 語義SSA Graph 語義OperationDialectPass組合算子組合算子前向規則反向規則PHIPHI算子庫算子庫基礎算子算子定義算子內核Tensor定義適配層適配層神經網絡編譯器神經網絡編
7、譯器CINNCINN參數自動調優算子自動融合代碼自動生成動態形狀推導設備抽象設備抽象計算流管理分布式通信存儲管理設備運行時PaddlePaddle IRIR各模塊之間的關系動態圖動態圖(含自動并行含自動并行)算子庫算子庫CINN編譯器編譯器執行器執行器PIR組合算子組合算子靜態圖靜態圖(含自動并行)(含自動并行)推理部署推理部署自動微分自動微分動態執行引擎動態執行引擎動轉靜動轉靜大模型自動并行大模型自動并行IRIR等基礎架構統一等基礎架構統一高性能編譯計算高性能編譯計算多硬件多硬件Pass動靜統一、訓推一體動靜統一、訓推一體廣泛硬件適配廣泛硬件適配自動并行自動并行高階自動微分高階自動微分def
8、 foo(x):y=conv2d(x,)z=batch_norm(y,)return relu(z)動轉靜拆解動態圖靜態圖框架基礎算子編譯器xreturnConv2dBatchNormReLUxreturnConvMax(x,0)wbias+x-Mean(x)Std(x)對接動態圖動態圖動轉靜動轉靜自動并行自動并行組合算子組合算子編譯器編譯器執行器執行器新新IRIR自動微分自動微分像寫單機代碼一樣寫大規模分布式程序,通過自動并行、自動微分、編譯優化等技術,像寫單機代碼一樣寫大規模分布式程序,通過自動并行、自動微分、編譯優化等技術,實現實現極致性能和廣泛硬件適配極致性能和廣泛硬件適配飛槳新一代框
9、架目錄動靜統一自動并行動靜統一自動并行飛槳框架關鍵技術飛槳框架總體設計靜態圖動態圖創建計算圖(編譯期)每次執行相同的計算圖(執行期)每次執行都動態創建計算圖動靜統一的組動靜統一的組網網切換到靜態圖模式靜態圖和動態圖開發模式to_static一行命令轉換成靜態圖動靜轉換技術飛槳動轉靜飛槳動轉靜PythonPython語法支持率語法支持率94%94%,領先,領先PyTorchPyTorch的的59%59%飛槳模型飛槳模型整圖導出成功率整圖導出成功率95%95%,領先,領先PyTorchPyTorch的的62%62%通過比較官網文檔說明的Python語法34項,以上展示部分語法動靜轉換技術Paddl
10、eSOT動靜轉換 解決深度學習模型下 Python 語言與框架 IR 之間差異性,實現轉靜訓練100%的成功率,極致化用戶體驗 拓寬接入AI 編譯器的路徑,解鎖更多轉靜加速能力自適應圖構建機制opopopopop 動轉靜終止升級升級opopopopop自適應自適應圖構建圖構建SubgraphSubgraphSubgraphSubgraph中間表示IR先組網后執行、依賴執行器、全局視野先組網后執行、依賴執行器、全局視野靜態圖靜態圖中間表示中間表示運行時運行時硬件設備硬件設備執行器執行器張量張量 +算子算子 =計算圖,即計算圖,即 IRIR 中間表示中間表示中間表示IR應用示例模型訓練僅是深度學習
11、任務鏈條的一環,更重要地是結模型訓練僅是深度學習任務鏈條的一環,更重要地是結合業務落地,部署推理,開放給用戶使用合業務落地,部署推理,開放給用戶使用推理部署推理部署推理計算圖推理計算圖IRIR 中包含了計算圖的全局信息,如上下游算子的鄰接中包含了計算圖的全局信息,如上下游算子的鄰接關系等,更有利于進行圖優化關系等,更有利于進行圖優化性能優化性能優化常常量量折折疊疊算子算子融合融合張量張量 inplaceinplaceDeclarative Rewrite Rule 機制(即DRR)三段式三段式PassPass開發范式,讓開發者開發范式,讓開發者更聚焦更聚焦于于PassPass邏輯的處理,邏輯的
12、處理,無需關心底層無需關心底層IRIR的細節的細節SourceSource PatternPatternResultResult PatternPatternPassPass樣例:樣例:移除冗余連續的移除冗余連續的CastCast計算計算Declarative Rewrite Rule 機制(即DRR)DRRDRR 應用廣泛,在應用廣泛,在算子算子FuseFuse融合類融合類PassPass開發上,簡潔易用,有效開發上,簡潔易用,有效降低降低60%60%的開發成本的開發成本FlashAttenFlashAtten 算子融合算子融合PassPassConv2d+Add+ActConv2d+Add
13、+Act 算子融合算子融合PassPass高擴展性高擴展性IRIR支撐大模型性能極致優化Operator Dialect多層級的多層級的DialectDialectOperationValueAttributeTypeTraitInterface靈活的基礎組件靈活的基礎組件CINN DialectKernel DialectShape DialectControl Flow Dialect功能完善的功能完善的PassPass體系體系Pattern RewriterDRRDistributed Dialect 通過使用PIR,Pass開發成本降低60%,推理性能提升超過10%提前靜態選Kerne
14、l策略,調度更加輕量高效常量折疊Pass適用范圍更廣、執行速度更快Inplace Pass適用范圍更廣、支持更多算子25.22%58.98%4.81%1.76%10.23%0.00%10.00%20.00%30.00%40.00%50.00%60.00%70.00%提升30%+提升10%下降10%下降30%持平統計超過900個模型配置PIR升級推理速度提升分布高擴展中間表示PIR大模型對算力的挑戰計算量計算量 vs 摩爾定律摩爾定律 參數量參數量 vs 顯存顯存算力算力 vs 帶寬帶寬圖片引自:https:/arxiv.org/pdf/2005.14165.pdf https:/ Perfor
15、mancePerformance顯存大小顯存大小機內互聯帶寬機內互聯帶寬A1002020312 TFLOPS(FP16/BF16)80GB600GB/sH10020221000 TFLOPS(FP16/BF16)80/94GB900GB/sB20020242250 TFLOPS(FP16/BF16)192GB1800GB/s以以NVIDIA近年代表性近年代表性GPU發展為例發展為例通往大模型訓練之路顯存顯存占用過高,占用過高,導致導致單卡無法放單卡無法放下整個模型下整個模型降低單卡顯存占用降低單卡顯存占用多設備攤分顯存多設備攤分顯存單設備優化單設備優化多設備優化多設備優化使用更低精度訓練使用更
16、低精度訓練提前釋放提前釋放Activation節省顯存節省顯存拆分拆分mini-batch,多,多次計算次計算前反向,一次前反向,一次參數參數更新更新FP32顯存占用過高顯存占用過高混合精度訓練混合精度訓練重計算重計算梯度累加梯度累加Batch Size=1都跑不起來都跑不起來進一步提高進一步提高Batch Size模型狀態切分模型狀態切分算子內部切分算子內部切分層間切分層間切分流水線并行流水線并行張量并行張量并行參數切片并行參數切片并行“可訓練可訓練”單設備單設備訓練太慢訓練太慢“訓得快訓得快”多設備攤分數據多設備攤分數據并行訓練并行訓練數據并行數據并行面臨問題面臨問題解決思路解決思路技術方
17、案技術方案飛槳分布式技術架構演進路線、動態圖動態圖手動并行手動并行動態圖半自動并行動轉靜靜態圖半自動并行動靜統一動靜統一半自動并行半自動并行全自動全自動并行并行手動并行到自動并行的架構演進手動并行到自動并行的架構演進手動并行:手動管理張量切分和通信,不同并行策略使用不同的API自動并行:框架自動推導張量切分和通信,用統一API表示不同并行策略半自動并行:需要用戶添加少量分布式標記信息,框架推導剩余算子和張量的分布式信息全自動并行:不需要用戶添加分布式標記信息,框架自動推導所有算子和張量的分布式信息如何實現高效的混合并行策略以應對大模型的發展?如何實現高效的混合并行策略以應對大模型的發展?不同模
18、型、不同規模、不同設備可能需要使用不同的策略解決方案解決方案手動并行代碼示例(TP&PP)對于百億甚至千億規模的大模型,一般需要使用 TP+PP+DP/Sharding 的混合并行方式進行訓練初始化分布式環境修改TP組網修改PP組網構造分布式model和optimizer運行模型訓練如何用一種方式統一表達各種并行策略?如何用一種方式統一表達各種并行策略?分布式標記(DistAttr)如何表示張量在多卡設備的分布狀態以及不同的并行策略?如何表示張量在多卡設備的分布狀態以及不同的并行策略?ProcessMesh 每個設備映射一個進程,用進程mesh來表示設備資源 Placement 張量在不同設備
19、的分布(切分)狀態 Replicate:復制的 Shard(n):dim-n切分的 Partial:不完整的,需要規約sum,mean混合并行訓練代碼開發大幅簡化數據并行 GPU0GPU1張量模型并行 GPU2GPU3Data 1Data 0GPU4GPU5張量模型并行 GPU6GPU7Data 1Data 0流水線并行 mesh0/stage0mesh1/stage1張量切分張量切分12341234Replicate1234Shard(0)1324Shard(1)GPU0GPU1動靜統一自動并行無需感知分布式通信邏輯動靜統一自動并行05001000150020002500Llama2 13B
20、32*A100 DP1_MP1_PP4_VPP5_Sharding8Llama2 70B32*A100 DP1_MP4_PP8_VPP5_Sharding1Tokens/s/cardLlama2模型不同規模性能模型不同規模性能同類開源產品飛槳手動并行飛槳自動并行以以LlamaLlama模型為例,無需考慮通信邏輯,核心代碼可模型為例,無需考慮通信邏輯,核心代碼可減少減少50%50%,性能持平手動優化版本,性能持平手動優化版本動靜統一自動并行架構 統一分布式標記 自動切分推導 自動切分轉換 動靜統一 參數自動轉換 代價模型 靜態圖執行調度目錄動靜統一自動并行飛槳框架關鍵技術飛槳框架關鍵技術飛槳框架
21、總體設計4=22+22 22+22 =,0,0,在在x x=0=0和和x x=兩條邊上,有撓度兩條邊上,有撓度和力矩和力矩為為0 0 在在x x=0=0和和x x=兩條邊上,有撓度兩條邊上,有撓度和力矩和力矩為為0 0=22+22=22+22=1 2 =22+22=22+22 2D2D矩形平板分布受載矩形平板分布受載高階自動微分完備的基礎算子集合完備的基礎算子集合 原子性 實用性 面向Tensor 完備性機制上保障模型性能機制上保障模型性能 動態圖:拆解N+1階微分 靜態圖:編譯器融合優化動靜一體的組合規則動靜一體的組合規則 動靜復用同一套組合規則模型精度和顯存優化模型精度和顯存優化 自定義反
22、向 自動重計算Python APIC+API動態圖前向執行動態圖反向執行前向計算圖基礎計算圖完整計算圖前向算子組合規則基礎算子微分規則基礎算子體系算子注冊機制動態圖基礎算子靜態圖基礎算子前向拆解自動微分靜態圖組合機制靜態圖組合機制動態圖組合機制動態圖組合機制動靜一體基礎算子體系動靜一體基礎算子體系反向構圖組合算子機制組合算子模型精度和顯存優化通過自定義反向算子拆分規則,降低算子拆分計算圖的復雜度,減少顯存、提升計算數值穩定性通過自定義反向算子拆分規則,降低算子拆分計算圖的復雜度,減少顯存、提升計算數值穩定性2472821258耗時算子組合手動融合編譯器單位微秒算子組合方式更靈活,但運行速度慢手
23、寫算子運行速度快,但不夠靈活以以RMSNormRMSNorm算子為例,通過神經網絡編譯器技術,保持靈活易用的前提下,算子為例,通過神經網絡編譯器技術,保持靈活易用的前提下,速度相比手動優化版本速度相比手動優化版本提升提升14%14%,相比算子組合方式,相比算子組合方式提升至提升至5 5倍倍深度學習編譯器深度學習編譯器組合算子組合算子機制機制高層高層IRIR(CINN&Shape Dialect)低層低層IRIR(AST)CPUXPUGPULLVM IRCUDA機器碼/匯編飛槳計算圖飛槳計算圖(Operator Dialect)神經網絡神經網絡編譯器前端編譯器前端神經網絡神經網絡編譯器后端編譯器
24、后端算子自動聚合算子自動聚合飛槳計算圖飛槳計算圖低層低層 IR:AST(抽象語法樹)(抽象語法樹)動態動態shapeshape支持支持KernelKernel自動生成自動生成LLVM IR 代碼代碼CUDA C 源碼源碼編譯器高層編譯器高層 IR拆解為組合算子,更容易優化。子圖自動融合為CINN Dialect 的Fusion 算子,且包含動態Shape符號,以此為后端Kernel基本單位。原始的計算圖表示,包含未拆解的大算子,以及原始的動態Shape,無符號約束信息。HoHostst 端端 LaunchLaunch CUDACUDA KernelKernel動態動態ShapeShape信息信
25、息運行時推導運行時推導面向大模型、科學計算等的訓練和推理任務,支持面向大模型、科學計算等的訓練和推理任務,支持可變形狀輸入可變形狀輸入,通過多硬件通過多硬件KernelKernel自動生成、計算圖編譯優化等技術,實現自動生成、計算圖編譯優化等技術,實現極致性能和廣泛硬件適配極致性能和廣泛硬件適配Shape Dialect解讀飛槳對框架內飛槳對框架內150+150+基礎算子基礎算子和和典型算子典型算子新增支持了新增支持了動態動態ShapeShape推導邏輯推導邏輯InferSymbolicShapeInferSymbolicShape 可動態地隨計算圖可動態地隨計算圖PassPass的應用,自適
26、應且的應用,自適應且LazyLazy的更新符號信息的更新符號信息動態Shape下Kernel生成在在CodeGenCodeGen階段,自動關聯動態階段,自動關聯動態ShapeShape符號,符號,控制流分支自適應控制流分支自適應DispatchDispatch動態動態Shape下下CodeGen 樣例樣例符號動態推導科學計算模型優化構建飛槳構建飛槳AIAI forfor ScienceScience 開源工具鏈開源工具鏈00.020.040.060.080.10.120.14ldc/ldc_2dchip_nsferturbuookupturbuom_LSthree_sinkthree_flow
27、chip_ip_2dthreeversechip_heatturbuep_LSturbu_k_epturbu_k_omthreeermalwave_ve_1dldc/lplinghelmhholtzhelmhardBChelmhz_ntkldc/litionsurfaphereldc/lbpinnseismve_2dwave_ausalchip_flowwave_verselimerermalannulrizedannul_ringannul_ringcyliner_2dannulardBCtayloausaltaylogreenannulancedwavegab_2DwavegD_TMzwa
28、vegide3Dwavegab_3Dldc/leroEqbrackacketfuselpanellimer_flowlimer_flowanti_ormed吞吐率吞吐率模型名稱模型名稱NVIDIANVIDIA ModulusModulus PaddlePaddle PaddlePaddle VSVS PyTorchPyTorchA100 GPU A100 GPU 吞吐率對比吞吐率對比Paddle吞吐率PyTorch吞吐率基于飛槳高階自動微分及編譯優化技術,基于飛槳高階自動微分及編譯優化技術,NVIDAINVIDAI ModulusModulus 上上4444個飛槳為后端的案例個飛槳為后端的案例
29、平均吞吐性能相比平均吞吐性能相比PyTorchPyTorch提升提升40%40%芯片芯片低層編程語言芯片軟件棧提供匯編編程語言及優化接口,如NVIDIA NVPTX生成LLVM IR芯片加速庫如cuBLAS,CUDNN框架調用芯片加速庫函數芯片加速庫可以由匯編或者高級語言實現PHI算子庫計算圖計算圖計算圖手寫高級語言代碼如Cuda C生成Triton IR生成匯編語言生成匯編語言模型模型生成Triton IR生成LLVM IR生成高級語言代碼如Cuda C計算圖 算子開發 算子映射 深度學習編譯器CINN編譯器計算圖引擎如TensorRT、ONNXRuntime 圖引擎深度學習框架(飛槳等)T
30、orchInductor編譯器Triton編譯器LLVM編譯器手寫算子庫高級編程語言編譯器如NVCC芯片軟件棧提供高級編程語言硬件適配方案SyCL共創繁榮硬件生態與硬件伙伴合作深化,全面共創與硬件伙伴合作深化,全面共創實現生態繁榮共贏實現生態繁榮共贏共共創創攜手硬件生態伙伴軟硬一體聯合優化攜手硬件生態伙伴軟硬一體聯合優化適配主流芯片適配主流芯片 /IP/IP共共研研與合作伙伴聯合發起飛槳硬件生態圈與合作伙伴聯合發起飛槳硬件生態圈促進促進 AI AI 產業鏈的適配升級產業鏈的適配升級共共聚聚與與2222家硬件伙伴聯合發布飛槳生態發行版家硬件伙伴聯合發布飛槳生態發行版軟硬件協同深度優化,為開發者提
31、供軟硬一體化體驗軟硬件協同深度優化,為開發者提供軟硬一體化體驗NGC NGC&Deep Learning Deep Learning ExamplesExamples飛槳鏡像飛槳鏡像ModelModel GardenGardenOpenOpen ModelModel ZooZooAX-SamplesAX-SamplesP Paddle_addle_MLUMLUImagination_Imagination_PaddlePaddle_MPaddlePaddle_Modelodel Z ZooooPaddle ExamplesPaddle Examples forfor Arm Virtual H
32、ardwareArm Virtual Hardware(AVHAVH即將上線百度智能云)即將上線百度智能云)飛槳飛槳模型庫模型庫DeepSparkHubDeepSparkHub注:根據生態發行版發布時間先后排列TS.KnightTS.Knight-Model ZooModel ZooPaddlePaddlePaddlePaddle ModelModel ZooZoomoffettmoffett-modelzoomodelzoo-paddlepaddle飛槳飛槳-鵬城云腦發行版鵬城云腦發行版MetaXMetaX ModelModel zoozooModelModel zoozooDLDL飛槳模型庫飛槳模型庫海飛科模型庫海飛科模型庫龍芯版飛槳龍芯版飛槳硬件生態共創計劃成員硬件生態共創計劃成員超過超過4040家家,全面覆蓋國內外主流硬件廠商,全面覆蓋國內外主流硬件廠商注:根據加入硬件生態共創計劃時間先后排列紫光模型庫紫光模型庫飛槳飛槳_ _example_forexample_for_Zhouyi_NPU_Zhouyi_NPU太初模型庫太初模型庫RKNN_model zooRKNN_model zoo