NanoChat RTX 4070 训练摘要 | AI生成和翻译
以下是详尽总结:
============================================================
NANOCHAT 训练运行总结(train.log)
============================================================
模型架构
层数: 12
注意力头数: 6(6个KV头,无GQA)
嵌入维度: 768
序列长度: 2048
词表大小: 32768
窗口模式: L(全局上下文注意力,无滑动窗口)
总参数量: 286,261,730(约2.86亿)
注意:run_rtx4070.sh脚本指定depth=8/batch=32768/seq=1024/5000次迭代,
但实际运行采用depth=12/batch=65536/seq=2048/10000次迭代。
您运行的是自定义命令,而非脚本。
训练配置
设备批次: 8个序列 x 2048个token = 每个微批次16384个token
梯度累积: 4步
总批次: 65536个token
迭代次数: 10000
总token数: 655,360,000(约6.55亿)
Token/参数比: 5.95(Chinchilla最优值为20,因此训练不足)
优化器: Muon(矩阵权重)+ AdamW(嵌入、反嵌入、标量)
矩阵学习率: 0.02(Muon)
嵌入学习率: 0.3(Adam)
反嵌入学习率: 0.008(Adam)
权重衰减: 0.099(从深度12的0.28缩放而来)
预热步数: 40步
衰减起始: 从第6500步开始(65%比例)
最终学习率比例:0.05
硬件与速度
GPU: NVIDIA RTX 4070(12 GB)
闪存注意力: 不支持(使用SDPA回退,SM 89上无FA3)
FP8: 未使用
计算精度: bfloat16
吞吐量: 约55,700 token/秒(稳定状态)
单步耗时: 约1,177毫秒
峰值显存: 9,448 MiB(12 GB的78%)
总用时: 196分钟(约3.3小时)
MFU: 显示为0%(代码中未定义RTX 4070的峰值FLOPS)
验证BPB(比特每字节)进展
步数 BPB 备注
----- ------ -----
0 3.221 随机初始化
500 1.280 大幅下降,快速学习
1000 1.167
1500 1.124
2000 1.100 样本开始显示基础知识
2500 1.082
3000 1.070
3500 1.060
4000 1.044 衰减尚未开始
4500 1.031
5000 1.018
5500 1.006 跌破1.0 BPB
6000 0.995
6500 0.985 衰减从此处开始
7000 0.976
7500 0.967
8000 0.959
8500 0.951
9000 0.945
9500 0.939
10000 0.935 最终
趋势:单调递减,无过拟合。训练结束时仍在改善
→ 模型未达到饱和,可以继续训练。
训练损失(来自前100行)
步数0: 10.40(= log2(32768),随机初始化预期值)
步数10: 10.16
步数20: 8.71(快速预热增益)
步数30: 7.43
步数40: 6.80(预热在此达到峰值)
步数49: 6.51
最终: ~2.98
最终样本质量(第10000步)
- “法国的首都”→ 回答“该国的南部”(错误)
- “金的化学符号”→ 循环“金原子”
- “如果昨天是星期五”→ 混淆
- “热的反义词”→ 正确(冷),但循环
- “太阳系的行星”→ 正确列出!
- “5x+3=13”→ 完全失败
结论:2.86亿参数,6.55亿token。掌握基础知识,
能列举事物,但推理和事实准确性弱。
在此规模下,重复/循环现象常见。
先前尝试(run_rtx4070.log)
日志显示一次早期的SFT运行(深度=8),约在第124步后出现NaN,
可能由学习率或数据问题导致。该次运行还评估了
ARC-Easy(25%)、ARC-Challenge(25%)、MMLU(25%)、GSM8K(0%)、
HumanEval(0%)——均在随机水平,符合对基于NaN权重训练的模型的预期。
评估
+ 训练顺利完成,无NaN,无崩溃
+ 损失曲线平滑,单调改善
+ RTX 4070上吞吐量良好(约56k token/秒)
+ 显存使用舒适(78%)
- Token/参数比5.95,远低于Chinchilla最优值(20)
- 模型在结束时仍在改善→应继续训练更长时间
- 样本质量显示模型相对于其规模训练不足
- RTX 4070上无法使用FA3→采用SDPA回退(速度较慢)
- MFU报告异常(缺少RTX 4070的峰值FLOPS查询)
改进建议:要么训练约4万步以上(达到Chinchilla比例),
要么缩小模型规模(减少参数)以匹配6.55亿token的预算。