色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PyTorch教程-13.7。參數服務器

jf_pJlTbmA9 ? 來源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:44 ? 次閱讀

隨著我們從單個 GPU 轉移到多個 GPU,再轉移到包含多個 GPU 的多臺服務器,可能都分布在多個機架和網絡交換機上,我們的分布式和并行訓練算法需要變得更加復雜。細節很重要,因為不同的互連具有非常不同的帶寬(例如,NVLink 可以在適當的設置下跨 6 個鏈路提供高達 100 GB/s 的速度,PCIe 4.0(16 通道)提供 32 GB/s,而即使是高速 100GbE 以太網也只能達到到 10 GB/秒)。同時,期望統計建模師成為網絡和系統方面的專家是不合理的。

Smola 和 Narayanamurthy ( 2010 )在分布式潛變量模型的背景下引入了參數服務器的核心思想 。隨后在Ahmed等人中描述了推拉語義。( 2012 )以及Li等人對系統和開源庫的描述 。(2014 年)。在下文中,我們將激勵效率所需的組件。

13.7.1。數據并行訓練

讓我們回顧一下分布式訓練的數據并行訓練方法。我們將使用它來排除本節中的所有其他內容,因為它在實踐中實施起來要簡單得多。由于現在 GPU 有足夠的內存,因此幾乎沒有任何用例(除了圖上的深度學習)首選任何其他并行策略。圖 13.7.1描述了我們在13.5 節中實現的數據并行的變體 。其中的關鍵方面是在將更新的參數重新廣播到所有 GPU 之前,梯度的聚合發生在一個 GPU (GPU 0) 上。

pYYBAGR9Ou6AfMAZAAUUQF_GMnw228.svg

圖 13.7.1左:單 GPU 訓練。右圖:多 GPU 訓練的一種變體:(1) 我們計算損失和梯度,(2) 所有梯度都聚集在一個 GPU 上,(3) 發生參數更新并將參數重新分配給所有 GPU。

回想起來,在 GPU 0 上聚合的決定似乎是臨時的。畢竟,我們還不如聚合在 CPU 上。事實上,我們甚至可以決定在一個 GPU 上聚合一些參數,在另一個 GPU 上聚合一些其他參數。只要優化算法支持這一點,就沒有我們不能這樣做的真正原因。例如,如果我們有四個具有相關梯度的參數向量 g1,…,g4我們可以在一個 GPU 上聚合梯度gi (i=1,…,4).

這種推理似乎是武斷和輕率的。畢竟,數學自始至終都是一樣的。然而,我們正在處理真實的物理硬件,其中不同的總線具有不同的帶寬,如第 13.4 節所述 。考慮一個真實的 4 路 GPU 服務器,如圖13.7.2所示。如果連接特別好,它可能有 100 GbE 網卡。更典型的數字在 1–10 GbE 范圍內,有效帶寬為 100 MB/s 至 1 GB/s。由于 CPU 的 PCIe 通道太少而無法直接連接到所有 GPU(例如,消費級 Intel CPU 有 24 條通道),我們需要一個 多路復用器。CPU 在 16x Gen3 鏈路上的帶寬為 16 GB/s。這也是每個人的速度GPU 連接到交換機。這意味著設備之間的通信更加有效。

poYBAGR9OvCAKeVxAALSlKI-2UA368.svg

圖 13.7.2一個 4 路 GPU 服務器。

為了論證,我們假設梯度為 160 MB。在這種情況下,將梯度從所有剩余的 3 個 GPU 發送到第四個 GPU 需要 30 毫秒(每次傳輸需要 10 毫秒 = 160 MB / 16 GB/s)。再加上 30 毫秒來傳回權重向量,我們總共需要 60 毫秒。如果我們將所有數據發送到 CPU,我們會受到 40 毫秒的懲罰,因為四個 GPU 中的每一個都需要將數據發送到 CPU,總共需要 80 毫秒。最后假設我們能夠將梯度分成 4 個部分,每個部分 40 MB。現在我們可以同時在不同的 GPU 上聚合每個部分因為 PCIe 交換機在所有鏈路之間提供全帶寬操作。這需要 7.5 毫秒而不是 30 毫秒,同步操作總共需要 15 毫秒。簡而言之,根據我們同步參數的方式,同一操作可能需要 15 毫秒到 80 毫秒不等。 圖 13.7.3描述了交換參數的不同策略。

poYBAGR9OvaANmYjAAfEpJnJaso117.svg

圖 13.7.3參數同步策略。

請注意,在提高性能方面,我們還有另一種工具可供使用:在深度網絡中,需要一些時間來計算從頂部到底部的所有梯度。即使我們仍在忙于為其他參數組計算梯度,我們也可以開始同步某些參數組的梯度。 有關如何在 Horovod中執行此操作的詳細信息,請參見例如Sergeev 和 Del Balso ( 2018 )。

