GPT / FORWARD / GENERATE
GPT / TRAINING / INFERENCE
从 ID 到 logits:把整个神经网络展开
D = 16 · 两层 Block · 两个头 · 省略批量维;圆点仅展示部分维度或候选。
输入:整数先查表,再逐维相加
Token ID 序列
[17250, 220, …]
位置编号
[0, 1, …, T−1]
E[id] : T × 16
E:50,257 × 16
P[position] : T × 16
P:16 × 16
+
Dropout
训练 0.1 / 推理关闭
X₀ : T × 16
进入第 1 个 Block
BLOCK 1 · 两个注意力头 + 逐位置 MLP
第 1 层参数;下方展开其计算细节
保留 X
保留 R
LN1
Q / K / V : T × 16
头 1 · 8 维
A_used × V
头 2 · 8 维
A_used × V
拼接 → W_O → Dropout
+
R
LN2
MLP · 各位置用同一套参数
16
64
16
Linear → GELU → Linear → Dropout
+
X₁
T × 16 → T × 16;注意力混合位置,MLP 混合特征。
BLOCK 2 · 两个注意力头 + 逐位置 MLP
结构相同,参数独立;数值只展示已保存的边界张量
保留 X
保留 R
LN1
Q / K / V : T × 16
头 1 · 8 维
A_used × V
头 2 · 8 维
A_used × V
拼接 → W_O → Dropout
+
R
LN2
MLP · 各位置用同一套参数
16
64
16
Linear → GELU → Linear → Dropout
+
X₂
T × 16 → T × 16;注意力混合位置,MLP 混合特征。
X₂ : T × 16
最终归一化与全词表投影
LN_f
H_final : T × 16
训练取全部行;生成先取末行
16
50,257
lm_head = Eᵀ
Z = H_used Eᵀ
训练 T×50,257 / 生成 1×50,257
输入查行与输出打分共用 E;所有词条都参与打分。
训练 · 使用所有监督位置
生成 · 使用最后一个位置
标签 y + 全词表分数 → 平均交叉熵
L = mean(−log p[target])
最后一行 → 温度 / top-k → softmax
p_next : 50,257
沿前向计算图反传,累积参数梯度
g = ∂L / ∂θ
采样一个 ID → 原样追加到上下文
UTF-8 字节完整时才显示字符
AdamW: θ, m, v → θ′, m′, v′
清空梯度;用新参数处理下一批
EOS / 数量上限:停止
否则带着新 ID 回到查表;参数固定
θ 包含 E、P、两层 Block 和 LN_f 的可训练参数。
方格 = 位置关系;MLP 圆点 = 特征维度;输出圆点 = 候选 ID;细线 = 线性连接。
两条旁路分别保留 X 和 R;图中的连线不表示本次记录的权重大小。
请启用 JavaScript 查看交互;完整原理见文章正文。