先记住一句话
数据 pipeline 是模型定义的一部分:同一批 episode 经过不同切窗、采样、归一化和 mixture weight,会训练出不同 policy。
1. 一个可靠 pipeline 的顺序
raw logs
→ schema validation
→ timestamp alignment / resampling
→ calibration & action conversion
→ episode quality filters
→ split by scene/object/session
→ statistics on train split only
→ temporal window sampling
→ augmentation / padding / masks
→ batch
顺序很重要。先全数据算 normalization stats 再切 split,会把 eval 分布信息泄漏进训练;先压成低帧率再检查 drop,又可能掩盖原始采集问题。
2. 清洗不只是删失败
- 结构检查:长度一致、timestamp 单调、必需字段存在、图像能解码。
- 物理检查:关节/EEF 在合理范围、速度跳变、夹爪命令合法。
- 时序检查:帧率、drop、重复帧、action lag、跨 episode 污染。
- 语义检查:指令与视频一致、成功标签可信、任务阶段合理。
硬过滤应可追溯:保留 reject reason 和 pipeline version。失败数据是否保留取决于训练目标,而不是统一删掉。
3. 切窗决定模型的时间感受野
设当前索引为 t,可以读取历史图像 [-4, -2, 0],监督动作 [0…39],监督未来帧 [8, 16]。这三个选择分别定义历史记忆、action horizon 和 world prediction horizon。
均匀抽 frame 适合缓慢阶段,却会低估短暂接触事件。可对夹爪切换、接触、任务 phase 边界做 event-aware sampling,但必须修正采样权重,避免 policy 误判事件先验。
4. Mixture 的单位是什么
按 frame 均匀会让长 episode/高帧率数据统治训练;按 episode 均匀会过采短轨迹;按 dataset 均匀又会过采很小的数据源。更明确的层级是:
P(sample) = P(dataset) · P(task | dataset)
· P(episode | task) · P(window | episode)每一层都应有可见配置和统计 dashboard。常见策略是给高质量目标域固定最低占比,再对大规模预训练源 temperature sampling。
5. 归一化、增强与 mask
- state/action 按 embodiment 和维度统计 quantile/mean/std,记录单位与反归一化方式。
- 图像 color jitter、crop 可提高视觉鲁棒性,但不能破坏精确空间关系或让不同视角不一致。
- language paraphrase 能增广表达,必须保持对象指代和左右关系。
- camera、action dimension、episode end、无 action 数据都需要独立 mask;一个
valid位通常不够。
6. DataLoader 也要验收
随机抽 100 个最终 batch,反归一化并做成视频:把输入历史、目标未来、EEF 轨迹、夹爪和文本一起画出来。只看原始数据或 tensor shape 无法发现切窗后的语义错误。
7. 四个 pipeline 计算
例 1:过滤后的有效规模
原始 100k episodes,结构错误 3%、时序错误 5%,两类近似独立,剩余 $100k×0.97×0.95=92{,}150$。
例 2:mixture batch 配额
Batch 256,目标域/大规模源/恢复数据权重 0.5/0.4/0.1,期望分别 128、102.4、25.6 个;可实现为 128/102/26 并长期检查频率。
例 3:z-score 与反归一化
某动作均值 0.02 m、标准差 0.01 m,真实 0.05 m 标准化为 $(0.05-0.02)/0.01=3$;模型输出 1.5 反归一化为 0.035 m。
例 4:event-aware 重要性权重
接触帧真实占 10%,采样时提升到 40%。估计原分布 loss 时接触样本权重比为 $0.10/0.40=0.25$,普通帧为 $0.90/0.60=1.5$。
dataset revision、filter version、split manifest、stats 文件、mixture weights、sampler seed 和所有 temporal offsets,缺一项都可能让实验无法解释。
自测
1. 为什么不能默认按 frame 均匀采样?
它隐式偏向更长、更高频的轨迹,不一定符合希望的任务或数据源权重。
2. stats 为什么只在 train split 计算?
避免把测试分布信息泄漏进训练变换。
3. event-aware sampling 的副作用是什么?
改变事件出现先验,若不加权可能让模型过早或过频触发抓取等动作。
实践资料
LeRobotDataset v3 把视频、Parquet、episode metadata 和统计量组织成可扩展格式;DROID schema 是理解训练前字段的具体例子。