日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 深度神經網絡DNN的多GPU數據并行框架 及其在語音識別的應用

深度神經網絡DNN的多GPU數據并行框架 及其在語音識別的應用

來源:程序員人生   發布時間:2014-09-16 04:08:15 閱讀次數:2255次

深度神經網絡(Deep Neural Networks, 簡稱DNN)是近年來機器學習領域中的研究熱點,產生了廣泛的應用。DNN具有深層結構、數千萬參數需要學習,導致訓練非常耗時。GPU有強大的計算能力,適合于加速深度神經網絡訓練。DNN的單機多GPU數據并行框架是騰訊深度學習平臺的一部分,騰訊深度學習平臺技術團隊實現了數據并行技術加速DNN訓練,提供公用算法簡化實驗過程。對微信語音識別應用,在模型收斂速度和模型性能上都取得了有效提升――相比單GPU 4.6倍加速比,數十億樣本的訓練數天收斂,測試集字錯率降低約10%。目前基于此框架訓練的模型成功上線到微信語音輸入法、微信語音開放平臺和微信語音消息轉文字。

1.DNN數據并行導論

1.1.典型應用分析:語音識別

語音識別是深度神經網絡獲得成功的一個應用范例。

語音識別應用,簡單來說由聲學模型建模,語言模型建模以及解碼三部分構成。其中聲學模型用來模擬發音的概率分布,語言模型用來模擬詞語之間的關聯關系,而解碼階段就是利用上述兩個模型,將聲音轉化為文本。神經網絡具有模擬任何分布的能力,深度神經網絡比淺層神經網絡表達能力更強,它模擬了人腦的深層結構,能夠更準確地“理解”事物的特征。因此相較于其他方法,深度神經網絡可以更為準確地模擬聲學模型和語言模型。這里將深度神經網絡應用于語音識別中的聲學模型建模。

圖 1揭示了一個深度神經網絡表達的具有4個隱藏層的聲學模型結構,訓練這樣的具有深層結構的模型,其優勢在于逐層的特征學習過程是由初級到高級的過程:第一層學習初始特征(例如最基本的發聲),在后面的層次逐漸學習到越來越高級的特征(例如聲音的組合),直到通過模型的輸出層來有效地識別聲音。

1.2.現有的加速方法

騰訊深度學習平臺技術團隊在語音識別研究中率先引入了GPU技術用于DNN訓練,獲得了良好的成果,相比單臺CPU服務器達到千倍加速比。隨著訓練數據集擴充、模型復雜度增加,即使采用GPU加速,在實驗過程中也存在著嚴重的性能不足,往往需要數周時間才能達到模型的收斂,不能滿足對于訓練大規模網絡、開展更多試驗的需求。目前服務器上安裝多個GPU卡已經非常普遍,在通用計算領域使用多GPU并行加速技術擴展計算密集型應用程序的并行性、提高程序性能也是越來越熱門的發展方向。

由于語音業務中DNN模型采用多層全連接的網絡結構,騰訊深度學習平臺技術團隊在單機多GPU模型并行的實踐中發現拆分其模型存在較大的額外開銷,無論采用普通模型拆分還是流式控制,擴展性有限:相比GPU的計算能力,如果模型參數量不能匹配,模型并行不能有效地利用多個高計算能力的GPU卡,表現為使用2GPU時已有較好的性能提升,但使用更多GPU卻無法取得更好效果。

騰訊深度學習平臺技術團隊考慮到上述問題,在騰訊深度學習平臺的DNN多GPU并行訓練框架中,選擇了數據并行的技術路線,完成了升級版的單機多GPU數據并行版本。

本文描述了多GPU加速深度神經網絡訓練系統的數據并行實現方法及其性能優化,依托多GPU的強大協同并行計算能力,結合數據并行特點,實現快速高效的深度神經網絡訓練。

1.3.框架設計目標

由于訓練深層網絡使用的訓練數據規模龐大、計算開銷大,從而訓練過程收斂難,訓練用時久,通過開發多GPU數據并行版本期望達到下述目標:充分利用單機多GPU計算資源和DNN的數據并行特性,加速模型訓練過程;提供默認的深度學習算法實現,以幫助提升語音識別準確率;提供更好的易用性支持,方便進行模型訓練。