13.7.2。環同步

當談到現代深度學習硬件上的同步時,我們經常會遇到大量定制的網絡連接。例如,AWS p3.16xlarge 和 NVIDIA DGX-2 實例共享圖 13.7.4的連接結構。每個 GPU 通過 PCIe 鏈路連接到主機 CPU,該鏈路最高運行速度為 16 GB/s。此外,每個 GPU 還有 6 個 NVLink 連接,每個連接都能夠雙向傳輸 300 Gbit/s。這相當于每個鏈接每個方向大約 18 GB/s。簡而言之,總 NVLink 帶寬明顯高于 PCIe 帶寬。問題是如何最有效地使用它。

pYYBAGR9OviAQtGGAALzHHWwL5k366.svg

圖 13.7.4 8 個 V100 GPU 服務器上的 NVLink 連接(圖片由 NVIDIA 提供)。

事實證明,最佳同步策略是將網絡分解為兩個環,并使用它們直接同步數據 (Wang et al. , 2018)。圖 13.7.5 說明網絡可以分解為具有雙 NVLink 帶寬的一個環 (1-2-3-4-5-6-7-8-1) 和一個 (1-4-6-3- 5-8-2-7-1) 具有常規帶寬。在這種情況下設計高效的同步協議并非易事。

poYBAGR9OvuAVHeVAAQettLYD7A393.svg

圖 13.7.5將 NVLink 網絡分解為兩個環。

考慮以下思想實驗:給定一環n 計算節點(或 GPU),我們可以將梯度從第一個節點發送到第二個節點。在那里它被添加到局部梯度并發送到第三個節點,依此類推。后n?1步驟聚合梯度可以在最后訪問的節點中找到。也就是說,聚合梯度的時間隨著節點的數量線性增長。但如果我們這樣做,算法效率會很低。畢竟,任何時候都只有一個節點在通信。如果我們把梯度分解成 n塊并開始同步塊i從節點開始i?由于每個塊的大小1/n現在的總時間(n?1)/n≈1. 換句話說,隨著我們增加環的大小,聚合梯度所花費的時間不會增加。這是一個相當驚人的結果。圖 13.7.6 說明了步驟的順序n=4節點。

poYBAGR9Ov2AMGOOAANP7bEnFT4734.svg

圖 13.7.6跨 4 個節點的環同步。每個節點開始將部分梯度傳輸到其左鄰居,直到可以在其右鄰居中找到組裝的梯度。

如果我們使用跨 8 個 V100 GPU 同步 160 MB 的相同示例,我們將得到大約 2?160MB/(3?18GB/s)≈6ms. 這比使用 PCIe 總線要好,即使我們現在使用 8 個 GPU。請注意,在實踐中,這些數字會更糟一些,因為深度學習框架通常無法將通信組合成大量突發傳輸。

請注意,有一個常見的誤解,認為環同步與其他同步算法根本不同。唯一的區別是與簡單的樹相比,同步路徑稍微復雜一些。

13.7.3。多機訓練

在多臺機器上進行分布式訓練增加了一個進一步的挑戰:我們需要與僅通過相對較低帶寬的結構連接的服務器進行通信,在某些情況下,這種結構的速度可能會慢一個數量級以上??缭O備同步很棘手。畢竟,不同機器運行訓練代碼的速度會有細微差別。因此,如果我們想使用同步分布式優化, 我們需要同步它們。圖 13.7.7說明了分布式并行訓練是如何發生的。

在每臺機器上讀?。ú煌模┮慌鷶祿?,將其拆分到多個 GPU 并傳輸到 GPU 內存。預測和梯度分別在每個 GPU 批次上計算。

來自所有本地 GPU 的梯度聚合在一個 GPU 上(或其中的一部分聚合在不同的 GPU 上)。

梯度被發送到 CPU。

CPU 將梯度發送到聚合所有梯度的中央參數服務器。

然后使用聚合梯度來更新參數,并將更新后的參數廣播回各個 CPU。

信息被發送到一個(或多個)GPU。

更新后的參數分布在所有 GPU 上。

poYBAGR9OwKABsTYAAo4blsLnVE360.svg

圖13.7.7多機多GPU分布式并行訓練。

