小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

AI技術(shù)大爆發(fā)背景下,開源深度學(xué)習(xí)框架的發(fā)展趨勢如何?

 LZS2851 2017-01-31

作者|周志湖、趙永標
編輯|朱昊冰
2016年是人工智能(AI)技術(shù)大爆發(fā)的一年,而深度學(xué)習(xí)作為AI領(lǐng)域的一個重要分支,儼然已經(jīng)成為AI的代名詞,人們提起AI必定會想到深度學(xué)習(xí)。本篇文章為讀者介紹了深度學(xué)習(xí)提升性能的三種方式:縱向擴展、橫向擴展及融合擴展,然后對主流的開源深度學(xué)習(xí)框架做出介紹并進行發(fā)展趨勢預(yù)測分析,從而加深讀者對開源深度學(xué)習(xí)框架的認識與了解。
寫在前面

深度學(xué)習(xí)(Deep Learning)的概念由加拿大多倫多大學(xué)教授Geoffrey Hinton等人于2006年提出,它本質(zhì)上是一種神經(jīng)網(wǎng)絡(luò)算法,其原理是通過模擬人腦進行分析學(xué)習(xí),算法訓(xùn)練時可以不用人工干預(yù),因此它也屬于一種無監(jiān)督式機器學(xué)習(xí)算法。從深度學(xué)習(xí)的概念提出到今天,已歷經(jīng)十年時間,在這十年當中,無論是國際互聯(lián)網(wǎng)巨頭Google、微軟、百度,還是全世界各大學(xué)術(shù)研究機構(gòu),都投入了巨大的人力、財力用于理論和工業(yè)級應(yīng)用的探索,并在字符識別(OCR)、圖像分類、語音識別、無人自動駕馭、自然語言處理等眾多領(lǐng)域內(nèi)取得了突破性的進展,極大地推動了人工智能(AI)的發(fā)展。

圖1:深度學(xué)習(xí)的典型應(yīng)用場景示例

2012年斯坦福大學(xué)的Andrew Ng和Jeff Dean教授共同主導(dǎo)的Google Brain項目通過使用深度學(xué)習(xí)讓系統(tǒng)能夠自動學(xué)習(xí)并識別貓,這項目研究引起了學(xué)術(shù)界和工業(yè)界極大的轟動,激起了全世界范圍研究深度學(xué)習(xí)的熱潮,《紐約時報》披露了Google Brain項目,讓普通大眾對深度學(xué)習(xí)有了最初的認知。2016年3月,Google旗下DeepMind公司開發(fā)的AlphaGo以4:1的總比分戰(zhàn)勝了世界圍棋冠軍、職業(yè)九段選手李世石,這讓人們對人工智能(AI)的認知跨越到一個新的階段。

深度學(xué)習(xí)在眾多領(lǐng)域的成功應(yīng)用,離不開學(xué)術(shù)界及工業(yè)界對該技術(shù)的開放態(tài)度,在深度學(xué)習(xí)發(fā)展初始,相關(guān)代碼就被開源,使得深度學(xué)習(xí)“飛入尋常百姓家”,大大降低了學(xué)術(shù)界研究及工業(yè)界使用的門檻。本文并不打算對深度學(xué)習(xí)算法的發(fā)展趨勢進行分析,而是跳出算法層面,對當前主流的開源深度學(xué)習(xí)框架的發(fā)展趨勢進行分析。

開源深度學(xué)習(xí)框架

在計算機視覺領(lǐng)域內(nèi),神經(jīng)網(wǎng)絡(luò)算法一直被用來解決圖像分類識別等問題,學(xué)術(shù)界采用的算法研究工具通常是Matlab、Python,有很多深度學(xué)習(xí)工具包都是基于Matlab、Python語言,在使用海量圖像訓(xùn)練深度學(xué)習(xí)算法模型時,由于單臺機器CPU的計算能力非常有限,通常會使用專門的圖形處理器(Graphics Processing Unit,GPU)來提高算法模型速度。

