文章也同時在個人博客 http://kimihe.com/更新
引言
Parameter Server (PS) [1] 是一種目前主流的分布式機(jī)器學(xué)習(xí)范式器躏。其中,李沐 提出的第三代PS [2] 影響力甚大捐顷,可以在Github找到其core-sources:ps-lite。
基于上述ps-lite换棚,MXNet [3] 應(yīng)運(yùn)而生蚂维,發(fā)展為目前最“熱門”的Deep Learning 軟件庫之一。
注意:本文將主要著眼于ps-lite悔叽。
ps-lite安裝
如果你只是想使用ps-lite构韵,而不是做二次開發(fā)周蹭。根據(jù)官方文檔進(jìn)行下載及編譯即可趋艘。
切入根目錄下tests
。
執(zhí)行> ./local.sh [serverNumber] [workerNumber] [chooceTestApp]
凶朗,例如:
> ./local.sh 2 2 ./test_kv_app
上述命令可以執(zhí)行測試example瓷胧。
ps-lite源碼開發(fā)的準(zhǔn)備工作
ps-lite項目基于cmake和makefile,你可以直接通過shell的make命令進(jìn)行編譯棚愤,也可以利用cmake來實現(xiàn)跨平臺和使用IDE開發(fā)搓萧。這里我們將使用CLion來幫助源碼的分析與開發(fā)。
下載CLion
可以直接下載CLion宛畦。也可以使用Toobox App來管理你的JetBrains大禮包瘸洛。另外,如果你是學(xué)生次和,教育優(yōu)惠不可錯過反肋!
導(dǎo)入ps-lite工程
選擇open
或import source
都可以,CLion默認(rèn)使用CMake來配置C工程踏施。
首次導(dǎo)入源碼后囚玫,CMakeList
會運(yùn)行一次,不出意外读规,會出現(xiàn)如下報錯:
································································
/Applications/CLion.app/Contents/bin/cmake/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /Users/qihuazhou/Desktop/ps-lite-clion
-- Could NOT find ZMQ (missing: ZMQ_LIBRARY ZMQ_INCLUDE_DIR)
CMake Error at /Applications/CLion.app/Contents/bin/cmake/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)
Call Stack (most recent call first):
/Applications/CLion.app/Contents/bin/cmake/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/Applications/CLion.app/Contents/bin/cmake/share/cmake-3.10/Modules/FindProtobuf.cmake:543 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
cmake/ProtoBuf.cmake:4 (find_package)
CMakeLists.txt:22 (include)
-- Configuring incomplete, errors occurred!
································································
這里需要注意,直接run
工程根目錄下的makefile
文件(右鍵點擊run即可)燃少,是可以使用make命令自動去下載依賴束亏,并編譯的。
只不過上述make操作只是編譯工程(編譯完也可以運(yùn)行tests
下的example)阵具,并不能幫助CLion分析項目各文件的依賴關(guān)系(例如函數(shù)跳轉(zhuǎn)等)碍遍。
為了能夠方便地進(jìn)行源碼開發(fā),必須搞定CMakeList
的問題阳液。
其實方法很簡單怕敬,手動安裝protobuf
即可。
Mac命令如下:brew install protobuf
帘皿。
Ubuntu命令如下:sudo apt-get install libprotobuf-dev protobuf-compiler
东跪。
安裝完protobuf
后,再次刷新CLion中的CMakeList
鹰溜,即可正確解析虽填,只會各源文件中的依賴關(guān)系也正確得到分析,可以函數(shù)跳轉(zhuǎn)了曹动!
ps-lite源碼開發(fā)流程
之后斋日,在CLion中分析及修改代碼;然后運(yùn)行使用makefile
來編譯墓陈;最后通過terminal
運(yùn)行測試程序恶守;當(dāng)然你也可以打斷點Debug
第献。
更多內(nèi)容待后續(xù)更新
后續(xù),筆者會更新一些ps-lite的源碼分析和開發(fā)技巧兔港。
未完待續(xù)庸毫。
Reference
[1] A. Smola et al. "An architecture for parallel topic models." In VLDB. 2010.
[2] M. Li et al. "Scaling distributed machine learning with the parameter server." In OSDI. 2014.
[3] T. Chen et al. "MXNet: A Flexible and Efficient Machine Learning Library for Heterogeneous Distributed Systems." In NIPS. 2016.