【问题标题】:Run hydra configured project with SLURM and Horovod使用 SLURM 和 Horovod 运行 hydra 配置的项目
【发布时间】:2020-09-29 00:38:34
【问题描述】:

现在,我正在使用 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 资源特别感兴趣。欢迎任何建议。

【问题讨论】:

    标签: fb-hydra hydra-python


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。好的,现在让我们忘记 horovod。如果我要手动完成我的任务,它将如下所示。我会用 qsub 将每个多 GPU 实验排入队列,每个实验都会以某种方式在内部管理 GPU 资源。 hydra 中的多运行和 slurm 支持是否适合这种情况?我只想让几个多 GPU 进程排队而不必担心 GPU 分配。我有 4 个 gpus,通常希望在 2 个 gpus 左右运行每个实验。
    • 我认为它适合它,但这更像是一个提交的问题。继续在它的 GitHub 上提出问题。开发人员熟悉 Hydra 插件。
    • 您可能需要配置 SLURM 来支持它。见slurm.schedmd.com/gres.html
    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 2018-01-24
    • 2012-10-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多