在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何才能高效地進行深度學習模型訓練?

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-07-09 08:48 ? 次閱讀

近年來,深度學習在NLP、圖像識別、語音識別、機器翻譯等方面都取得了驚人的成果。但是,深度學習的應用范圍卻日益受到數據量和模型規模的限制。如何才能高效地進行深度學習模型訓練?微軟亞洲研究院機器學習組主管研究員陳薇和她的團隊基于對機器學習的完整理解,將分布式技術和深度學習緊密結合在一起,探索全新的真正合二為一“分布式深度學習”算法

隨著大數據和高效計算資源的出現,深度學習在人工智能的很多領域中都取得了重大突破。然而,面對越來越復雜的任務,數據和深度學習模型的規模都變得日益龐大。例如,用來訓練圖像分類器的有標簽的圖像數據量達數百萬、甚至上千萬張。大規模訓練數據的出現為訓練大模型提供了物質基礎,因此近年來涌現出了很多大規模的機器學習模型,例如2015年微軟亞洲研究院開發出的擁有超過兩百億個參數的LightLDA主題模型。然而,當訓練數據詞表增大到成百上千萬時,如果不做任何剪枝處理,深度學習模型可能會擁有上百億、甚至是幾千億個參數。

為了提高深度學習模型的訓練效率,減少訓練時間,我們普遍會采用分布式技術來執行訓練任務——同時利用多個工作節點,分布式地、高效地訓練出性能優良的神經網絡模型。分布式技術是深度學習技術的加速器,能夠顯著提高深度學習的訓練效率、進一步增大其應用范圍。

深度學習的目標是從數據中挖掘出規律,幫助我們進行預測。深度學習算法的一般框架是,利用優化算法迭代地最小化訓練數據上的經驗風險。由于數據的統計性質、優化的收斂性質、以及學習的泛化性質在多機執行時的靈活度更高,相比于其它的計算任務,深度學習算法在并行化執行過程中實際上并不需要計算節點通過通信嚴格地執行單機版本算法。因而,當“分布式”遇到“深度學習”,不應只局限在對串行算法進行多機實現以及底層實現方面的技術,我們更應該基于對機器學習的完整理解,將分布式和深度學習緊密結合在一起,結合深度學習的特點,設計全新的真正合二為一的“分布式深度學習”算法。

圖1 分布式深度學習框架

分布式深度學習框架中,包括數據/模型切分、本地單機優化算法訓練、通信機制、和數據/模型聚合等模塊。現有的算法一般采用隨機置亂切分的數據分配方式,隨機優化算法(例如隨機梯度法)的本地訓練算法,同步或者異步通信機制,以及參數平均的模型聚合方式。

結合深度學習算法的特點,微軟亞洲研究院機器學習組重新設計/理解了這些模塊,我們在分布式深度學習領域主要做了三個方面的工作:第一個工作,針對異步機制中的梯度延遲問題,我們為深度學習設計了“帶有延遲補償的異步算法”;第二個工作,注意到神經網絡的非凸性質,我們提出了比參數平均更加有效的集成聚合方式,并設計了“集成-壓縮”并行深度學習算法;第三個工作,我們首次分析了隨機置亂切分方式下分布式深度學習算法的收斂速率,為算法設計提供了理論指導。

DC-ASGD算法:補償異步通信中梯度的延遲

隨機梯度下降法(SGD)是目前最流行的深度學習的優化算法之一,更新公式為:

公式 1

其中,wt為當前模型,(xt, yt)為隨機抽取的數據,g(wt; xt, yt)為(xt, yt)所對應的經驗損失函數關于當前模型wt的梯度,η為步長/學習率。

假設系統中有多個工作節點并行地利用隨機梯度法優化神經網絡模型,同步和異步是兩種常用的通信同步機制。

同步隨機梯度下降法(Synchronous SGD)在優化的每輪迭代中,會等待所有的計算節點完成梯度計算,然后將每個工作節點上計算的隨機梯度進行匯總、平均并按照公式1更新模型。之后,工作節點接收更新之后的模型,并進入下一輪迭代。由于Sync SGD要等待所有的計算節點完成梯度計算,因此好比木桶效應,Sync SGD的計算速度會被運算效率最低的工作節點所拖累。