但在工業(yè)級應(yīng)用當中,由于Matlab、Python、R語言的性能問題,大部分算法都會使用C++語言實現(xiàn),而且隨著深度學(xué)習(xí)在自然語言處理、語音識別等領(lǐng)域的廣泛應(yīng)用,專用的GPU也慢慢演變?yōu)橥ㄓ脠D像處理器(General Purpose GPU,GPGPU),處理器不僅僅被用于渲染處理圖像,還可以用于需要處理大數(shù)據(jù)量的科學(xué)計算的場景,這種提高單臺機器的處理能力的方式屬于縱向擴展(Scale Up)。

隨著大數(shù)據(jù)時代的來臨,大數(shù)據(jù)處理技術(shù)的日趨成熟為解決深度學(xué)習(xí)模型訓(xùn)練耗時問題提供了重要發(fā)展方向,因此如何通過大數(shù)據(jù)訓(xùn)練深度學(xué)習(xí)模型在當前引起了廣泛關(guān)注,大量的研究表明:增加訓(xùn)練樣本數(shù)或模型參數(shù)的數(shù)量,或同時增加訓(xùn)練樣本數(shù)和模型參數(shù)的數(shù)量,都能夠極大地提升最終分類的準確性。由于Hadoop已經(jīng)成為構(gòu)建企業(yè)級大數(shù)據(jù)基礎(chǔ)設(shè)施的事實標準,有許多的分布式深度學(xué)習(xí)算法框架被構(gòu)建在Hadoop生態(tài)體系內(nèi),這種通過分布式集群提高處理能力的擴展方式被稱為橫向擴展(Scale Out)。

雖然利用Spark等平臺訓(xùn)練深度學(xué)習(xí)算法可以極大地提高訓(xùn)練速度,但近年來,存儲設(shè)備和網(wǎng)絡(luò)在性能方面的提升遠超CPU,如圖2所示。

圖2:存儲系統(tǒng)、網(wǎng)絡(luò)及CPU的性能變化比較

CPU性能瓶頸極大地限制了分布式環(huán)境下,單臺節(jié)點的處理速度。為解決這一問題,許多優(yōu)秀的開源深度學(xué)習(xí)框架都在嘗試將開源大數(shù)據(jù)處理技術(shù)框架如Spark和GPGPU結(jié)合起來,通過提高集群中每臺機器的處理性能來加速深度學(xué)習(xí)算法模型的訓(xùn)練,圖3給出的是SparkNet的架構(gòu)原理圖。這種通過結(jié)合橫向擴展及縱向擴展提高處理能力的方式被稱為融合擴展。圖4對深度學(xué)習(xí)提升性能的方式進行了總結(jié),圖中分別給出了橫向擴展、縱向擴展及融合擴展的典型開源深度學(xué)習(xí)框架。

圖3.SparkNet中的Scale Up和Scale Out

圖4.深度學(xué)習(xí)提升性能的方式

下面將對目前一些優(yōu)秀的開源深度學(xué)習(xí)框架進行介紹,包括基于GPU的單機開源深度學(xué)習(xí)框架和融合了GPU的開源分布式深度學(xué)習(xí)框架。讓大家熟悉目前開源深度學(xué)習(xí)主流框架的同時,又能夠進一步窺探開源分布式深度學(xué)習(xí)框架的發(fā)展方向。

單機開源深度學(xué)習(xí)框架

