冒烟测试与培训计划总结 | AI生成和翻译
以下是结果。
烟雾测试结果 — /mnt/data/nanoGPT/out-gpt2-200m-smoke/smoke.log
| 指标 | 值 |
|---|---|
| 参数数量(由 train.py 打印) | 218.51M |
| 损失轨迹(25 次迭代) | 10.985 → 7.66(正常冷启动下降) |
| 每迭代时间(bs=2, grad_accum=4) | ~330 ms |
| 崩溃 / NaN / 内存溢出(OOM) | 无 |
VRAM 探测(bf16,未编译)
| 微批次大小 | 峰值 VRAM | 毫秒/微步 | 毫秒/令牌 |
|---|---|---|---|
| 2 | 5.55 GB | 117 | 0.0571 |
| 4(已选) | 8.01 GB | 167 | 0.0408 |
| 6 | 10.44 GB | 231 | 0.0376 |
| 8 | 内存溢出 | — | — |
bs=4 是明确的最佳选择:每令牌比 bs=2 快 28%,且留有约 4 GB 空间用于 torch.compile 和评估。我已更新 config/train_gpt2_200m.py,设置 batch_size=4,gradient_accumulation_steps=128(仍为每步 524,288 个令牌)。
计划
架构(自定义,介于 GPT-2 small 和 medium 之间):
n_layer = 18, n_head = 16, n_embd = 896 → 2.185 亿非嵌入参数
为什么是 4B 令牌: Chinchilla 最优 ≈ 20 × 参数数 → 20 × 219M ≈ 4.4B。你的 4B 目标正好在此线上。
令牌预算: 524,288 令牌/步 × 8,000 步 = 41.9 亿令牌。
数据: data/fineweb/edu_fineweb100B/ 目录下已有 1,408 个 FineWeb-Edu 分片(约 140B 令牌)——远超所需,因此无需重新分词。
在 RTX 4070 上的时间预估:
| 设置 | 每次迭代时间 | 8,000 次迭代的挂钟时间 |
|---|---|---|
| bs=4,未编译 | ~21.4 秒 | 约 48 小时(约 2 天) |
bs=4,启用 compile=True(在 Ada 上通常加速约 25%) |
~16 秒 | 约 36 小时(约 1.5 天) |
因此预算大致为 约 1.5–2 天的 GPU 不间断运行时间。加上首次迭代时 torch.compile 预热约 30 分钟,以及总共 32 次评估(每 250 次迭代一次 × 约 3 秒/次)约 30 分钟。
期望的最终验证损失: ~2.92–3.00(优于 124M 的 ~3.0–3.1,略低于 350M 的 ~2.85–2.95)。
启动正式运行
python3 train.py config/train_gpt2_200m.py
如果需要,我还可以:(a) 将输出分流到日志文件,(b) 接入 wandb,或 (c) 现在就在后台启动,以便你监控。