選自Github
機器之心編譯
今日,中科院計算所研究員徐君在微博上宣佈「中科院計算所開源了 Easy Machine Learning 系統,其通過交互式圖形化界面讓機器學習應用開發變得簡單快捷,系統集成了數據處理、模型訓練、性能評估、結果複用、任務克隆、ETL 等多種功能,此外系統中還提供了豐富的應用案例,歡迎大家下載使用。」在此文章中,機器之心對開源的 Easy Machine Learning 系統進行了介紹。
GitHub 項目地址:https://github.com/ICT-BDA/EasyML
什麼是 Easy ML 系統?
機器學習算法已然成為諸多大數據應用中不可或缺的核心組件。然而,由於機器學習算法很難,尤其是在分佈式平臺比如 Hadoop 和 Sparks 上,機器學習的全部潛能遠遠沒有發揮出來。關鍵障礙不僅來自算法本身的實現,還常常來自涵蓋多步操作和不同算法的實際應用過程。
我們的平臺 Easy Machine Learning 提供了一個通用的數據流系統,可以降低將機器學習算法應用於實際任務的難度。在該系統中,一個學習任務被構造為一個有向非循環圖(DAG/directed acyclic graph),其中每個節點表徵一步操作(即機器學習算法),每一條邊表徵從一個節點到後一個即節點的數據流。任務可被人工定義,或根據現有任務/模板進行克隆。在把任務提交到雲端之後,每個節點將根據 DAG 自動執行。圖形用戶界面被實現,從而可使用戶以拖拉的方式創建、配置、提交和監督一項任務。該系統的優點有:
1. 降低定義和執行機器學習任務的門檻;
2. 共享和再利用算法的實現、 job DAG 以及試驗結果;
3. 在一個任務中無縫整合單機算法和分佈式算法。
該系統包含三個主要組件:
一個分佈式的機器學習庫,不僅能實現流行的機器學習算法,也能實現數據預處理/後處理、數據格式轉變、特徵生成、表現評估等算法。這些算法主要是基於 Spark 實現的。
一個基於 GUI 的機器學習開發環境系統,能讓用戶以拖放的方式創造、安裝、提交、監控、共享他們的機器學習流程。機器學習庫中所有的算法都可在此開發環境系統中獲得並安裝,它們是構建機器學習任務的主要基礎。
執行任務的雲服務。我們基於開源的 Hadoop 和 Spark 大數據平臺建立了該服務。為了建立一個平臺,我們在 Docker 上組織了服務器集群。從 GUI 上接受一個 DAG 任務之後,在所有的獨立數據源準備好時,每個節點將會自動安排運行。對應節點的算法將會依據實現在 Linux、Spark 或者 Map-Reduce\cite 上自動安排運行。
如何參與我們的項目?
pull 整個項目,並準備好必需的環境和開發工具。按照 https://github.com/ICT-BDA/EasyML/blob/master/QuickStart.md 這裡的步驟,你可以在你的計算機中創建我們的系統。
怎樣使用 Easy ML 開發環境?
在運行 Easy ML 之後,你能使用我們官方賬號 [email protected]、密碼 bdaict 登錄 http://localhost:18080/EMLStudio.html。為了最佳的用戶體驗,我們建議使用 Chrome 瀏覽器。
正如下圖所示,用戶可以根據左邊菜單的選擇算法和數據集創建一個機器學習任務(一個數據流 DAG)。用戶可以點擊選擇在 Program 和 Data 菜單項下面的算法和數據集,同樣也可以點擊 Job 菜單項選擇現存的任務,並複製和做一些必要的修改。用戶同樣可以在右邊的菜單修改任務信息和每一個結點的參數值。任務中的結點可以對應於單機 Linux 程序或在 Spark、Hadoop Map-Reduce 上運行的分佈式程序。
在點擊了 submit 按鈕後,該任務被提交給雲端運行。每個節點的狀態由不同的顏色表示,如下圖所示:
用戶可以右鍵點擊完成的執行節點上 green output port 按鈕來預覽輸出數據。也可以從每個完成的執行節點的右鍵菜單中檢查 stdout 和 stderr 日誌。用戶可以通過右鍵單擊相應的輸出端口來檢查節點的輸出。執行時打印的標準輸出和標準錯誤信息可通過右鍵單擊相應節點並選擇菜單中 Show STDOUT/Show STDERR 的方式進行檢查。
在結束後(無論成功與否),任務可以被繼續修改,再次提交併運行,如下圖所示。我們的系統指揮安排受影響的節點來運行。不受影響的節點輸出直接重用,以節省運行時間和系統資源。
用戶可以上傳自己的算法包和數據集來建立自己的任務,並分享給他人。通過點擊 upload program 按鈕,彈出窗口允許用戶指定算法包的必要信息,包括名稱、類別、描述和命令行特徵字符串等,如下圖所示。其中最重要的在於使用預定格式編寫特徵字符串。它定義了節點的輸入端口、輸出端口和參數設置。我們在面板中開發了一個工具來幫助用戶編寫命令行字符串模式。通過點擊 upload data 按鈕,用戶可以用與上傳算法包相似的方式上傳數據集。
致謝
以下人員對 EasyML 項目的開發做出了貢獻。
Jun Xu, Institute of Computing Technolgy, Chinese Academy of Sciences. Homepage: http://www.bigdatalab.ac.cn/~junxu
Xiaohui Yan, Huawei Technologies
Xinjie Chen, Institute of Computing Technolgy, Chinese Academy of Sciences
Zhaohui Li, Institute of Computing Technolgy, Chinese Academy of Sciences
Tianyou Guo, Institute of Computing Technolgy, Chinese Academy of Sciences
Jianpeng Hou, Institute of Computing Technolgy, Chinese Academy of Sciences
Ping Li, Institute of Computing Technolgy, Chinese Academy of Sciences
Xueqi Cheng, Institute of Computing Technolgy, Chinese Academy of Sciences. Homepage: http://www.bigdatalab.ac.cn/~cxq/
論文:使用數據流簡化機器學習流程(Ease the Process of Machine Learning with Dataflow)
論文地址:http://203.187.160.132:9011/www.bigdatalab.ac.cn/c3pr90ntc0td/~junxu/publications/CIKM2016_BDADemo.pdf
機器學習算法已經變成許多大數據應用的關鍵部分。然而機器學習的全部潛力還遠遠沒有被釋放出來,因為通常使用機器學習算法是很困難的,尤其是在 Hadoop 和 Spark 這樣的分佈式平臺上。最主要的障礙不僅僅來源於實現算法本身,也是因為將它們應用到實際應用中通常需要很多步驟和不同的算法。在本演示中,我們提出一種通用的基於數據流的系統(general-purpose dataflow-based system),可用於簡化機器學習算法的實際應用。在這個系統裡,學習任務被形式化為一個有向非循環圖(DAG/directed acyclic graph),其中每一個節點(node)代表一個運算(比如機器學習算法),並且每個邊(edge)代表數據從一個節點流向其後繼節點。我們實現了一個圖形用戶界面,可以讓用戶通過拖放的方法去創建、配置、提交和監控一個任務。這個系統的優點包括:1)降低定義和執行機器學習任務的難度;2)共享和複用算法、任務數據流 DAG 和(中間)實驗結果;3)把單機使用的算法和分佈式算法集成到一個任務中。這個系統是一個機器學習服務,可以通過網絡進行訪問。