在Linux服务器上安装horovod安装

一、默认已经安装有CUDA环境

在安装之前一定要在官网上面看一看,因为每个人的环境有差异,没有百分一百的成功,根据官网安装教程先进行操作看看
官网连接如下:
https://github.com/horovod/horovod%23install

二、非root账户编译安装NCCL

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"
  • -j12表示使用12个核心,使用nproc查看总核心数,根据具体情况进行调整;
  • BUILDDIR表示编译后,一些文件的存储路径;默认是nccl/build;当然如果是root用户可以指定到/usr/local/ncc/;
  • CUDA_HOME表示CUDA的目录,一般就在/usr/local/cuda
  • NVCC_GENCODE,如果不添加该字段,默认会编译支持所有架构;为了加速编译以及降低二进制文件大小,添加该字段,具体comute_35,sm_35是应该是和显卡算力相匹配,具体见:CUDA GPUs

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安装:

建立一个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/

四、OpenMPI安装:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值