使用SLURM和Horovod运行hydra配置的项目

问题描述

现在,我正在使用Horovod对我的pytorch模型进行分布式培训。我想开始为--multirun功能使用hydra config,并使用SLURM使所有作业排队。我知道这里有Submitid插件。但是我不确定,整个管道如何与Horovod一起使用。现在,我的训练命令如下:

CUDA_VISIBLE_DEVICES=2,3 horovodrun -np 2 python training_script.py \
--batch_size 30 \
...

说我想使用hydra --multirun运行多个multi-gpu实验,由于资源有限并且大部分时间将按顺序运行,并且我想使用Horovod进行同步,因此我希望使用slurm使运行入队我的网络的渐变。此设置是否可以立即使用?如果Slurm处理资源,是否需要指定CUDA_VISIBLE_DEVICES?我如何调整我的运行命令或其他设置以使该设置合理化?我对多运行功能如何处理GPU资源特别感兴趣。欢迎任何建议。

解决方法

Submitit plugin确实支持GPU分配,但是我对Horovod并不熟悉,也不知道是否可以与之配合使用。 Hydra 1.0的一项新功能是可以在启动过程中设置或复制环境变量。 如果Horovod尝试设置一些环境变量,这可能会派上用场。有关详细信息,请参见docs