精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

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

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

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

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

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

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

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

開源深度學習框架

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

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

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

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

圖2:存儲系統、網絡及CPU的性能變化比較

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

圖3.SparkNet中的Scale Up和Scale Out

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

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

單機開源深度學習框架

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

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

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

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

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

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

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

分布式開源深度學習框架

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

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

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

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

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

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

圖6 .Hadoop生態體系分布式深度學習算法實現原理

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

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

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

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

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

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

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

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

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

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

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

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

總結與展望

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

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

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

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

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

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

聯系客服

主站蜘蛛池模板: 榆中县| 临澧县| 墨玉县| 北辰区| 临沭县| 壤塘县| 达州市| 任丘市| 济南市| 连江县| 绥德县| 乌拉特中旗| 平顶山市| 河津市| 洛宁县| 镇宁| 海盐县| 崇州市| 阿瓦提县| 安图县| 郑州市| 剑阁县| 道真| 寻甸| 秦皇岛市| 津市市| 团风县| 麻江县| 甘肃省| 峨眉山市| 彰化县| 友谊县| 凤阳县| 文登市| 通城县| 颍上县| 清苑县| 乌鲁木齐市| 滦南县| 廊坊市| 平塘县|