目前擁有眾多的學(xué)術(shù)機構(gòu)如國際頂級名校加州大學(xué)伯克利分校,以及互聯(lián)網(wǎng)巨頭如Google、微軟等開源的深度學(xué)習(xí)工具,比較成熟的基于GPU的單機開源深度學(xué)習(xí)框架有:

  1. Theano:深度學(xué)習(xí)開源工具的鼻祖,由蒙特利爾理工學(xué)院時間開發(fā)于2008年并將其開源,框架使用Python語言開發(fā)。有許多在學(xué)術(shù)界和工業(yè)界有影響力的深度學(xué)習(xí)框架都構(gòu)建在Theano之上,并逐步形成了自身的生態(tài)系統(tǒng),這其中就包含了著名的Keras,Lasagne 和Blocks。

  2. Torch:Facebook 和 Twitter主推的一款開源深度學(xué)習(xí)框架,Google和多個大學(xué)研究機構(gòu)也在使用Torch。出于性能的考慮,Torch使用一種比較小眾的語言(Lua)作為其開發(fā)語言,目前在音頻、圖像及視頻處理方面有著大量的應(yīng)用。大名鼎鼎的Alpha Go便是基于Torch開發(fā)的,只不過在Google 開源TensorFlow之后,Alpha Go將遷移到TensorFlow上。

  3. TensorFlow:Google開源的一款深度學(xué)習(xí)工具,使用C++語言開發(fā),上層提供Python API。在開源之后,在工業(yè)界和學(xué)術(shù)界引起了極大的震動,因為TensorFlow曾經(jīng)是著名的Google Brain計劃中的一部分,Google Brain項目的成功曾經(jīng)吸引了眾多科學(xué)家和研究人員往深度學(xué)習(xí)這個“坑”里面跳,這也是當今深度學(xué)習(xí)如此繁榮的重要原因,足見TensorFlow的影響力。TensorFlow一直在往分布式方向發(fā)展,特別是往Spark平臺上遷移,這點在后面會有介紹。

  4. Caffe:Caffe是加州大學(xué)伯克利分校視覺與學(xué)習(xí)中心(Berkeley Vision and Learning Center ,BVLC)貢獻出來的一套深度學(xué)習(xí)工具,使用C/C++開發(fā),上層提供Python API。Caffe同樣也在走分布式路線,例如著名的Caffe On Spark項目。

  5. CNTK:CNTK (Computational Network Toolkit)是微軟開源的深度學(xué)習(xí)工具,現(xiàn)已經(jīng)更名為Microsoft Cognitive Toolkit,同樣也使用C++語言開發(fā)并提供Python API。目前在計算視覺、金融領(lǐng)域及自然處理領(lǐng)域已經(jīng)被廣泛使用。

DeepLearning4J官網(wǎng)有篇文章《DL4J vs. Torch vs. Theano vs. Caffe vs. TensorFlow》,對這些主流的深度學(xué)習(xí)框架的優(yōu)劣勢進行了詳細的分析比較,感興趣的讀者可以點擊查看。

分布式開源深度學(xué)習(xí)框架

Google研究員Jeffy Dean在2012發(fā)表了一篇《Large Scale Distributed Deep Networks》對分布式環(huán)境下的深度學(xué)習(xí)算法設(shè)計原理進行了闡述,給出了深度學(xué)習(xí)在分布式環(huán)境下的兩種不同的實現(xiàn)思路:模型并行化(Model parallelism)和數(shù)據(jù)并行化(Model Parallelism)。模型并行化將訓(xùn)練的模型分割并發(fā)送到各Worker節(jié)點上;數(shù)據(jù)并行化將數(shù)據(jù)進行切分,然后將模型復(fù)本發(fā)送到各Worker節(jié)點,通過參數(shù)服務(wù)器(Parameter Server)對訓(xùn)練的參數(shù)進行更新。具體原理如圖5所示。

圖5.深度學(xué)習(xí)并行化的兩種方式:模型并行化(左)和數(shù)據(jù)并行化(右)

