我使用Pytorch分布式数据并行方法,并生成多个进程,每个进程运行在不同的GPU.I上。我使用Pytorch分布式数据采样器和数据加载器将批量输入数据加载到每个进程。我的问题:
。
2)。我的第二个问题是如何以与输入数据相同的顺序检索输出数据,以便最终的合并输出(将来自所有进程的输出组合在一个数据结构中)与原始输入的顺序相同,并且每个输出对应于正确的输入。
发布于 2021-09-28 21:00:45
DistributedSampler的PyTorch文档没有提供任何关于数据如何在进程和设备之间分布的保证,除了它实际上是跨进程和设备分布的事实之外。您不应该将您的应用程序设计成依赖于外部包的实现细节;否则,您的应用程序可能在更新PyTorch后的某一天突然失败,您将不知道原因(或者可能它一开始就失败了)。如果由于某种原因,您绝对需要以非常特定的方式分发数据,那么您应该推出自己的解决方案。The documentation for DistributedDataParallel建议,如果您使用的是一个带有N个GPU的主机,则应该拆分N个进程,每个进程指定一个GPU。一个简单的解决方案是将进程的级别设置为指定的GPU设备ID;这可以反过来在自定义取样器类中使用,以选择适当的样本索引。https://stackoverflow.com/questions/69368042
复制相似问题