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

2020-12-25 電子發燒友

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

李倩 發表於 2018-08-02 09:25:04

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

現狀

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

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

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

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

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

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

實驗結果

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

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

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

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

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

研究成果概述

關於論文技術的詳細細節,騰訊技術工程官方已經有長文分析,所以這裡只根據論文內容的一點簡介(才不說是寫完才發現人家已經發了呢)。

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

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

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

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

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

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

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

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

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

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

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

除了這一點,深度學習中耗時佔比較重的還有超參數調整。為了優化這一過程,研究人員的思路是:

參數步長由粗到細:調優參數值先以較大步長進行劃分,可以減少參數組合數量,當確定大的最優範圍之後再逐漸細化調整。

低精度調參:分析相關數據,放大低精度表示邊緣數值,保證參數的有效性。

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

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

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

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

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

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

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

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 百度聯合英偉達發布最新論文:使深度學習效率事半功倍的混合精度訓練
    雷鋒網消息,在10月10日-11日在加拿大蒙特婁召開的Rework Deep Learning Summit會議上,百度高級研究員Greg Diamos介紹了由百度矽谷AI實驗室(SVAIL)與NVIDIA合作的最新成果:一種名為「混合精度訓練」(Mixed Precision Training
  • 百度聯合英偉達發布最新論文:使深度學習效率事半功倍的混合精度...
    :一種名為「混合精度訓練」(Mixed Precision Training,簡稱MPT)的深度學習模型。據了解,大多數的深度學習模型使用的是32位單精度浮點數(FP32)來進行訓練,而混合精度訓練的方法則通過16位浮點數(FP16)進行深度學習模型訓練,從而減少了訓練深度學習模型所需的內存,同時由於FP16的運算比FP32運算更快,從而也進一步提高了硬體效率。通過用半精度運算替代全精度運算來提高效率,這一技術原理聽起來很簡單明了,但將其付諸實施並不像聽起來那麼簡單。
  • Tesla V100 之使用Tensor Core進行混合精度訓練
    P100有大幅的性能提升,那麼問題來了,如何利用Tensor Core帶來的性能提升幫助我們加速深度學習訓練任務呢?請各位看官搬好小板凳聽我娓娓道來~👇🙋舉手提問1:什麼是混合精度?📢回答:混合精度是指在計算過程中採用不同數值精度。🙋舉手提問2:有什麼精度呢?📢回答:FP16 - 半精 / FP32 - 單精 / FP64 - 雙精🙋舉手提問3:這些精度的表達範圍分別是多少呢?
  • 一行代碼讓訓練速度提升2倍,飛槳自動混合精度技術詳解
    但是在深度學習領域,模型的參數、數據集的規模等等動輒就是以億為單位,甚至更大,因此當模型訓練成功之時,放一首張靚穎的「終於等到你」作為背景音樂實在是太應景了。那如果現在向你推薦一款神器,可以實現訓練速度翻倍,訪存效率翻倍,你心動嗎?
  • 微軟推出深度學習加速平臺「Project Brainwave」
    近日在 Hot Chips 2017 上,微軟團隊推出了一個新的深度學習加速平臺,其代號為腦波計劃(Project Brainwave),機器之心將簡要介紹該計劃。腦波計劃在深度學習模型雲服務方面實現了性能與靈活性的巨大提升。微軟專為實時人工智慧設計了該系統,它可以超低延遲地處理接收到的請求。
  • 深度學習中的張量方法(文末送福利)
    1、深度學習中的張量張量是所有深度學習框架中最核心的組件,因為後續的所有運算和優化算法都是基於張量進行的。
  • PyTorch1.6:新增自動混合精度訓練、Windows版開發維護權移交微軟
    一些亮點包括:在英偉達的幫助下增加了對自動混合精度(AMP)訓練的本地支持,並且具有穩定的功能;增加了對 TensorPipe 的本地支持;在前端 API 增加了對複雜張量的支持;提供張量級內存消耗信息的新分析工具;
  • IBM的8位浮點精度深度神經網絡模型解析
    使用新的硬體解決方案擴展人工智慧是IBM研究院(IBM Research)更廣泛努力的一部分,以期從範圍狹窄的人工智慧(通常用於處理具體的、界限清楚的任務)轉向範圍廣泛的人工智慧(跨越各個學科,可幫助人類解決最迫切的問題)。  具體而言,IBM研究院提出了可提供8位浮點(FP8)精度用於訓練神經網絡的硬體。
  • TensorFlow 2.4來了:上線對分布式訓練和混合精度的新功能支持
    TensorFlow 2.4 的更新包括對於分布式訓練和混合精度的新功能支持,對 NumPy API 子集的試驗性支持以及一些用於監測性能瓶頸的新工具。像單工作器的 MirroredStrategy 一樣,MultiWorkerMirroredStrategy 通過同步數據並行實現分布式訓練,顧名思義,藉助 MultiWorkerMirroredStrategy 可以在多臺機器上進行訓練,每臺機器都可能具有多個 GPU。
  • MHW-PD: 一種深度學習與多尺度混合視窗結合的稻穗魯棒性計數方法
    點擊藍色字免費訂閱,每天收到這樣的好資訊本文針對高密度大田複雜場景,設計了一種深度學習與多尺度混合視窗結合的稻穗魯棒性計數方法單個稻穗的尺寸較小導致稻穗原始信息不足,即使使用深度學習網絡也很難學習到完整豐富的稻穗特徵,從而降低計數精度。因而,本文針對高密度大田複雜場景,設計了一種深度學習與多尺度混合視窗結合的稻穗魯棒性計數方法(Multi-scale Hybrid Windows Network for Panicle Detect,MHW-PD)。
  • 虛擬動點OptiTrack運動捕捉系統具有全球業界頂尖水平
    OptiTrack運動捕捉系統,由紅外攝像機和數據處理軟體等組成,擁有業界領先的超高精度、極簡的工作流、超低延遲、高性價比、開源SDK等特點,可廣泛應用於醫療、軍事、教育、無人機、工業仿真、康復訓練、舞臺演藝、運動科學分析、虛擬實境、影視動畫、遊戲等行業,通過專業的運動捕捉技術與產品,為各領域提供行業解決方案。
  • 深度|深度學習與統計物理的通用邏輯——重整化系統
    但是,儘管他們在訓練電腦從一些不相關的數據從提取出顯著特點上取得這麼大的進展,研究人員還沒有完全弄明白這種算法或者生物學習為什麼會如此有效。現在,有兩位物理學家發現深度學習工作方式之一和物理學最重要也最普遍的數學技術非常相似,這是一種用於計算物理的系統大規模並行行為的程序,比如基本粒子及其相互作用,流體,宇宙等。
  • 深度學習已成功應用於這三大領域
    學術界的深度學習研究者們通常無法負擔那麼大規模的分布式學習系統,但是一些研究仍關注於如何在校園環境中使用相對廉價的硬體系統構造分布式網絡(Coates et al., 2013)。模型壓縮在許多商業應用的機器學習模型中,一個時間和內存開銷較小的推斷算法比一個時間和內存開銷較小的訓練算法要更為重要。
  • Nat Chem|用深度學習方法求解薛丁格方程
    近日,來自德國柏林自由大學的研究者們報導了一種新的深度學習QMC方法——PauliNet,它用功能更強大的深度神經網絡(DNN)表示替代了目前在標準Jastrow factor和backflow transformation中使用的函數形式。除了在表示能力上的增強,該網絡架構是專門為編碼有效波函數而設計的並使用多參考HF方法作為基線。
  • Nat Chem | 用深度學習方法求解薛丁格方程
    然而,高精度方法的計算成本隨電子數目呈指數增加,無法計算較大的原子體系;而可以處理大原子體系的方法(如DFT)精度有限。 近日,來自德國柏林自由大學的研究者們報導了一種新的深度學習QMC方法——PauliNet,它用功能更強大的深度神經網絡(DNN)表示替代了目前在標準Jastrow factor和backflow transformation中使用的函數形式。
  • 深度學習在推薦系統上的應用
    確實深度學習很火,近期深度學習的戰火燒到推薦系統,其強大的表徵能力和低準入門檻,已經成為各大高校和中國人改網絡發paper的紅利時代。可是我還沒能發上那麼幾篇,之前面試大廠的AI labs被總監虐,感覺工作之後被壓榨太多,快幹了。推薦系統為什麼引入深度學習?
  • 人工智慧搭配雲存儲 深度學習訓練的完美組合
    眾所周知,深度學習本質就是一種大規模的神經網絡,其模型訓練通常需要規模龐大的高性能計算集群來完成,並且需要大量小文件數據樣本進行持續訓練。業界普遍認為,深度學習至少要從十萬個樣本起步。自動駕駛領域是深度學習一個重要的應用領域。在自動駕駛領域,深度學習對於數據樣本的要求則會更高,當前一輛自動駕駛汽車一天收集的樣本就是上百萬張高清圖像,並且需要不斷地對這些海量數據樣本進行持續學習。
  • 離散優化代替反向傳播:Pedro Domingos提出深度學習新方向
    除量化以外,硬閾值單元的輸出規模獨立(或者不敏感)於輸入規模,這可以緩解梯度消失和爆炸問題,幫助避免使用反向傳播進行低精度訓練時出現的一些反常現象(Li et al., 2017)。避免這些問題對開發可用於更複雜任務的大型深層網絡系統至關重要。出於以上原因,我們研究使用硬閾值單元學習深層神經網絡的高效技術。
  • 在圖像處理中應用深度學習技術
    深度學習具有平移不變性的優點,這部分使用傳統處理方式需要大量的投入。但如果需要對圖像中的對象或錯誤進行定位、標定、代碼讀取或後期處理,則傳統算法更具有優勢。圖2:訓練數據越多,預測精度越高。FPGA 具有高度並行處理能力、穩定的圖像採集能力以及相對於CPU 和GPU更高的運算性能、圖像幀率和帶寬。基於FPGA的CNN應用可完成高帶寬的分類工作,這尤其適用於高速在線檢測。FPGA支持直接在圖像採集卡或在嵌入式視覺設備上處理圖像數據——從採集到輸出以及外圍設備控制——且無任何CPU佔用,這個特點讓FPGA特別適用於高強度運算的應用,如CNN。
  • 圖像處理應用中深度學習的重要性分析
    深度學習具有平移不變性的優點,這部分使用傳統處理方式需要大量的投入。但如果需要對圖像中的對象或錯誤進行定位、標定、代碼讀取或後期處理,則傳統算法更具有優勢。 用於訓練的數據越多,分類的預測精度就會越高。由於數據量龐大,訓練神經網絡時通常選用GPU。