上述目標完成后,系統可以支持目標模型的快速訓練,達到更好的收斂效果。另外,作為深度學習平臺中的DNN數據并行框架,其訓練算法具有一定的通用性,可通過簡單配置快速適用于其他DNN應用場景中。

1.4.挑戰

在語音識別應用中,深度模型包含數萬神經元,采用全連接結構,具有數千萬參數需要訓練,計算量大;需要海量語音數據進行訓練,在避免過擬合的前提下提高模型準確率、提高模型泛化能力。因此,如何充分利用計算資源實施數據并行以加速訓練是框架設計首要解決的問題。

數據并行中參數交換容易成為整體性能瓶頸,因為在參數交換時需要將各個Model Replica在本次mini-batch訓練中得到的梯度合并后用于更新參數服務器上的模型,之后再將最新模型推送到各個數據并行單元上用于下一輪計算。如何解決參數交換瓶頸以提高性能,成為并行方法設計的重中之重。

自適應學習率算法對于隨機梯度下降(Stochastic Gradient Descent, 簡稱SGD)過程有利于加速收斂并獲得更好的結果。但是它需要對模型中每個參數存儲helper_sum并頻繁更新對應的學習率,影響性能。因此,如何將其有效地應用到數據并行框架中,是我們所需要解決的另一個重點問題。

2.系統概述

如何數據并行?

數據并行:指對源數據集合中的元素同時(即并行)執行相同操作的情況。在數據并行操作中,將對源數據集合進行分區,以便多個并行處理單元能夠同時對不同的子數據集合進行操作。

圖2揭示了從單GPU訓練到多GPU數據并行訓練的變化,主要在于:單GPU每個周期訓練1個mini-batch,mini-batch訓練結束后即順帶在GPU顯存中完成了更新模型參數的操作;在多個GPU同時訓練多組mini-batch數據,每個數據并行組(Worker Group)充分利用本組上獨占的GPU資源,在mini-batch訓練結束時還需要一個將參數從各個GPU上交換并更新的過程,最終使得每個GPU上都持有最新模型副本,繼續進行下一個周期訓練過程。

多GPU并行系統從功能上劃分為用于讀取和分發數據的Training Data Dispatcher和用于做數據并行訓練的GPU Worker Group,如圖3所示。訓練數據從磁盤文件讀取到CPU主存再拷貝到GPU顯存,故此設計在各Worker Group計算每batch數據時,由Training Data Dispatcher從文件中讀取并分發下一batch數據,以達到用計算時間掩蓋I/O時間的設計目標。

3.GPU Worker Group: 數據并行的承載體

數據并行以Worker Group為基本組織形式,調度來源于CPU,計算資源來源于GPU卡。GPU卡通常被看成是加速卡或協處理器卡,必須在基于CPU的主機上下文中被調用來做計算,因此1個CPU線程綁定1個Worker Group中的1張GPU卡能夠發揮多GPU的并行效能。

在實際生產環境中,安裝多GPU服務器的硬件體系結構如圖4所示,示例中揭示了一個8 GPU節點服務器的硬件配置,每兩個GPU Slot安裝在一個GPU專用PCI槽位上再通過PCIe Switch將GPU Slot 0,1,2,3安裝在一顆CPU上,GPU Slot 4,5,6,7安裝在另一顆CPU上,兩顆CPU通過IOH(Input Output Hub)連接。

在數據并行的場景下,將每顆GPU綁定一個Worker Group,即形成8路數據并行的并行化訓練配置。

4.數據并行中參數交換的線形拓撲

4.1.數據并行的關鍵問題:參數交換是瓶頸

使用基于mini-batch的隨機梯度下降算法時,每計算完成1個mini-batch后需要將本次計算得到梯度(圖中記為Δw)應用到相應參數(圖中記為w)上,樸素的參數更新公式為:

公式中,i是參數更新的次數,weight指代某個參數,ε是學習速率,Δw是本次BP計算出的梯度。

