Horovod 是一套支持TensorFlow, Keras, PyTorch, and Apache MXNet 的分布式训练框架,由 Uber 构建并开源的第三方库,在分布式训练中性能优于原生像Tensorflow这种ps,worker架构,且代码改动量少,无需在多个节点多次执行脚本命令,使用起来方便。
首先我们需要安装nccl
可以去官网查找对应版本,https://developer.nvidia.com/nccl/nccl-legacy-downloads
我下的ubuntu20.04这个版本,直接安装
dpkg -i nccl-local-repo-ubuntu2004-2.8.4-cuda11.1_1.0-1_amd64.deb
然后安装openmpi,https://www.open-mpi.org/software/ompi/v4.1/
我们直接下载openmpi-4.1.4.tar.gz这个版本
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.4.tar.gz tar zxvf openmpi-4.1.4.tar.gz cd openmpi-4.1.4/ ./configure --prefix=/usr/local/openmpi make all make install
编译完成没有报错就是OK了。
然后添加openmpi的环境变量
LD_LIBRARY_PATH=/usr/local/openmpi/lib/:${LD_LIBRARY_PATH} PATH=$PATH:/usr/local/openmpi/bin/:/usr/local/openmpi/lib/ ldconfig
简单测试是否成功
mpirun
最后安装horovod
装了NCCL的包,pip安装的特别指定一下NCCL的环境变量
pip3 install cmake HOROVOD_NCCL_INCLUDE=/usr/include/ HOROVOD_NCCL_LIB=/usr/lib/x86_64-linux-gnu/ HOROVOD_NCCL_LINK=SHARED HOROVOD_GPU_OPERATIONS=NCCL pip3 install --no-cache-dir horovod
安装完成最后进行测试
import horovod.tensorflow as hvd
没有报模块错误就是成功了