深度學習開源框架選型準則和知名框架調研(一)

TensorFlow(GitHub),出身名門谷歌,風姿綽約的功能,並且經過谷歌自己的Gmail和搜索引擎的實戰磨練提升,這樣的深度學習框架熱度第一應該沒有多少異議了。開源之後,谷歌長期支持對打算投入資源的公司和開發者也是個信心,畢竟這麼燒錢的項目,不是誰都意願冒險。

目前很多開發者或者打算介入深度學習的公司而言,在瞭解了產品應用需求之後,首先要面對的就是框架選擇,畢竟Facebook、Pinterest等這樣的大戶都沒有勇氣重新造輪子(也沒有必要)。作爲CTO/架構師,都會有很多的理由闡述自己的框架選擇理由,但是我個人曾經參與開源框架經驗和架構框架選擇經驗裏有顛撲不破,久經考驗的三個準則,適用於任何框架,包括後文要討論的人工智能框架,供各位聖主參考:

  • 最合適產品應用需求
  • 最合適自己的技術團隊
  • 框架活躍度足夠高,可持續發展

GitHub上其實還有很多不錯的開源項目值得關注,首先我們推薦目前規模人氣最高的TOP4:

1,PaddlePaddle,Star數4587,C++開發,有Python接口;其被列在第一是基於四個考慮:

一是百度開源,活躍度和bug解決率目前都比較及時,並且在百度雲上面提供了對應的環境系統和雲服務,解決了揪心的一次性大規模投入;

二是框架確實還可以,文檔也完善,並且中文(有的人笑了,其實也對,玩深度學習不懂英文的還是比較少的),但是我要說的是框架本身對中文支持、中文支持、中文支持。說三遍的原因自然是因爲很重要,要知道如果項目涉及NLP,那是幾個調參都能重大影響結果的情況,更何況如果框架原本只支持英文,那不提前考慮這個問題,過程必然會很艱辛(此處有經驗的架構師/開發者應該會心一笑)。題外話是如果後面碰到框架問題,大概率你還能找到百度IDL的人,甚至挖1個專家進項目組(此處只針對土豪);

三是當前看到的幾項數據指標,確實還可以,Python接口用起來也很方便,有些bug需要解決; 

四是........,對的,你們都開始懷疑了,我還是主動聲明一下利益關係點,我曾經在百度炸過幾年碉堡;

2,Tensorflow,Star數51023,715個貢獻者,絕對的一騎絕塵,霸主必須有霸主的實力。核心模塊C++開發,但是整改項目裏的Python代碼數量反超了,各種接口豐富,目前也適配很多平臺,方便後續開發。

3,Caffe,Star數16603,238個貢獻者,周更新….毫無疑問老二,C++開發,接口豐富。小家碧玉,生於著名的加州伯克利分校,包括Pinterest、谷歌、Facebook。啊,Facebook,那不是Torch嗎?要知道Caffe作者賈揚清(對的,就是中國人,不是“吳恩達”)已經是Facebook研究科學家了。雖說不會像印度人那抱團起事,但是維護自己baby還是應該的吧!

4,CNTKStar數9937,117個貢獻者,C++開發,有完整的Python接口,文檔齊全了不少。絕對的公主級別,微軟研究院出品,是深度學習人工智能領域的研究成果ComputationalNetwork Toolkit(CNTK)。據微軟自己說,CNTK在語音和圖像辨識能力方面,比Theano、TensorFlow、Torch7、Caffe等四個開發者常用框架有更快的運算速度。

5,MXNet,Star數8846,294個貢獻者,主要用C++編寫,出自CXXNet、Minerva、Purine等項目的開發者之手。MXNet目前取得了AmazonAWS的官方背書,也是牛逼閃閃,其強調同時兼顧效率和靈活度,甚至能在Android系統上跑任務。順便說一下,餘凱老師(現在是老闆)約了亞馬遜AWS機器學習總監Alex Smola3月29日在中關村給大家開講座,感興趣這個框架的可以去聽聽。

6,Torch,Star數6537,由於Facebook支持並開源了大量Torch的深度學習模塊和擴展而迅速壯大。Torch是基於Lua,官方說Torch高效易用是得益於方便,快捷的腳本語言luajit和底層C/CUDA實施。奇怪的Lua語言……..(Lua愛好者該不開心了,我確實只學了它一天就不想繼續了,現在也不想再多學一門了,要知道前20種語言我學過並且出項目幹過的有11種,還有名單後面的VHDL、Verilog HDL)。

7,Theano,Star數5912,287個貢獻者,Cython(Cython是一個可編譯爲本地可執行代碼的Python方言),有計算的地方就有Python,接口自然多多的,用起來也是方便大大的!說是誕生於蒙特利爾理工學院,也是學院派。其實Theano最大的便利貢獻應該是基於其上的深度學習Python軟件包Keras,後者Star數13564,各種案例,並且目前同時支持Theano和TensorFlow。

8,Deeplearning4j,Star數5847,107個貢獻者,Javaand Scala開發,能夠與Hadoop andSpark深度結合。難得還能看見Java的影子,Java愛好者值得碎碎唸的深度學習框架。它是面向生產環境和商業應用的高成熟度深度學習開源庫(號稱,等我抽空實測一下),可與Hadoop和Spark集成,即插即用,方便開發者在APP中快速集成深度學習功能。

9,ConvNetJS,Star數6672,15個貢獻者,其實不算是個完整的深度學習框架,但是用Javascript語法實現的神經網絡簡直是人神,這也應該是這麼多Star數的其中一個原因。請大家記住斯坦福大學博士生AndrejKarpathy和他的小夥伴,別說我沒提Karpathy的推特http://twitter.com/karpathy

後面排名的還有:

Neon,絕對新秀,Python開發爲主,號稱N項基準測試中,Neon的測試成績甚至要優於Caffeine、Torch和TensorFlow;

ChainerPython,來自一個日本的深度學習創業公司PreferredNetworks的開源項目,Ubuntu患者的福音,搭建快速。

有了基礎概要後,下一步就是調研框架本身的技術參數:CNN和RNN性能、速度、多GPU支持,且聽下回分解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章