異步隨機梯度下降法(Asynchronous SGD)在每輪迭代中,每個工作節點在計算出隨機梯度后直接更新到模型上,不再等待所有的計算節點完成梯度計算。因此,異步隨機梯度下降法的迭代速度較快,也被廣泛應用到深度神經網絡的訓練中。然而,Async SGD雖然快,但是用以更新模型的梯度是有延遲的,會對算法的精度帶來影響。什么是“延遲梯度”?我們來看下圖。

圖2 異步隨機梯度下降法

在Async SGD運行過程中,某個工作節點Worker(m)在第t次迭代開始時獲取到模型的最新參數wt和數據(xt, yt),計算出相應的隨機梯度gt,并將其返回并更新到全局模型w上。由于計算梯度需要一定的時間,當這個工作節點傳回隨機梯度gt時,模型wt已經被其他工作節點更新了τ輪,變為了wt+τ。也就是說,Async SGD的更新公式為:

公式 2

對比公式1,公式2中對模型wt+τ上更新時所使用的隨機梯度是g(wt; xt, yt),相比SGD中應該使用的隨機梯度g(wt+τ; xt+τ, yt+τ)產生了τ步的延遲。因而,我們稱Async SGD中隨機梯度為“延遲梯度”。

延遲梯度所帶來的最大問題是,由于每次用以更新模型的梯度并非是正確的梯度(請注意g(wt; xt, yt) ≠ g(wt+τ; xt+τ, yt+τ)),所以導致Async SGD會損傷模型的準確率,并且這種現象隨著機器數量的增加會越來越嚴重。如下圖所示,隨著計算節點數目的增加,Async SGD的精度逐漸變差。

圖3 異步隨機梯度下降法的性能

那么,如何能讓異步隨機梯度下降法在保持訓練速度的同時,獲得更高的精度呢?我們設計了可以補償梯度延遲的DC-ASGD(Delay-compensated Async SGD)算法。

為了研究正確梯度g(wt+τ)和延遲梯度g(wt)之間的關系,我們將g(wt+τ)在wt處進行泰勒展開:

其中,?g(wt)為梯度的梯度,也就是損失函數的Hessian矩陣,H(g(wt))為梯度的Hessian矩陣。顯然,延遲梯度實則為真實梯度的零階近似,而其余各項造成了延遲。于是,一個自然的想法是,如果我們將所有的高階項都計算出來,就可以修正延遲梯度為準確梯度了。然而,由于余項擁有無窮項,所以無法被準確計算。因此,我們選擇用上述公式中的一階項進行延遲補償:

眾所周知,在現代的深度神經網絡模型中有上百萬甚至更多的參數,計算和存儲Hessian矩陣?g(wt)成為了一件幾乎無法完成的事情。因此,尋找Hessian矩陣的一個良好近似是能否補償梯度延遲的關鍵。根據費舍爾信息矩陣的定義,梯度的外積矩陣

是Hessian矩陣的一個漸近無偏估計,因此我們選擇用G(wt)來近似估計Hessian矩陣。根據前人的研究,如果在神經網絡模型中用Hessian矩陣的對角元來近似Hessian矩陣,在顯著降低運算和存儲復雜度的同事還可以保持算法精度,于是我們采用diag(G(wt))作為Hessian矩陣的近似。為了進一步降低近似的方差,我們使用一個(0,1]之間參數λ來對偏差和方差進行調節。綜上,我們設計了如下帶有延遲補償的異步隨機梯度下降法(DC-ASGD),

其中,對延遲梯度g(wt)的補償項中只包含一階梯度信息,幾乎不增加計算和存儲代價。

我們在CIFAR10數據集和ImageNet數據集上對DC-ASGD算法進行了評估,實驗結果見以下兩圖。

圖4 DC-ASGD的訓練/測試誤差_CIFAR-10

圖5 DC-ASGD的訓練/測試誤差_ImageNet

可以觀察到,DC-ASGD算法與Async SGD算法相比,在相同的時間內獲得的模型準確率有顯著的提升,并且也高于Sync SGD,基本可以達到SGD相同的模型準確率。

Ensemble-Compression算法:改進非凸模型的聚合方法