目前開源分布式深度學(xué)習(xí)框架大多數(shù)采用的是數(shù)據(jù)并行化的方式進行設(shè)計。目前有兩大類:框架自身具備分布式模型訓(xùn)練能力;構(gòu)建在Hadoop生態(tài)體系內(nèi),通過分布式文件系統(tǒng)(HDFS)、資源調(diào)度系統(tǒng)(Yarn)及Spark計算平臺進行深度學(xué)習(xí)模型訓(xùn)練。其中框架自身具備分布式模型訓(xùn)練能力的開源深度學(xué)習(xí)框架有:

  1. DSSTNE:亞馬遜開源的一套深度學(xué)習(xí)工具,英文全名為Deep Scalable Sparse Tensor Network Engine(DSSTNE),由C++語言實現(xiàn),解決稀疏數(shù)據(jù)場景下的深度學(xué)習(xí)問題。值得一提的是,亞馬遜在是否走開源的道路上一直扭扭捏捏,開源DSSTNE,似乎也是在Google、Facebook等巨頭搶占開源深度學(xué)習(xí)領(lǐng)域高地之后的無奈之舉。

  2. Paddle:百度開源的并行分布式深度學(xué)習(xí)框架(PArallel Distributed Deep Learning,PADDLE),由C++語言實現(xiàn)并提供Python API。Paddle框架已經(jīng)經(jīng)過百度內(nèi)部多個產(chǎn)品線檢驗,包括搜索廣告中的點擊率預(yù)估(CTR)、圖像分類、光學(xué)字符識別(OCR)、搜索排序、計算機病毒檢測等。

由于Hadoop生態(tài)體系已經(jīng)占據(jù)了企業(yè)級大數(shù)據(jù)市場的大部分份額,因此目前許多開源分布式都在往Hadoop生態(tài)體系遷移,這其中有Caffe、TensorFlow,也有百度的Paddle。構(gòu)建在Hadoop/Spark生態(tài)體系下的深度學(xué)習(xí)框架實現(xiàn)原理圖如下:

圖6 .Hadoop生態(tài)體系分布式深度學(xué)習(xí)算法實現(xiàn)原理

目前比較有影響力的基于Hadoop/Spark的開源分布式深度學(xué)習(xí)框架有:

  • SparkNet:由AMPLab于2015年開源,底層封裝Caffe和Tensorflow,采用集中式的參數(shù)服務(wù)器進行實現(xiàn),具體實現(xiàn)原理及架構(gòu)參見論文《SPARKNET: TRAINING DEEP NETWORKS IN SPARK》。

  • Deeplearning4J:由Skymind公司于2014年開發(fā)并開源的分布式深度學(xué)習(xí)項目,采用Java語言實現(xiàn),同時也支持Scala語言。它使用的參數(shù)服務(wù)器模式為IterativeReduce。

  • Caffe On Spark:Yahoo于2015年開源的分布式深度學(xué)習(xí)框架,采用Java語言和Scala語言混合實現(xiàn),使用Spark+MPI架構(gòu)以保障性能,其參數(shù)服務(wù)器采用點對點(Peer-to-Peer)的實現(xiàn)方式。通過將Caffe納入到Hadoop/Spark生態(tài)系統(tǒng),解決大規(guī)模分布式環(huán)境下的深度學(xué)習(xí)問題,意圖將Caffe On Spark成為繼Spark SQL、Spark ML/MLlib、Spark Graphx及Spark Streaming之后的第五個組件。

  • Tensorflow on Spark:2014年由Arimo公司創(chuàng)建,將TensorFlow移植到Spark平臺之上。

  • TensorFrames (TensorFlow on Spark Dataframes) :Databricks開源的分布式深度學(xué)習(xí)框架,目的是將Google TensorFlow移植到Spark的DataFrames,使用DataFrame的優(yōu)良特性,未來可能會結(jié)合

  • Spark的Structure Streaming對深度學(xué)習(xí)模型進行實時訓(xùn)練。

  • Inferno:由墨爾本La Trobe大學(xué)博士生Matthias Langer開發(fā)的基于Spark平臺的深度學(xué)習(xí)框架,作者正在整理發(fā)表關(guān)于Inferno的實現(xiàn)原理論文,同時也承諾在論文發(fā)表后會將代碼開源到GitHub上。

  • DeepDist:由Facebook的資深數(shù)據(jù)科學(xué)家Dirk Neumann博士開源的一套基于Spark平臺的深度學(xué)習(xí)框架,用于加速深度信念網(wǎng)絡(luò)(Deep Belief Networks)模型的訓(xùn)練,其實現(xiàn)方式可以看作是論文《Large Scale Distributed Deep Networks》中 Downpour隨機梯度下降(Stochastic Gradient Descent,SGD)算法的開源實現(xiàn)。

  • Angel:騰訊計劃于2017年開源的分布式機器學(xué)習(xí)計算平臺,Angel可以支持Caffe、TensorFlow和Torch等開源分布式學(xué)習(xí)框架,為各框架提供計算加速。Angel屬于騰訊第三代機器學(xué)習(xí)計算平臺,第一代基于Hadoop,只支持離線計算場景,第二代基于Spark/Storm,使用自主研發(fā)的Gala調(diào)度平臺替換YARN,能夠同時支持在線分析和實時計算場景,第三代屬于騰訊自研的平臺,除底層文件系統(tǒng)使用HDFS外,資源調(diào)度和計算引擎全部為騰訊自研產(chǎn)品。

