在Pytorch中,一个人应该在哪里调用torch.distributed.destroy_process_group()?

12
我注意到文档中没有该函数的说明,因此不清楚应该在哪里调用。下面两种方法哪个是正确的呢?
  1. 在每个 worker 代码的末尾调用它(例如,在 mp.spawn 内部)。
  2. 或者在 mp.spawn 外面即主进程中调用它。

请注意,有一个git问题要求将此功能加入文档:https://github.com/pytorch/pytorch/issues/48203

以下是2的示例:

def test_setup():
    print('test_setup')
    if torch.cuda.is_available():
        world_size = torch.cuda.device_count()
    else:
        world_size = 4
    master_port = find_free_port()
    mp.spawn(setup_process, args=(world_size, master_port), nprocs=world_size)
    dist.destroy_process_group()
    print('successful test_setup!')
1个回答

1
你可以注意到在PyTorch教程中,函数cleanup()在每个进程结束时被调用(即在mp.spawn内部)。
def cleanup():
    dist.destroy_process_group()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接