TensorFlow、DMTK與SystemML孰優孰劣

jopen 9年前發布 | 38K 次閱讀 TensorFlow

 

毫無疑問,機器學習是目前數據分析領域最為炙手可熱的主題之一,其研究成果早已滲透到了日常生活中,從垃圾郵件過濾到人臉支付,從信用欺詐檢測到自然災害預測等場景無一不活躍著機器學習的身影。但即便機器學習已經得到了廣泛的應用,開發人員能夠從網上找到很多機器學習算法實現,但是這些代碼往往 “臟”而“亂”,沒有經過大規模的生產驗證。幸運的是現在這種窘境已經不復存在了,因為Google、Microsoft和IBM分別發布并開源了自己的機器學習工具包TensorFlow、DMTK和SystemML,每一個項目都是各自公司知識積累的結晶,在其內部發揮著舉足輕重的作用,那么這些工具包相互之間又有哪些區別呢?

功能特性

TensorFlow 是一個用來編寫和執行機器學習算法的工具。計算在數據流圖中完成,圖中的節點進行數學運算,邊界是在各個節點中交換的張量(Tensors--多維數組)。TensorFlow負責在不同的設備、內核以及線程上異步地執行代碼,目前支持CNN、RNN和LSTM等圖像、語音和自然語言處理(NLP)領域最流行的深度神經網絡模型。

DMTK是一個分布式機器學習框架 ,它由參數服務器和客戶端軟件開發包(SDK)兩部分構成。參數服務器支持存儲混合數據結構模型、接受并聚合工作節點服務器的數據模型更新、控制模型同步邏輯;客戶端軟件開發包負責維護節點模型緩存(與全局模型服務器同步)、本地訓練和模型通訊之間的流水線控制以及片狀調度大模型訓練。它包含DMTK框架、LightLDA和分布式詞向量(Word Embedding)三個組件。

 

SystemML則是一門靈活的、可伸縮的機器學習 (ML) 語言,支持 描述性分析、分類、聚類、回歸、矩陣分解以及生存分析等算法 。DML中指定的算法能夠根據數據和集群特性使用基于規則和基于成本的優化技術動態地編譯和優化。

執行環境與模式

TensorFlow能夠在臺式機、服務器或者移動設備的CPU和GPU上運行,也可以使用Docker容器部署到云環境中。在處理圖像識別、語音識別和語言翻譯等任務時,TensorFlow依賴于配備圖像處理單元(GPU)的機器和被用于渲染游戲圖像的芯片,它對這些芯片依賴度比想象中的高。當前開源的版本能夠運行在單機上,暫不支持集群。操作系統方面,TensorFlow能夠運行在Linux和MacOS上。

DMTK采用了傳統的客戶端-服務器架構,有多個服務器實例運行在多臺機器上負責維護全局模型參數,而訓練例程(routines)則使用客戶端 API訪問并更新這些參數。為了適應不同的集群環境,DMTK框架支持兩種進程間的通信機制:MPI和ZMQ。應用程序端不需要修改任何代碼就能夠在這兩種方式之間切換。DMTK支持Windows和Linux(測試環境為Ubuntu 12.04)兩種操作系統。

SystemML有多種執行模式。在獨立模式下,SystemML能夠運行在單臺機器上,這樣數據科學家就能夠在本地開發算法,不需要分布式集群。另外還可以將算法分發到Hadoop或者Spark上,從而利用已有的資源和技能。SystemML能夠運行于Windows、 Linux以及MacOS上。

實現語言、API接口及文檔

TensorFlow的核心是使用C++編寫的,有完整的Python API和C++接口,同時還有一個基于C的客戶端API。目前TensorFlow的Python API 需要Python 2.7,對于Python 3的支持正在開發中。在TensorFlow的官網上Google提供了 完整的API接口說明白皮書示例教程(包括針對初學者和專家的)

DMTK則是使用C++編寫的,提供了一個客戶端API和SDK。 DMTK的官網 對DMTK框架、LightLDA、分布式詞向量的應用場景、下載、安裝、配置、運行以及性能等方面都做了詳盡的介紹。

SystemML使用Java語言編寫,開發人員能夠使用類似于R或者Python的語法表達算法,通過Java、Scala以及Python操作SystemML。 文檔方面 ,SystemML基本集中于GitHub上,包括構建、測試、獨立模式運行命令以及一個線性回歸的示例。

應用場景

Google已將TensorFlow用于GMail(SmartReply)、搜索(RankBrain)、圖片(生成圖像分類模型--Inception Image Classification Model)、翻譯器(字符識別)等產品。

雖然Microsoft并沒有在DMTK的官網上透露其在內部的應用情況,但是從其功能特點以及定位來看或許更傾向于自然語言處理方面,例如文本分類與聚類、話題識別以及情感分析等。

SystemML則是IBM研發了超過十年的機器學習技術 ,沃森(Watson)在幾年前的大型活動里就整合了很多SystemML的機器學習功能,當然目前開源的SystemML依然在孵化階段。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!