我想知道是否有一种方法可以将数据加载器/数据集分发到许多CPU,即使使用单个GPU也是如此。具体来说,我想拥有一个Dataset类,并且__getitem__函数将分布在许多不同的CPU上(也许使用mpi吗?但是其他任何方式也都不错)。
谢谢
您当然可以做到这一点,但请注意-由于通讯成本高昂,它对于一般的机器学习需求而言并不总是非常有效。使用DistributedDataParallel
实现基于以下内容的分布式数据并行性在模块级别的torch.distributed程序包。
此容器通过以下方式并行处理给定模块的应用程序:通过分块输入将输入分配到指定设备批次尺寸。该模块在每台计算机上复制设备,每个这样的副本处理输入的一部分。中向后通过时,将平均每个节点的梯度。
[在实践中,我建议您使用pytorch_lightning
包,以减少一些需要编写的样板代码才能起作用。