人工智能集群的性能,尤其是機(jī)器學(xué)習(xí)訓(xùn)練集群,受到神經(jīng)網(wǎng)絡(luò)處理單元NPUs(即GPU或TPU)之間并行計算能力的顯著影響。在我們稱為縱向擴(kuò)展scale-up和橫向擴(kuò)展scale-out設(shè)計中,NPUs之間網(wǎng)絡(luò)的特性成為定義整個系統(tǒng)性能的關(guān)鍵因素之一。通過定義不同的并行策略,NPUs需要定期相互交換數(shù)據(jù),對模型的各個層輸出,或者梯度進(jìn)行數(shù)據(jù)通信,從而更快速地完成前向和反向的訓(xùn)練過程。
根據(jù)并行方案和機(jī)器學(xué)習(xí)框架的具體細(xì)節(jié),數(shù)據(jù)通信的要求可能會有所不同。通常,NPUs之間的數(shù)據(jù)傳輸被稱為集合通信。集合通信原理已將其形式化為幾種類型,具體取決于數(shù)據(jù)的初始和最終位置,以及是否需要在過程中執(zhí)行數(shù)學(xué)運(yùn)算。常用的類型包括廣播和收集、ReduceScatter和AllGather、AllReduce和AlltoAll。操作名稱中存在“Reduce”關(guān)鍵字表示該操作對數(shù)據(jù)進(jìn)行計算。
集合通信算子
集合通信可以通過多種算法來實(shí)現(xiàn)。其中一些算法較為簡單,因此性能較低;有些算法利用操作的性質(zhì),通常是網(wǎng)絡(luò)拓?fù)?,完成得更快。AllReduce的知名算法包括單向環(huán)和雙向環(huán)、雙二進(jìn)制樹以及Halving-Double算法,每種算法根據(jù)NPUs的數(shù)量以及它們?nèi)绾位ミB,表現(xiàn)出不同的性能。
圖1、8個計算節(jié)點(diǎn)的AllReduce單向環(huán)
圖2、8個計算節(jié)點(diǎn)的AllReduce Halving-Double
Rank 與通信集群大小
在集合通信中,每個參與交換數(shù)據(jù)消息的單元稱為一個Rank。在大多數(shù)實(shí)際應(yīng)用中,每個參與操作的NPU通常對應(yīng)一個Rank。集合中所有Rank總數(shù)稱為通信集群大小,用n表示,Rank是使用從0開始的整數(shù)ID進(jìn)行順序編號的,因此,最大的Rank ID是n - 1。在像廣播(Broadcast)和收集(Gather)這樣的集合通信操作中,有一個專門的發(fā)送者或接收者,稱為根,默認(rèn)情況下使用Rank ID 0作為根。
集合通信庫
用于在人工智能集群中實(shí)現(xiàn)集合操作的軟件通常稱作“集合通信庫”(Collective Communication Library)。其中一個最早的庫 NCCL由NVIDIA開發(fā)。NCCL有多個衍生版本,其中一些是公開的,而其他一些則是私有的。
通信完成時間
集群完成集合通信操作的速度越快,訓(xùn)練任務(wù)就能越快地在昂貴的NPUs上進(jìn)行下一輪計算。因此,我們致力于改進(jìn)的是操作完成時間,即集合完成時間(Collective Completion Time,CCT),我們通常以秒為單位進(jìn)行測量。
通信數(shù)據(jù)大小
集合通信操作的目標(biāo)是移動數(shù)據(jù),因此數(shù)據(jù)的大小顯著影響操作所需的時間。在集合通信基準(zhǔn)測試方法中,我們將一個Rank的通信數(shù)據(jù)大小定義為S,并以字節(jié)(B)為單位進(jìn)行設(shè)置。
根據(jù)具體的操作和實(shí)現(xiàn)方式,集合通信算法會將數(shù)據(jù)大小S劃分為多個算法數(shù)據(jù)塊,每個塊的大小為c,并且每個塊在集合的Rank之間移動時都會遵循特定的路徑。塊的概念對于表達(dá)和理解集合操作算法的邏輯非常有用。
數(shù)據(jù)大小S參數(shù)具有幾個值得注意的特性:
在大多數(shù)集合通信操作中,所有Rank的數(shù)據(jù)大小S都是一致的。但也有一些例外,例如在廣播操作中,只有一個Rank提供輸入數(shù)據(jù)。在AlltoAll-v操作中,每個NPU的數(shù)據(jù)大小S可能不同。
每個Rank通過網(wǎng)絡(luò)發(fā)送的有效負(fù)載量D通常與S不同。這取決于具體的集合操作和所采用的算法。例如,在AlltoAll并行操作中,每個秩會保留一個大小為c = S/n的塊給自己,并通過網(wǎng)絡(luò)發(fā)送D = c * (n – 1)的數(shù)據(jù)。而在AllReduce環(huán)形操作中,每個秩將發(fā)送的數(shù)據(jù)量是D = 2 * c *(n – 1),因?yàn)檫@個操作是由ReduceScatter和AllGather兩個步驟組成的復(fù)合操作。
在真實(shí)的AI/ML訓(xùn)練作業(yè)中,集合通信操作使用的數(shù)據(jù)大小受同一作業(yè)內(nèi)部和不同作業(yè)之間的多種因素影響。由于AI集群基礎(chǔ)設(shè)施在其生命周期內(nèi)需要支持不斷變化的作業(yè),因此我們需要了解集合通信操作的性能如何隨數(shù)據(jù)大小變化。這就是為什么集合通信基準(zhǔn)測試方法會遍歷不同的數(shù)據(jù)大小,以測量每個S值的關(guān)鍵指標(biāo)的主要原因。
在AI集群中,大多數(shù)操作移動的是位于與NPUs直接連接的內(nèi)存中的數(shù)據(jù),而不是CPU內(nèi)存中的數(shù)據(jù)。因此,我們可以通過檢查現(xiàn)代NPUs的內(nèi)存量來確定S的上限,這樣做的實(shí)際意義在于基準(zhǔn)測試。以NVIDIA H100 SXM為例,它擁有80GB的內(nèi)存。由于這部分內(nèi)存需要在AI模型的權(quán)重、訓(xùn)練數(shù)據(jù)和梯度之間共享,因此在這種情況下,32GB可能是一個實(shí)際的數(shù)據(jù)大小限制。
算法帶寬
集合通信操作領(lǐng)域的研究人員不斷發(fā)現(xiàn)新的算法,這些算法顯著提高了集合通信完成時間(CCT),這通常歸功于對底層網(wǎng)絡(luò)拓?fù)涞睦斫狻赐負(fù)涓兄?。由于CCT直接依賴于數(shù)據(jù)大小S,而S是特定于任務(wù)的,因此引入一個新的指標(biāo)來衡量算法性能是很有幫助的,這個指標(biāo)可以在不同的任務(wù)之間進(jìn)行比較。類似于我們通過速度而不是旅行時間來比較汽車的性能,這個指標(biāo)就是算法帶寬(algbw)。它定義為數(shù)據(jù)大小S除以CCT,并以千兆字節(jié)每秒(GB/s)為單位進(jìn)行測量。
請注意,盡管飛機(jī)的平均速度高于汽車,但由于等待時間,我們并不使用它們進(jìn)行短距離旅行。類似地,當(dāng)數(shù)據(jù)大小太小,無法完全加載網(wǎng)絡(luò)時,CCT的一大部分時間將花費(fèi)在啟動和停止數(shù)據(jù)傳輸上。在這種情況下,algbw將不是一個有意義的指標(biāo),因?yàn)樗鼤诓煌臄?shù)據(jù)大小之間顯著變化。在比較哪個算法性能更好時,您可能需要回到使用CCT。
為了說明這一點(diǎn),圖3是一個基準(zhǔn)測試輸出,其中在較小的數(shù)據(jù)大小上,CCT保持在7毫秒左右,但algbw每次數(shù)據(jù)大小翻倍時都會翻倍。另一方面,在較大的數(shù)據(jù)大小上,algbw趨于穩(wěn)定在25GB/s,而CCT則隨著數(shù)據(jù)大小的增加而繼續(xù)增加。
圖3、不同集合通信大小下的算法帶寬表現(xiàn)
注意:由于算法在執(zhí)行時實(shí)際傳輸?shù)挠行ж?fù)載D與數(shù)據(jù)大小S之間的區(qū)別,將算法帶寬(algbw)與網(wǎng)絡(luò)接口的理論速度進(jìn)行比較是不恰當(dāng)?shù)摹?/p>
總線帶寬
雖然CCT和algbw依賴于數(shù)據(jù)大小S,但通信集群大小n的影響就不那么明顯了。根據(jù)算法的不同,這種依賴性可能更直接或更間接。例如,對于AlltoAll并行操作,在保持相同數(shù)據(jù)大小的情況下增加集合中的Rank數(shù),會導(dǎo)致算法數(shù)據(jù)塊c = S / n變小。因此,更大的帶寬比例會浪費(fèi)在數(shù)據(jù)包頭上,CCT大約會增加相同的比例。相比之下,對于AllReduce環(huán)形操作,通信集群中的Rank數(shù)越多,每個數(shù)據(jù)塊為了完成環(huán)形需要穿越的跳數(shù)就越多,導(dǎo)致CCT線性增加。我們需要一個指標(biāo)來描述通信集群的性能,這個指標(biāo)與訓(xùn)練作業(yè)的大小無關(guān)。
為了這個目的,我們可以想象由集合通信算法定義的數(shù)據(jù)塊移動類似于汽車在城市中的移動,其中停車場、車道、道路和交叉口分別代表內(nèi)存、NIC、電線和開關(guān),而汽車就是數(shù)據(jù)塊。當(dāng)與城市街道相比較時,這里唯一真正的延伸是所有數(shù)據(jù)塊都沿著完全相同的模式移動,并且不會分心。有了這個類比,我們可以很有把握地猜測,汽車到達(dá)最終目的地所需的時間將很大程度上受到其路徑上最慢路段的影響——瓶頸路段。當(dāng)瓶頸路段達(dá)到其容量時,需要通過的汽車數(shù)量翻倍,它們通過所需的時間也將翻倍。換句話說,瓶頸的峰值吞吐量不依賴于城市中停車場的數(shù)量(通信集群大小n)或汽車的數(shù)量(通信數(shù)據(jù)大小S)。
這個類比的另一個用處是,盡管瓶頸的峰值吞吐量不依賴于相鄰街道和汽車移動的模式(拓?fù)浜退惴ǎ衅囃瓿陕眯兴璧臅r間將非常取決于它們所采取的路線,以及它們在城市中的數(shù)量。
總結(jié)來說,只要汽車(數(shù)據(jù)塊)以峰值數(shù)量穿越瓶頸,達(dá)到其容量(帶寬),它將決定我們城市基礎(chǔ)設(shè)施(AI集群)的性能——有效負(fù)載的移動速率無法超越系統(tǒng)中瓶頸的峰值容量。描述AI基礎(chǔ)設(shè)施對集合通信操作瓶頸的指標(biāo)稱為總線帶寬(busbw),并以千兆字節(jié)每秒(GB/s)為單位測量。
對比理想CCT
一些集合通信基準(zhǔn)測試工具無法深入了解底層的L1-4 OSI堆棧,因此無法在測試過程中提供網(wǎng)絡(luò)利用率的信息,也無法判斷是否還有優(yōu)化空間。在創(chuàng)建AI Data Center Builder軟件時,Keysight團(tuán)隊考慮到了這一點(diǎn),并融入了對底層的洞察。KAI Collective Benchmarks應(yīng)用程序會計算每個集合通信算法的理想CCT,并將其與實(shí)際測量得到的CCT值進(jìn)行比較。因此,由KAI Collective Benchmarks產(chǎn)生的數(shù)據(jù)包含了與理想CCT值的比較,指標(biāo)形式為百分比。
圖4、KAI Collective Benchmarks 綜合結(jié)果中的理想百分比
數(shù)據(jù)塊完成時間分布
許多集合通信算法在每次Rank移動數(shù)據(jù)塊時都展現(xiàn)出對稱性。這是一個重要結(jié)論:當(dāng)系統(tǒng)為每個數(shù)據(jù)塊分配相等帶寬時,即實(shí)現(xiàn)了帶寬公平性,此時性能最佳。缺乏公平性會導(dǎo)致數(shù)據(jù)移動的尾延遲增加。一種評估公平性的方法是測量每個數(shù)據(jù)塊的完成時間(DCT),并報告最小值、最大值,以及第50和第95百分位數(shù)。在具有帶寬公平性的系統(tǒng)中,最小和最大DCT值應(yīng)當(dāng)較為接近。如果它們相差較大,您可以通過檢查P50和P95的結(jié)果來判斷異常值是更多地出現(xiàn)在快速還是慢速一側(cè)。這些指標(biāo)對于網(wǎng)絡(luò)工程師來說非常熟悉,并且比學(xué)術(shù)文獻(xiàn)中提到的其他公平性指標(biāo)更容易在團(tuán)隊和組織之間使用。
請注意,只有在集合算法中所有數(shù)據(jù)塊的大小相等時,報告DCT百分位數(shù)才是有意義的。
結(jié)論
集合通信操作的基準(zhǔn)測試是理解分布式AI基礎(chǔ)設(shè)施性能極限的基礎(chǔ)性方法。它是AI集群設(shè)計和優(yōu)化過程中尋找改進(jìn)方案的有用工具。無論是開源還是商業(yè)實(shí)現(xiàn),這些工具都圍繞著一組共同的輸入?yún)?shù)和測量指標(biāo)進(jìn)行操作。在本文中,我們提供了這些參數(shù)的定義,并詳細(xì)闡述了它們的含義,以助力術(shù)語的標(biāo)準(zhǔn)化。
術(shù)語和定義一覽表
術(shù)語
Collective Operation
定義
集合通信算子,這些通信模式涉及一組進(jìn)程間的數(shù)據(jù)交換,是擴(kuò)展型AI/ML集群中網(wǎng)絡(luò)通信的基本單元,負(fù)責(zé)在GPU之間移動數(shù)據(jù)。
單位/值
Broadcast
Gather
Scatter
ReduceScatter
AllGather
AllReduce
AlltoAll
術(shù)語
Rank
定義
在集合通信操作中交換消息的端點(diǎn)的標(biāo)識符。通常,一個Rank代表一個GPU。在某些情況下,一個GPU可以有多個Rank。
單位/值
從0開始的整數(shù)
術(shù)語
Collective Size(n)
定義
集合通信中Rank的數(shù)量
單位/值
2或大于2的整數(shù)
術(shù)語
Data Size(S)
定義
集合通信操作中,單個Rank輸入的數(shù)據(jù)大小
單位/值
Bytes
術(shù)語
Collective Completion Time (CCT)
定義
集合通
集合通信操作完成所需的時間,尤其適用于比較不同集合通信算法在處理不同數(shù)據(jù)大小時的性能表現(xiàn)。
單位/值
秒
術(shù)語
Algorithm Bandwidth (algbw)
定義
一種用于比較不同數(shù)據(jù)大小下集合通信算法性能的指標(biāo)。算法帶寬(algbw)= 數(shù)據(jù)大小S / 集合完成時間(CCT)
單位/值
GB/s
術(shù)語
Bus Bandwidth (busbw)
定義
描述了集合通信算法在AI基礎(chǔ)設(shè)施中的瓶頸性能。該公式是特定于算法的。
單位/值
GB/s
術(shù)語
Ideal %
定義
將測量的集合通信完成時間(CCT)與給定算法、傳輸開銷和網(wǎng)絡(luò)接口速度的最小理論值進(jìn)行比較。
單位/值
秒
術(shù)語
Data chunk Completion Time (DCT)
定義
在兩個Rank之間傳輸一個數(shù)據(jù)塊所需的時間。測量集合通信操作中每個數(shù)據(jù)塊完成時間(DCT)的值,并報告最小值、最大值、第50百分位數(shù)(P50)和第95百分位數(shù)(P95)有助于理解系統(tǒng)中的帶寬公平性。
單位/值
秒
關(guān)于是德科技
是德科技(NYSE:KEYS)啟迪并賦能創(chuàng)新者,助力他們將改變世界的技術(shù)帶入生活。作為一家標(biāo)準(zhǔn)普爾 500 指數(shù)公司,我們提供先進(jìn)的設(shè)計、仿真和測試解決方案,旨在幫助工程師在整個產(chǎn)品生命周期中更快地完成開發(fā)和部署,同時控制好風(fēng)險。我們的客戶遍及全球通信、工業(yè)自動化、航空航天與國防、汽車、半導(dǎo)體和通用電子等市場。我們與客戶攜手,加速創(chuàng)新,創(chuàng)造一個安全互聯(lián)的世界。
-
通信
+關(guān)注
關(guān)注
18文章
6042瀏覽量
136139 -
gpu
+關(guān)注
關(guān)注
28文章
4752瀏覽量
129057 -
AI
+關(guān)注
關(guān)注
87文章
31127瀏覽量
269447 -
人工智能
+關(guān)注
關(guān)注
1792文章
47422瀏覽量
238944 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8425瀏覽量
132769
原文標(biāo)題:集合通信與AI基礎(chǔ)架構(gòu)
文章出處:【微信號:是德科技KEYSIGHT,微信公眾號:是德科技KEYSIGHT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論