精品国产av一区二区三区,国产av一区二区三区,丰满少妇大乳高潮在线,9lporm自拍视频区九色

當前位置:首頁 > 最新資訊 > 行業(yè)資訊

在多個GPU上進行分布式訓練

為什么以及如何使用多個GPU進行分布式訓練

大規(guī)模訓練AI模型的數(shù)據(jù)科學家或機器學習愛好者將不可避免地達到上限。當數(shù)據(jù)集大小增加時,處理時間可能會從幾分鐘增加到幾小時到幾天到幾周!數(shù)據(jù)科學家轉(zhuǎn)向包含多個GPU以及機器學習模型的分布式訓練,以在很短的時間內(nèi)加速和開發(fā)完整的AI模型。

我們將討論GPU與CPU對機器學習的用處,為什么使用多個GPU進行分布式訓練最適合大型數(shù)據(jù)集,以及如何開始使用最佳實踐訓練機器學習模型。

為什么GPU適合訓練神經(jīng)網(wǎng)絡(luò)?

訓練階段是構(gòu)建神經(jīng)網(wǎng)絡(luò)或機器學習模型中資源最密集的部分。神經(jīng)網(wǎng)絡(luò)在訓練階段需要數(shù)據(jù)輸入。該模型基于數(shù)據(jù)集之間所做的更改,基于層中處理的數(shù)據(jù)輸出相關(guān)預(yù)測。第一輪輸入數(shù)據(jù)本質(zhì)上形成了機器學習模型理解的基線;隨后的數(shù)據(jù)集計算權(quán)重和參數(shù)以訓練機器預(yù)測精度。

對于簡單或少量的數(shù)據(jù)集,等待幾分鐘是可行的。然而,隨著輸入數(shù)據(jù)量的增加,訓練時間可能會達到數(shù)小時、數(shù)天甚至更長。

CPU難以處理大量數(shù)據(jù),例如對數(shù)十萬個浮點數(shù)的重復(fù)計算。深度神經(jīng)網(wǎng)絡(luò)由矩陣乘法和向量加法等操作組成。

提高此過程速度的一種方法是使用多個GPU切換分布式訓練。基于分配給訓練階段的張量核心的數(shù)量,用于分布式訓練的GPU可以比CPU更快地移動過程。

GPU或圖形處理單元最初設(shè)計用于處理重復(fù)計算,為視頻游戲的圖形推斷和定位數(shù)十萬個三角形。再加上大內(nèi)存帶寬和執(zhí)行數(shù)百萬次計算的先天能力,GPU非常適合通過數(shù)百個epoch(或模型迭代)進行神經(jīng)網(wǎng)絡(luò)訓練所需的快速數(shù)據(jù)流,非常適合深度學習訓練。

什么是機器學習中的分布式訓練?

分布式訓練承擔訓練階段的工作量并將其分布在多個處理器上。這些微型處理器協(xié)同工作以加快訓練過程,而不會降低機器學習模型的質(zhì)量。由于數(shù)據(jù)被并行劃分和分析,每個微型處理器在不同批次的訓練數(shù)據(jù)上訓練機器學習模型的副本。

結(jié)果在處理器之間進行通信(當批次完全完成時或每個處理器完成其批次時)。下一次迭代或epoch再次從一個稍微新訓練的模型開始,直到它達到預(yù)期的結(jié)果。

在微型處理器(在我們的例子中是GPU)之間分配訓練有兩種最常見的方法:數(shù)據(jù)并行和模型并行。

數(shù)據(jù)并行

數(shù)據(jù)并行是數(shù)據(jù)的劃分并將其分配給每個GPU以使用相同的AI模型進行評估。一旦所有GPU完成前向傳遞,它們就會輸出梯度或模型的學習參數(shù)。由于有多個梯度,只有1個AI模型需要訓練,梯度被編譯、平均、縮減為單個值,最終更新模型參數(shù),用于下一個epoch的訓練。這可以同步或異步完成。

同步數(shù)據(jù)并行是我們的GPU組必須等到所有其他GPU完成梯度計算,然后再平均并減少梯度以更新模型參數(shù)。一旦更新了參數(shù),模型就可以繼續(xù)下一個epoch。

異步數(shù)據(jù)并行是GPU獨立訓練而無需執(zhí)行同步梯度計算的地方。相反,梯度在完成時會傳回參數(shù)服務(wù)器。每個GPU不等待另一個GPU完成計算,也不計算梯度平均,因此是異步的。異步數(shù)據(jù)并行需要一個單獨的參數(shù)服務(wù)器用于模型的學習部分,因此成本更高一些。

