雷鋒網消息,美國西部時間2月21日,百度矽谷人工智慧實驗室(SVAIL)宣布將Ring Allreduce算法引進深度學習領域,這讓基於GPU訓練的神經網絡模型的訓練速度顯著提高。
Ring Allreduce是高性能計算(HPC)領域內一個眾所周知的算法,但在深度學習領域內的應用相對較少。而百度SVAIL實驗室研究員Andrew Gibiansky也錄製了一個視頻介紹了關於Ring Allreduce的基本情況。
隨著神經網絡參數越來越龐大,從幾億個參數與到數十億參數,所需的GPU運算節點也在增加。然而,節點數量越多,整個系統的效率就會降低。
深度學習在多個GPU上訓練神經網絡通常比較困難,因為大家普遍採用的方法是,讓多個GPU把數據發送給一個reducer GPU上,這會造成一種通信瓶頸,整個訓練速度會因此拖慢。而且要訓練的數據越多,則帶寬瓶頸問題就顯得越嚴重。
而ring allreduce算法移除了這種瓶頸,減少GPU發送數據花費的時間,而把時間更多用在處理有用工作上。SVAIL發布的博文中這樣說道:
「ring allreduce 是這樣一種算法——其通信成本是恆定的,與系統中的 GPU 的數量無關,並且僅由系統中的 GPU 之間的最慢連接來確定。事實上,如果在通信成本上你只考慮帶寬這一因素(並忽略延遲),那麼 ring allreduce 就是一個最佳的通信算法 。
算法的進行分兩步:第一步,scatter-reduce;第二步,allgather。在第一步中,GPU 將交換數據,使得每個 GPU 最終都有一個最終結果的數據塊。在第二步中,GPU 將交換那些塊,使得所有 GPU 最終得到完整的最後結果。「
Ring Allreduce 中的 GPU 被布置在一個邏輯環路(logical ring)之中。每個 GPU 左右兩個各有一個 GPU,並且只從左邊的 GPU 接收數據,再把數據發送至右邊的 GPU。
Ring Allreduce在接受採訪時說道:
「Ring allreduce可以讓我們在多設備和多節點的情況下,更加有效地平均梯度。在訓練中使用這個帶寬優化的算法,你可以顯著減少通信開銷,並由此擴展到更多的設備上,同時仍然保留同步隨機梯度下降的確定性和可預測的收斂性。」
百度已經用這個算法來訓練其語音識別模型,實驗證明,與使用一個單獨的reducer GPU相比,ring allreduce 可以將一個神經網絡在40個GPU上的訓練速度提升31倍。
百度也將這算法分享出來,發布了一個演示該 allreduce 算法的 C 語言庫,也將該 allreduce 以補丁的形式整合到 TensorFlow 中。
雷鋒網此前也報導過,最近日本東京技術研究院宣布,將在今年夏天啟動日本「最快的AI超級計算機」項目,這個超級計算機名為Tsubame3.0,使用的是英偉達GPU加速晶片,使其性能較以往提升2倍。HPC市場與快速興起的AI市場有很大不一樣,超級計算機以往被用於例如天氣預測、氣候建模、太空和核模擬等領域,而針對AI優化的晶片開始將這兩個領域結合起來。而百度這次,則將HPC領域的軟體技術應用於深度學習領域,看起來,HPC和機器學習這兩個領域,正在以非常快的速度融合。
Via Tomshardware
更多雷鋒網(公眾號:雷鋒網)相關文章:
三星計劃投入 10 億美元收購 AI 公司
AI加持,計算機要擁有嗅覺了
雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。