這些操作中的每一個看起來都相當簡單。而且,事實上,它們可以在一臺機器上高效地執行。但是,一旦我們查看多臺機器,我們就會發現中央參數服務器成為瓶頸。畢竟每臺服務器的帶寬是有限的,因此對于m工作人員將所有梯度發送到服務器所需的時間是O(m). 我們可以通過增加服務器數量來突破這個障礙n. 此時每臺服務器只需要存儲O(1/n)的參數,因此更新和優化的總時間變為 O(m/n). 無論我們正在處理多少工人,匹配這兩個數字都會產生恒定的縮放比例。在實踐中,我們使用同一臺機器作為工作人員和服務器。 圖 13.7.8說明了該設計(詳見 ( Li et al. , 2014 ))。特別是,確保多臺機器在沒有不合理延遲的情況下工作是非常重要的。

poYBAGR9OwSAP9_MAAPAcWuW3uo665.svg

圖 13.7.8頂部:單個參數服務器是一個瓶頸,因為它的帶寬是有限的。底部:多個參數服務器存儲部分具有聚合帶寬的參數。

13.7.4。鍵值存儲

在實踐中實施分布式多 GPU 訓練所需的步驟并非易事。這就是為什么使用通用抽象是值得的,即具有重新定義的更新語義的鍵值存儲。

跨越許多工作人員和許多 GPU 的梯度計算i 可以定義為

(13.7.1)gi=∑k∈workers∑j∈GPUsgijk,

在哪里gijk是漸變的一部分i在 GPU 上拆分j工人的k. 此操作的關鍵方面是它是可交換歸約,也就是說,它將多個向量變成一個向量,并且應用操作的順序無關緊要。這對我們的目的非常有用,因為我們不需要(需要)對何時接收哪個梯度進行細粒度控制。此外,請注意,此操作在不同的i.

這使我們能夠定義以下兩個操作:push和 pull,累積梯度,pull檢索聚合梯度。由于我們有很多不同的梯度集(畢竟我們有很多層),我們需要用一個鍵來索引梯度i. 這種與鍵值存儲的相似性,例如 Dynamo 中引入的鍵值存儲 (DeCandia等人,2007 年)并非巧合。它們也滿足許多相似的特征,尤其是在涉及跨多個服務器分布參數時。

鍵值存儲的推拉操作描述如下:

push(key, value)將特定梯度(值)從工作人員發送到公共存儲。在那里該值被聚合,例如,通過將其相加。

pull(key, value)從公共存儲中檢索聚合值,例如,在組合所有 worker 的梯度之后。

通過將有關同步的所有復雜性隱藏在簡單的推拉操作背后,我們可以將希望能夠用簡單術語表達優化的統計建模人員和需要處理分布式同步固有復雜性的系統工程師的關注分離開來。

13.7.5。概括

同步需要高度適應服務器內的特定網絡基礎設施和連接。這會對同步所需的時間產生重大影響。

環同步對于 p3 和 DGX-2 服務器可能是最佳的。對于其他人可能不是那么多。

當添加多個參數服務器以增加帶寬時,分層同步策略效果很好。

13.7.6。練習

你能進一步增加環同步嗎?提示:您可以雙向發送消息。

是否可以允許異步通信(同時計算仍在進行中)?它如何影響性能?

如果我們在長時間運行的計算過程中丟失了一臺服務器怎么辦?我們如何設計容錯機制來避免完全重新啟動計算?

Discussions

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9129

    瀏覽量

    85347
  • pytorch
    +關注

    關注

    2

    文章

    808

    瀏覽量

    13202
