0

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

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

假设我想使用 hydra --multirun 运行多个多 GPU 实验,我想使用 slurm 将运行排入队列,因为我的资源有限并且大部分时间会按顺序运行,我想使用 Horovod 来同步我的梯度网络。这个设置会开箱即用吗?如果 slurm 负责资源,我需要指定 CUDA_VISIBLE_DEVICES 吗?我需要如何调整我的运行命令或其他设置以使此设置合理?我对多运行功能如何处理 GPU 资源特别感兴趣。欢迎任何建议。

4

1 回答 1

1

Submitit 插件确实支持 GPU 分配,但我对Horovod 不熟悉,不知道这是否可以与它一起使用。Hydra 1.0 的一项新功能是能够在启动过程中设置或复制环境变量。如果 Horovod 尝试设置一些环境变量,这可能会派上用场。有关它的信息,请参阅文档

于 2020-09-28T16:38:34.743 回答