ray.train.torch.prepare_数据加载器#
- ray.train.torch.prepare_data_loader(data_loader: torch.utils.data.DataLoader, add_dist_sampler: bool = True, move_to_device: bool = True, auto_transfer: bool = True) torch.utils.data.DataLoader [源代码]#
为分布式执行准备
DataLoader
。这允许你使用相同的代码,无论工作者的数量或使用的设备类型(CPU、GPU)如何。
备注
如果训练工作者的数量大于1,此方法会向
DataLoader
添加一个DistributedSampler
。如果原始DataLoader
启用了洗牌功能,那么shuffle=True
也会传递给DistributedSampler
构造函数。原始DataLoader
上的shuffle=False
也意味着在采样器上禁用了洗牌功能。使用超过1个工作进程时,在每个epoch开始之前调用
DistributedSampler.set_epoch
方法,然后再创建 DataLoader 迭代器是必要的,以确保在多个epoch中正确地进行洗牌。否则,将始终使用相同的顺序。参见:https://pytorch.org/docs/stable/data.html#torch.utils.data.distributed.DistributedSampler # noqa: E501示例:
- 参数:
data_loader (torch.utils.data.DataLoader) – 用于准备的 DataLoader。
add_dist_sampler – 是否将 DistributedSampler 添加到提供的 DataLoader 中。
move_to_device – 如果设置,自动将数据加载器返回的数据移动到正确的设备。
auto_transfer – 如果设置且设备为GPU,则会创建另一个CUDA流来自动将数据从主机(CPU)内存复制到设备(GPU)内存(默认的CUDA流仍然运行训练过程)。如果设备为CPU,则无论设置如何都将禁用此功能。如果
move_to_device
为False,则此配置将被忽略。