Рекомендуемый способ работы с horovod и docker: https://github.com/uber/horovod/blob/master/docs/docker.md. В некотором смысле это плохо, поскольку bash рассматривается как основной процесс docker, а процесс python - как вторичный.Docker регистрирует отчет о журналах bash, состояние docker зависит от состояния bash, docker закрывается, если закрывается процесс bash, и т. Д., Поэтому он считает, что его основным процессом является bash, а это должен быть процесс python, который мы запускаем.Можно ли сделать процесс Python основным процессом у всех рабочих докеров, первичных и вторичных?
Я попытался запустить процесс mpirun снаружи вместо запуска mpirun внутри докера, с интерактивной командой запуска docker в качестве команды mpirun (dockerконтейнеры уже были подготовлены с nvidia-docker create
):
mpirun -H localhost,localhost \
-np 1 \
-bind-to none \
-map-by slot \
-x NCCL_DEBUG=INFO \
-x LD_LIBRARY_PATH \
-x PATH \
-x NCCL_SOCKET_IFNAME=^docker0,lo \
-mca btl_tcp_if_exclude lo,docker0 \
-mca oob_tcp_if_exclude lo,docker0 \
-mca pml ob1 \
-mca btl ^openib \
docker start -a -i bajaga_aws-ls0-l : \
-np 1 \
-bind-to none \
-map-by slot \
-x NCCL_DEBUG=INFO \
-x LD_LIBRARY_PATH \
-x PATH \
-x NCCL_SOCKET_IFNAME=^docker0,lo \
-mca btl_tcp_if_exclude lo,docker0 \
-mca oob_tcp_if_exclude lo,docker0 \
-mca pml ob1 \
-mca btl ^openib \
docker start -a -i bajaga_aws-ls1-l
Но это не удалось - процессы не общались через хоровод и работали как независимые процессы.
Знаете ли вы, как мне сделать основной процесс Python Process Docker основным *? 1011 *