當前一些主流深度學習框架的簡單分析


(工程選題與深度學習框架有關)

現有的任何一種大型軟件背后都存在兩種根本性的因素:商業因素和技術因素。其兩者是相互矛盾且統一的。

技術上決定了,任何現在大型軟件的開發都無法不借助已有的代碼和產品:大型軟件的復雜性決定了除非不顧及一切商業行為,否則要想實現整套系統的完全獨立開發是不切實際的。

商業上決定了,任何軟件想要盈利,技術上是要有根本性的要求,縱觀軟件的歷史,能夠保持10年以上的軟件幾乎是鳳毛麟角,也就是能夠占據壟斷地位的軟件無疑也是技術上頂尖的軟件。

所以關於深度學習框架的話題我也將從這兩方面分析,並結合工程選題的內容上簡單分析該如何選擇框架,如何更深入理解框架。

深度學習框架的商業性

深度學習框架就是標准。

軟件行業是要繼續發展下去,但方向確實是不確定的,在某些領域人們仿佛看到了天花板,而這對一個行業來講是巨大的打擊。所以人工智能的熱潮的產生也就不足為奇,但到底能夠創造出多大市場是無法確定的,但已有的人工智能領域的一些成果確實存在着巨大的商業價值,所以誰能夠把把握住這個方向,誰就是下一個時代的引領者。那么深度學習框架的價值就顯而易見了,它就是人工智能行業的標准,也是大公司必定爭奪的目標。在這場競爭中我們會看見很多優秀的產品出現,但最終能夠存活的只有那些找到根本方向的框架。也就是清楚明白標准的含義。商業上一般是誰能夠建立好的生態,誰就能夠獲得軟件的標准,微軟就是典型的例子。而深度學習框架的生態我認為主要有兩個:芯片、數據和開發者。深度學習的巨大動力就在於硬件計算能力的提升以及帶動了新的體系結構的發展,並且因為算法的核心是數據驅動,所以對於數據有巨大的需求,而深度學習要想帶動行業的發展或者說軟行業的快速發展和根本動力就在於開發者,能夠讓更多人參與進來,讓更多人能夠實現自己的目標才能從根本上推動生態的發展,而這就對框架有如下幾點要求:

1)為了能夠滿足芯片芯片廠商的要求,這個框架就必須滿足適應新的芯片的體系結構並能夠極大發揮芯片的性能(要求框架的底層實現不能按照以往的重控制輕運算,而要重運算而輕控制)。

2)這個框架要能夠跟大型數據庫接軌,要能夠充分利用各種數據庫的性能,並對數據庫要求新的設計(以前的數據大部分是結構化而非數值化,而深度學習很多數據格式跟傳統的數據是有差別的),並且大型數據是一種稀缺資源,數據的共享和數據的提煉也是整個生產鏈的關鍵。能夠把握住數據,也就把握住深度學習的命根。

3)對開發者一定要友好,要能夠提供多種語言的支持,並且不要引入過多的新概念,要減少開發者的學習成本,減少開發者的無用工程量(易於開發),並且要能夠提供很多已有的模型實現和參數(一個好用的深度學習模型是很難訓練出來的,所以要是能夠提供現有的模板,那么開發者將有更多的時間去實現業務)。

深度學習框架的技術性:

首先深度學習的底層數學運算並沒有太多的創新,雖然理論上的可解釋性數學上依舊沒有太好的解答,但工程上來講跟許多以前的數值計算沒有本質的差別,但運算量巨大卻是與以前不同。

數據,用戶友好型,其實技術性就是去想如何能夠滿足上訴的商業性要求。但世界上不存在完美的技術,不存在教條的工程原則,對於任何工程來說唯一的要求就是結合實際情況。所以深度學習框架也不會出現壟斷的情況,因為技術上是不會允許的。

那么對於我們開發者而言如何選用,如何理解,如何進行開發深度學習框架?

我主要以三個框架簡單說明:

1.TensorFlow

Google主打作品,在生態建設做的最好的深度學習框架。憑借Google的強大實力和團隊,幾乎能夠滿足所有主流的語言,對多種芯片都有支持,並且Google作為世界最大的數據資源擁有者之一,數據方面是水到渠成的,幾乎是完美兼容,所以這款框架我認為可以說是現在深度學習的代名詞,也將是以后的主流。

但他有一個明顯的缺陷是代碼過於龐大,現在已經接近100萬行,這也就意味着開發者想要修改框架,想要裁剪是工程量巨大的一件事,雖然Google的開發者社區建設良好,學習資源也眾多,但跟輕量級的框架相比,還是過於復雜,不利於深入理解深度學習框架。所以如果想找個深度學習源代碼學習,TensorFlow絕對不是個好的首選。

2.Keras

”為人類而不是機器設計的API”。幾乎各項評估中,它都是第二流行的框架。KerasTensorFlowTheanoCNTK為底層引擎。這個框架是最利於開發者快速開發,但它的本質更像一種API,而不是一個框架,兩者的區別就在於給予開發者的靈活性和擴展性。對於更高性能和更自由的開發,Keras的支持並不是一個理想的選擇,尤其是嵌入式產品的智能化。

3.caffe

對於想真正了解深度學習框架的底層原理,想要真正從零實現 一個深度學習框架的開發者而言,caffe幾乎是最理想的選擇,它是一種輕量級的深度學習框架,用c++編寫內核,並提供python接口。其代碼簡介,並提供很多有力的工具,現在所有的主流深度學習框架都有從它這里吸取營養。或者說caffe既實現了深度學習框架的核心,有沒有在工程細節上大費周章,所以想開發自己的深度學習框架或者想理解如何去優化自己代碼的性能,那么caffe是一個理想的選擇。

 

 

 

以上圖片來源於網絡

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM