非死book加速深度學習研發

jopen 9年前發布 | 23K 次閱讀 深度學習

第八屆超大數據庫會議(XLDB2015)5 月 19 日—20 日在斯坦福大學召開,會議邀請了 非死book 人工智能實驗室(FAIR)的 Keith Adams 做了題為“Accelerating Deep Learning at 非死book”的特邀報告。在 Keith 的報告中,他首先對深度學習進行了一個簡單的介紹,然后詳細介紹了 FAIR 為加速深度學習,從硬件、軟件和優化等方面所做的一些努力。本文由黃立威、張天雷整理。

非死book 人工智能實驗室(FAIR)成 立于 2013 年 12 月,主要致力于利用人工智能技術在圖像和視頻理解、語言識別、自然語言理解等領域取得突破。Keith Adams 是 非死book 人工智能實驗室的一名資深工程師。他在 非死book 的主要工作是構建訓練智能系統的基礎設施。Keith 是 HipHop 虛擬機團隊的創始成員之一,其創建的 PHP 引擎,被 非死book、維基百科、Etsy 等其他許多網站所使用。在加入 非死book 之前,他在 VMware 的虛擬機監視器團隊工作了九年。

近年來,人工智能領域所取得的許多進步都與“深度學習”息息相關。受益于大數據的出現和大規模計算能力的提升,深度學習已然成為最活躍的計算機 研究領域之一。 深度學習的多層非線性結構使其具備強大的特征表達能力和對復雜任務的建模能力。但是構建成熟的深度學習模型常常涉及到巨大的訓練數據集,大的模型以及超長 的計算時間,因此,深層模型的并行化框架和訓練加速方法是深度學習走向實用的重要基石。

深度學習的參數訓練過程中,隨機梯度下降(SGD)是最常被使用的方法。然而在這個過程中,通常需要很多的技巧,例如模型深度的選擇,神經元個 數的設定,訓練權重的初始化,學習率的調整,Mini-batch 的控制等等。即便對這些技巧十分精通,實踐中也要多次訓練,反復摸索嘗試。此外,隨機梯度下降本質上串行的,深層模型參數多,計算量大,訓練數據的規模更 大,需要消耗很多計算資源,訓練時間會非常長。針對深度學習面臨的這些挑戰,Keith 介紹了他們的團隊在加速深度學習方面所采用幾種方法。

GPGPU 加速

GPU(Graphic Process Units,圖形處理器)的眾核體系結構包含幾千個流處理器,可將運算并行化執行,大幅縮短模型的運算時間。隨著 NVIDIA、AMD 等公司不斷推進其 GPU 的大規模并行架構支持,面向通用計算的 GPU(General-Purposed GPU, GPGPU)已成為加速可并行應用程序的重要手段。得益于 GPU 眾核(many-core)體系結構,程序在 GPU 系統上的運行速度相較于單核 CPU 往往提升幾十倍乃至上千倍。目前 GPU 已經發展到了較為成熟的階段。利用 GPU 來訓練深度神經網絡,可以充分發揮其數以千計計算核心的高效并行計算能力,在使用海量訓練數據的場景下,所耗費的時間大幅縮短,占用的服務器也更少。如果 針對適當的深度神經網絡進行合理優化,一塊 GPU 卡可相當于數十甚至上百臺 CPU 服務器的計算能力,因此 GPU 已經成為業界在深度學習模型訓練方面的首選解決方案,也是 非死book 當前加速深度學習的最重要方式。

數據并行(Data Parallel)

數據并行是指將訓練數據切分為N份,分配給N個 worker 對N個分片的數據并行訓練。完成數據并行訓練之后,模型的梯度是所有分片數據上梯度的平均值,然后使用這個均值對參數進行更新,之后再將更新的參數返回給 N個 worker 進行下一次的迭代。在訓練的過程中,多個訓練過程相互獨立,每次迭代過程中 worker 之間的通信等比于參數的數量。數據并行也存在自身的缺點,當訓練數據太多時,數據并行不得不減小學習率,以保證訓練過程的平穩。

模型并行(Model Parallel)

模型并行將模型拆分成幾個單元,每一層都可以被拆分,由不同的訓練單元分別持有,共同協作完成訓練。當一個計算單元上的神經元的輸入來自另一個 訓練單元上的神經元的輸出時,不同計算單元之間就產生通信開銷。因此,模型并行拆分的單元太多時,神經元輸出值的通信量會急劇增加,導致模型的效率大幅下 降。多數情況下,模型并行帶來的通信開銷和同步消耗超過數據并行,因此加速比也不及數據并行。但對于單機內存無法容納的大模型來說,模型并行提供了一個很 好的選擇。同時也可以組合數據并行和模型并行產生混合架構。

基于 Torch7 的深度學習(Productive Deep Learning with Torch7)

Torch7是一個為機器學習算法提供廣泛支 持的科學計算框架,其中的神經網絡工具包(Package)實現了均方標準差代價函數、非線性激活函數和梯度下降訓練神經網絡的算法等基礎模塊,可以方便 地配置出目標多層神經網絡。Torch 長期以來都是很多機器學習和人工智能項目的核心,不僅是學術界,就連谷歌、推ter 和英特爾等企業也都使用這一架構。非死book 開發了一些能夠在 Torch7 上更快速地訓練神經網絡的模塊,推出了一些優化工具,加快了基于 Torch 的深度學習項目的運行速度,比如,其中一個工具允許開發者使用多個 GPU 進行參數的并行訓練,還有工具可以使卷積神經網絡的訓練速度提升數十倍以上,而卷積神經網絡是很多深度學習系統的核心。另外,非死book 還推出了多款工具,為 Torch 自帶的功能賦予更快的速度,這些工具的速度常常比 Torch 默認工具快 3 至 10 倍。

參數服務器架構(Parameter Server Architecture)

CPU 集群方案的基本架構包含用于執行訓練任務的 Worker、用于分布式存儲分發模型的參數服務器(Parameter Server)和用于協調整體任務的主控程序(Master)。CPU 集群方案適合訓練 GPU 內存難以容納的大模型,以及稀疏連接神經網絡。Keith 還對 Andrew Ng 和 Jeff Dean 提出的參數服務器架構進行了簡單介紹,他們在 Google 用 1000 臺 CPU 服務器,完成了模型并行和 Downpour SGD 數據并行的深度神經網絡訓練。Andrew Ng 和 Jeff Dean 的這項成果發表在 NIPS2012 上。

在 Keith 的報告中,還提到了 Tensor DSM 等其他的方式用于加速深度學習。總之,深度學習可通過學習一種深層非線性網絡結構,實現復雜函數逼近,并展現了強大的學習數據集本質和高度抽象化特征的能 力。但是其面臨的最大問題是如何解決其過長的計算時間,只有強有力的基礎設施和定制化的并行計算框架,才能讓以往不可想象的訓練任務加速完成,為深度學習 走向實用奠定堅實的基礎。

來自: InfoQ


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!