MXNet编译
根据官方文档(https://github.com/Samonsix/DistributedTraining_inMXNet/blob/master/Distributed Training in MXNet.md )描述:Note that we need to compile MXNet with the build flag USE_DIST_KVSTORE=1 to use distributed training.
可知,需要手动编译MXNet才可以使用分布式训练,因此本篇主要内容为MXNet的编译。
环境介绍
测试时环境
cat /proc/version
# Linux version 4.15.0-50-generic (buildd@lgw01-amd64-029) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)) #54~16.04.1-Ubuntu SMP Wed May 8 15:55:19 UTC 2019
python3 -V
# Python 3.5.2
# 本文测试拉取的是2019.5.20 master分支的最新代码
准备环境和拉取代码
如果是使用GPU,需要先准备好nvidia驱动,cuda和cudnn,没有安装的话,请参考其他博主的文章将GPU相关环境准备好,本文默认已经安装好这些环境。
- 安装依赖包
# 安装必备工具包
sudo apt-get update
sudo apt-get install -y build-essential git ninja-build ccache
# 安装数学库
sudo apt-get install -y libopenblas-dev
# 安装opencv,mxnet使用opencv加载图片和对图片进行增强
sudo apt-get install -y libopencv-dev
- 拉取代码
# recursive表示递归拉取所有子模块
git clone --recursive https://github.com/apache/incubator-mxnet.git
- 修改编译配置和开始编译
# 进入刚刚拉取的目录
cd incubator-mxnet
# 拷贝mk文件,然后编辑
cp make/config.mk ./
vim config.mk
# 修改 USE_CUDA = 0 ---> USE_CUDA = 1
# 取消注释 USE_CUDA_PATH = /usr/local/cuda,(并注释之前的配置USE_CUDA_PATH = NONE)
# 修改 USE_CUDNN = 0 ---> USE_CUDNN = 1
# 修改 USE_DIST_KVSTORE = 0 ---> USE_DIST_KVSTORE = 1
开始编译和安装
# 开始编译,j8表示开8个进程同时编译,CPU核心少的话可以改为j4或者j2
make -j8
注意前面的环境一定要准备好,缺一不可。编译完成后,会在lib目录下生成几个动态库和静态库文件,下面就可以开始绑定到python中
# 进入python目录
cd python
python setup.py install
# 若想安装到python3,则执行python3 setup.py install
# conda中的某个环境中,则先激活该环境,然后执行python setup.py install
# 拷贝lib库到包目录中,注意包的目录为你实际python的包路径,以下只是本机的路径
cp lib/* /usr/local/lib/python3.5/dist-packages/mxnet-1.5.0-py3.5.egg/mxnet/
# 进入python,然后import mxnet,若不报错,则表示成功编译并安装到了python中
以上步骤完成mxnet 编译,下一篇将介绍分布式环境的搭建和测试