《華為:2025大模型訓練性能瓶頸定位流程案例(15頁).pdf》由會員分享,可在線閱讀,更多相關《華為:2025大模型訓練性能瓶頸定位流程案例(15頁).pdf(15頁珍藏版)》請在三個皮匠報告上搜索。
1、MindStudio7.0.0大模型訓練性能瓶頸定位流程案例大模型訓練性能瓶頸定位流程案例文檔版本文檔版本01發布日期發布日期2025-01-13華為技術有限公司華為技術有限公司 版權所有版權所有 華為技術有限公司華為技術有限公司 2025。保留一切權利。保留一切權利。非經本公司書面許可,任何單位和個人不得擅自摘抄、復制本文檔內容的部分或全部,并不得以任何形式傳播。商標聲明商標聲明和其他華為商標均為華為技術有限公司的商標。本文檔提及的其他所有商標或注冊商標,由各自的所有人擁有。注意注意您購買的產品、服務或特性等應受華為公司商業合同和條款的約束,本文檔中描述的全部或部分產品、服務或特性可能不在您
2、的購買或使用范圍之內。除非合同另有約定,華為公司對本文檔內容不做任何明示或暗示的聲明或保證。由于產品版本升級或其他原因,本文檔內容會不定期進行更新。除非另有約定,本文檔僅作為使用指導,本文檔中的所有陳述、信息和建議不構成任何明示或暗示的擔保。文檔版本 01(2025-01-13)版權所有 華為技術有限公司i 安全聲明安全聲明 產品生命周期政策產品生命周期政策華為公司對產品生命周期的規定以“產品生命周期終止政策”為準,該政策的詳細內容請參見如下網址:https:/ 漏洞處理流程漏洞處理流程華為公司對產品漏洞管理的規定以“漏洞處理流程”為準,該流程的詳細內容請參見如下網址:https:/ 華為初始
3、證書權責說明華為初始證書權責說明華為公司對隨設備出廠的初始數字證書,發布了“華為設備初始數字證書權責說明”,該說明的詳細內容請參見如下網址:https:/ 華為企業業務最終用戶許可協議華為企業業務最終用戶許可協議(EULA)本最終用戶許可協議是最終用戶(個人、公司或其他任何實體)與華為公司就華為軟件的使用所締結的協議。最終用戶對華為軟件的使用受本協議約束,該協議的詳細內容請參見如下網址:https:/ 產品資料生命周期策略產品資料生命周期策略華為公司針對隨產品版本發布的售后客戶資料(產品資料),發布了“產品資料生命周期策略”,該策略的詳細內容請參見如下網址:https:/ 文檔版本 01(20
4、25-01-13)版權所有 華為技術有限公司ii目目 錄錄1 常見性能問題場景常見性能問題場景.12 問題定位方法問題定位方法.22.1 性能問題定位流程.22.2 Ascend PyTorch Profiler 采集性能數據.32.3 Mindstudio Insight 定位.43 性能調優案例性能調優案例.93.1 案例描述.93.2 MindStudio Insight 分析定位.93.3 mstt advisor 輔助定位.11MindStudio大模型訓練性能瓶頸定位流程案例目 錄文檔版本 01(2025-01-13)版權所有 華為技術有限公司iii1 常見性能問題場景常見性能問題
5、場景大模型從外部設備遷移到昇騰設備,并在昇騰設備上訓練的過程中,可能會出現性能問題。常見的兩大性能問題場景是開箱性能優化開箱性能優化場景和性能長跑劣化性能長跑劣化場景。開箱性能優化開箱性能優化:主要是用戶在昇騰平臺使用模型時,發現性能差,直接進行性能層面的優化。性能長跑劣化性能長跑劣化:一般是用戶在訓練過程中,由于不可預知的引入,導致模型出現了一些性能劣化的問題,需要定位性能劣化的原因,并解決問題。圖圖 1-1 場景介紹MindStudio大模型訓練性能瓶頸定位流程案例1 常見性能問題場景文檔版本 01(2025-01-13)版權所有 華為技術有限公司12 問題定位方法問題定位方法性能問題定位
6、流程Ascend PyTorch Profiler采集性能數據Mindstudio Insight定位2.1 性能問題定位流程性能問題定位流程大模型訓練的基本性能調優流程如下:圖圖 2-1 基本性能調優流性能調優最重要的就是對癥下藥,先定界問題,再對問題進行針對性優化。1.首先進行性能數據采集,可以使用Ascend PyTorch Profiler提供的接口進行數據采集和解析;2.接下來,使用MindStudio Insight可視化工具定界性能問題,定界結果通常分為計算、調度、通信三個方向的問題;MindStudio大模型訓練性能瓶頸定位流程案例2 問題定位方法文檔版本 01(2025-01
7、-13)版權所有 華為技術有限公司23.除此之外,用戶還可以直接使用mstt中的Advisor工具輔助定位問題,Advisor工具通過內置的案例集,自動對性能數據進行分析,并輸出性能調優建議;4.最后,用戶可以針對不同問題使用對應的調優手段進行調優,每次調優后重跑訓重跑訓練練,采集性能數據采集性能數據,使用MindStudio Insight可視化工具查看調優手段是否產生效果。重復這個過程,直到解決性能問題。2.2 Ascend PyTorch Profiler 采集性能數據采集性能數據Ascend PyTorch Profiler是大模型在Ascend PyTorch框架下訓練過程中提供的一
8、套采集性能數據的API接口,能夠采集到框架側、CANN側和device側的原始性能數據,并完成解析。在訓練腳本(如train_*.py文件)內插入torch_npu.profiler相關采集、解析的配置和參數,再啟動訓練,即可采集性能數據。Ascend PyTorch Profiler詳細介紹請參見性能調優工具指南性能調優工具指南。示例代碼如下:import torchimport torch_npu#Profiler采集、解析的前置配置參數experimental_config=torch_npu.profiler._ExperimentalConfig(export_type=torch_
9、npu.profiler.ExportType.Text,profiler_level=torch_npu.profiler.ProfilerLevel.Level0,msprof_tx=False,aic_metrics=torch_npu.profiler.AiCMetrics.AiCoreNone,l2_cache=False,op_attr=False,data_simplification=False,record_op_args=False,gc_detect_threshold=None)#大模型訓練的次數steps=7with torch_npu.profiler.profil
10、e(activities=torch_npu.profiler.ProfilerActivity.CPU,torch_npu.profiler.ProfilerActivity.NPU ,schedule=torch_npu.profiler.schedule(wait=0,warmup=0,active=2,repeat=2,skip_first=1),on_trace_ready=torch_npu.profiler.tensorboard_trace_handler(./result),record_shapes=False,profile_memory=False,with_stack
11、=False,with_modules=False,with_flops=False,experimental_config=experimental_config)as prof:for step in range(steps):#模型訓練 train_one_step(step,steps,train_loader,model,optimizer,criterion)#調用step方法進行采集、解析數據 prof.step()采集生成的文件結構如下所示:localhost.localdomain_139247_20240628101435_ascend_pt profiler_info.j
12、son profiler_metadata.json ASCEND_PROFILER_OUTPUT communication.json communication_matrix.json data_preprocess.csv kernel_details.csv l2_cache.csv memory_record.csvMindStudio大模型訓練性能瓶頸定位流程案例2 問題定位方法文檔版本 01(2025-01-13)版權所有 華為技術有限公司3 npu_module_mem.csv operator_details.csv operator_memory.csv step_trac
13、e_time.csv op_statistic.csv api_statistic.csv trace_view.json FRAMEWORK PROF_000001_20230628101435646_FKFLNPEPPRRCFCBA analyze device_*host mindstudio_profiler_log mindstudio_profiler_output2.3 Mindstudio Insight 定位定位MindStudio Insight提供了豐富的調優分析手段,可視化呈現真實軟硬件運行數據,多維度分析性能數位,定位性能瓶頸點,支持百卡、千卡及以上規模的可視化集群性
14、能分析??梢愿鶕﨧indStudio Insight 用戶指南用戶指南中的“基礎操作 導入數據導入數據”,在MindStudio Insight中導入上一步采集的性能數據,根據下述流程使用可視化能力分析性能數據。概覽界面總覽數據情況概覽界面總覽數據情況可以通過概覽頁了解每個模塊的具體內容。詳細介紹請參見MindStudio Insight 用用戶指南戶指南中的“系統調優 概覽(概覽(Summary)”。1.在“并行策略分析”模塊,提供TP、PP、DP等不同并行策略分析視角:a.點擊復選框選擇并行策略,通過方框標注識別并行分組。b.選擇不同的“數據類型”會展示對應的熱力圖,根據熱力圖找到存在性能
15、問題的通信域,越偏向紅色表示性能越差。圖圖 2-2 并行策略分析2.在計算/通信概覽部分展示所選通信域下每張卡的計算、通信、空閑時間占比情況,并提供專家建議。如下圖,由于391卡通信未覆蓋時間顯著小于其他卡,那么可以初步推斷該集群中通信時間存在一些問題,專家建議也給了相應的提示。MindStudio大模型訓練性能瓶頸定位流程案例2 問題定位方法文檔版本 01(2025-01-13)版權所有 華為技術有限公司4圖圖 2-3 計算/通信概覽各圖例相關數據指標的含義如下:圖例含義總計算時間昇騰設備上的內核時間總和。純計算時間純計算時間=總計算時間 通信時間(被覆蓋)。通信時間(被覆蓋)被覆蓋的通信時
16、長,即計算和通信同時進行的時長。通信時間(未被覆蓋)未被覆蓋的通信時長,即純通信時長??臻e時間未進行計算或通信的時長。不同的指標現象可以定界不同的性能問題:計算問題計算問題:通常表現為通信域中總計算時間占比的極大值和極小值差異過大。如果某些計算卡的計算時間明顯超出了正常范圍,那很可能意味著這張卡承擔了過于繁重的計算任務,比如要處理的數據量過大,或者模型計算的復雜程度過高,也有可能是卡本身的性能受到了限制。調度問題調度問題:通常表現為通信域中空閑時間占比的極大值和極小值差異過大。如果計算卡的空閑時間過長,那就說明存在Host側至Device側的下發異常,這同樣會對集群的性能造成不利影響。通信問題
17、通信問題:如果通信時間(未被覆蓋)過長,那就表明計算和通信之間的協同出現了問題,可能對應多種情況。也許是通信協議不夠優化,又或者是網絡帶寬不穩定,導致通信無法和計算良好配合。計算問題計算問題當數據指標現象指示為計算問題時,可以直接查看異??ǖ乃阕訑祿?,并與正??ㄟM行比較。此時可以使用MindStudio Insight的卡間性能比對功能,根據MindStudioInsight 用戶指南用戶指南中的“系統調優 算子(Operator)使用說明使用說明”,設置兩卡進入比對模式,并在算子界面查看結果。下圖是一個存在計算問題的例子,可以看到在算子數量相等的前提下,MatMul類算子平均耗時明顯增多,造
18、成了兩張單卡的計算時間差異。MindStudio大模型訓練性能瓶頸定位流程案例2 問題定位方法文檔版本 01(2025-01-13)版權所有 華為技術有限公司5圖圖 2-4 計算算子類型根據經驗,MatMul類算子很可能在特定shape下劣化,可以將分組方式切換到“計算算子名稱和輸入shape”,并根據總耗時排序,進一步定位在哪些shape下MatMul類算子的劣化最為嚴重。定位到算子問題后,可以找相關算子開發人員進一步確認問題原因。圖圖 2-5 計算算子名稱和輸入 shape調度問題調度問題當數據指標現象指示為調度問題時,需要到時間線界面將異??ê驼?ㄟM行比較,進一步定位出現問題的算子,可
19、以根據MindStudio Insight 用戶指南用戶指南中的“系統調優 時間線(時間線(Timeline)”了解界面詳情。進入時間線界面,選擇HostToDevice連線類型,HostToDevice展示了CANN層算子到AscendHardware的算子的下發執行關系和CANN層算子到HCCL通信算子的下發執行關系,用于定位調度問題。HostToDevice的連線通常有兩種形態,傾斜和豎直。下圖是一個存在調度問題的案例,如果HostToDevice連線如左側所示,是傾斜的,說明此時間段調度任務安排合理,昇騰設備是滿負荷執行計算和通信任務的。如果HostToDevice連線如右側所示,是豎
20、直的,說明昇騰設備此時快速執行完了CPU下發的任務,未滿負荷進行計算和通信任務,這一般表示存在調度問題。此時,可以通過增大batch size、綁核、融合算子替換等方法進行調優。MindStudio大模型訓練性能瓶頸定位流程案例2 問題定位方法文檔版本 01(2025-01-13)版權所有 華為技術有限公司6圖圖 2-6 調度問題通信問題通信問題當數據指標現象指示為通信問題時,需要進入通信界面進一步分析。通信界面用于展示集群中全網鏈路性能以及所有節點的通信性能,通過集群通信與計算重疊時間的分析可以找出集群訓練中的慢主機或慢節點。通常,我們會根據關鍵指標通信矩陣、通信時長來分析性能問題。通信矩陣
21、通信矩陣圖圖 2-7 通信矩陣上圖是MindStudio Insight通信矩陣可視化界面,可以獲取各個通信域下,卡間的帶寬、傳輸大小、鏈路方式和傳輸時長情況等信息。1.可以先查看傳輸大小,分析在這個集合通信中,每張卡的傳輸量是否存在差異,是否有分配不均的情況。2.其次,再查看傳輸時長和帶寬情況,如果不同卡間的傳輸時長和帶寬數值異?;蛘卟町愡^大,那都意味著通信域中存在異常鏈路。通信時長通信時長通信時長是指計算卡之間進行通信所花費的時間。導致通信耗時過長的因素很多,比如通信協議配置錯誤、傳輸數據量過大等等,只有找到這些通信耗時過長的鏈路并妥善解決問題,才能讓數據在計算卡之間更加順暢地傳輸,進而提
22、高集群的整體性能。MindStudio大模型訓練性能瓶頸定位流程案例2 問題定位方法文檔版本 01(2025-01-13)版權所有 華為技術有限公司7用戶選擇具體通信域后,即可在通信時長界面中查看通信域中各個計算卡的耗時匯總情況,以及每個通信算子的時序圖和通信時長的分布圖,從而快速獲得通信算子的相對位置關系以及詳細通信數據。圖圖 2-8 通信耗時分析上圖是一份性能數據中某一個通信域內的通信耗時分析。從通信時長數據中,我們發現4卡的同步時間最長,0卡的同步時間最短,且同步時間差距較為明顯。同步時間較長一般意味著這張卡在等待其它卡,而同步時間較短一般意味著其它卡在等待這張卡,據此可以初步定界出4卡
23、是快卡,0卡是慢卡。MindStudio大模型訓練性能瓶頸定位流程案例2 問題定位方法文檔版本 01(2025-01-13)版權所有 華為技術有限公司83 性能調優案例性能調優案例案例描述MindStudio Insight分析定位mstt advisor輔助定位3.1 案例描述案例描述某多模態模型在訓練時突然出現性能大幅度劣化問題,我們將根據上述介紹的流程進行性能調優。使用Ascend PyTorch Profiler采集大模型訓練過程中的性能數據,此案例集群共有16張卡。3.2 MindStudio Insight 分析定位分析定位MindStudio Insight 加載全部數據,進行問
24、題定位。1.概覽界面分析:該通信域內各卡的通信時間占比也較高,總體計算時間(純計算時間+通信重疊時間)只占了總耗時的1/3,可以定界為通信問題。圖圖 3-1 概覽界面2.切換通信界面:發現存在大量卡間不同步現象(框中紅色部分),這說明很多算子在長時間的等待,挑選了一張最明顯的慢卡(第12卡)分析詳細原因。MindStudio大模型訓練性能瓶頸定位流程案例3 性能調優案例文檔版本 01(2025-01-13)版權所有 華為技術有限公司9圖圖 3-2 通信界面3.切換流水圖界面:明顯看出12卡存在大段的Free(空閑時間),同時,AscendCL側有大量的事件在占用資源。根據經驗,這很可能是由于該
25、卡內存占用過高,新申請數據時需要內存重整,從而導致存在較長空閑時間。我們可以使用exportPYTORCH_NPU_ALLOC_CONF=“expandable_segments:True”解決內存碎片問題,提高內存利用率。在完成調試后解決該性能問題。圖圖 3-3 流水圖界面MindStudio大模型訓練性能瓶頸定位流程案例3 性能調優案例文檔版本 01(2025-01-13)版權所有 華為技術有限公司10圖圖 3-4 流水圖界面3.3 mstt advisor 輔助定位輔助定位此案例還可以使用advisor輔助定位。執行msprof-analyze advisor all-d./profiling命令,獲得專家建議保存的文件路徑。其中./profiling為性能數據所在路徑。圖圖 3-5 advisor 輸出打開html文件,得到紅框中的建議,與我們分析結論一致,同樣可以解決性能問題。圖圖 3-6 advisor 專家建議MindStudio大模型訓練性能瓶頸定位流程案例3 性能調優案例文檔版本 01(2025-01-13)版權所有 華為技術有限公司11