点击 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,应该会快一些,至少小一些.