问题域/PD-431

高效数据加载管道

Efficient Data Loading Pipeline

面向大规模预训练的分布式数据加载与文档打包策略

子问题

1.文档打包算法(best-fit vs greedy)

2.BOS 对齐保证完整上下文

3.pinned memory 与异步传输

4.多 epoch 无限迭代与断点恢复

5.row_capacity = T+1 的 next-token prediction 移位设计

6.buffer 搜索最大适配 vs 裁剪最短文档的策略选择

7.inputs/targets 共享连续内存的单次 HtoD 传输优化

各项目的解法1 solutions

Signals

横向对比

维度nanochat
管道架构三层管道:Parquet 迭代 → Best-Fit 打包 → pinned memory HtoD
特征类型BOS 对齐 token 序列,100% 利用率零 padding
并发模型DDP rank 交错 row_group + tokenizer 多线程编码
数据模型Parquet row_group 为最小读取单元,文档为打包单元
可替换性dataloader 独立模块,接口为 Iterator[inputs, targets, state_dict]
容错策略state_dict 断点恢复 + 数据下载指数退避重试
打包算法Best-Fit(buffer 搜索最大适配)+ 裁剪最短文档填充
内存管理预分配 pinned CPU + GPU buffer,单次 non_blocking copy

最佳实践

1.Best-Fit 打包实现 100% 利用率零 padding

2.预分配 pinned memory + GPU buffer 消除每 batch 内存分配开销

3.DDP rank 交错 row_group 实现零通信开销数据分片

4.裁剪最短文档而非随机文档以最小化 token 浪费