SparkNet、Deeplearning4J及Caffe On Spark等構(gòu)建在Spark平臺上的深度學(xué)習(xí)框架在性能、易用性、功能等方面的詳細比較,參見《Which Is Deeper Comparison of Deep Learning Frameworks Atop Spark》、《inferno-scalable-deep-learning-on-spark》。

由于近幾年在大數(shù)據(jù)技術(shù)的日趨成熟和流行,特別是基于JVM的語言(主要是Java和Scala)構(gòu)建的大數(shù)據(jù)處理框架如Hadoop、Spark、Kafka及Hive等幾乎引領(lǐng)著大數(shù)據(jù)技術(shù)的發(fā)展方向,相信以后將會有越來越多的開源深度學(xué)習(xí)框架構(gòu)建在Hadoop生態(tài)體系內(nèi),并且基于Java或Scala語言實現(xiàn)。

總結(jié)與展望

本文首先介紹了深度學(xué)習(xí)提升性能的三種方式:縱向擴展(給機器加GPU)、橫向擴展(通過集群訓(xùn)練模型)及融合擴展(在分布式的基礎(chǔ)上,給每個集群中的Worker節(jié)點加GPU),然后對主流的開源深度學(xué)習(xí)框架進行了介紹。通過對這些開源深度學(xué)習(xí)框架的了解,可以看到當前開源深度學(xué)習(xí)框架的發(fā)展有以下幾個趨勢:

  • 分布式深度學(xué)習(xí)框架特別是構(gòu)建在Hadoop生態(tài)體系內(nèi)的分布式深度學(xué)習(xí)框架(基于Java或Scala語言實現(xiàn))會越來越流行,并通過融合擴展的方式加速深度學(xué)習(xí)算法模型的訓(xùn)練。

  • 在分布式深度學(xué)習(xí)方面,大數(shù)據(jù)的本質(zhì)除了常說的4V特性之外,還有一個重要的本質(zhì)那就是Online,數(shù)據(jù)隨時可更新可應(yīng)用,而且數(shù)據(jù)本質(zhì)上具備天然的流式特征,因此具備實時在線、模型可更新算法的深度學(xué)習(xí)框架也是未來發(fā)展的方向。

  • 當待訓(xùn)練的深度學(xué)習(xí)算法模型參數(shù)較多時,Spark與開源分布式內(nèi)存文件系統(tǒng)Tachyon結(jié)合使用是提升性能的有效手段。

深度學(xué)習(xí)作為AI領(lǐng)域的一個重要分支,儼然已經(jīng)成為AI的代名詞,人們提起AI必定會想到深度學(xué)習(xí),相信隨著以后大數(shù)據(jù)和深度學(xué)習(xí)技術(shù)的不斷發(fā)展,更多現(xiàn)象級的應(yīng)用將不斷刷新人們對AI的認知,讓我們盡情期待“奇點”臨近。

作者簡介

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多