NanoChat基础训练报告 | AI生成和翻译
以下是综合训练摘要:
===============================================================
NANOCHAT 基础训练摘要
===============================================================
模型架构 — GPT-2 风格,2.86 亿参数
层数: 12
注意力头数: 6(GQA,n_kv_head=6)
嵌入维度: 768,注意力头维度:128
词表大小: 32,768
上下文长度: 2,048 个 token
总参数量: 286.3M(非嵌入参数 261.1M)
特点: RoPE、QK 归一化、ReLU² MLP、无偏置项、
非共享嵌入/语言模型头、
奇数层(1,3,5,7,9,11)的值嵌入及学习门控
训练调度
阶段 1(步骤 0-10k): fineweb-edu-d12,从头开始
阶段 2(步骤 10k-87k): rtx4070-d12-chinchilla,恢复训练
总步数: 87,000
批量大小: 65,536 token/步(设备批量=8 × 序列长度=2048)
总 token 数: 约 5.7B
数据比例: 12(Chinchilla 最优:5.7B / 286M ≈ 20倍)
GPU: RTX 4070 12GB,bf16,峰值 9.4 GB 显存
优化器
类型: MuonAdamW(自定义)
矩阵学习率: 0.02,标量学习率:0.5
嵌入学习率: 0.3,非嵌入学习率:0.008
权重衰减: 0.28
预热步数: 40 步
衰减起始: 训练进度的 65%(约第 56,550 步)
最终学习率比例:0.05
损失进展
┌─────────┬───────────┬────────────┬──────────┬──────────┐
│ 步数 │ 验证 bpb │ 训练损失 │ 差值 │ 时间 │
├─────────┼───────────┼────────────┼──────────┼──────────┤
│ 10,000 │ 0.9349 │ 2.979 │ (基准) │ 3.2h │
│ 20,000 │ 1.0155* │ 3.271* │ 尖峰 │ 6.5h │
│ 30,000 │ 1.0019 │ 3.234 │ -0.014 │ 9.8h │
│ 40,000 │ 0.9780 │ 3.136 │ -0.024 │ 13.1h │
│ 50,000 │ 0.9533 │ 3.042 │ -0.025 │ 16.3h │
│ 60,000 │ 0.9299 │ 2.954 │ -0.023 │ 19.6h │
│ 70,000 │ 0.9022 │ 2.885 │ -0.028 │ 22.9h │
│ 80,000 │ 0.8799 │ 2.850 │ -0.022 │ 26.1h │
│ 87,000 │ 0.8658 │ 2.748 │ -0.014 │ 28.4h │
└─────────┴───────────┴────────────┴──────────┴──────────┘
* 第 20k 步尖峰:优化器状态恢复 + 配置更改
阶段 2 净改善:1.0155 → 0.8658 bpb(-14.7%)
从头到尾: 0.9349 → 0.8658 bpb(-7.4%)
性能表现
吞吐量: 55,670 token/秒(全程稳定)
每步时间: 1,177 毫秒/步
总时间: 1,706 分钟(28.4 小时)
检查点保存: 9 次(每 10k 步 + 最终)
模型大小: 约 756 MB 每个检查点
优化器大小: 约 1.2 GB 每个检查点
关键观察
1. 损失从未趋于平稳——在最终步骤仍在下降。
衰减(学习率降低)刚刚开始生效。
更多步骤可能会带来进一步提升。
2. 阶段 2 恢复导致临时损失尖峰(0.93→1.02),
可能源于优化器状态不匹配或数据分布变化。
约 20k 步后恢复。
3. 验证 bpb 平滑跟踪——无过拟合。训练损失
始终高于验证 bpb(平滑估计与点估计的预期差异)。
4. RTX 4070 表现良好——峰值显存 9.4 GB,利用率 100%,
温度 66°C,功耗 211W。无内存溢出,无崩溃。
后续步骤
评估: python -m scripts.base_eval --device-batch-size=8
对话: python -m scripts.chat_cli -p '天空为什么是蓝色的?'
SFT: python -m scripts.chat_sft (微调对话能力)
RL: python -m scripts.chat_rl (RLHF/DPO 对齐)
===============================================================
模型状态极佳——在最终阶段损失仍在下降,从未达到平稳,也未出现过拟合。这个具有值嵌入和 Chinchilla 最优数据比例的 2.86 亿参数模型在一块 RTX 4070 上表现良好。下一步自然而然是运行 base_eval 获取基准得分,然后进行 SFT/RL 以增强对话能力。