1. 一句话总结:
DDP中DistributedSampler保证测试数据集加载固定顺序,且在各个程序中都是一样时(因为shuffle=True时使用了随机种子,不保证在各个程序中测试数据集加载顺序都是一样),最好在DistributedSampler中保证参数shuflle=False,训练集需要保证shuffle=True(DistributedSampler中默认shuffle参数是True)。
DDP中在DataLoader中需要保证测试数据集和训练数据集都是shuffle=False(参数shuflle默认是False),因为有了sampler进行数据采样,如果shuffle=True会与sampler进行采样冲突,出现报错(DataLoader中默认shuflle参数是False)。如果不是DDP,则需要保证训练数据集的dataloader中shuffle参数是True,测试数据集的dataloader中shuffle参数是False。
2. 参考链接:
- Pytorch中DistributedSampler()中的随机因素
- Pytorch按照固定顺序加载样本
- Pytorch Distributed相关代码学习(一)
- [源码解析] PyTorch 分布式(1) — 数据加载之DistributedSampler
- 关于DistributedSampler理解
- pytorch分布式系列3——分布式训练时,torch.utils.data.distributed.DistributedSampler做了什么?
- pytorch 的 DataLoader中的shuffer与随机种子
- pytorch多GPU并行训练DistributedDataParallel应用和踩坑记录
- PyTorch多卡分布式训练DistributedDataParallel 使用方法
- 官方:https://pytorch.org/docs/stable/data.html#
- 官方:https://pytorch.org/tutorials/intermediate/ddp_tutorial.html
- 官方:https://pytorch.org/docs/stable/notes/ddp.html
- 关于pytorch中的distributedsampler函数使用
- Pytorch DistributedDataParallel 数据采样 shuffle