在 MLPerf HPC v1 . 0 中, NVIDIA 供電系統(tǒng)贏得了五項(xiàng)新的行業(yè)指標(biāo)中的四項(xiàng),這些指標(biāo)主要關(guān)注 HPC 中的人工智能性能。作為一個(gè)全行業(yè)人工智能聯(lián)盟, MLPerf HPC 評(píng)估了一套性能基準(zhǔn),涵蓋了廣泛使用的人工智能工作負(fù)載。
在這一輪中,與 MLPerf 0 . 7 的強(qiáng)大擴(kuò)展性結(jié)果相比, NVIDIA 在 CosmoFlow 上的性能提高了 5 倍,在 DeepCAM 上的性能提高了 7 倍。這一強(qiáng)大的表現(xiàn)得益于成熟的 NVIDIA AI 平臺(tái)和全套軟件。
提供豐富多樣的庫(kù)、 SDK 、工具、編譯器和探查器,很難知道在正確的情況下何時(shí)何地應(yīng)用正確的資產(chǎn)。這篇文章詳細(xì)介紹了各種場(chǎng)景的工具、技術(shù)和好處,并概述了 CosmoFlow 和 DeepCAM 基準(zhǔn)測(cè)試所取得的成果。
我們已經(jīng)為 MLPerf Training v1.0 和 MLPerf Inference v1.1 發(fā)布了類似的指南,推薦用于其他面向基準(zhǔn)測(cè)試的案例。
調(diào)整計(jì)劃
我們使用包括 NVIDIA DALI 在內(nèi)的工具對(duì)代碼進(jìn)行了優(yōu)化,以加速數(shù)據(jù)處理,以及 CUDA Graphs 減少了小批量延遲,從而有效地?cái)U(kuò)展到 1024 個(gè)或更多 GPU 。我們還應(yīng)用了 NVIDIA SHARP ,通過(guò)將一些操作卸載到網(wǎng)絡(luò)交換機(jī)來(lái)加速通信。
我們提交的文件中使用的軟件可從 MLPerf repository 獲得。我們定期向 NGC catalog 添加新工具和新版本,這是我們針對(duì)預(yù)訓(xùn)練 AI 模型、行業(yè)應(yīng)用程序框架、 GPU 應(yīng)用程序和其他軟件資源的軟件中心。
主要性能優(yōu)化
在本節(jié)中,我們將深入討論為 MLPerf HPC 1 . 0 實(shí)現(xiàn)的選定優(yōu)化。
使用 NVIDIA DALI 庫(kù)進(jìn)行數(shù)據(jù)預(yù)處理
在每次迭代之前,從磁盤獲取數(shù)據(jù)并進(jìn)行預(yù)處理。我們從默認(rèn)的數(shù)據(jù)加載器移到了 NVIDIA DALI library 。這為 GPU 提供了優(yōu)化的數(shù)據(jù)加載和預(yù)處理功能。
DALI 庫(kù)使用 CPU 和 GPU 的組合,而不是在 CPU 上執(zhí)行數(shù)據(jù)加載和預(yù)處理并將結(jié)果移動(dòng)到 GPU 。這將為即將到來(lái)的迭代帶來(lái)更有效的數(shù)據(jù)預(yù)處理。優(yōu)化后, CosmoFlow 和 DeepCAM 的速度都顯著加快。 DeepCAM 實(shí)現(xiàn)了超過(guò) 50% 的端到端性能提升。
此外, DALI 還為即將到來(lái)的迭代提供異步數(shù)據(jù)加載,以消除關(guān)鍵路徑的 I / O 開銷。啟用此模式后,我們看到 DeepCAM 額外增加了 70% 。
將通道應(yīng)用于最后的 NHWC 布局
默認(rèn)情況下, DeepCAM 基準(zhǔn)使用 NCHW 布局作為激活張量。我們使用 PyTorch 的通道 last ( NHWC 布局)支持來(lái)避免額外的轉(zhuǎn)置內(nèi)核。 cuDNN 中的大多數(shù)卷積核都針對(duì) NHWC 布局進(jìn)行了優(yōu)化。
因此,在框架中使用 NCHW 布局需要額外的轉(zhuǎn)置內(nèi)核,以便從 NCHW 轉(zhuǎn)換到 NHWC ,從而實(shí)現(xiàn)高效的卷積運(yùn)算。在框架中使用 NHWC 布局避免了這些冗余拷貝,并在 DeepCAM 模型上實(shí)現(xiàn)了約 10% 的性能提升。 NHWC support 在 PyTorch 框架中以 beta 模式提供。
CUDA 圖
CUDA 圖形允許啟動(dòng)由一系列內(nèi)核組成的單個(gè)圖形,而不是單獨(dú)啟動(dòng)從 CPU 到 GPU 的每個(gè)內(nèi)核。此功能最大限度地減少了 CPU 在每次迭代中的參與,通過(guò)最大限度地減少延遲(尤其是在強(qiáng)擴(kuò)展場(chǎng)景中)顯著提高了性能。
MXNet 先前添加了 CUDA 圖形支持,而 CUDA Graphs support 最近也添加到了 PyTorch 。 PyTorch 中的 CUDA 圖形支持使 DeepCAM 在強(qiáng)擴(kuò)展場(chǎng)景中的端到端性能提高了約 15% ,這對(duì)延遲和抖動(dòng)最為敏感。
使用 MPI 進(jìn)行高效的數(shù)據(jù)暫存
在伸縮性較弱的情況下,分布式文件系統(tǒng)的性能無(wú)法滿足 GPU 的需求。為了增加總存儲(chǔ)帶寬,我們將數(shù)據(jù)集放入 DeepCAM 的節(jié)點(diǎn)本地 NVME 內(nèi)存中。
由于各個(gè)實(shí)例都很小,我們可以靜態(tài)地分割數(shù)據(jù),因此每個(gè)節(jié)點(diǎn)只需要準(zhǔn)備完整數(shù)據(jù)集的一小部分。該解決方案如圖 1 所示。這里,我們用 M 表示實(shí)例數(shù),用 N 表示每個(gè)實(shí)例的秩數(shù)。
圖 1 :將列組聚集到碎片中。
請(qǐng)注意,跨實(shí)例,具有相同列組 ID 的每個(gè)列組使用相同的數(shù)據(jù)碎片。這意味著在本機(jī)上,每個(gè)數(shù)據(jù)碎片被讀取 M 次。為了減輕文件系統(tǒng)的壓力,我們創(chuàng)建了與實(shí)例正交的數(shù)據(jù)子硬盤,如圖 2 所示。
圖 2 :亞硬化的演示。
這樣,每個(gè)文件從全局文件系統(tǒng)只讀一次。最后,每個(gè)實(shí)例都需要接收所有數(shù)據(jù)。為此,我們創(chuàng)建了與實(shí)例內(nèi)通訊器正交的新 MPI 通訊器,也就是說(shuō),我們將具有相同列組 id 的所有實(shí)例列組組合到相同的實(shí)例間通訊器中。然后,我們可以使用 MPI allgather 將各個(gè)子硬盤組合成原始碎片的 M 個(gè)副本。
圖 3 :子硬塊的分布。
我們不按順序執(zhí)行這些步驟,而是使用批處理來(lái)創(chuàng)建一個(gè)管道,該管道與子硬盤的數(shù)據(jù)讀取和分發(fā)重疊。為了提高讀寫性能,我們進(jìn)一步實(shí)現(xiàn)了一個(gè)小型輔助工具,它使用 O _ DIRECT 來(lái)提高 I / O 帶寬。
優(yōu)化使 DeepCAM 基準(zhǔn)測(cè)試的端到端加速比超過(guò) 2 倍。這在提交文件 repository 中提供。
損失函數(shù)的混合編程
使用命令式編程可以靈活地定義和運(yùn)行模型,這樣定義一個(gè)機(jī)器學(xué)習(xí)模型就像寫一個(gè)python程序。與此相對(duì)的是符號(hào)式編程,它會(huì)先定義計(jì)算過(guò)程,然后再執(zhí)行。這種編程方法允許執(zhí)行引擎進(jìn)行各種優(yōu)化,但丟失了命令式方法的靈活性。
MXNet 框架采用了合并這兩種方法的混合式編程。命令式定義的計(jì)算可以被編譯成符號(hào)式,并在可能時(shí)進(jìn)行優(yōu)化。CosmoFlow 將模型混合式編程進(jìn)行了擴(kuò)展,把損失函數(shù)也包含進(jìn)來(lái)。
圖 4 :損失函數(shù)的模型混合式。
這允許將損耗計(jì)算中的元素操作與 CosmoFlow 模型的縮放激活輸出進(jìn)行融合,從而減少總體迭代延遲。優(yōu)化使 CosmoFlow 的端到端性能提高了近 5% 。
節(jié)間均采用夏普處理,降低了集體成本
SHARP 允許將集合操作從 CPU 卸載到節(jié)間網(wǎng)絡(luò)結(jié)構(gòu)中的交換機(jī)。這有效地將 allreduce 操作的 InfiniBand 網(wǎng)絡(luò)的節(jié)間帶寬增加了一倍。這種優(yōu)化可使 MLPerf HPC 基準(zhǔn)測(cè)試的性能提高高達(dá) 5% ,特別是在強(qiáng)擴(kuò)展場(chǎng)景中。
繼續(xù)使用 MLPerf HPC
科學(xué)家們正在加速取得突破,部分原因是人工智能和高性能計(jì)算相結(jié)合,能夠比傳統(tǒng)方法更快、更準(zhǔn)確地提供洞察力。
MLPerf HPC v1 . 0 反映了超級(jí)計(jì)算行業(yè)對(duì)客觀、同行評(píng)審的方法的需求,以測(cè)量和比較與 HPC 相關(guān)用例的 AI 培訓(xùn)性能。在這一輪中, NVIDIA 計(jì)算平臺(tái)通過(guò)損壞所有三個(gè)性能基準(zhǔn)來(lái)證明清晰的領(lǐng)導(dǎo),同時(shí)也證明了兩個(gè)吞吐量測(cè)量的最高效率。
關(guān)于作者
Sukru Burc Eryilmaz 是 NVIDIA 計(jì)算機(jī)體系結(jié)構(gòu)的高級(jí)架構(gòu)師,他致力于在單節(jié)點(diǎn)和超級(jí)計(jì)算機(jī)規(guī)模上改進(jìn)神經(jīng)網(wǎng)絡(luò)訓(xùn)練的端到端性能。他從斯坦福大學(xué)獲得博士學(xué)位,并從比爾肯特大學(xué)獲得學(xué)士學(xué)位。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4986瀏覽量
103067 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7494瀏覽量
87962 -
MLPerf
+關(guān)注
關(guān)注
0文章
35瀏覽量
641
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論