<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 大規模神經(jīng)網(wǎng)絡(luò )最新文獻綜述:訓練高效DNN、節省內存使用、優(yōu)化器設計

大規模神經(jīng)網(wǎng)絡(luò )最新文獻綜述:訓練高效DNN、節省內存使用、優(yōu)化器設計

發(fā)布人:機器之心 時(shí)間:2022-04-09 來(lái)源:工程師 發(fā)布文章
在本綜述論文中,研究者解釋了不同技術(shù)的工作原理、評估和比較,還分析了一些實(shí)現這些技術(shù)的框架。


現代深度學(xué)習和人工智能技術(shù)的發(fā)展涉及使用深度神經(jīng)網(wǎng)絡(luò )(DNN)來(lái)解決圖像、視頻、音頻、自然語(yǔ)言處理、圖像形式的內容生成等各種問(wèn)題,或生成給定格式主題的文本等任務(wù)。
俄羅斯斯科爾科沃科學(xué)技術(shù)研究所、法國里爾大學(xué)、波爾多大學(xué)、Inria 等科研機構聯(lián)合發(fā)表了一篇論文《Survey on Large Scale Neural Network Training》,它試圖解決的問(wèn)題是:若給定模型和計算平臺的情形下,如何訓練才是最有效率的。為了使訓練高效,其必須可行,最大程度地利用資源的計算能力,在并行情況下,它不能讓信息傳輸成為瓶頸。訓練的效率從根本上取決于計算內核在計算資源(CPU、TPU、GPU)上的有效實(shí)現以及 GPU 之間和不同內存之間通信的有效實(shí)現。

圖片


論文鏈接:https://arxiv.org/abs/2202.10435
在這兩種情況下,人們?yōu)閮?yōu)化計算內核的算術(shù)強度,及有效實(shí)現硬件網(wǎng)絡(luò )上的通信做了很多工作。對于使用者來(lái)說(shuō),已存在強大的分析工具來(lái)識別硬件瓶頸,并可用于判定本調查中描述哪些策略可用于解決算術(shù)強度、內存和控制交換數據量的問(wèn)題。
該綜述研究涵蓋了應對這些限制的通用技術(shù)。如果由于模型、優(yōu)化器狀態(tài)和激活不適合內存而無(wú)法先驗執行計算,則可以使用內存交換計算(重新實(shí)現)或數據轉移(激活和權重卸載)。我們還可以通過(guò)近似優(yōu)化器狀態(tài)和梯度(壓縮、修剪、量化)來(lái)壓縮內存使用。
并行方法(數據并行、模型并行、流水線(xiàn)模型并行)也可以將內存需求分布到多個(gè)算力資源上。如果計算的算力強度不足以充分利用 GPU 和 TPU,一般是因為 mini-batch 太小,那么上述技術(shù)也可以增加 mini-batch 的大小。最后,如果使用數據并行引起的通信開(kāi)銷(xiāo)昂貴到拖累計算速度,則可以使用其他形式的并行(模型并行、流水線(xiàn)模型并行),梯度壓縮也可以限制數據交換的數量。
在本次調查中,研究者解釋了這些不同技術(shù)是如何工作的,其中描述了評估和比較所提出方法的文獻,還分析了一些實(shí)施這些技術(shù)的框架。
下表 1為文章討論的不同技術(shù)及其對通信、內存和計算效率的影響。

圖片


研究者根據目的區分了以下方法:首先討論減少 GPU 內存使用,隨后考慮對不適合 GPU 的模型使用并行訓練,最后討論為訓練存儲在多個(gè)設備上的模型而開(kāi)發(fā)的優(yōu)化器的設計。
單 GPU 情況下減少內存使用
在前向傳播期間,神經(jīng)網(wǎng)絡(luò )存儲執行反向傳播所需的激活。在某些情況下,這些激活會(huì )消耗大量?jì)却?,讓模型無(wú)法訓練。減少內存使用的主要方法有兩種:重新實(shí)現(也稱(chēng)為 checkpointing)和卸載。
激活的重新實(shí)現
重新實(shí)現的策略?xún)H在前向傳播期間存儲一小部分激活,并在反向傳播期間重新計算其余部分。重新實(shí)現方法可以通過(guò)它們處理的計算圖來(lái)區分。第一組來(lái)自自動(dòng)微分(AD),它們?yōu)橥瑯嬳樞蚓W(wǎng)絡(luò )(多層按順序執行并具有相同計算和內存成本的 DNN)找到最佳調度。第二組專(zhuān)注于過(guò)渡模型,例如異構序列網(wǎng)絡(luò )(可以是由任意復雜模塊組成的任何序列神經(jīng)網(wǎng)絡(luò ),如 CNN、ResNet、一些 transformer),它將解決方案從 AD 調整為異構設置。
一些方法可以對一般計算圖執行重新實(shí)現,盡管確切的計算成本可能指數級上升,如下表 2 所示。