參數平均是現有的分布式深度學習算法中非常普遍的模型聚合方法。如果損失函數關于模型參數是凸的,以下不等式成立:

其中,K為計算節點個數,wk是局部模型,為參數平均后的模型,(x, y)為任意樣本數據。該不等式的左端是平均模型所對應的損失函數,右端是各個局部模型的損失函數值的平均值。可見,凸問題中參數平均可以保持模型的性能。

但是,對于非凸的神經網絡模型,以上不等式將不再成立,因而平均模型的性能不再具有保證。這一點在實驗上也得到了驗證:如圖6所示,對于不同的交互頻率(尤其是較低頻的交互),參數平均通常會大幅度拉低訓練精度,使得訓練的過程極不穩定。

圖6 基于參數平均的分布式算法訓練曲線(DNN模型)

為了解決這個問題,我們提出用模型集成替代模型平均,作為分布式深度學習中的模型聚合方式。雖然神經網絡的損失函數關于模型參數是非凸的,但是關于模型的輸出一般是凸的(比如深度學習中常用的交叉熵損失)。這時,利用凸性可以得到如下不等式:

其中,不等式左側是集成(ensemble)模型的損失函數取值。可見,對于非凸模型,集成模型可以保持性能。

然而,每經過一次集成,神經網絡模型的規模就會增加倍,從而出現模型規模爆炸的問題。那么,有沒有一種既能利用模型集成的優點,又能避免增大模型的方法呢?我們提出了一種同時基于模型集成和模型壓縮的模型聚合方法, 即集成-壓縮(ensemble-compression)方法。在每次集成之后,我們對集成所得的模型進行一次壓縮。

算法具體分為三個步驟:

各個計算節點依照本地優化算法訓練和局部數據訓練出局部模型;

計算節點之間相互通信局部模型得到集成模型,并對(一部分)局部數據標注上集成模型對它們的輸出值;

利用模型壓縮技術(比如知識蒸餾),結合數據的再標注信息,在每個工作節點上分別進行模型壓縮,獲得與局部模型大小相同的新模型作為最終的聚合模型。為了進一步節省計算量,可以將蒸餾的過程和本地模型訓練的過程結合在一起。

這種集成-壓縮的聚合方法,既可以通過集成獲得性能提升,又可以在學習的迭代過程中保持全局模型的規模。CIFA-10和ImageNet上的實驗結果也很好地驗證了集成-壓縮聚合方法的有效性(見圖7和圖8)。當工作節點之間相互通信的頻率較低時,參數平均方法表現會很差,但模型集成-壓縮的方法卻依然能取得理想的效果。這是因為集成學習在子模型具有多樣性時效果更好,而較低的通信頻率會導致各個局部模型更加分散,多樣性更強;同時,較低的通信頻率意味著較低的通信代價。因此,模型集成-壓縮的方法更適用于網絡環境比較差的場景。

圖7 CIFAR數據集上對比各種分布式算法

圖8 ImageNet數據集上對比各種分布式算法

基于模型集成的分布式算法是一個比較新的研究領域,還存在很多沒有解決的問題。比如說當工作節點非常多的時候或者本地模型本身就很大的時候,集成模型的規模會變得非常大,這會帶來較大的網絡開銷。另外,當集成模型較大時,模型壓縮也會變成一個較大的開銷。值得注意的是,在ICLR 2018上,Hinton等人提出的Co-distillation方法,盡管在動機上和這個工作不同,但是其算法和這個工作非常相似。如何理解這些關聯和解決這些局限性將催生新的研究,感興趣的讀者可以對此進行思考。

隨機重排下算法的收斂性分析:改進分布式深度學習理論

最后,簡單介紹一個我們最近在改進分布式深度學習理論方面的工作。

分布式深度學習中常用的數據分配策略是隨機重排之后均等切分。具體來說,是將所有訓練數據隨機地打亂順序,得到數據的一個重排列,然后將數據集按順序等分,并將每一份存放在計算節點上。在數據被過完一輪后,如果收集所有的局部數據并重復上述過程,一般被稱為“全局重排”,如果只是對局部數據進行隨機重排,一般被稱為“局部重排”。

