MXNet 分布式環境部署
1. MxNet 分布式介紹
先忽略吧, 回頭在填上去
2. 分布式部署方法
假設有兩台主機ip地址分別是 xxx.xxx.xxx.114
和 xxx.xxx.xxx.111
這兩台主機的環境如下
ubuntu Server 16.04SLT
python3.6| anaconda3
opencv3
cuda8
cudnn7
2.2 Step1. 搭建MxNet環境
根據文獻[^Installing MXNet]以源代碼的方式安裝MxNet; 注意每台機器生配置的環境需要保持一致;
需要分別在114 和111主機上搭建MxNet環境
MxNet的安裝方法有很多,免密碼登錄只是其中的一種方式. 建議使用源代碼的方式去安裝, 因為后面需要使用MxMet的源代碼里面的文件.
#進入anaconda虛擬環境
source activate base # root
# 下載MxNet1.2.1 源代碼
wget https://github.com/apache/incubator-mxnet/releases/download/1.2.1/apache-mxnet-src-1.2.1-incubating.tar.gz
# 解壓源代碼到目錄 ~/source/下面
tar -zvxf apache-mxnet-src-1.2.1-incubating.tar.gz -d ~/source/
# 進入source目錄,並編譯
cd ~/source/apache-mxnet-src-1.2.1-incubating
# 編譯參數解析
# USE_OPENCV=1 代表使用opencv
# USE_CUDA_PATH=/usr/local/cuda 是指定使用的cuda路徑
#USE_CUDNN=1是使用cudann
make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1
# 進入源文件的python目錄, 編譯python接口的MxNet
cd ~/source/apache-mxnet-src-1.2.1-incubating
python setup.py install
等待安裝好以后,進如python終端,測試是否可以識別mxnet即可:
import mxnet
print(mxnet.__version__) # 應該可以輸出版本 1.2.1
好, 到此為止,MxNet安裝完畢;
2.1 Step2. 設置SSH免密碼登錄
在網上找到一片很靠譜的博客,參考這篇文章即可,不再贅述.
ubuntu開啟SSH服務遠程登錄
2.3 Step3. 搭建分布式的環境
解析:
兩台主機免密碼互聯是分布式之間數據傳遞的前提,再搭建分布式之前,一定要確保第2步沒有問題;
mxNet的分布式運行比較簡單,在tools文件夾中的launcher.py是管理分布式下運行的文件的,直接在哪運行該文件的時候添加相應的參數即可;
在安裝好MxNet和設置好ssh免密碼登錄以后就可以使用了, 基本上不需要添加任何設置.
為了說明運行參數,同時為了測試分布式環境,我們將在分布式下運行apache-mxnet-src-1.2.1-incubating/examples/image-classification/train_mnist.py
進入源代碼的目錄下的tools
文件夾, 找到launcher.py
文件
cd ~/source/apache-mxnet-src-1.2.1-incubating/tools
在此處建立文件名host文件, 並在該文件中輸入兩台主機的ip地址;
xxx.xx.xxx.111
aaa.aa.aaa.114
ps: 這個名字host可以隨意的起的,是為了在運行lanucher的時候讓服務器知道在哪里進行分布式運行
運行launch.py
MxNet官方文檔中有詳細介紹MxNet分布式的使用方式,可以查看官方文檔的詳細內容[1]
python launch.py -n 2 -H host --launcher ssh `which python` ../example/image-classification/train_mnist.py
# --n 是代表要啟動幾台host
# -H 是要指定host的ip地址
如果不出任何錯誤,且train_mnist.py運行成功表明環境搭建成功了.
參考文獻
[^Installing MXNet]: Installing MXNet