Horovod

Horovod是一个支持TensorFlow、Keras、PyTorch和Apache MXNet的分布式训练框架。Horovod的目标是让分布式深度学习更快更易用。 

为啥不用原生的TensorFlow分布式训练? 

1、代码改动多少?

2、比原生的分布式训练快多少?

Horovod用的MPI比分布式TensorFlow用的parameter servers,简单直接得多。而且,Horovod更快,下面的benchmark用了128台服务器,每台机器4张Pascal GPU,机器之间是有RoCE能力的25Gbit/s网络。

对于Inception V3和ResNet-101,Horovod有90%的扩展效率,对于VGG-16,则是68%。 

安装Horovod:(这些环境问题要注意!!!) 

1、安装OpenMPI或者其他MPI实现。OpenMPI 3.1.3有个问题会导致卡住,建议降级到3.1.2,或者升级到4.0.0。

2、如果是用PyPI装的TensorFlow,要确保装g++-4.8.5或者g++-4.9。如果是用PyPI装的PyTorch,要确保装g++-4.9或者以上。如果是用Conda装的TensorFlow或者PyTorch,要确保装gxx_linux-64 Conda包。

3、安装Horovod pip包。

pip install horovod

通过docker使用Horovod:https://github.com/horovod/horovod/blob/master/docs/docker.rst 。

单机运行docker:

$ nvidia-docker run -it horovod:latest     // 可能还要别的参数,例如--net=host
root@c278c88dd552:/examples# horovodrun -np 4 -H localhost:4 python keras_mnist_advanced.py    // 旧版本只有mpirun,不是horovodrun

下面的错误信息是因为容器运行没有用--privileged参数 

Read -1, expected 131072, errno = 1  

 

添加Mellanox RDMA支持

如果你有Mellanox网卡, 

 

参考链接:

https://github.com/horovod/horovod

https://arxiv.org/pdf/1802.05799.pdf

 

posted @ 2019-09-06 19:00  happyyoung  阅读(2673)  评论(0编辑  收藏  举报