【发布时间】:2020-08-21 20:29:25
【问题描述】:
我只是在看 DDP 教程:
https://pytorch.org/tutorials/intermediate/ddp_tutorial.html
据此:
通常使用 torch.save 和 torch.load 来检查点模块 在训练期间并从检查点恢复。请参阅保存和加载 模型了解更多详情。使用 DDP 时,一项优化是节省 模型仅在一个进程中,然后将其加载到所有进程中, 减少写入开销。这是正确的,因为所有进程都启动 从相同的参数和梯度向后同步 通过,因此优化器应保持将参数设置为 相同的值。如果您使用此优化,请确保所有进程都这样做 在保存完成之前不要开始加载。此外,加载时 模块,您需要提供适当的 map_location 参数 防止进程进入其他人的设备。如果 map_location 是 缺少,torch.load 会先将模块加载到 CPU 再复制 每个参数保存到它的保存位置,这将导致所有 使用同一组设备在同一台机器上进行进程。更多 高级故障恢复和弹性支持,请参考 TorchElastic。
我不明白这是什么意思。不应该只有一个进程/第一个 GPU 来保存模型吗?保存和加载权重是如何在进程/GPU 之间共享的?
【问题讨论】:
标签: pytorch distributed-computing