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

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

3天內(nèi)不再提示

一種具有混合精度的高度可擴展的深度學習訓練系統(tǒng)

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-08-02 09:25 ? 次閱讀

編者按:昨天,騰訊和香港浸會大學的研究人員在arxiv上發(fā)表了一篇文章,介紹了一種具有混合精度的高度可擴展的深度學習訓練系統(tǒng)?;蛟S是覺得這個名字不夠吸引人,他們又在后面加了一個頗具標題黨意味的后綴——“4分鐘訓練ImageNet”。那么這樣的措辭是否夸大其詞了呢?讓我們來讀讀他們的論文。

現(xiàn)狀

現(xiàn)如今,隨著數(shù)據(jù)集和大型深度神經(jīng)網(wǎng)絡規(guī)模不斷擴大,研究人員訓練模型使用的時間也在不斷延長,短則幾天,長則幾周,但過長的訓練時間會給研發(fā)進度帶來阻礙。由于計算資源有限,針對這個問題,現(xiàn)在一種常見解決方案是使用分布式同步隨機梯度下降(SGD),它可以跨硬件作業(yè),前提是必須給每個GPU分配合理的樣本數(shù)量。

雖然這種做法可以利用系統(tǒng)的總吞吐量和較少的模型更新來加速訓練,但它也存在兩個不可忽視的問題:

較大的mini-batch由于存在泛化誤差,會導致較低的測試精度:

如果增加mini-batch里的樣本個數(shù),我們確實可以通過計算平均值來減少梯度變化,從而提供更準確的梯度估計,此時模型采用的步長更大,優(yōu)化算法速度也更快。但正如ImageNet training in minutes這篇論文所論證的,一旦mini-batch的大小增加到64K,ResNet-50在測試集上的準確率會從75.4%下降到73.2%,這達不到基線模型的精度要求。

當使用大型GPU集群時,訓練速度并不會隨著GPU數(shù)量的增加而呈線性上升趨勢,尤其是對于計算通信比較高的模型:

訓練模型時,分布式訓練系統(tǒng)會為每個GPU分配訓練任務,然后在每個訓練步之間插入一個梯度聚合步驟,GPU數(shù)量越多,這個梯度聚合步就越容易成為系統(tǒng)瓶頸。假設GPU數(shù)量N固定,如果要提升系統(tǒng)總吞吐量T,我們就要同時提高單個GPU的吞吐量S和它的縮放效率e,但這兩者提升需要額外的算力資源,這就和N固定有矛盾。

實驗結(jié)果

在介紹研究成果前,我們先來看看最引人注意的“4分鐘訓練ImageNet”。

根據(jù)論文實驗部分的內(nèi)容,研究人員選取的模型是AlexNet和ResNet-50,它們各自代表一種典型的CNN。AlexNet的參數(shù)數(shù)量是ResNet-50的2.5倍,而ResNet-50的計算卻是前者的5.6倍。因此它們的瓶頸分別是通信和計算,這正代表上節(jié)提出的兩個問題。

上表是兩個模型的訓練結(jié)果和對比,可以發(fā)現(xiàn),在ImageNet數(shù)據(jù)集上,研究人員用4分鐘訓練好AlexNet,又用6.6分鐘訓練好ResNet-50,batch size非常大,但精度卻和其他模型沒什么區(qū)別。從數(shù)據(jù)角度看,這確實是個歷史性的突破。

而根據(jù)騰訊機智團隊自己的介紹,在這之前,業(yè)界最好的水平來自:日本Perferred Network公司Chainer團隊,他們用15分鐘就訓練好了ResNet-50;UC Berkely等高校的團隊,他們用11分鐘訓練好AlexNet。相較之下,騰訊和香港浸會大學的這個成果創(chuàng)造了AI訓練的世界新紀錄。

但顯然,他們在寫論文標題的時候也漏掉了重要內(nèi)容,就是這個速度背后是2000多塊GPU,相信這個真相會讓一些研究人員興奮,也會讓大批學者和實驗室感到內(nèi)心拔涼。

研究成果概述

關(guān)于論文技術(shù)的詳細細節(jié),騰訊技術(shù)工程官方已經(jīng)有長文分析,所以這里只根據(jù)論文內(nèi)容的一點簡介(才不說是寫完才發(fā)現(xiàn)人家已經(jīng)發(fā)了呢)。

這篇論文為為密集GPU集群構(gòu)建了一個高度可擴展的深度學習訓練系統(tǒng),它很好地解決了上述兩個問題,下圖是它結(jié)構(gòu)概覽:

從圖中我們可以看到,這個系統(tǒng)可以大致分為三個模塊:輸入管道模塊、訓練模塊和通信模塊。

輸入管道負責在當前步驟完成之前就為下一步提供數(shù)據(jù),它使用pipelining來最小化CPU和GPU的閑置時間。

訓練模塊包括模型構(gòu)建和變量管理。在這個模塊中,研究人員結(jié)合了各類優(yōu)化方法,如使用混合精度訓練前向/反向傳播和用LARS更新模型。

通信模塊使用tensor fusion和論文提出的混合Allreduce,根據(jù)張量大小和GPU集群大小優(yōu)化縮放效率。

