主流机器学习框架介绍
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的環境,它支持在訓練過程中與數據集進行交互,而不只是在訓練前或者訓練后。
H2O是開源的,分布式的,基于內存的,可擴展的機器學習和預測分析框架,適合在企業環境中構建大規模機器學習模型。 H2O核心代碼使用Java編寫,數據和模型通過分布式 Key/Value 存儲在各個集群節點的內存中。H2O的算法使用Map/Reduce框架實現,并使用了Java Fork/Join框架來實現多線程。
H2O目前支持的機器學習算法有DRF,GBM,GLM,GLRM,Kmeans,NB,PCA,Deep Learning,所以目前來看支持的模型還不是很多。
3. Apache Singa
“深度學習”框架增強了重任務類型機器學習的功能,如自然語言處理和圖像識別。Singa是一個Apache的孵化器項目,也是一個開源框架,作用是使在大規模數據集上訓練深度學習模型變得更簡單。
Singa提供了一個簡單的編程模型,用于在機器群集上訓練深度學習網絡,它支持很多普通類型的訓練工作:卷積神經網絡,受限玻爾茲曼機 以及循環神經網絡。 模型可以同步訓練(一個接一個)或者也異步(一起)訓練,也可以允許在在CPU和GPU群集上,很快也會支持FPGA。Singa也通過Apache Zookeeper簡化了群集的設置。
4. Caffe2
深度學習框架Caffe開發時秉承的理念是“表達、速度和模塊化”,最初是源于2013年的機器視覺項目,此后,Caffe還得到擴展吸收了其他的應用,如語音和多媒體。 因為速度放在優先位置 ,所以Caffe完全用C+ +實現,并且支持CUDA加速,而且根據需要可以在CPU和GPU處理間進行切換。分發內容包括免費的用于普通分類任務的開源參考模型,以及其他由Caffe用戶社區創造和分享的模型。
一個新的由Facebook 支持的Caffe迭代版本稱為Caffe2,現在正在開發過程中,即將進行1.0發布。其目標是為了簡化分布式訓練和移動部署,提供對于諸如FPGA等新類型硬件的支持,并且利用先進的如16位浮點數訓練的特性。
5. Google的TensorFlow
與微軟的DMTK很類似,Google TensorFlow 是一個機器學習框架,旨在跨多個節點進行擴展。 就像Google的 Kubernetes一樣,它是是為了解決google內部的問題而設計的,google最終還是把它作為開源產品發布出來。
TensorFlow實現了所謂的數據流圖,其中的批量數據(“tensors”)可以通過圖描述的一系列算法進行處理。系統中數據的移動稱為“流”-其名也因此得來。這些圖可以通過C++或者Python實現并且可以在CPU和GPU上進行處理。
TensorFlow近來的升級提高了與Python的兼容性,改進了GPU操作,也為TensorFlow能夠運行在更多種類的硬件上打開了方便之門,并且擴展了內置的分類和回歸工具庫。
6. 亞馬遜的機器學習
亞馬遜對云服務的方法遵循一種模式:提供基本的內容,讓核心受眾關注,讓他們在上面構建應用,找出他們真正需要的內容,然后交付給他們。
亞馬遜在提供機器學習即服務-亞馬遜機器學習方面也是如此。該服務可以連接到存儲在亞馬遜 S3、Redshift或RDS上的數據,并且在這些數據上運行二進制分類、多級分類或者回歸以構建一個模型。但是,值得注意的是生成的模型不能導入或導出,而訓練模型的數據集不能超過100GB。
但是,亞馬遜機器學習展現了機器學習的實用性,而不只是奢侈品。對于那些想要更進一步,或者與亞馬遜云保持不那么緊密聯系的人來說,亞馬遜的深度學習機器圖景包含了許多主要的深度學習框架,包括 Caffe2、CNTK、MXNet和TensorFlow。
7. 微軟的Azure ML Studio
考慮到執行機器學習所需的大量數據和計算能力,對于機器學習應用云是一種理想環境。微軟已經為Azure配備了自己的即付即用的機器學習服務-Azure ML Studio,提供了按月、按小時和免費的版本。(該公司的HowOldRobot項目就是利用這個系統創立的。)你甚至不需要一個賬戶來就可以試用這項服務;你可以匿名登錄,免費使用Azure ML Studio最多8小時。
Azure ML Studio允許用戶創立和訓練模型,然后把這些模型轉成被其他服務所使用的API。免費用戶的每個賬號可以試用多達10GB的模型數據,你也可以連接自己的Azure存儲以獲得更大的模型。有大范圍的算法可供使用,這要感謝微軟和第三方。 近來的改進包括通過Azure批處理服務、更好的部署管理控制和詳細的web服務使用統計,對訓練任務進行了批量管理。
8. 微軟的分布式機器學習工具集
在機器學習問題中投入更多的機器,會取得更好的效果-但是開發在大量計算機都能運行良好的機器學習應用卻是挺傷腦筋的事。
微軟的DMTK(分布式機器學習工具集)框架解決了在系統集群中分布多種機器學習任務的問題。
DMTK被認為是一個框架而不是一個完全成熟、隨去隨用的解決方案,因此包含算法的數量是很小的。然而,你還是會找到一些關鍵的機器學習庫,例如梯度增強框架(LightGBM),以及對于一些像Torch和Theano這樣深度學習框架的支持。 DMTK的設計使用戶可以利用有限的資源構建最大的群集。例如,群集中的每個節點都會有本地緩存,從而減少了與中央服務器節點的通信流量,該節點為任務提供參數。
9. 微軟的計算網絡工具集
在發布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)的代碼。
10. Apache Mahout
在Spark占據主流地位之前很久,Mahout就已經開發出來,用于在Hadoop上進行可擴展機器學習。但經過一段長時間的相對沉默之后,Mahout又重新煥發了活力,例如一個用于數學的新環境,稱為Samsara,允許多種算法可以跨越分布式Spark群集上運行。并且支持CPU和GPU運行。
Mahout框架長期以來一直與Hadoop綁定,但它的許多算法也可以在Hadoop之外運行。這對于那些最終遷移到Hadoop的獨立應用或者是從Hadoop中剝離出來成為單獨的應用都很有用。
?
總結
以上是生活随笔為你收集整理的主流机器学习框架介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qcon_从QCon旧金山2010获得的
- 下一篇: 【Nginx学习01】--Nginx的安