在數據并行的實現中,影響性能的瓶頸在于多GPU間的參數交換。這是因為按照參數更新公式來看,需要將所有模型replica的梯度交換到參數服務器并更新到相應參數上,而參數服務器的帶寬成為瓶頸。

最優化的參數交換解決方案應具有的特征:盡量減少總的通信量;盡量減少所用交換周期數;每個周期用滿PCIe總線通信帶寬;GPU間數據傳輸沒有等待;可擴展性強,適用于不同GPU數目的場景。

4.2.常見的解法

解決這一問題,直觀的想法是依靠多GPU之間點到點的數據傳輸,即在每兩個GPU之間建立數據傳輸連接,交換各自的ΔW。但是這樣的解決方案提升的性能有限,主要在于任一GPU上計算出的ΔW在PCIe總線上需要多次傳輸才能更新到所有GPU的參數模型上,過多占用和消耗PCIe總線帶寬。而隨著GPU數增多,交換時間隨之呈平方量級增加,這無疑是不適合的。

另一種常見思路是采用分治法+樹形結構,為此可設計樹形拓撲:模型2分片,奇/偶Worker Group負責歸并模型不同分片,Worker Group間總是兩兩歸并;當最終將2個分片歸并結束后,開始反向的分發過程。但在多GPU場景下這種也存在著局限,主要在于每個歸并周期后,總有一半GPU不再參與之后的歸并過程,閑置了其計算能力和所在節點上的通信帶寬。

4.3.當前最優解:線形拓撲

我們針對多GPU場景設計了參數交換的線形拓撲:

線形拓撲從空間上來看,如圖6所示,將存儲參數的矩陣、存儲梯度的矩陣等量劃分了Partition,Partition數量是Worker Group數的一半。令持有某一Partition最終累加結果的Worker Group(一般為Group ID為奇數的GPU),稱之為該Partition的Partition Owner。對該Partition的更新參數操作會在該Partition Owner上執行,同時該Partition最新參數的分發過程也由該Partition Owner發起。

線形拓撲從時間上來看,如圖7所示,將參數交換過程劃分了周期,每個周期內將所有Partition從上游Worker Group向下游Worker Group推送一次,推送過程包括從上游Worker Group拷貝Partition數據和本地Merge兩步操作,推送階段的最后1個周期推送該Partition到Partition Owner上以使其持有參數的最新副本。推送所用周期數為數據并行組數-1。

之后參數分發過程,亦占用與推送相同的周期數分發Partition Owner上的最新副本給所有Worker Group。

我們比較容易給出線形拓撲的性能模型。PCIe總線帶寬一定(設為W),取數據并行的Worker Group數目為2N,模型大小為M。在采用點到點全量參數交換的情景下,每兩個Worker Group均需要進行對等的數據交換,因此數據傳輸的最短周期為2*(2N-1)次,每次在總線上傳輸數據量為M,故推導出參數交換用時2*(2N-1)*(M/W)。在采用線形拓撲的情景下,在每個組號為單數(1,3,5,…)的組上維護著整個模型參數相應的1/N,按照線形拓撲,單次數據交換中只傳輸了(1/N)* M的數據量,參數歸并周期為2N-1,參數分發周期也為2N-1,因此推導出參數交換用時為2*(2N-1)*(M/(N*W)),僅是點到點用時的1/N(N=1,2,3,…)。可見,數據并行的并發量越大,線形拓撲的性能收益效果越顯著。

線形拓撲可以很容易地擴展到偶數個數據并行組的參數交換,其收集(推送)用時隨數據并行組數增長而緩慢增長,且具有上界――2T0,這說明線形拓撲非常適用于更多GPU做數據并行。

5.多GPU數據并行的自適應學習率(AdaGrad)算法

應用自適應學習率算法,對第i個位置上參數的學習率更新,需要借助helper_sum,其定義如下:

在數據并行情景下,helper_sum的跨組更新規則與的數據并行參數交換過程中的推送階段完全相同,由于梯度是在Partition Owner上最先持有的完全累積結果,可以根據Adagrad參數更新公式Apply到參數上,而這時只用到了Partition Owner上的helper_sum,因此只需要在Partition Owner上持有其“Own”的Partition的最新helper_sum即可,其它非Partition Owner在推送之后即需要將helper_sum清零,以便為下一次計算重新累積所用。由于helper_sum不需要分發,則交換helper_sum的過程只需要一次推送階段即可完成。

