1. 程式人生 > >13個機器學習框架

13個機器學習框架

轉:https://blog.csdn.net/zuochao_2013/article/details/77852442

1. Apache Spark MLlib

Apache Spark 最為人所知的是它是Hadoop家族的一員,但是這個記憶體資料處理框架卻是脫胎於Hadoop之外,也正在Hadoop生態系統以外為自己獲得了名聲。Hadoop 已經成為可供使用的機器學習工具,這得益於其不斷增長的演算法庫,這些演算法可以高速度應用於記憶體中的資料。

早期版本的Spark 增強了對MLib的支援,MLib是主要面向數學和統計使用者的平臺,它允許 通過持久化管道特性將Spark機器學習工作掛起和恢復。2016年釋出的

Spark2.0,對Tungsten高速記憶體管理系統和新的DataFrames流媒體API 進行了改進,這兩點都會提升機器學習應用的效能。 

2. H2O

H2O,現在已經發展到第三版,可以提供通過普通開發環境(Python, Java, Scala, R)、大資料系統(Hadoop, Spark)以及資料來源(HDFS, S3, SQL, NoSQL)訪問機器學習演算法的途徑。H2O是用於資料收集、模型構建以及服務預測的端對端解決方案。例如,可以將模型匯出為Java程式碼,這樣就可以在很多平臺和環境中進行預測。

H2O可以作為原生Python庫,或者是通過Jupyter Notebook, 或者是 R Studio中的R 語言來工作。這個平臺也包含一個開源的、基於web的、在H2O中稱為Flow的環境,它支援在訓練過程中與資料集進行互動,而不只是在訓練前或者訓練後。 

3. Apache Singa

“深度學習”框架增強了重任務型別機器學習的功能,如自然語言處理和影象識別。Singa是一個Apache的孵化器專案,也是一個開源框架,作用是使在大規模資料集上訓練深度學習模型變得更簡單。

Singa提供了一個簡單的程式設計模型,用於在機器群集上訓練深度學習網路,它支援很多普通型別的訓練工作:卷積神經網路受限玻爾茲曼機 以及迴圈神經網路。 模型可以同步訓練(一個接一個)或者也非同步(一起)訓練,也可以允許在在CPU和GPU群集上,很快也會支援FPGA。Singa也通過Apache Zookeeper簡化了群集的設定。 

3. Caffe2

深度學習框架Caffe開發時秉承的理念是“表達、速度和模組化”,最初是源於2013年的機器視覺專案,此後,Caffe還得到擴充套件吸收了其他的應用,如語音和多媒體。 
因為速度放在優先位置 ,所以Caffe完全用C+ +實現,並且支援CUDA加速,而且根據需要可以在CPU和GPU處理間進行切換。分發內容包括免費的用於普通分類任務的開源參考模型,以及其他由Caffe使用者社群創造和分享的模型

一個新的由Facebook 支援的Caffe迭代版本稱為Caffe2,現在正在開發過程中,即將進行1.0釋出。其目標是為了簡化分散式訓練和移動部署,提供對於諸如FPGA等新型別硬體的支援,並且利用先進的如16位浮點數訓練的特性。 

4. Google的TensorFlow

與微軟的DMTK很類似,Google TensorFlow 是一個機器學習框架,旨在跨多個節點進行擴充套件。 就像Google的 Kubernetes一樣,它是是為了解決google內部的問題而設計的,google最終還是把它作為開源產品釋出出來。

TensorFlow實現了所謂的資料流圖,其中的批量資料(“tensors”)可以通過圖描述的一系列演算法進行處理。系統中資料的移動稱為“流”-其名也因此得來。這些圖可以通過C++或者Python實現並且可以在CPU和GPU上進行處理。

TensorFlow近來的升級提高了與Python的相容性,改進了GPU操作,也為TensorFlow能夠執行在更多種類的硬體上打開了方便之門,並且擴充套件了內建的分類和迴歸工具庫。 
image

5. 亞馬遜的機器學習

亞馬遜對雲服務的方法遵循一種模式:提供基本的內容,讓核心受眾關注,讓他們在上面構建應用,找出他們真正需要的內容,然後交付給他們。

亞馬遜在提供機器學習即服務-亞馬遜機器學習方面也是如此。該服務可以連線到儲存在亞馬遜 S3、Redshift或RDS上的資料,並且在這些資料上執行二進位制分類、多級分類或者回歸以構建一個模型。但是,值得注意的是生成的模型不能匯入或匯出,而訓練模型的資料集不能超過100GB。

但是,亞馬遜機器學習展現了機器學習的實用性,而不只是奢侈品。對於那些想要更進一步,或者與亞馬遜雲保持不那麼緊密聯絡的人來說,亞馬遜的深度學習機器圖景包含了許多主要的深度學習框架,包括 Caffe2、CNTK、MXNet和TensorFlow。 
image

6. 微軟的Azure ML Studio

考慮到執行機器學習所需的大量資料和計算能力,對於機器學習應用雲是一種理想環境。微軟已經為Azure配備了自己的即付即用的機器學習服務-Azure ML Studio,提供了按月、按小時和免費的版本。(該公司的HowOldRobot專案就是利用這個系統創立的。)你甚至不需要一個賬戶來就可以試用這項服務;你可以匿名登入,免費使用Azure ML Studio最多8小時。