圖片


激活卸載
卸載(又被稱(chēng)為內存交換)是一種通過(guò)在前向傳遞期間將激活轉移到 CPU 內存并將它們預取回 GPU 內存,以進(jìn)行相應的向后計算來(lái)節省 GPU 內存的技術(shù)。
由于 CPU 和 GPU 之間 PCI 總線(xiàn)的帶寬有限,必須優(yōu)化選擇傳輸激活,以及何時(shí)傳輸的選擇。
在 vDNN [Rhu et al., 2016] 研究中,作者通過(guò)僅卸載卷積層的輸入來(lái)遵循對 CNN 有效的啟發(fā)式方法,然而它不能很好地推廣到一般 DNN 上。另有研究 [Le et al., 2018] 考慮了激活生命周期來(lái)選擇卸載的內容,并使用圖搜索方法來(lái)識別插入卸載 / 預取操作的時(shí)刻。AutoSwap [Zhang et al., 2019] 通過(guò)為每個(gè)變量分配優(yōu)先級分數來(lái)決定卸載哪些激活。
權重卸載
前面提到的很多方法也適用于卸載權重,這是因為卸載權重依賴(lài)于適用于任何張量的通用技術(shù),比如 TFLMS、AutoSwap 或者 SwapAdvisor。
不適合單個(gè) GPU 的模型的并行性
在模型并行化中,只需要傳達激活信息,并且傳輸只發(fā)生在分配給不同處理器的連續層之間。本章節提到的工作如下表 4 所示。

圖片


