九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
AI技術大爆發(fā)背景下,開源深度學習框架的發(fā)展趨勢如何?

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

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

圖1:深度學習的典型應用場景示例

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

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

開源深度學習框架

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

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

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

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

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

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

圖3.SparkNet中的Scale Up和Scale Out

圖4.深度學習提升性能的方式

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

單機開源深度學習框架

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

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

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

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

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

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

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

分布式開源深度學習框架

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

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

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

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

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

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

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

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

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

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

  • Caffe On Spark:Yahoo于2015年開源的分布式深度學習框架,采用Java語言和Scala語言混合實現(xiàn),使用Spark+MPI架構以保障性能,其參數(shù)服務器采用點對點(Peer-to-Peer)的實現(xiàn)方式。通過將Caffe納入到Hadoop/Spark生態(tài)系統(tǒng),解決大規(guī)模分布式環(huán)境下的深度學習問題,意圖將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開源的分布式深度學習框架,目的是將Google TensorFlow移植到Spark的DataFrames,使用DataFrame的優(yōu)良特性,未來可能會結合

  • Spark的Structure Streaming對深度學習模型進行實時訓練。

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

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

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

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

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

總結與展望

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

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

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

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

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

作者簡介
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
五個值得關注的深度學習框架
2016年中盤點:大數(shù)據(jù)與機器學習
有助于你掌握機器學習的十三個框架
專訪TensorFlow貢獻者唐源:掌握 Google 深度學習框架的正確姿勢
以 Google 的架構發(fā)展經(jīng)驗,談大數(shù)據(jù)到深度學習的典型系統(tǒng)架構
Deeplearning4j首頁、文檔和下載
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服