运行 hydra 配置了 SLURM 和 Horovod 的项目
Run hydra configured project with SLURM and Horovod
现在,我正在使用 Horovod 运行 分布式训练我的 pytorch 模型。我想开始为 --multi运行 功能使用 hydra config 并使用 SLURM 将所有作业排入队列。我知道有 Submitid 插件。但我不确定,整个管道将如何与 Horovod 一起工作。现在,我的训练命令如下所示:
CUDA_VISIBLE_DEVICES=2,3 horovodrun -np 2 python training_script.py \
--batch_size 30 \
...
说我想使用 hydra --multi运行 来 运行 几个多 gpu 实验,我想用 slurm 排队 运行s 因为我的资源有限并且大多数时候会按顺序 运行,我想使用 Horovod 来同步我的网络的梯度。这个设置 运行 开箱即用吗?如果 slurm 处理资源,我是否需要指定 CUDA_VISIBLE_DEVICES?我需要如何调整我的 运行 命令或其他设置才能使此设置合理?我对 multi运行 特性如何处理 GPU 资源特别感兴趣。欢迎任何建议。
Submitit plugin 确实支持 GPU 分配,但我不熟悉 Horovod,也不知道这是否可以与它结合使用。
Hydra 1.0 的一项新功能是能够在启动过程中设置或复制环境变量。
如果 Horovod 试图设置一些环境变量,这可能会派上用场。有关信息,请参阅 docs。
现在,我正在使用 Horovod 运行 分布式训练我的 pytorch 模型。我想开始为 --multi运行 功能使用 hydra config 并使用 SLURM 将所有作业排入队列。我知道有 Submitid 插件。但我不确定,整个管道将如何与 Horovod 一起工作。现在,我的训练命令如下所示:
CUDA_VISIBLE_DEVICES=2,3 horovodrun -np 2 python training_script.py \
--batch_size 30 \
...
说我想使用 hydra --multi运行 来 运行 几个多 gpu 实验,我想用 slurm 排队 运行s 因为我的资源有限并且大多数时候会按顺序 运行,我想使用 Horovod 来同步我的网络的梯度。这个设置 运行 开箱即用吗?如果 slurm 处理资源,我是否需要指定 CUDA_VISIBLE_DEVICES?我需要如何调整我的 运行 命令或其他设置才能使此设置合理?我对 multi运行 特性如何处理 GPU 资源特别感兴趣。欢迎任何建议。
Submitit plugin 确实支持 GPU 分配,但我不熟悉 Horovod,也不知道这是否可以与它结合使用。 Hydra 1.0 的一项新功能是能够在启动过程中设置或复制环境变量。 如果 Horovod 试图设置一些环境变量,这可能会派上用场。有关信息,请参阅 docs。