global shuffle实现?shuffle buffer大小?训练数据的global shuffle实现?shuffle buffer大小?
Global shuffle:在 多 epoch 或 多 worker 下,让整个数据集在全局视角下打乱,避免每个 epoch 或每个 worker 看到相同顺序,从而提高泛化、减少顺序偏差。若只做本地 shuffle(每 worker 自己 shuffle 自己的 shard),全局上仍可能存在跨 shard 的顺序相关性;global shuffle 使不同 epoch 间、不同 rank 间的样本顺序更随机。
中心式:由 单节点或服务 生成「全局随机排列」的 index 或 sample_id 列表,各 worker 按 rank 取自己那一段;每 epoch 重新生成一次排列。分布式:各 worker 约定 seed + epoch,用 相同算法 生成全局排列(如 shuffle 0..N-1 的索引),再按 shard 划分 各取一段;无需中心节点,但需确定性(同一 seed+epoch 得到同一排列)。DataLoader:PyTorch 的 DistributedSampler 在 shuffle=True 时会对全量 index 做 shuffle(基于 seed+epoch),再按 rank 切分,等价于 global shuffle。
| 返回模块 | 返回总览 |