1. 提出了一種混合精度訓練方法,可以顯著提高單個GPU的訓練吞吐量而不會降低精度。

之前,Micikevicius等人已經(jīng)在研究中提出過在訓練階段使用半精度(FP16)有助于降低內(nèi)存壓力并增加計算吞吐量的想法,前者可以通過把相同數(shù)量的值儲存進更少的bit來實現(xiàn),后者則可以降低數(shù)學精度,讓處理器提供更高的吞吐量。

而Yang You等人提出了一種為分布式培訓提供更大mini-batch的算法——LARS(自適應速率縮放),它會為每一層引入局部學習率,也就是用系數(shù)η加權(quán)的L2正則化權(quán)重和梯度權(quán)重的比率,能大幅度提高大batch size場景下的訓練精度。

這兩個成果非常互補,但它們不能直接結(jié)合使用,因為會導致梯度消失。為了融合兩種思想,研究人員做出的改進是用LARS進行混合精確訓練,如下圖所示,當進行前向傳播和反向傳播時,系統(tǒng)先把參數(shù)和數(shù)據(jù)轉(zhuǎn)成半精度浮點數(shù),然后再做訓練,而訓練權(quán)重和梯度時,參數(shù)和數(shù)據(jù)則是單精度浮點數(shù)。

2. 提出了一種針對超大型mini-batch(最大64k)的優(yōu)化方法,可以在ImageNet數(shù)據(jù)集上訓練CNN模型而不會降低精度。

模型架構(gòu)改進是提高模型性能的一種常見手段,在論文中,研究人員從以下兩個方面改進了模型架構(gòu):1)消除偏差和batch normalization的權(quán)重衰減;2)為AlexNet增加了一個batch normalization層。

除了這一點,深度學習中耗時占比較重的還有超參數(shù)調(diào)整。為了優(yōu)化這一過程,研究人員的思路是:

參數(shù)步長由粗到細:調(diào)優(yōu)參數(shù)值先以較大步長進行劃分,可以減少參數(shù)組合數(shù)量,當確定大的最優(yōu)范圍之后再逐漸細化調(diào)整。

低精度調(diào)參:分析相關(guān)數(shù)據(jù),放大低精度表示邊緣數(shù)值,保證參數(shù)的有效性。

初始化數(shù)據(jù)的調(diào)參:根據(jù)輸入輸出通道數(shù)的范圍來初始化初始值,一般以輸入通道數(shù)較為常見;對于全連接網(wǎng)絡層則采用高斯分布即可;對于shortcut的batch norm,參數(shù)gamma初始化為零(也可以先訓練一個淺層網(wǎng)絡,再通過參數(shù)遞進初始化深層網(wǎng)絡參數(shù))。

3. 提出了一種高度優(yōu)化的allreduce算法,使用這種算法后,相比NCCL計算框架,AlexNet和ResNet-50在包含1024個Tesla P40 GPU的集群上的訓練速度分別提高了3倍和11倍。

在張量足夠多的情況下,Ring Allreduce可以最大化利用網(wǎng)絡,但工作效率和速度都不如張量少的情況。針對這種現(xiàn)象,研究人員利用分層同步和梯度分段融合優(yōu)化Ring Allreduce

分層同步與Ring Allreduce有機結(jié)合:對集群內(nèi)GPU節(jié)點進行分組,減少GPU數(shù)量對整體訓練用時的影響。

梯度融合,多次梯度傳輸合并為一次:根據(jù)具體模型設置合適的Tensor size閾值,將多次梯度傳輸合并為一次,同時超過閾值大小的Tensor不再參與融合;這樣可以防止Tensor過度碎片化,從而提升了帶寬利用率,降低了傳輸耗時。

GDR技術(shù)加速Ring Allreduce:在前述方案的基礎上,將GDR技術(shù)應用于跨節(jié)點Ring,這減少了主存和顯存之間的Copy操作,同時為GPU執(zhí)行規(guī)約計算提供了便利。

這三大成果的直接效果是在不降低分類準確率的同時,把AlexNet和ResNet-50訓練時所用的mini-batch size擴大至64K。同時,通過優(yōu)化All-reduce算法,并讓系統(tǒng)支持半精度訓練,研究人員最后構(gòu)建了一個高吞吐量分布式深度學習訓練系統(tǒng),可以在GPU數(shù)量N不變的情況下,提高單個GPU性能S和縮放效率e。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡

    關(guān)注

    42

    文章

    4729

    瀏覽量

    100347
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4650

    瀏覽量

    128490
  • 深度學習
    +關(guān)注

    關(guān)注

    73

    文章

    5449

    瀏覽量

    120810

