DMLC:最大開源分布式機器學習項目
原文 http://www.infoq.com/cn/news/2015/06/DMLC-github
為了實現分布式機器學習領域中代碼的共享與共同開發, 分布式機器學習社區(DMLC)近日正式發布 。作為一個開源項目,DMLC的相關代碼直接托管在 GitHub 中,并采用Apache2.0協議進行維護。DMLC項目的發起者陳天奇怪(網名)表示,項目最初的想法是減少分布式機器學習開發的成本以及新算法被大家
接受測試的時間。目前,該項目已經集成了XGBoost、CXXNET及Minerva等機器學習庫與rabit和參數服務器等系統組件。接下來,本文就
對這些基礎庫及組件進行簡單介紹。
XGBoost 是一個大規模、分布式的通用Gradient Boosting(GBDT、TBRT或者GBM)庫。它在Gradient Boosting的框架下實現了GBDT和廣義線性模型等機器學習算法。通過采用分布式計算方法,XGBoost能夠明顯加快算法中迭代運算的速度。而作 為一個快速、精確的分布式深度學習框架, CXXNET 主要具有輕量、支持多GPU和分布式并行系統、非常好的可擴展性以及與其他語言之間的接口清晰等特性。它使用mshadow庫為用戶提供了良好的編程體驗和高效的工作能力。與CXXNET不同的是, Minerva 提供了一個高效靈活的并行深度學習引擎。它提供了一個類似Numpy的NDarray編程接口,并支持Python和C++語言。其天然的并行性保證了其能夠高效地利用多GPU進行相關計算。
rabit 是一個提供Allreduce和Broadcast容錯接口的輕量通信框架。它簡化了MPI的設計,在Allreduce和Boradcast操作的基礎 上加入了容災的支持。其最大的特點在于可移植、可擴展以及非常可靠。另外一個通信框架——參數服務器(Parameter Server),主要負責對XGBoost等應用提供分布式的系統支持。它支持工作機與服務器之間的異步、零拷貝鍵值對的通信。異步的參數服務器接口加上 同步的Rabit接口基本能夠滿足各種分布式機器學習算法中的通信需求。