概述
从官方的镜像集合里选择合适的 tag 来测试。
操作
因为环境不太一样,没有直接使用 Docker。
1
|
nerdctl -n k8s.io run --gpus all -it --rm horovod/horovod:0.18.1-tf1.14.0-torch1.2.0-mxnet1.5.0-py3.6
|
亲测镜像都是没什么问题的,镜像可选的 tag 很多,具体选哪个版本,这里需要考虑机器的 GPU 的问题,比如说最开始用 horovod/horovod:0.20.0-tf2.3.0-torch1.6.0-mxnet1.6.0.post0-py3.7-cuda10.1
无法在我的 K40m 运行,因为 Pytorch 1.2 以上的版本都不支持算力 3.5 的 GPU 了,所以我才找到了这个镜像来做测试 horovod/horovod:0.18.1-tf1.14.0-torch1.2.0-mxnet1.5.0-py3.6
。
如果不想用 GPU,可以把 --gpus all
去掉,这样在跑 example 的时候,就会用 CPU 来计算。
分布式的测试
1
|
horovodrun -np 2 python pytorch_mnist.py
|
从机器上 ps -ef|grep -i mpi
可以看到实际运行的 MPI 程序。
1
|
mpirun --allow-run-as-root --tag-output -np 2 -H localhost:2 -bind-to none -map-by slot -mca pml ob1 -mca btl ^openib -mca btl_tcp_if_include lo -x NCCL_SOCKET_IFNAME=lo -x CUDNN_VERSION -x LS_COLORS -x LD_LIBRARY_PATH -x MXNET_VERSION -x NVIDIA_VISIBLE_DEVICES -x NCCL_VERSION -x PWD -x HOME -x TENSORFLOW_VERSION -x PYTORCH_VERSION -x LIBRARY_PATH -x TORCHVISION_VERSION -x TERM -x CUDA_PKG_VERSION -x CUDA_VERSION -x NVIDIA_DRIVER_CAPABILITIES -x PYTHON_VERSION -x SHLVL -x NVIDIA_REQUIRE_CUDA -x PATH -x _ -x HOROVOD_STALL_CHECK_TIME_SECONDS -x HOROVOD_STALL_SHUTDOWN_TIME_SECONDS -x HOROVOD_NUM_NCCL_STREAMS -x HOROVOD_MLSL_BGT_AFFINITY python pytorch_mnist.py
|
问题
大部分的 example 都可以正常跑。
参考资料
- Horovod-Pytorch简介 - 有介绍怎样通过容器使用Horovod
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。