如果多個(gè)小批量被 pipeline 化 ,則可以加快模型并行化中的執行速度,從而同時(shí)激活了多個(gè)訓練迭代,具體可見(jiàn) [Huang et al., 2019]。一旦在所有這些小批量上計算了前向和后向階段,權重就會(huì )更新。這種方法實(shí)現起來(lái)相當簡(jiǎn)單,但也導致計算資源大部分處于空置狀態(tài)。[Narayanan et al., 2019] 中提出的 PipeDream 方法僅強制前向和后向任務(wù)針對給定的小批量使用相同的模型權重,改進(jìn)了這一訓練過(guò)程。
減少執行更新的頻率也已被證明有助于限制權重過(guò)期(Narayanan et al., 2021a)。[Yang et al., 2021] 提出的 PipeMare 根據 pipeline 階段向后調整學(xué)習率和模型權重。
對 pipeline 方法中激活導致的存儲成本進(jìn)行建模是一項艱巨的任務(wù)(Beaumont et al., 2021b)。例如,[Fan et al., 2021] 中的 DAPPLE 、 [Li and Hoefler, 2021] 中的 Chimera 使用 1F1B(One-Forward-One-Backward)調度來(lái)減少與激活相關(guān)的內存消耗。1F1B 是一種同步權重更新技術(shù),盡可能早地安排每個(gè)微批次的反向傳遞,以釋放激活占用的內存。
有些論文專(zhuān)門(mén)處理具有挑戰性的拓撲。比如,為了解決高通信成本和異構網(wǎng)絡(luò )能力的問(wèn)題,[Zhan and Zhang, 2019] 中的 Pipe-torch 提出了一種更新的動(dòng)態(tài)規劃策略,該策略假設計算和通信之間沒(méi)有重疊。[Park et al., 2020] 中的 Pipe 解決了異構 GPU 的其他問(wèn)題,采用的方法是將這些異構 GPU 分成虛擬 worker,并在每個(gè)虛擬 worker 中運行 pipeline 并行化,同時(shí)依賴(lài) worker 之間的數據并行化。
用于跨設備模型訓練的優(yōu)化器 
零冗余優(yōu)化器
2020 年, Rajbhandari, S. 等人在論文《 ZeRO: Memory Optimizations toward Training Trillion Parameter Models》中提出了零冗余優(yōu)化器(Zero Redundancy Optimizer, ZeRO),將它作為一種減少內存使用的數據并行化實(shí)現。根據在設備上劃分的張量,該算法具有三個(gè)階段,即階段 1 - 優(yōu)化器狀態(tài)、階段 2 - 優(yōu)化器狀態(tài)和梯度和階段 3 - 優(yōu)化器狀態(tài)、梯度和模型超參數。
2021 年, Ren, J. 等人在論文《 ZeRO-Offload: Democratizing Billion-Scale Model Training》中將 ZeRO 與 Zero-Offload 內部參數更新的 CPU 端計算統一起來(lái),其中梯度被遷移至存儲參數副本的 CPU,更新的權重遷移回 GPU。
低精度優(yōu)化器
為了進(jìn)一步減少內存使用,低精度優(yōu)化器(low-precision optimizer)有了用武之地。這些方法使用低精度格式拉力表示優(yōu)化器狀態(tài)以及狀態(tài)的輔助向量。并且,誤差補償技術(shù)可以被用來(lái)維持跟蹤統計的近似準確率。
2021 年, Dean, J. 等人在論文《Large Scale Distributed Deep Networks》中提出了一種將 Adam 優(yōu)化器存儲在 8-bit 的方法,同時(shí)在使用 32-bit 格式時(shí)保持整體性能不變。2020 年, Sun, X. 等人在論文《Ultra-Low Precision 4-bit Training of Deep Neural Networks》中提出了更激進(jìn)的精度降低,其中開(kāi)發(fā)了處理 4-bit 表示的特定路徑。
收斂加速
另一種加速大規模深度學(xué)習模型的方法是減少節點(diǎn)之間的通信時(shí)間以及在適當局部最小值收斂所需的 epoch 數量。
關(guān)于通信成本的降低。在將梯度在計算節點(diǎn)之間遷移之前對它們進(jìn)行壓縮已經(jīng)出現了不同的方法,具體有三類(lèi),分別是分裂(sparsification)、量化(quantization)和低秩(low-rank)方法。
分裂方法只遷移完整梯度元素的一些子集,并在參數向量中更新相應的元素。這種近似方法能夠顯著(zhù)降低通信成本,同時(shí)保持訓練模型的性能,代表工作有 2017 年 Aji, A. F. 和 Heafield, K 的論文《 Sparse Communication for Distributed Gradient Descent 》和 2019 年 Alistarh, D. 等的論文《The Convergence of Sparsified Gradient Methods》。
另一種方法是基于遷移梯度的量化,該方法只遷移一定數量的 bit、從這些 bit 中重建整個(gè)梯度向量并更新參數向量的所有元素。這種方法對于一些神經(jīng)網(wǎng)絡(luò )架構和實(shí)驗設置得到了不錯的結果,代表工作有 Alistarh, D. 等人 2017 年的論文《QSGD: Communication-Efficient SGD via Gradient Quantization and Encoding》。
最后一種降低通信成本的方法是低秩方法,其中在更新參數向量之前構建、遷移和使用梯度的低秩近似來(lái)恢復完整格式的梯度。低秩近似可以通過(guò)塊能量(block power)方法或者最小化策略來(lái)構建,各自的代表工作分別是 Vogels et al., 2019 和Cho et al., 2019。
大批量訓練。另一種加速優(yōu)化器收斂的方法是針對每個(gè)批使用大量的樣本。這種訓練設置可以減少每個(gè) epoch 中的迭代次數,并提升 GPU 的利用率。在 Goyal, P 等人 2017 年的論文《Accurate, Large Minibatch SGD》中,研究者提出使用線(xiàn)性縮放規則來(lái)更新學(xué)習率和批大小。這一設置可以穩定優(yōu)化過(guò)程,并將模型的最終性能收斂至相同。
封面來(lái)源:https://www.youtube.com/watch?v=RSRkp8VAavQ


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>