在每一步之后計算梯度并對訓練數(shù)據(jù)進行平均是最耗費計算的。由于它們是重復(fù)計算,因此GPU一直是加速此步驟以達到更快結(jié)果的選擇。數(shù)據(jù)并行性相當簡單且經(jīng)濟高效,但是有時模型太大而無法容納在單個微型處理器上。

模型并行

與拆分數(shù)據(jù)相比,模型并行性在工作GPU之間拆分模型(或訓練模型的工作負載)。分割模型將特定任務(wù)分配給單個工作人員或多個工作人員以優(yōu)化GPU使用。模型并行可以被認為是一條人工智能裝配線,它創(chuàng)建了一個多層網(wǎng)絡(luò),可以處理數(shù)據(jù)并行不可行的大型數(shù)據(jù)集。模型并行性需要專家來確定如何對模型進行分區(qū),但會帶來更好的使用和效率。

多GPU分布式訓練更快嗎?

購買多個GPU可能是一項昂貴的投資,但比其他選擇要快得多。CPU也很昂貴,不能像GPU那樣擴展。跨多個層和多個GPU訓練機器學習模型以進行分布式訓練可提高訓練階段的生產(chǎn)力和效率。

當然,這意味著減少訓練模型所花費的時間,但它也使您能夠更快地產(chǎn)生(和重現(xiàn))結(jié)果并在任何事情失控之前解決問題。在為您的努力產(chǎn)生結(jié)果方面,它是訓練數(shù)周與數(shù)小時或數(shù)分鐘訓練之間的差異(取決于使用的GPU數(shù)量)。

您需要解決的下一個問題是如何開始在機器學習模型中使用多個GPU進行分布式訓練。

如何使用多個GPU進行訓練?

如果您想使用多個GPU處理分布式訓練,首先要確定您是否需要使用數(shù)據(jù)并行性模型并行性。該決定將基于數(shù)據(jù)集的大小和范圍。

您能否讓每個GPU使用數(shù)據(jù)集運行整個模型?或者在具有更大數(shù)據(jù)集的多個GPU上運行模型的不同部分是否會更省時?通常,數(shù)據(jù)并行是分布式學習的標準選項。從同步數(shù)據(jù)并行開始,然后深入研究模型并行或異步數(shù)據(jù)并行,其中需要單獨的專用參數(shù)服務(wù)器。

我們可以開始在您的分布式訓練過程中將您的GPU鏈接在一起。

根據(jù)您的并行決策分解您的數(shù)據(jù)。例如,您可以使用當前數(shù)據(jù)批次(全局批次)并將其劃分為八個子批次(本地批次)。如果全局批次有512個樣本并且您有8個GPU,則8個本地批次中的每一個都將包含64個樣本。

八個GPU或迷你處理器中的每一個都獨立運行本地批處理:前向傳遞、后向傳遞、輸出權(quán)重梯度等。

局部梯度的權(quán)重修改在所有8個微型處理器中有效地混合,因此一切都保持同步,并且模型已經(jīng)過適當?shù)挠柧?當使用同步數(shù)據(jù)并行時)。

重要的是要記住,一個用于分布式訓練的GPU需要在訓練階段托管收集的數(shù)據(jù)和其他GPU的結(jié)果。如果您不密切注意,您可能會遇到一個GPU內(nèi)存不足的問題。

除此之外,在考慮使用多個GPU進行分布式訓練時,收益遠遠超過成本!最后,當您為模型選擇正確的數(shù)據(jù)并行化時,每個GPU都會減少在訓練階段花費的時間、提高模型效率并產(chǎn)生更高端的結(jié)果。

尋找有關(guān)分布式訓練和其他機器學習主題的更多信息?

神經(jīng)網(wǎng)絡(luò)是高度復(fù)雜的技術(shù),僅訓練階段就可能令人生畏。通過利用和了解更多關(guān)于如何利用額外的硬件在更短的時間內(nèi)創(chuàng)建更有效的模型,數(shù)據(jù)科學可以改變我們的世界!當您可以在數(shù)周和數(shù)月而不是數(shù)月和數(shù)年的時間內(nèi)創(chuàng)建更有效的神經(jīng)網(wǎng)絡(luò)時,用于分布式訓練的GPU非常值得初始投資。

猜你喜歡