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