在如今機器學習如日中天的大背景下,微軟亞洲研究院的實習崗位中,機器學習組的工做也是維護DMTK,參與算法改進,那麼在此以前咱們得了解DMTK是個啥。git
DMTK由一個服務於分佈式機器學習的框架和一組分佈式機器學習算法構成,是一個將機器學習算法應用在大數據上的強大工具包;不管是學術界的研究人員仍是工業界的開發者,DMTK能夠幫助他們在超大規模數據上靈活穩定地訓練大規模機器學習模型。github
官網:http://www.dmtk.io/算法
DMTK 包括如下幾個項目:服務器
DMTK framework(Multiverso): 參數服務器架構的機器學習架構
LightLDA: 用於大規模主題模型的可擴展、快速、輕量級系統.框架
Distributed word embedding:文字嵌入分佈式算法.機器學習
Distributed skipgram mixture: 多義文字嵌入分佈式算法分佈式
以Linux爲例:工具
sudo apt-get install libopenmpi-dev openmpi-bin build-essential cmake git git clone https://github.com/Microsoft/multiverso.git && cd multiverso mkdir build && cd build cmake .. && make && sudo make install
使用文檔:https://github.com/Microsoft/Multiverso/wiki學習
下面是一個簡單的例子:
1 #include <multiverso/multiverso.h> 2 #include <multiverso/util/log.h> 3 #include <multiverso/util/configure.h> 4 #include <multiverso/table/array_table.h> 5 using namespace multiverso; 6 7 int main(int argc, char* argv[]) { 8 MV_SetFlag("sync", true); 9 MV_Init(&argc, argv); 10 11 ArrayTableOption<int> option; 12 option.size = 500; 13 ArrayWorker<int>* table = MV_CreateTable(option); 14 15 std::vector<int> model(100, 0); 16 std::vector<int> delta(100, 1); 17 18 for (int iter = 0; iter < 100; ++iter) { 19 table->Add(delta.data(), delta.size()); 20 table->Get(model.data(), model.size()); 21 // CHECK_EQ(model[i], (iter+1) * MV_NumWorkers()); 22 } 23 24 MV_ShutDown(); 25 }