1. 程式人生 > >MXNet 分布式環境部署

MXNet 分布式環境部署

src 開啟 基本上 參考文獻 uda 數據傳遞 6.0 -c 安裝

MXNet 分布式環境部署

1. MxNet 分布式介紹

先忽略吧, 回頭在填上去

2. 分布式部署方法

假設有兩臺主機ip地址分別是xxx.xxx.xxx.114xxx.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分布式的使用方式,可以查看官方文檔的詳細內容[^distributed_training]

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
[^distributed_training]: distributed_training

MXNet 分布式環境部署