本文基于Ubuntu 16.04 系统介绍Horvod安装使用情况。

官方安装教程见:https://github.com/horovod/horovod#id6

其中,Open MPI的安装可见本人博客https://blog.csdn.net/u013431916/article/details/80230152

如需NCCL支持,可见本人博客https://blog.csdn.net/u013431916/article/details/82759525

如不需使用GPU,可使用以下指令快速安装:

$ pip install horovod

horovod on GPU的官方教程见https://github.com/horovod/horovod/blob/master/docs/gpus.rst#horovod-on-gpu。简单来说,如果希望GPU发挥高性能,先安装NCCL,然后在使用pip安装horovod时,设置使用NCCL进行allreduce操作。如:

$ HOROVOD_GPU_ALLREDUCE=NCCL pip install --no-cache-dir horovod

需要注意的是,如果服务器上有多个版本的cuda,并且你所使用的并非软链接到/usr/local/cuda的版本,那么需要设置cuda路径等变量:

$ HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_CUDA_HOME=/usr/local/cuda-9.0 HOROVOD_NCCL_HOME=/usr/local/cuda-9.0 pip install --no-cache-dir horovod

否则可能出现计算能力不匹配等问题。

 

horovod的使用,以单机使用2块GPU,启动2个worker为例:

$ CUDA_VISIBLE_DEVICES='0,1' horovodrun -np 2 -H localhost:2 python ~/test/horovod/tensorflow_mnist.py

其中,tensorflow_mnist.py见https://github.com/horovod/horovod/blob/master/examples/tensorflow_mnist.py

 

附:

  1. 查看tensorflow使用的NCCL版本:

设置环境变量

$ export NCCL_DEBUG=VERSION

这样,在NCCL首次调用ncclCommInitAll或者ncclCommInitRank的时候会打印NCCL版本。

 

参考:

1. Cuda failure 'invalid device function'

2. Is there the way to check the version of NCCL ?

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