Horovod 分佈式訓練框架搭建

點擊 Horovod 官網地址訪問詳情.下面主要介紹在 Ubuntu 16.04 系統下安裝 Horovod,都是參考官網的說明.一共需要安裝三個模塊

1: nccl #NVIDIA Collective Communications Library (NCCL)多卡,多cpu通訊模塊
2: openmpi # 一個並行庫,玩過caffe的同學都知道
3: horovod # Uber 出品的 分佈式訓練框架

1.安裝nccl

登陸 Nvidia的nccl下載網頁 (需要註冊一個nvidia的賬號),同意協議,選擇適合自己的cuda版本,選擇下載 無操作系統相關的格式.比如下圖

下載後的名稱爲 nccl_2.5.6-1+cuda10.0_x86_64.txz,解壓到指定的路徑,並添加到環境變量中

sudo tar xvf nccl_2.5.6-1+cuda10.0_x86_64.txz -C /usr/local  #解壓到制定目錄
echo '/usr/local/nccl_2.5.6-1+cuda10.0_x86_64'|sudo tee -a /etc/ld.so.conf.d/nccl.conf  #添加路徑到環境變量
sudo ldconfig  #刷新環境變量

2.安裝openmpi

wget -c https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.2.tar.gz #下載源碼
tar xvf openmpi-4.0.2.tar.gz #解壓
cd openmpi-4.0.2
./configure --prefix=/usr/local #指定安裝目錄
make -j8 #編譯
sudo make install #安裝
sudo ldconfig #刷新一下環境變量
cd examples/
make 
./hello_c #測試安裝是否完成,有輸出則代表完成

3.安裝horovod

官網介紹如下

因爲我的tensorflow是通過pip(PyPi) 安裝的,所以需要有 g++-4.9,先安裝g++-4.9

g++ --version #查看當前g++版本,如果是4.9則不需要安裝
sudo apt install cmake
sudo apt install gcc-4.9
sudo apt install g++-4.9
sudo rm /usr/bin/gcc #刪除原有的軟連接
sudo rm /usr/bin/g++ #刪除原有的軟連接
sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc  #新建軟連接
sudo ln -s /usr/bin/g++-4.9 /usr/bin/g++  #新建軟連接
pip install horovod  #安裝horovod

以上就完成了所有安裝步驟(省略了安裝nvidia驅動,cuda,cudnn的步驟)

測試了官方提供的例子,基本達到了準線性加速.運行方式如下圖

完結散花,覺得麻煩的同學,可以使用docker的版本,只是pull比較大,可以自己修改dockerfile,註釋掉不需要的後端(pytorch,mxnet),然後本地build,應該會快一些,至少小一些.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章