深度学习训练的时候gpu占用0_Tensorflow分布式训练框架Horovod

a53164f458544e9c9797d7d2e0736a3e.png

1介绍

  Horovod 是 Uber 开源的又一个深度学习工具,它的发展吸取了 Facebook「一小时训练 ImageNet 论文」与百度 Ring Allreduce 的优点,可为用户实现分布式训练提供帮助。使用比tensorflow提高的分布式特性要简单的多,能大幅提高gpu利用率,而且提高性能。具体特性介绍看下面页面。

参考页面:

Meet Horovod: Uber’s Open Source Distributed Deep Learning Framework for TensorFlow​eng.uber.com
5eab8eabd2060466aac420e4e8ec1c99.png
https://www.slideshare.net/AlexanderSergeev4/horovod-distributed-tensorflow-made-easy​www.slideshare.net 业界 | 详解Horovod:Uber开源的TensorFlow分布式深度学习框架​www.sohu.com
dbb99e882d9cd3b5b2344945c5c6863e.png

2.安装

1) 依赖库

openmpi 4.0.0

g++-4.8.5或者g++-4.9

nccl 2

nv_peer_driver

horovod

2) openmpi安装

wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz

gunzip -c openmpi-4.0.0.tar.gz | tar xf -

cd openmpi-4.0.0

./configure --prefix=/usr/local

make all install

add PATH=/usr/local/bin:$PATH to /etc/profile

source /etc/profile

参考页面:

FAQ: Building Open MPI​www.open-mpi.org Open MPI: Version 4.0​www.open-mpi.org

3) nccl 安装

wget https://developer.download.nvidia.cn/compute/machine-learning/repos/rhel7/x86_64/nvidia-machine-learning-repo-rhel7-1.0.0-1.x86_64.rpm

rpm -ivh nvidia-machine-learning-repo-rhel7-1.0.0-1.x86_64.rpm

yum provides '*/applydeltarpm'

yum install deltarpm -y
sudo yum install libnccl-2.4.8-1+cuda10.0 libnccl-devel-2.4.8-1+cuda10.0 libnccl-static-2.4.8-1+cuda10.0

参考页面:

https://developer.nvidia.com/nccl/nccl-download​developer.nvidia.com

4) psutil安装

yum install python36-devel.x86_64

pip3.6 install --user psutil

5) horovod

pip3.6 install horovod

参考页面:

https://github.com/horovod/horovod#install​github.com

3.使用

  支持分布式训练需要的改动是非常简单的,不需要配ClusterSpec,也不需要任何tensorflow的分布式特性支持,完全使用horovod的特性即可,启动管理也很简单,上述安装过程经过多次验证。

1) 修改

  支持horovod需要修改的代码很少,具体参考horovod的github文档的Usage部分以及给的实例,实例挺丰富,按照实例修改即可,上手非常简单。另外,有几个openmpi的概念需要熟悉下。

  github: https://github.com/horovod/horovod

  examples: https://github.com/horovod/horovod/tree/master/examples

  openmpi核心概念:https://github.com/horovod/horovod/blob/master/docs/concepts.rst

2) 运行

  运行直接使用horovod提供的脚本提交即可,下面是完整的运行实例,np参数指定总进程数,H参数指定机器列表,格式为hostname: 进程数,后面是启动脚本,跨机器需要配置ssh密钥。

  测试过程出现了几个问题需要注意下:

  1) 进程数<=GPU,多于GPU数会出现allreduce问题,运行前最好配置CUDA_VISIBLE_DEVICES环境变量;

  2) 运行时每个进程会占用进程数的gpu,占用显存很少,可能是用于数据交换的,这个不必在意;

  sh: horovodrun -np 4 -H localhost:4 python3 test.py

参考页面:

https://github.com/horovod/horovod​github.com Multi-GPU enabled BERT using Horovod​lambdalabs.com
d874325f6bcfec13fc6a931954d94229.png
TensorFlow with Horovod​docs.aws.amazon.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值