現有的絕大部分分布式深度學習理論中都假定數據是獨立同分布的。然而,基于Fisher-Yates算法的隨機重排實際上與無放回抽樣等價,訓練數據之間不再是獨立同分布的了。于是,每一輪所計算的隨機梯度也不再是精確梯度的無偏估計,所以以往分布式隨機優化算法的理論分析方法不再適用,已有的收斂性結果也不一定仍然成立。

我們利用Transductive Rademancher Complexity作為工具,給出了隨機梯度相對于精確梯度的偏差上界,證明了隨機重排下分布式深度學習算法的收斂性分析。

假設目標函數光滑(不一定是凸函數),系統中有K個計算節點,訓練輪數(epoch)為S,總訓練數據有n個,考慮分布式SGD算法。

(1)如果采用全局隨機重排數據分配策略,算法的收斂速率為,其中非i.i.d.性質帶來的額外誤差為。因此,當過數據的輪數遠遠小于訓練樣本數目時(S ?n),額外誤差的影響可以忽略。考慮到現有的分布式深度學習任務中,S ?n是很容易滿足的,所以全局隨機重排不會影響分布式算法的收斂速率。

(2)如果采用局部重排策略數據分配策略,算法的收斂速率為,其中非i.i.d.性質帶來的更大的額外誤差。原因是,由于隨機重排是本地局部進行的,不同計算節點之間的數據沒有進行交互,數據的差異性更大,隨機梯度的偏差也更大。當過數據的輪數S?n/K2時,額外誤差的影響可以忽略。也就是說,使用局部重排數據分配策略時,算法中過數據的輪數要收到計算節點數目的影響。如果計算節點數比較多,過的輪數不能太大。

目前,分布式深度學習領域的發展非常迅速,而以上工作只是我們研究組所做的一些初步探索。希望本文能夠讓更多的研究人員了解“分布式”需要與“深度學習”進行深度融合,大家一起推動分布式深度學習的新發展!

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

    關注

    2

    文章

    809

    瀏覽量

    38113
  • 機器學習
    +關注

    關注

    66

    文章

    8445

    瀏覽量

    133121
  • 深度學習
    +關注

    關注

    73

    文章

    5518

    瀏覽量

    121603

