M34:可选探索:重复数据、顺序与小 Checkpoint
本日用一个极小对照观察训练过程对数据重复、样本顺序或 checkpoint 的敏感性;目标是产生一个可信问题,不是完成更多训练。
内容类型:预习教材(不代表已完成)
日期:2026-09-26
阶段:P1 · AI Model Engineering 90
周次:W5 · 小语言模型预训练、数据与 scaling
节奏:周六可选探索 / 补课
状态:教材已备;学习未完成
标签:duplication、data-order、checkpoint、optional
一句话定义
本日用一个极小对照观察训练过程对数据重复、样本顺序或 checkpoint 的敏感性;目标是产生一个可信问题,不是完成更多训练。
学习目标
- 理解“相同 token 数”不代表“相同信息量”。
- 知道数据顺序如何通过早期梯度与有限预算影响训练轨迹。
- 了解 checkpoint 除了恢复训练,还承担诊断与比较作用。
核心知识
重复数据会提高某些序列被采样的频率,使模型更容易记忆固定表达,同时减少单位 token 预算中的有效多样性。重复不总是错误:高质量核心材料可以合理上采样;问题在于配比必须是有意识、可记录的选择。
随机打乱通常用于降低相邻样本相关性,但在课程式训练、领域混合或流式数据中,顺序可能刻意安排。有限训练步数下,先出现的样本会影响参数进入哪一片区域;后出现的数据也可能覆盖早期行为。单个 seed 的顺序效应不能被夸大为普遍规律。
checkpoint 至少应包含模型参数、优化器状态、当前 step、随机数状态和关键配置。只保存权重可以用于推理,却未必能精确续训。中间 checkpoint 还可用来回答:某种行为何时出现?验证恶化从哪一步开始?
机制/推导
随机梯度 g_t 由当前 batch 决定,参数更新顺序一般不可交换:先执行 θ−ηg_A 再计算 B 上的梯度,与先 B 后 A 得到的梯度点不同。模型非线性、学习率较大或预算很短时,顺序差异更明显。
重复率可粗略看作样本权重。如果一条模板复制十次,它对经验风险的贡献约被放大十倍,但新增信息接近零。去重阈值又可能误删合法的标准条款,因此应区分完全重复、近重复和业务上必要的固定文本。
最小练习或观察步骤
任选一项即可,也可以补 M29~M33:
- 重复实验:复制一小部分训练文本,保持总 token 预算一致,对比总体与被重复片段的 loss。
- 顺序实验:使用同一数据与 seed,只改变两个领域块的先后,观察早期和最终验证曲线。
- checkpoint 实验:保存一个中间点,分别从“完整状态”和“仅权重”继续,检查配置与轨迹是否一致。
- 预先写清唯一变量;最多保留一条观察,不必为了显著差异反复尝试。
常见误区
- 把重复数据带来的更低训练 loss 当成知识覆盖增加。
- 看到一次顺序差异就宣称发生了灾难性遗忘。
- checkpoint 文件存在就认为可复现,却没有数据版本和随机状态。
- 周六探索扩展成无边界调参,挤占恢复时间。
金融 / Web3 / 文档场景连接
合同、法规和交易告警含大量模板句。完全去重可能删除重要标准条款,不去重则可能让模板主导训练。可按文档 ID、条款 ID 与近重复簇记录权重,把“制度上重要”与“技术上重复”分开处理。
自检问题
- 为什么 token 数相同而有效数据量不同?
- 仅保存权重为何不一定能继续同一训练轨迹?
- 哪一种重复是你愿意保留的,理由是什么?
专业课程对齐
- 精读 Stanford CS336 的 data processing、training loop 与 checkpointing 相关内容,关注 shuffle、packing、数据重复率与可恢复状态。
- 精读 PyTorch Tutorials 中 saving/loading checkpoints 与 DataLoader 主题,检查 model、optimizer、scheduler、scaler 和 RNG state 的保存边界。
- 选读 Hugging Face LLM Course 的 datasets 处理章节,比较 map、shuffle、streaming 如何改变样本顺序与复现条件。
深入学习提示
先看 CS336 的数据语义,再按 PyTorch 检查恢复路径,最后选读 HF 的数据 API。对“原顺序、随机顺序、高重复”只改一个条件,记录已见的唯一 token 与总 token,区分更快记忆和更好泛化。checkpoint 验证要比较中断前后下一 batch、learning rate 和 loss,而非只确认文件可加载。反例是漏存 RNG 与 sampler 状态却声称 bitwise resume,或用重复数据带来的训练 loss 优势代替验证集证据。
**研读产出:**为 checkpoint 写一份状态清单:模型参数、优化器动量、scheduler 计数、gradient scaler、global step、数据 sampler 位置、Python/NumPy/设备 RNG 和配置版本。设计“连续训练 N 步”与“K 步保存后恢复 N-K 步”的对照,事先说明是要求 bitwise 一致还是容差内一致。数据顺序实验则保存每步样本 ID 或块 ID,否则无法证明两次运行经历了相同数据。最后检查重复文本是否跨越训练/验证边界,因为这会让“顺序效应”与“泄漏”混在一起。
学后填写区
- 今日选择(探索 / 补课 / 休息):
- 若探索,唯一变量:
- 一条观察或问题:
- 停止的位置: