NanoChat训练总结与状态 | AI生成和翻译
NANOCHAT 训练总结 — TMUX 会话 14
项目 nanochat 是 Karpathy 的最小化 LLM 训练工具集。涵盖 tokenization、预训练、SFT、评估、推理和聊天 UI,均在一个仓库中。”速通”目标是尽可能快地用 8XH100 达到 GPT-2 能力(CORE 0.2565)。当前排行榜记录:1.65 小时。
我们的训练 运行名称: rtx4070-d12-chinchilla(从 fineweb-edu-d12 继续) 开始时间: 2026 年 6 月 4 日 ~03:29 UTC 从以下步骤恢复:步骤 10,000(首次运行在 fineweb-edu-d12 上进行了 10k 步) 当前: 步骤 35,729 / 87,000(41.07%) 预计剩余时间:约 16.8 小时(剩余约 1006 分钟) 已用时间: 约 11.7 小时(700 分钟)
模型 架构: GPT transformer,depth=12 参数数量: 286,261,730(约 286M) 层数: 12,头数:6,KV 头数:6,嵌入维度:768,头维度:128 词表大小: 32,768 序列长度: 2,048 每 token FLOPs:约 887M
训练配置 批次大小: 65,536 tokens/步(device_bs=8,grad_accum=4) 迭代次数: 87,000 总 tokens: 5.70B(对于 286M 参数符合 Chinchilla 最优,比例约 20x) 学习率: matrix_lr=0.02,对批次 65536 缩放因子 0.3536 预热步数: 40 步 衰减步数: 训练过程的 65% 权重衰减: 0.099(从深度 12 的 0.28 缩放而来) FP8: 否(RTX 4070 支持不佳) Flash Attn: 否(FA3 不可用,使用 PyTorch SDPA 回退)
数据 数据集: NVIDIA ClimbMix(通过 nanochat) 磁盘占用: 374 GB,177 个 parquet 分片 可用总量: 约 142.6B tokens 已消耗: 约 2.34B tokens(分片 4/177,rg ~97) 将消耗: 5.70B tokens(仅占可用数据的 4%!)
硬件 GPU: RTX 4070,12 GB VRAM,单 GPU 速度: 约 55,660 tok/sec,约 1,177ms/步 MFU: 显示 0%(此 GPU 未定义峰值 FLOPS)
验证损失轨迹 步骤 0: val_bpb = 3.221 步骤 10,000: val_bpb = 0.935(迄今为止最佳) 步骤 20,000: val_bpb = 1.016 步骤 30,000: val_bpb = 1.002 当前训练损失:约 3.16-3.20
现实检查 — 预期 vs 实际
-
与排行榜的规模不匹配 速通排行榜的目标是在 8XH100 上使用 depth=24-26(约 1.6B 参数)。 我们在单张 RTX 4070 上运行 depth=12(286M 参数)。这是 GPT-1 规模的模型,而非 GPT-2 规模。GPT-2 能力需要约 1.6B 参数(depth ~24-26)。我们的模型不会达到 GPT-2 CORE 分数。
-
Chinchilla 最优性 286M 参数训练 5.7B tokens = 比例约 20x。Chinchilla 建议约 20x,因此对于此模型规模而言是计算最优的。不错。
-
损失趋于平台 val_bpb 从 0.935(第 10k 步)上升到 1.002(第 30k 步)——实际上在 10k 步后变差。训练损失徘徊在约 3.14-3.22,没有明显下降。这表明模型可能已经达到其容量的收敛,进一步训练收益递减或轻微过拟合。
-
实际运行时间 在 8XH100 上,depth=24 的速通约需 1.65 小时。在我们的单张 RTX 4070 上,depth=12 的运行约需 28.5 小时。每 GPU 慢约 8 倍,且 GPU 数量仅为 1/8,因此吞吐量约为速通设置的 64 分之一。这对消费级硬件来说是合理的。
- 完成时的预期
- 一个约 286M 参数的模型,能够生成连贯文本
- 相当于早期 GPT-1 能力(而非 GPT-2)
- 经过 SFT(流水线第 6-7 步)后足以进行基本聊天
- 模型会幻觉、在推理上挣扎,且世界知识有限——它是个幼儿园水平,而非 ChatGPT
- 训练速度稳定 无崩溃,稳定约 55.6k tok/sec。目前已保存 3 个检查点(10k、20k、30k)。无发散或 NaN 损失迹象。