深度解讀昇騰CANN多流並行技術,提高硬體資源利用率

华为云开发者联盟發表於2024-07-02

本文分享自華為雲社群《深度解讀昇騰CANN多流並行技術,提高硬體資源利用率》,作者:昇騰CANN。

隨著人工智慧應用日益成熟,文字、圖片、音訊、影片等非結構化資料的處理需求呈指數級增長,資料處理過程從通用計算逐步向異構計算過渡。面對多樣化的計算需求,昇騰AI處理器內建豐富的硬體計算資源用於處理不同的計算任務。其中,AI Core、Vector Core與AI CPU分別負責AI計算場景下的矩陣、向量與標量計算,DVPP支援影像、影片等資料的加速處理,而HCCL作為華為集合通訊庫,則提供單機多卡及多機多卡間的資料並行、模型並行集合通訊方案。

1.png

在給定硬體算力的情況下,如何高效利用這些計算資源、提高計算效率顯得尤其重要。多樣化的計算任務以task的形式下發到各硬體資源執行,GE(Graph Engine)圖引擎採用多流並行演算法,在滿足計算圖任務內部依賴關係的前提下,支援高效併發執行計算任務,從而大大提高硬體資源利用率和AI計算效率。

1 多流並行技術實現

計算圖編譯時,GE會為計算圖中的每個節點分配一個硬體資源(即對應一種執行引擎),在任務執行時按編譯時分配的stream排程順序下發到對應的引擎執行。

各引擎使用不同的硬體計算資源,若同一時間只能執行某種引擎的一個task,則其餘引擎會處於閒置狀態,導致硬體資源嚴重浪費,影響端到端效能。若採用多流並行技術,在滿足依賴關係的前提下,將不同task下發到對應的引擎上,驅動各個引擎並行執行,則可大大提升硬體資源的利用率。

GE採用了多流並行演算法,將計算圖的拓撲結構、硬體資源規格和執行引擎作為計算要素,為每個節點分配Stream。Stream與硬體資源繫結,任務執行時會按編譯時分配的stream排程順序下發到對應的引擎執行。同一Stream上的任務序列執行,不同Stream間的任務併發執行,從而提升硬體計算資源利用率。

GE多流並行技術的實現流程如下:

1. 基於網路節點功能和硬體資源特性,給每個節點分配執行引擎。

2. 基於網路拓撲結構和每個節點的執行引擎,為每個節點分配Stream。分配Stream時會同時考慮硬體規格、資源利用率等,提升併發度。

3. 不同Stream間可以進行同步來保證執行時序。

GE多流並行主要包含以下場景:

1. 計算與通訊引擎並行:計算運算元(如Convolution、Add等)會生成計算task,通訊運算元(HcomAllReduce等)會生成卡間通訊task,兩類task無拓撲依賴時可併發執行。

2.png

2. 不同計算引擎並行:矩陣運算(AI Core)、向量運算(VectorCore)和影像預處理(DVPP)等不同引擎的task,可下發到不同的引擎上併發執行。

3.png

3. 相同計算引擎內並行:當計算圖中某個節點無法佔滿一個計算引擎的全部計算資源,且拓撲結構可併發時,該引擎的不同拓撲集合的task可併發執行。

4.png

2 多流並行執行效果

並行執行效果跟網路拓撲結構、節點引擎型別、AI處理器能力等因素存在相關性,理論最優並行場景下,整網執行時長為耗時最長的Stream的執行時長,其餘Stream的執行時長都掩蓋在該Stream的時長內。如下圖所示,通訊耗時可以掩蓋在計算耗時內,向量計算耗時可以掩蓋在矩陣運算耗時內。

5.png

基於Atlas 800I A2推理產品,在經過計算通訊流水並行最佳化後,LLaMA-65B引數模型全量圖執行效能提升30%左右,盤古系列71B引數模型全量圖執行效能提升15%左右。

然而,多流並行是一種資源換執行效率的技術,會佔用更多的Device流資源,一般來說,靜態shape場景下開啟多流並行後,記憶體佔用增加7%左右,使用者可結合實際情況選擇使用。

3 如何使能多流並行技術

GE的多流並行技術是基於深度學習計算圖模式下的計算最佳化手段,在靜態shape的離線推理場景和Pytorch框架的計算圖模式下預設使能多流並行技術,開發者可透過相應的引數enable_single_stream靈活控制。

import torchair as tng
config = tng.CompilerConfig()
# 關閉圖單流執行功能
config.ge_config.enable_single_stream = False
# 開啟計算通訊並行功能
config.experimental_config.cc_parallel_enable = True
npu_backend = tng.get_npu_backend(compiler_config=config)
...
model = Model()
model = torch.compile(model, backend=npu_backend, dynamic=False)

4 獲取學習資源

GE多流並行技術的介紹就到這裡,歡迎大家關注後續技術分享。如需獲取更多學習資源請登入昇騰社群

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章