Win10下编译mxnet分布式版本

支持分布式部署和训练是mxnet的亮点。但是,根据个人实验的情况以及github上看到的情况看,编译和部署mxnet分布式版本并不容易。没有详细的文档,也没有开箱即用的分布式版本,只能靠自己编译和部署。下面记录一下个人在win10上编译成功mxnet分布式版本的经验。

 

第一步:我们得先安装好Protobuf和ZMQ。

 

1)       安装ZMQ. (www.zeromq.org)

选择一:下载windows 64位安装版。例如,ZeroMQ-4.0.4~miru1.0-x64.exe。 然后,安装到某目录下。例如,G:\Program Files\ZeroMQ 4.0.4。 我使用这个64位版本来编译mxnet.

 

选择二:下载一个ZMQ源代码,例如zeromq-4.2.1.zip. 解压,然后使用cmake制作vs2013或者VS2015的工程文件。最后编译成64位的release版本。(注意检查编译必须要基于/MT选项,否则后面link的时候会出错)

 

 

2)       安装Protobuf(目前只支持2.5.0版本。2.5以上版本在最后link时都失败了)

https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz

下载完后解压,然后进入protobuf-2.5.0\vsprojects目录下,直接用VS2013或者2015打开项目文件protobuf.sln。这个工程项目很旧,需要做些修改:

1、  把各个子项目编译目标换成64位

2、  把各个子项目编译选项都改成基于/MT选项,否则后面link的时候会出错.

3、  如果编译出现error C3861: “max” 或”min” ,那么需要在相关头文件上加上” #include<algorithm>  ”

 

最后,编译生成64位的Protobuf release版本。

 

第二步:

1)       下载mxnet的源代码。

git clone https://github.com/dmlc/mxnet

 

 

2)       启动cmake图形界面,把mxnet工程的USE_DIST_KVSTORE选项勾上。这个选项会触发两个新的选项:Protobuf和ZMQ.

 

设置Protobuf

把Protobuf_SRC_ROOT_FOLDER 设置成protobuf-2.5.0的目录。例如,G:/mxnet-cpp/protobuf-2.5.0

 

设置ZMQ

把ZMQ_INCLUDE_DIR设置成ZMQ的头文件Include目录。例如,G:/Program Files/ZeroMQ 4.0.4/include

把ZMQ_LIBRARY设置成ZMQ的lib文件绝对路径。例如,G:/Program Files/ZeroMQ 4.0.4/lib/libzmq-v120-mt-4_0_4.lib。注意:libzmq-v120-mt-4_0_4.lib很重要,后面编译生成的libmxnet.dll会去寻找libzmq-v120-mt-4_0_4.dll文件。

 

然后,使用cmake的generate功能生成mxnet的VS项目文件。后面的剩下的编译mxnet和安装的步骤,可以参考我写的另一篇文章:《win10成功安装GPU版MXNET的经历》

根据我的经验,有一个LIBZMQ-V120-MT-4_0_4.DLL文件也需要放到path变量里。否则,调用mxnet可能会报错。

 

第三步:测试。

写段python代码:

import mxnet as mx
kvs = mx.kv.create('dist')

如果报类似下面的DMLC_NUM_SERVER异常就表明已经是分布式版本了。

[11:17:59] G:\mxnet-cpp\mxnet094\mxnet\dmlc-core\include\dmlc/logging.h:300: [11:17:59] G:\mxnet-cpp\mxnet094\mxnet\ps-lite\src\postoffice.cc:18: Check  notnull: Environment::Get()->find("DMLC_NUM_SERVER")

 

后记:在windows平台编译分布式的mxnet版本会有非常多的坑,不是一个好的选择。建议还是在linux或Unix平台上编译。

Mxnet分布式版本相关文档链接:http://mxnet.io/how_to/multi_devices.html

 

转载于:https://my.oschina.net/qinhui99/blog/883454

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值