在安装之前一定要在官网上面看一看,因为每个人的环境有差异,没有百分一百的成功,根据官网安装教程先进行操作看看
官网连接如下:
https://github.com/horovod/horovod%23install
1.从github上将nccl克隆到本地
git clone https://github.com/NVIDIA/nccl.git
如果遇到问题
Failed to connect to github.com port 443:Connection time out
or fatal: unable to access ‘https://github.com/…/.git’: Could not resolve host: github.com
可以把https改成http,即
git clone http://github.com/NVIDIA/nccl.git
2.安装
cd nccl make -j12 src.build BUILDDIR=/home/wangty/nccl CUDA_HOME=/usr/local/cuda-11.6 NVCC_GENCODE="-gencode=arch=compute_35,code=sm_35"
3.添加环境变量
在终端输入命令,进入bashrc文件
vim ~/.bashrc
添加环境变量,这块可以先试试这样:path应该是这个文件在自己环境的路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wangty/nccl/lib
export PATH=$PATH:/home/wangty/nccl/bin
如果不起作用可以用下面的这个命令试试
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wangty/nccl/build/lib
export PATH=$PATH:/home/wangty/nccl/build/include
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export NCCL_HOME=/home/wangty/nccl/build
建立一个pytorch环境
在这一步可以指定python版本
conda create -n pytorch python=3.7
进入环境
conda activate pytorch
可以去官网找一下命令
conda install pytorch torchvision torchaudio pytorch-cuda=11.3 -c pytorch -c nvidia
-c pytorch 是从原来的网站上下载,如果太慢可以换成清华源
-i选项指挂国内的镜像源,常用镜像源:
清华:
https://pypi.tuna.tsinghua.edu.cn/simple
豆瓣:
https://pypi.douban.com/simple/
1、创建目录并把openmpi包下载到此目录
mkdir openmpi
wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz
2、解压
tar -zxvf openmpi-4.0.0.tar.gz
3、编译安装:
cd openmpi-4.0.0
./configure --prefix=/home/wangzhong/openmpi (保证g++、gcc已经安装,默认配置安装路径为/usr/local/lib,也可以使用--prefix=路径参数指定安装路径)
make (编译命令)
make all install(安装命令)
4、环境变量配置
vim ~/.bashrc
末尾添加
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
5、永久化环境变量
source ~/.bashrc
五、horovod安装
这部分每个人都不一样,在这个里面只安装了pytorch,并没有安装tensorflow和MXNet
HOROVOD_WITH_PYTORCH=1 HOROVOD_WITHOUT_TENSORFLOW=1 HOROVOD_WITHOUT_MXNET=1 HOROVOD_GPU_OPERATIONS=NCCL HOROVOD_NCCL_HOME=/home/wangty/nccl/build pip install --no-cache-dir horovod
本文参考https://blog.csdn.net/giantroit/article/details/120867390
进行安装
1、首先去官方克隆下来例子,进入到相应的文件夹
2、再终端输入,因为我的MPI版本不够,所以根据提示加了–gloo,如果MPI版本>4.0.0,就不需要加了
horovodrun --gloo -np 2 -H localhost:2 python pytorch_mnist.py
1、没有MPI,可以用提示给的三种办法去解决
Exception: horovod does not find an installed MPI.
Choose one of:
1. Install Open MPI 4.0.0+ or IBM Spectrum MPI or MPICH and re-install Horovod (use --no-cache-dir pip option).
2. Run distributed training script using the standard way provided by your MPI distribution (usually mpirun, srun, or jsrun).
3. Use built-in gloo option (horovodrun --gloo ...).
我用的第三种:
horovodrun --gloo -np 2 -H localhost:2 python pytorch_mnist.py
但是下面出现问题了。显示进程退出了
2、RuntimeError: Horovod detected that one or more processes exited with non-zero status, thus causing the job to be terminated. The first process to do so was: Process name: 0 Exit code: 1
这是代码的错误,而不是horovod。每当 horovod 检测到其中一个运行出错并已完成时,就会发生错误,从而也会终止所有其他运行。凡是出现这个错误,去上面找报错的点进行修改
解决办法,查看记录:https://github.com/horovod/horovod/issues/3647
3、ModuleNotFoundError: No module named 'filelock'
解决办法:pip install filelock
4、RuntimeError: ncclBroadcast failed: unhandled cuda error
讨论:https://github.com/pytorch/pytorch/issues/11756
奇怪的点:当在一个gpu上运行就不会出现错误
horovodrun --gloo -np 1 -H localhost:1 python pytorch_mnist.py
5、TypeError: DistributedOptimizer() got multiple values for argument 'named_parameters'
解决办法链接:https://github.com/horovod/horovod/issues/774