Azure ML Studio允許使用者創立和訓練模型,然後把這些模型轉成被其他服務所使用的API。免費使用者的每個賬號可以試用多達10GB的模型資料,你也可以連線自己的Azure儲存以獲得更大的模型。有大範圍的演算法可供使用,這要感謝微軟和第三方。 
近來的改進包括通過Azure批處理服務、更好的部署管理控制和詳細的web服務使用統計,對訓練任務進行了批量管理。 
image

7. 微軟的分散式機器學習工具集

在機器學習問題中投入更多的機器,會取得更好的效果-但是開發在大量計算機都能執行良好的機器學習應用卻是挺傷腦筋的事。

微軟的DMTK(分散式機器學習工具集)框架解決了在系統叢集中分佈多種機器學習任務的問題。

DMTK被認為是一個框架而不是一個完全成熟、隨去隨用的解決方案,因此包含演算法的數量是很小的。然而,你還是會找到一些關鍵的機器學習庫,例如梯度增強框架(LightGBM),以及對於一些像Torch和Theano這樣深度學習框架的支援。

DMTK的設計使使用者可以利用有限的資源構建最大的群集。例如,群集中的每個節點都會有本地快取,從而減少了與中央伺服器節點的通訊流量,該節點為任務提供引數。

image

8. 微軟的計算網路工具集

在釋出DMTK之後,微軟又推出了另一款機器學習工具集,即計算網路工具包,簡稱CNTK

CNTK與Google TensorFlow類似,它允許使用者通過一個有向圖來建立神經網路。微軟也認為CNTK可以與諸如Caffe、Theano和 Torch這樣的專案相媲美,-此外CNTK還能通過利用多CPU和GPU進行並行處理而獲得更快的速度。微軟聲稱在Azure上的GPU群集上執行CNTK,可以將為Cortana的語音識別訓練速度提高一個數量級。

最新版的CNTK 2.0通過提高精確性提高了TensorFlow的熱度,添加了一個Java API,用於Spark相容性,並支援kera框架(通常用於TensorFlow)的程式碼。 
image

9. Apache Mahout

在Spark佔據主流地位之前很久,Mahout就已經開發出來,用於在Hadoop上進行可擴充套件機器學習。但經過一段長時間的相對沉默之後,Mahout又重新煥發了活力,例如一個用於數學的新環境,稱為Samsara,允許多種演算法可以跨越分散式Spark群集上執行。並且支援CPU和GPU執行。

Mahout框架長期以來一直與Hadoop繫結,但它的許多演算法也可以在Hadoop之外執行。這對於那些最終遷移到Hadoop的獨立應用或者是從Hadoop中剝離出來成為單獨的應用都很有用。

image

10. Veles (Samsung)

[Veles]https://velesnet.ml/)是一個用於深度學習應用的分散式平臺,就像TensorFlow和DMTK一樣,它是用C++編寫的,儘管它使用Python來執行節點之間的自動化和協調。在被傳輸進群集之前,要對資料集分析並且進行自動的歸一化,然後呼叫REST API來即刻使用已訓練的模型(假定你的硬體滿足這項任務的需要) 
Veles不僅僅是使用Python作為粘合程式碼,因為基於Python的Jupyter Notebook 可以用來視覺化和釋出由一個Veles叢集產生的結果。Samsung希望,通過將Veles 開源將會刺激進一步的開發,作為通往Windows和MacOS的途徑。

image

11. mlpack 2

作為一個基於C++的機器學習庫,mlpack最初產生於2011年,按照庫的創立者想法,設計mlpack是為了“可擴充套件性,速度和易於使用。”mlpack既可以通過由若干行命令列可執行程式組成的“黑盒”進行操作,也可以利用C++ API來完成複雜的工作。

mlpack的第二版包含了許多新的演算法,以及現有演算法的重構,以提高它們的速度或使它們瘦身。例如,它捨棄了Boost庫的隨機數生成器,轉而採用C++ 11的原生隨機數功能。

mlpack的一個痼疾是缺少對於C++以為語言的支援。這就意味著其他語言的使用者需要第三方庫的支援,如這樣的一個Pyhton庫。還有完成了一些工作來增加對MATLAB的支援,但是像mlpack這樣的專案,在機器學習的主要環境中直接發揮作用時,往往會獲得更大的應用。

image

12. Neon

Nervana,一家建立自己的深度學習硬體和軟體平臺的公司(現在是英特爾的一部分),已經提供了一個名為“Neon”的深度學習的框架,它是一個開源專案。Neon使用可插拔的模組,以實現在CPU、GPU或者Nervana自己開發的晶片上完成繁重的任務。

Neon主要是用Python編寫,也有一部分是用C++和彙編以提高速度。這使得該框架可以為使用Python或者其他任何與Python繫結框架進行資料科學工作的人所用。

許多標準的深度學習模型,如LSTM、AlexNet和GoogLeNet,都可以作為Neon的預訓練模型。最新版本Neon 2.0,增加了英特爾數學核心庫來提高CPU的效能。 
image

13. Marvin

另一個相對近期的產品——Marvin神經網路框架,是普林斯頓視覺集團的產物。Marvin“生來就是被黑的”,正如其建立者在該專案文件中解釋的那樣,該專案只依賴於一些用C++編寫的檔案和CUDA GPU框架。雖然該專案的程式碼很少,但是還是提供了大量的預訓練模型,這些模型可以像專案本身程式碼一樣,能夠在合適的場合複用或者根據使用者的需要共享。