跳转到内容

04 Transformer Block:GPT 的基本积木

  • 理解一个 GPT block 的组成。
  • 知道残差连接和 LayerNorm 的作用。
  • 会用 JS 跑一次简化 block forward。

Transformer Block 像一条加工线:先让 token 交换上下文信息,再让每个 token 独立做非线性变换。残差连接负责保留原信息,LayerNorm 负责让数值更稳定。

一个简化 decoder block:

x
↓ causal self-attention
x + attention(x)
↓ LayerNorm
↓ FFN
x + ffn(x)
↓ LayerNorm

真实 GPT 还会有多头拆分、投影矩阵、dropout 和更复杂的归一化位置。

build-nanogptclass GPT(nn.Module) 开始,把 embedding、block、lm head 拼起来。llm.c 则展示这些模块落到底层数组和循环时是什么样。

源码:labs/04-transformer-block/index.mjs

这个实验把一层 decoder block 拆成 attention、残差、LayerNorm 和 FFN 的顺序执行。

运行:

Terminal window
npm run lab:04

输出是每个 token 经过一层 block 后的新向量。重点看代码顺序,而不是数值本身。

  • FFN 不是处理整个句子的网络,它对每个位置单独应用。
  • 残差不是可选装饰,它对深层网络稳定训练很关键。
  • LayerNorm 不改变序列长度,只改变每个向量的数值分布。