小模型全流程训练与评估
训练语料构建
记录语料来源和使用许可,清理空文本与异常样本,去重后按文档组划分数据。训练集用于更新参数,验证集用于选择配置,最终测试集留到比较方案时。
调整下方的切分方式,看看重复文档去了哪里。
数据划分与泄漏检查
train去重移除trainvalidationtest相同的 A 文档保留一条,验证和测试使用其他文档。这里展示确定的分组示例。
实际语料还需要近重复检测、来源分组和评测集排重;这个小例子只演示精确重复。
训练资源预算
对照 16 GiB 统一内存
128 tokens / 更新 × 8 次更新
每参数约 0.01 个训练 token
状态内存 = 0.15 × 10⁶ × (4 + 4 + 4 + 4) bytes ÷ 2³⁰
tokens = 128 × 1 × 1 × 8
按所选近似参数档估算;真实参数量以项目配置为准。假定权重、梯度和 Adam 的一阶/二阶状态均为 FP32,合计 16 bytes/parameter。这个下界不包含激活、临时张量、数据缓存、框架、系统或 DPO 参考模型;它不能判断某个配置一定能跑。上下文与微批量增大还会增加激活内存。Token 预算假定序列填满且无 padding,是处理次数,可能包含重复语料。
约 0.15M 仅用于此预算器的近似估算。实际参数量以项目配置为准,首跑关注有限损失、梯度、保存恢复和导出加载,不评判语言能力。
已核对 Apple M4 Air、8 核 GPU 与 16 GiB 统一内存;本轮磁盘可用空间约 12 GiB,会随时间变化。长跑前重新检查余量,并实测同配置的峰值内存、持续吞吐、温度影响和 checkpoint 大小。
训练时长:等待实测输入。
时长 = token 预算 ÷ tokens/s ÷ 3600。未包含评测、保存、加载与停顿;该输入仅用于临时试算,不写入分享链接,也不是本站测得的速度。
流程说明与参考资料
数据
记录来源和许可,先去重,再按文档关联组划分 train / validation / test。训练集更新参数,验证集选配置,测试集留给最终比较。
分词
只在训练集上拟合词表并冻结版本,验证编解码与特殊 token。教学 BPE 可演示高频组合合并;工程分词器必须另行验证文本回环与数据打包。
随机初始化预训练
用随机初始化的 decoder-only Transformer 预测下一个 token。先用 tiny 做少量更新,验证有限损失、梯度、保存和恢复;再测量约 30M 首个完整实验的成本。
SFT
从自己的基座继续训练,固定对话模板,提示词作为上下文,assistant 回答与结束符计入损失,padding 不计入。保存模板与掩码规则。
DPO
为同一提示准备 chosen / rejected,固定 SFT 参考模型。相对参考的回答对数概率差进入偏好损失;训练后仍要检查长度、格式与基础任务能力。
评测
固定数据、分词器与掩码,按目标 token 数汇总 NLL,perplexity = exp(NLL)。分别报告任务、格式和偏好指标,保留样本数与原始输出。
部署与下一轮
一起导出权重、配置、分词器、模板、环境与模型说明。干净环境独立加载并核对固定输入;量化单独复测。把失败样例送回下一轮数据与评测设计。
互动区中的概率、偏好和评测对照均为给定数值的教学计算,预算是公式估算。它们不构成模型训练结果。算法说明参考: Hugging Face · BPE · PyTorch · CrossEntropyLoss · DPO paper