推薦13個機器學習框架

機器學習 Hadoop Spark Apache 慧都控件網 慧都控件網 2017-09-10

在過去的一年裡,機器學習炙手可熱。機器學習的“突然”降臨,並不單純因為廉價的雲環境和更強有力的GPU硬件。也因為開放源碼框架的爆炸式增長,這些框架將機器學習中最難的部分抽象出來,並將這項技術提供給更廣大範圍的開發者。

這裡有新鮮出爐的機器學習框架,既有初次露面的,也有重新修改過的。這些工具被大眾所注意,或是因為其出處,或是因為以新穎的簡單方法處理問題,或是解決了機器學習中的某個特定難題,或者是上述的所有原因。

推薦13個機器學習框架

Apache Spark MLlib

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

早期版本的 Spark 增強了對 MLib 的支持,MLib 是主要面向數學和統計用戶的平臺,它允許 通過持久化管道特性將 Spark 機器學習工作掛起和恢復。2016 年發佈的 Spark2.0,對 Tungsten 高速內存管理系統和新的 DataFrames 流媒體API 進行了改進,這兩點都會提升機器學習應用的性能。

推薦13個機器學習框架

H2O

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

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

推薦13個機器學習框架

Apache Singa

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

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

推薦13個機器學習框架

Caffe2

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

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

推薦13個機器學習框架

TensorFlow

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

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

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

推薦13個機器學習框架

亞馬遜的機器學習

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

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

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

推薦13個機器學習框架

微軟的 Azure ML Studio

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

Azure ML Studio 允許用戶創立和訓練模型,然後把這些模型轉成被其他服務所使用的 API。免費用戶的每個賬號可以試用多達 10GB 的模型數據,你也可以連接自己的 Azure 存儲以獲得更大的模型。有大範圍的算法可供使用,這要感謝微軟和第三方。

近來的改進包括通過 Azure 批處理服務、更好的部署管理控制和詳細的 web 服務使用統計,對訓練任務進行了批量管理。

推薦13個機器學習框架

微軟的分佈式機器學習工具集

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

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

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

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

推薦13個機器學習框架

微軟的計算網絡工具集

在發佈 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)的代碼。

推薦13個機器學習框架

Apache Mahout

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

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

推薦13個機器學習框架

Veles (Samsung)

Veles(https://velesnet.ml/)是一個用於深度學習應用的分佈式平臺,就像 TensorFlow 和 DMTK 一樣,它是用 C++ 編寫的,儘管它使用 Python 來執行節點之間的自動化和協調。在被傳輸進群集之前,要對數據集分析並且進行自動的歸一化,然後調用 REST API 來即刻使用已訓練的模型(假定你的硬件滿足這項任務的需要) 。

Veles 不僅僅是使用 Python 作為粘合代碼,因為基於 Python 的 Jupyter Notebook 可以用來可視化和發佈由一個 Veles 集群產生的結果。Samsung 希望,通過將 Veles 開源將會刺激進一步的開發,作為通往 Windows 和 MacOS 的途徑。

推薦13個機器學習框架

mlpack 2

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

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

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

推薦13個機器學習框架

Neon

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

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

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

推薦13個機器學習框架

Marvin

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

相關推薦

推薦中...