训练一个286M参数的NanoChat | AI生成和翻译
以下是完整的概况:
============================================================ NANOKCHAT d12 训练总结 ============================================================
模型架构(2.86亿参数) 类型: GPT(nanochat d12) 层数: 12 注意力头数: 6(无GQA) 嵌入维度: 768 头维度: 128 词表大小: 32,768(BPE) 上下文长度: 2,048 tokens 窗口模式: “L”(全注意力,无滑动窗口) 参数分解: wte(token嵌入): 25.2M value_embeds: 151.0M lm_head: 25.2M transformer_weights: 84.9M scalars: 50 总计: 286,261,730 参数 FP32检查点: ~793MB(模型)+ ~1.2GB(优化器) 峰值显存: ~9.4 GB
硬件 GPU: NVIDIA RTX 4070(12GB显存) 数据类型: BF16(自动检测,SM 89) FA3: 不可用,使用PyTorch SDPA回退 MFU: RTX 4070未定义(消费级GPU)
训练超参数 优化器: Muon(矩阵)+ AdamW(嵌入层) 矩阵学习率: 0.02(按批次因子缩放) 嵌入学习率: 0.3 解嵌入学习率: 0.008 标量学习率: 0.5 权重衰减: 0.28(对d12缩放至0.099) 预热步数: 40步 冷却步数: 总步数的65%(余弦衰减) 最终学习率: 初始值的5% 批次大小: 65,536 tokens/步 = 8 设备批次 x 2048 序列长度 x 4 梯度累积
============================================================ 阶段1:0 → 130,000步(已完成) ============================================================
运行名称: rtx4070-d12-130k 起始状态: 从头开始(首次运行0-87k,恢复后87k-130k) 步数: 130,000 Tokens: 130,000 x 65,536 = 8,519,680,000(~85亿) 训练时间: 2,549.86分钟(~42.5小时) 损失: 2.78 → 2.63 → 2.60(最终平滑) 学习率衰减: 0.47 → 0.31 → 0.20 最终验证bpb: 0.780026 核心指标: 0.1916 吞吐量: ~55,700 tok/秒(~1.18秒/步) 检查点: 14个已保存(每10k步) 评估亮点: hellaswag(10-shot): 0.43 winograd(0-shot): 0.62 piqa(10-shot): 0.67 boolq(10-shot): 0.585 copa(0-shot): 0.63
============================================================ 阶段2:130,000 → 200,000步(运行中) ============================================================
运行名称: rtx4070-d12-200k 恢复自: 第130,000步检查点 步数: 剩余70,000步 新增Tokens: 70,000 x 65,536 = 4,587,520,000(~46亿) 预计完成时间: ~23小时 学习率计划: 进入冷却阶段(200k的65% = 130k) 将从0.02余弦衰减至0.001(矩阵) 初始损失: 2.57-2.61(平稳恢复) 核心指标: 0.1932(恢复点) 验证bpb: 0.810152(恢复点)
============================================================ Token预算总计 ============================================================
阶段1: 85亿 tokens 阶段2: 46亿 tokens 合计: 131亿 tokens
参数: 2.86亿 Token:参数比: 45.8:1(Chinchilla最优为20:1) 总训练FLOPs: ~1.16e19
============================================================ 时间线 ============================================================
阶段1开始: ~6月4日(根据检查点日期估算) 阶段1结束: 6月7日 03:21(42.5小时) 阶段2开始: 6月7日 18:08 阶段2结束: ~6月8日 17:00(预计,~23小时) 总耗时: ~65.5小时(2.7天)
该模型的训练远超Chinchilla最优值(45倍 vs 20倍 tokens/参数)。这是”过度训练”——有意为之以提高推理效率(训练时间更长的小模型比训练时间更短的大模型部署成本更低)。