收藏 人收藏

    評論

    相關推薦

    什么是服務器虛擬化?私人云服務器

    什么是 服務器虛擬化 ? 服務器虛擬化是一種將物理服務器轉化為虛擬服務器的過程,使得多個虛擬服務器可以在同一臺物理
    的頭像 發表于 08-08 10:44 ?1350次閱讀

    【算能RADXA微服務器試用體驗】Radxa Fogwise 1684X Mini 規格

    ChatGLM2-6B、AIGC、Llama2、SAM、Whisper等超大參數模型 還有一份詳細的英文的規格表: 另外,算能RADXA微服務器服務器,還是大學生集成電路創新創業大賽之# 第八屆集創賽杯賽題目
    發表于 02-28 11:21

    新手小白怎么學GPU云服務器跑深度學習?

    新手小白想用GPU云服務器跑深度學習應該怎么做? 用個人主機通常pytorch可以跑但是LexNet,AlexNet可能就直接就跑不動,如何實現更經濟便捷的實現GPU云服務器深度學習?
    發表于 06-11 17:09

    參數模塊和屬性約簡的應用服務器優化方法

    【作者】:劉巖;王正方;朱云龍;董曉梅;申德榮;【來源】:《小型微型計算機系統》2010年03期【摘要】:現實的優化方法與策略往往是優化人員基于服務器廠商所提供的官方技術文檔來分析各種參數的實際意義
    發表于 04-24 09:43

    第13章 RL-TCPnet之TCP服務器

    )13.5 TCP服務器的實現方法13.6 網絡調試助手和板子的調試操作步驟13.7 實驗例程說明(裸機)13.8 實驗例程說明(RTX)13.9總結
    發表于 10-30 16:55

    服務器處理參數面面觀

    服務器處理參數面面觀 1、服務器處理主頻   服務器處理
    發表于 01-27 13:32 ?409次閱讀

    服務器,服務器的作用是什么?

    服務器,服務器的作用是什么? 戴爾服務器服務器指一個管理資源并為用戶提供服務的計算機軟件,通常分為文件
    發表于 04-06 17:18 ?2.8w次閱讀

    如何辨別Web服務器,應用程序服務器,HTTP服務器

    Apache是純粹的web服務器,而Tomcat和IIS因為具有了解釋執行服務器端代碼的能力,可以稱作為輕量級應用服務器或帶有服務器功能的Web服務
    發表于 11-10 14:28 ?1064次閱讀

    moxa串口服務器通訊設置參數

    本文詳細介紹了串口服務器的定義,其次介紹了MOXA串口服務器的工作方式,最后詳細介紹了moxa串口服務器通訊設置參數。
    發表于 02-01 15:00 ?1.3w次閱讀

    Merlin HugeCTR 分級參數服務器簡介

      參數服務器是推薦系統的重要組成部分,但是目前的訓練端參數服務器由于高延遲和同步問題無法有效解決推理部署中模型過大的瓶頸。
    的頭像 發表于 03-31 15:44 ?1528次閱讀
    Merlin HugeCTR 分級<b class='flag-5'>參數</b><b class='flag-5'>服務器</b>簡介

    本地服務器與云服務器哪個好?

    本地服務器和云服務器是企業可以使用的兩種不同的服務器設置。主要區別在于本地服務器托管,第三? 方提供商托管云服務器。那么,本地
    的頭像 發表于 05-17 16:56 ?1728次閱讀

    PyTorch教程13.7參數服務器

    電子發燒友網站提供《PyTorch教程13.7參數服務器.pdf》資料免費下載
    發表于 06-05 14:22 ?0次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>13.7</b>之<b class='flag-5'>參數</b><b class='flag-5'>服務器</b>

    PyTorch教程23.5之選擇服務器和GPU

    電子發燒友網站提供《PyTorch教程23.5之選擇服務器和GPU.pdf》資料免費下載
    發表于 06-06 09:17 ?0次下載
    <b class='flag-5'>PyTorch</b>教程23.5之選擇<b class='flag-5'>服務器</b>和GPU

    獨立服務器和云服務器的區別

    獨立服務器和云服務器的區別是很多用戶在選擇服務器時要做的課程,那么獨立服務器和云服務器的區別有哪些呢?
    的頭像 發表于 01-17 10:58 ?850次閱讀

    新手小白怎么通過云服務器pytorch

    安裝PyTorch的步驟可以根據不同的操作系統和需求有所差異,通過云服務器運行PyTorch的過程主要包括選擇GPU云服務器平臺、配置服務器
    的頭像 發表于 09-25 11:35 ?277次閱讀
    主站蜘蛛池模板: 少妇伦子伦精品无码| 男女交性视频无遮挡全过程| 好姑娘社区在线视频| 国产在线高清视频无码不卡| 黃色带三级a级| 老师小扫货水能么多叫出来| 欧美精品高清在线观看| 日韩精品亚洲专区在线影院| 午夜伦理网| 永久免费精品精品永久-夜色| 中文字幕一区二区三区在线播放| 99视频免费在线| 大陆老太交xxxxxhd在线| 国产日韩成人内射视频| 久久伊人中文字幕有码| 青青青青久久久久国产的| 亚洲 日韩经典 中文字幕| 最美白嫩的极品美女ASSPICS| 边摸边吃奶边做下面视频| 国产午夜精AV在线麻豆| 麻豆国产精品久久人妻| 日韩一卡二卡三卡四卡免费观在线 | 777EY_卡通动漫_1页| 大桥未久电影在线观看| 国内极度色诱视频网站| 暖暖视频在线高清播放| 午夜影院视费x看| 69夫妻交友网| 国产精品爽爽久久久久久蜜桃网站| 久久久久久免费高清电影| 拍戏被CAO翻了H| 亚洲精品嫩草AV在线观看| bbbbbxxxxx肥胖| 花蝴蝶免费版高清版| 日本高清免费看| 伊人久久综合谁合综合久久| 潮 喷女王cytherea| 久久精品观看影院2828| 日日碰狠狠躁久久躁77777| 曰产无码久久久久久精品| 成人免费毛片观看|