← 项目
Transformer 算力与显存计算器
训练一个 Transformer 语言模型,只需要回答四个问题:参数有多少、要算多少、显存够不够、要训多久。每个问题一条公式、一张图——选个模型、拖一拖滑块就能看到它们怎么变。
图架构:一个 token 走完全程
每个张量和权重画成一个盒子,形状跟着上面的模型、滑块和第 3 节的 batch 一起变。
滚轮缩放 · 拖拽平移 · 双指捏合 · 双击复位
- 盒子边长按 √元素数,比例是真的但被开方压缩过;超上限的那一维画成撕裂边 ⌇。停在盒子上看精确元素数和字节数。
- 紫 残差流与捷径 橙 含 T² 斜纹 = 权重,实心 = 前向留给反向用的张量。
- 多头 = 往后摞起来的切片,一片一个头(超过 6 个只画 6 片);拼头就是把 h 片沿特征维接成一条。GQA 下 K、V 明显短一截。
- 捷径取的是进 RMSNorm 之前的原始 x(pre-norm);橙色外框加回边 = 这两个子层重复 L 次。
1参数都在哪
每层大约 12·d² 个参数——注意力 4·d²,前馈 8·d²——一共 L 层;再加上进出词表的 2·V·d。
2要算多少
一个参数遇到一个 token:前向 2 次运算(一乘一加),训练(前向 + 反向)6 次。唯一的例外是注意力的打分 Q·Kᵀ 和加权求和 ·V——它们没有参数,随 T² 增长。
3显存够不够
每个参数固定占 16 字节:权重、梯度、Adam 的 m 和 v 各 4 字节——这是地板,和 batch、T 都无关。在它上面,激活值随 batch × T 线性增长,注意力的打分矩阵随 T² 增长。
每张卡的 batch
4要训多久
时间 = 总算力 ÷(卡数 × 单卡峰值 × MFU)。MFU 是真正用上的算力占峰值的比例,大规模训练通常在 30–50%。