返回 AI 基础设施 思维导图
中文·English
🖥️ AI 基础设施ID: data-loading

训练数据加载与 IO

Data Loading & IO
🎯核心定义
训练数据加载与 IO 优化。WebDataset 把海量样本按序打包成 tar 分片 (shard) 文件流式读取, 用顺序 IO 替代百万级小文件随机读; 格式选择: TFRecord(定长记录 + 索引, TensorFlow 生态)、Parquet(列式, 特征存储与数据分析)、Arrow(列式内存格式, 跨语言零拷贝)。IO 与计算重叠: 数据管线(读取 → 解码 → 增强 → 组 batch)与 GPU 前反向并行, 用预取 (prefetch) 隐藏 IO 延迟, 如 `tf.data.Dataset.prefetch(1)` 或 PyTorch DataLoader 多 worker + `prefetch_factor`; 理想重叠下总耗时 Ttotalmax(Tio,Tcompute)T_{\text{total}} \approx \max(T_{\text{io}},\, T_{\text{compute}}), 而不是两者之和。
💡使用场景
TB 级数据训练时 GPU 常因数据喂不饱而空转(GPU 利用率低 + CPU/磁盘繁忙即可能 IO 瓶颈); 分布式训练需要每个 rank 独立分片、epoch 间全局打乱; 面试常问如何判断数据加载瓶颈、各格式的适用场景、预取如何提升吞吐。
解决的核心痛点
对比逐文件随机读: 数百万小文件触发海量 inode 查找与磁盘随机 IO, 吞吐比顺序读低一到两个数量级; WebDataset 的 tar 分片顺序流式读取对本地磁盘与对象存储都友好, 配合多 worker 预取与本地缓存(NVMe/页缓存)把 IO 延迟藏在计算背后, GPU 利用率显著回升, 训练时长按瓶颈比例缩短。
🎯5 个高频面试考点 (Exam Points)
1
为什么海量小文件随机读会打爆数据加载? WebDataset 的 shard 机制如何解决?
2
TFRecord / Parquet / Arrow 各自适合什么场景? 如何选择?
3
如何判断训练瓶颈在数据加载而非算力? 用什么工具定位?
4
预取与多进程 worker 如何实现 IO 与计算重叠? 理想重叠下的总耗时是多少?
5
分布式训练中数据如何按 rank 分片、跨 epoch 全局打乱并保证可复现?
📖 关联深度指南:📄 mlops-and-testing
更新于 2026-08-12
🎯
检验攻克程度:针对「训练数据加载与 IO」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点模型权重与检查点存储下一个知识点数据管线与流处理

🔗 更多 AI 基础设施 知识点卡片

激活显存估算Agent 运行时(跨模块)弹性伸缩与成本优化检查点与故障恢复