原文標題:分布式深度學習新進展:讓“分布式”和“深度學習”真正深度融合

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深度學習模型是如何創建的?

    具有深度學習模型的嵌入式系統應用程序帶來了巨大的好處。深度學習嵌入式系統已經改變了各個行業的企業和組織。
    發表于 10-27 06:34

    TDA4對深度學習的重要性

    )和Deep-learning Matrix Multiply Accelerator(MMA),可以高效進行卷積計算、矩陣變換等一些基本地深度學習算子。TIDL 是TI的針對于嵌入
    發表于 11-03 06:53

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

    準確的模型。有了上述機制,現在可以通過讓神經網絡模型學習各種問題來自動解決問題,創建高精度模型,并對新數據進行推理。然而,由于單個神經網絡只
    發表于 02-17 16:56

    NVIDIA遷移學習工具包 :用于特定領域深度學習模型快速訓練的高級SDK

    對于設計和集成智能視頻分析(IVA)端應用程序(如停車管理、安全基礎設施、零售分析、物流管理和訪問控制等)的開發人員,NVIDIA 的遷移學習工具包提供了端到端的深度學習工作流,可以加速深度
    的頭像 發表于 12-07 14:45 ?3200次閱讀

    針對線性回歸模型深度學習模型,介紹了確定訓練數據集規模的方法

    學習模型的表現會按照冪定律持續提升。例如,有人曾用深度學習方法對三億張圖像進行分類,發現模型的表
    的頭像 發表于 05-05 11:03 ?6266次閱讀

    基于預訓練模型和長短期記憶網絡的深度學習模型

    作為模型的初始化詞向量。但是,隨機詞向量存在不具備語乂和語法信息的缺點;預訓練詞向量存在¨一詞-乂”的缺點,無法為模型提供具備上下文依賴的詞向量。針對該問題,提岀了一種基于預訓練
    發表于 04-20 14:29 ?19次下載
    基于預<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>

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

    雖然大多數深度學習模型都是在 Linux 系統上訓練的,但 Windows 也是一個非常重要的系統,也可能是很多機器學習初學者更為熟悉的系統
    的頭像 發表于 11-08 10:57 ?1557次閱讀

    模型為什么是深度學習的未來?

    與傳統機器學習相比,深度學習是從數據中學習,而大模型則是通過使用大量的模型
    的頭像 發表于 02-16 11:32 ?2177次閱讀

    深度學習框架區分訓練還是推理嗎

    模型,以便將來能夠進行準確的預測。推理是指在訓練完成后,使用已經訓練好的模型進行新的預測。然而,
    的頭像 發表于 08-17 16:03 ?1452次閱讀

    深度學習如何訓練出好的模型

    算法工程、數據派THU深度學習在近年來得到了廣泛的應用,從圖像識別、語音識別到自然語言處理等領域都有了卓越的表現。但是,要訓練出一個高效準確的深度
    的頭像 發表于 12-07 12:38 ?1194次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學習</b>如何<b class='flag-5'>訓練</b>出好的<b class='flag-5'>模型</b>

    如何基于深度學習模型訓練實現圓檢測與圓心位置預測

    Hello大家好,今天給大家分享一下如何基于深度學習模型訓練實現圓檢測與圓心位置預測,主要是通過對YOLOv8姿態評估模型在自定義的數據集上
    的頭像 發表于 12-21 10:50 ?2217次閱讀
    如何基于<b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>模型</b><b class='flag-5'>訓練</b>實現圓檢測與圓心位置預測

    如何基于深度學習模型訓練實現工件切割點位置預測

    Hello大家好,今天給大家分享一下如何基于深度學習模型訓練實現工件切割點位置預測,主要是通過對YOLOv8姿態評估模型在自定義的數據集上
    的頭像 發表于 12-22 11:07 ?872次閱讀
    如何基于<b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>模型</b><b class='flag-5'>訓練</b>實現工件切割點位置預測

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

    深度學習模型訓練是一個復雜且關鍵的過程,它涉及大量的數據、計算資源和精心設計的算法。訓練一個深度
    的頭像 發表于 07-01 16:13 ?1544次閱讀

    深度學習的典型模型訓練過程

    深度學習作為人工智能領域的一個重要分支,近年來在圖像識別、語音識別、自然語言處理等多個領域取得了顯著進展。其核心在于通過構建復雜的神經網絡模型,從大規模數據中自動學習并提取特征,進而實
    的頭像 發表于 07-03 16:06 ?1705次閱讀

    AI大模型深度學習的關系

    人類的學習過程,實現對復雜數據的學習和識別。AI大模型則是指模型的參數數量巨大,需要龐大的計算資源來進行
    的頭像 發表于 10-23 15:25 ?1384次閱讀
    主站蜘蛛池模板: 黄色网大全 | eee在线播放成人免费 | 琪琪see色原网一区二区 | 中文4480yy私人免费影院 | 97影院理论片手机在线观看 | 日本亚洲免费 | 免费精品美女久久久久久久久 | 视频二区中文字幕 | 国产精品a在线观看香蕉 | 成年人网站免费观看 | 中文字幕精品一区二区2021年 | 亚洲免费视频在线观看 | 性欧美xxxx视频在线观看 | 特级毛片免费视频观看 | 女人本色高清在线观看wwwwww国产 | 色戒真做gif动图 | 深爱综合网 | 免费福利午夜影视网 | 中文字幕视频二区 | 一级日本高清视频免费观看 | 一区二区三区精品视频 | 欧美zoozzooz在线观看 | 久久精品30 | 美女喷白浆视频 | 日本天堂网在线观看 | 成人国产激情福利久久精品 | 华人被黑人粗大猛然进 | 四虎国产精品免费入口 | 91牛牛| 日本簧片在线观看 | 天天综合天天添夜夜添狠狠添 | 俺来也俺去啦久久综合网 | 性a爱片免费视频性 | 狠狠干福利视频 | 人色网| 欧美一区二区三区在线观看免费 | 性欧美黑人xxxx | 亚洲免费视频观看 | 国产成人毛片毛片久久网 | 天天视频官网天天视频在线 | 天天操夜夜操天天操 |