結合Adagrad算法實際應用場景:即helper_sum的累積其實是對每個學習率調整的量化過程,其本身具有一定的近似性。基于性能考量,實際項目中使用一種近似的helper_sum收集:在每個mini-batch結束后所有partition上做本地累積helper_sum計算,而在M個mini-batch結束后才將其推送到所屬的Partition Owner完成最終累積。這樣兼顧了算法效果和訓練性能。

6.在語音識別上的應用

6.1.微信語音識別產品

微信中主要有三款語音識別產品:微信語音輸入法、語音開放平臺和語音消息轉文字。多GPU數據并行框架訓練的模型正在由這些產品使用。

6.2.模型訓練實驗性能

實驗環境為一臺搭載8核心Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz的服務器,內存為48GB,服務器安裝了6塊NVIDIA Tesla K20c GPU,單GPU顯存大小為4.8GB。

訓練同樣的語音目標模型,相比于單GPU,使用6GPU數據并行獲得了4.6倍加速比。

6.3.模型準確率

采用6 GPU數據并行,使用數十億語音訓練樣本,在訓練目標模型的實驗中,數個迭代時取得了在測試集上的最佳模型,取得了10%的字錯率降低。同時相比模型并行訓練,基于數據并行的騰訊深度學習平臺可在數天內完成DNN模型訓練。

6.4.易用性

框架提供良好的易用性支持,主要在于實驗者不需要過多干預訓練過程即可完成訓練,實時獲知訓練進度和模型準確率等信息。框架主要的易用性支持包括:重要配置參數在運行時可手工改變,可自動衰減;按指定頻率輸出模型snapshot并進行自動化測試;訓練中斷點恢復,可從任意模型snapshot繼續訓練;微信監控帳號自動向實驗者推送測試結果。

7.結論

本文描述了深度神經網絡DNN的多GPU數據并行框架,通過多個Worker Group實現了數據并行,設計線形拓撲解決了參數交換性能瓶頸,實現了數據并行場景下的近似自適應學習率算法。此框架有效支持了微信語音識別,成功提升了微信語音識別的模型訓練速度,并且模型字錯率降低10%,模型全量上線到微信語音輸入法、微信語音開放平臺和微信語音消息轉文字。


免費訂閱“CSDN云計算”微信公眾號,實時掌握第一手云中消息!

CSDN作為國內最專業的云計算服務平臺,提供云計算、大數據、虛擬化、數據中心、OpenStack、CloudStack、Hadoop、Spark、機器學習、智能算法等相關云計算觀點,云計算技術,云計算平臺,云計算實踐,云計算產業資訊等服務。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲电影免费观看 | 91视频免费看 | 国产精品视频免费观看 | 激情欧美一区二区三区 | 欧美亚洲免费 | www.亚洲色图| 久久99国产精一区二区三区 | 综合av在线 | 免费高清av | 亚洲 欧美 综合 | www.超碰在线| 欧美日韩国产三区 | 91精品国产99久久久久久红楼 | 欧美日本三级 | 男女www | 国产精品99久久久久久动医院 | 亚洲高清在线视频 | 成人免费淫片aa视频免费 | 日韩成人中文字幕 | 男女污污视频在线观看 | 国产综合久久久久 | h视频国产| 亚洲一区二区精品在线 | 亚洲影院一区 | 日韩中文在线 | 欧美日韩国产中文字幕 | 亚洲精品免费视频 | 亚洲a一区 | 九九热在线播放 | 日韩在线播放视频 | 成人在线视频播放 | 亚洲午夜av久久乱码 | 草草网 | 欧美在线视频免费 | 久久亚洲国产精品 | 亚洲午夜免费视频 | 日韩一区在线播放 | 香蕉成人在线 | 欧美精品1区2区 | 成人免费ⅴa | 日韩在线精品强乱中文字幕 |