原文標題:騰訊&浸大最新研究:在4分鐘內(nèi)完成ImageNet訓練(如果你有2000個GPU)

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Nanopi深度學習之路(1)深度學習框架分析

    高度模塊化,擴展性)。 ? 同時支持卷積神經(jīng)網(wǎng)絡和循環(huán)神經(jīng)網(wǎng)絡,以及兩者的組合。? 在 CPU 和 GPU 上無縫運行。--摘自《Keras:基于-Python-的深度
    發(fā)表于 06-04 22:32

    【HarmonyOS HiSpark AI Camera】基于深度學習的目標檢測系統(tǒng)設計

    項目名稱:基于深度學習的目標檢測系統(tǒng)設計試用計劃:嘗試在硬件平臺實現(xiàn)對Yolo卷積神經(jīng)網(wǎng)絡的加速運算,期望提出的方法能夠使目標檢測技術(shù)更便捷,運用領(lǐng)域更廣泛。針對課題的研究是研究基于
    發(fā)表于 09-25 10:11

    labview深度學習檢測藥品兩類缺陷

    ` 本帖最后由 wcl86 于 2021-5-28 19:37 編輯 通過labview深度學習標注工具對樣本進行標注,兩類NG進行標注,標注完成后擴展樣本數(shù)量級,以少量樣本獲得較好的標注
    發(fā)表于 05-27 22:25

    探索一種降低ViT模型訓練成本的方法

    其上的實驗來評估性能,當每次實驗的訓練成本過高時,這不是一種擴展的方法。通過降低訓練成本,縮短了開發(fā)周期。2 更容易接近。大多數(shù)ViT模型
    發(fā)表于 11-24 14:56

    什么是深度學習?使用FPGA進行深度學習的好處?

    類型,但經(jīng)常使用稱為準確性的一種。假設將 10 張貓的圖像輸入到預訓練模型中,其中 9 張被確定為“貓”。在這點上,該模型可以說具有 90% 的準確率。
    發(fā)表于 02-17 16:56

    基于一種航資系統(tǒng)綜合訓練裝置設計

    的維護保障水平和使用效果受到極大的制約。為了進步提高航空兵部隊的新裝備訓練水平,滿足線部隊崗前培訓及新裝備訓練急需,研制航姿系統(tǒng)綜合
    發(fā)表于 11-01 10:39 ?2次下載
    基于<b class='flag-5'>一種</b>航資<b class='flag-5'>系統(tǒng)</b>綜合<b class='flag-5'>訓練</b>裝置設計

    一種新的目標分類特征深度學習模型

    為提高低配置計算環(huán)境中的視覺目標實時在線分類特征提取的時效性和分類準確率,提出一種新的目標分類特征深度學習模型。根據(jù)高時效性要求,選用分類器模型離線深度
    發(fā)表于 03-20 17:30 ?0次下載
    <b class='flag-5'>一種</b>新的目標分類特征<b class='flag-5'>深度</b><b class='flag-5'>學習</b>模型

    混合精度訓練的優(yōu)勢!將自動混合精度用于主流深度學習框架

    僅通過添加幾行代碼,TensorFlow、PyTorch和MXNet中的自動混合精確功能就能助力深度學習研究人員和工程師基于NVIDIA Volta和Turing GPU實現(xiàn)高達3倍的AI訓練
    的頭像 發(fā)表于 04-03 11:31 ?6966次閱讀

    谷歌深度學習如何處理人類語言?

    具有語言能力的深度學習系統(tǒng)已經(jīng)廣泛應用于人們的生活當中。其中系統(tǒng)使用了 Google 發(fā)布的
    的頭像 發(fā)表于 03-01 15:31 ?1291次閱讀

    一種基于深度學習的地下淺層震源定位方法

    針對地下能量場聚焦模型中能量聚焦點無法有效識別的冋題,在深度學習的基礎上,提出一種地下淺層震源定位方法。利用逆時振幅疊加的方法將傳感器陣列獲取的震動數(shù)據(jù)逆時重建為三維能量場圖像樣本序列,并將其作為
    發(fā)表于 03-22 15:58 ?10次下載
    <b class='flag-5'>一種</b>基于<b class='flag-5'>深度</b><b class='flag-5'>學習</b>的地下淺層震源定位方法

    超詳細配置教程:用Windows電腦訓練深度學習模型

    雖然大多數(shù)深度學習模型都是在 Linux 系統(tǒng)訓練的,但 Windows 也是個非常重要的系統(tǒng)
    的頭像 發(fā)表于 11-08 10:57 ?1403次閱讀

    深度解析擴展且保密的深度學習

    擴展且保密的深度學習
    發(fā)表于 06-28 16:09 ?296次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>可</b><b class='flag-5'>擴展</b>且保密的<b class='flag-5'>深度</b><b class='flag-5'>學習</b>

    深度學習框架是什么?深度學習框架有哪些?

    深度學習框架是什么?深度學習框架有哪些?? 深度學習框架是
    的頭像 發(fā)表于 08-17 16:03 ?2594次閱讀

    深度學習框架區(qū)分訓練還是推理嗎

    深度學習框架區(qū)分訓練還是推理嗎 深度學習框架是個非常重要的技術(shù),它們能夠加速
    的頭像 發(fā)表于 08-17 16:03 ?1302次閱讀

    深度學習模型訓練過程詳解

    深度學習模型訓練個復雜且關(guān)鍵的過程,它涉及大量的數(shù)據(jù)、計算資源和精心設計的算法。訓練
    的頭像 發(fā)表于 07-01 16:13 ?830次閱讀