Zing 论坛

正文

从零构建 Mini-GPT:用 PyTorch 手写 Transformer 理解大语言模型本质

一个仅 158K 参数的极简 GPT 实现,完全从零用 PyTorch 构建,通过 Tiny Shakespeare 数据集训练,包含完整的多头注意力、位置编码和前馈网络实现,并配有实时注意力热力图可视化工具。

GPTTransformerPyTorch从头实现注意力机制大语言模型深度学习
发布时间 2026/06/13 12:08最近活动 2026/06/13 12:19预计阅读 4 分钟
从零构建 Mini-GPT:用 PyTorch 手写 Transformer 理解大语言模型本质
1

章节 01

导读 / 主楼:从零构建 Mini-GPT:用 PyTorch 手写 Transformer 理解大语言模型本质

一个仅 158K 参数的极简 GPT 实现,完全从零用 PyTorch 构建,通过 Tiny Shakespeare 数据集训练,包含完整的多头注意力、位置编码和前馈网络实现,并配有实时注意力热力图可视化工具。

3

章节 03

引言:为什么要从头构建 GPT?

在 ChatGPT、Claude 等大语言模型席卷全球的今天,大多数人只是这些黑盒系统的使用者。但真正的理解来自于亲手构建。Mini-GPT 项目展示了一个仅 158K 参数的极简 GPT 实现——它足够小,可以在个人电脑上训练;又足够完整,包含了 Transformer 架构的所有核心组件。

这个项目使用 Tiny Shakespeare 数据集(约 110 万字符)进行训练,目标是让学习者真正理解注意力机制、位置编码、残差连接等关键概念的数学本质,而非仅仅调用 PyTorch 的 nn.Transformer API。


4

章节 04

项目架构概览

Mini-GPT 的架构遵循标准的 Transformer Decoder-only 设计,但进行了极度精简:

输入文本
 │
 ▼
Token Embedding (词表=65, d_model=64)
 +
位置编码 (正弦编码, max_len=128)
 │
 ▼
┌─────────────────────────────────┐
│ Transformer Block × 3           │
│ ┌──────────────────────────┐    │
│ │ 多头注意力机制           │    │
│ │ (8 头, d_k=8 每头)       │    │
│ └──────────┬───────────────┘    │
│            │ + 残差连接          │
│ Layer Norm │                    │
│            │                   │
│ ┌──────────▼───────────────┐    │
│ │ 前馈神经网络             │    │
│ │ Linear(64→256)→GELU     │    │
│ │ Linear(256→64)           │    │
│ └──────────┬───────────────┘    │
│            │ + 残差连接          │
│ Layer Norm │                    │
└────────────┼───────────────────┘
              │
              ▼
     线性输出头
     (d_model=64 → 词表=65)
              │
              ▼
       下一字符预测

5

章节 05

1. 模型超参数设计

参数 数值 说明
d_model 64 嵌入/隐藏层维度
num_heads 8 注意力头数,每头 d_k=8
num_layers 3 Transformer 块堆叠数
d_ff 256 FFN 中间层维度(标准 4× 扩展)
max_len 128 上下文窗口 / 因果掩码长度
vocab_size 65 Tiny Shakespeare 中的唯一字符数
总参数量 ~158K 故意设计得很小——可解释性强
6

章节 06

2. 缩放点积注意力机制

项目从零实现了 Scaled Dot-Product Attention,核心洞察在于:除以 √d_k 可以防止点积值过大导致 softmax 饱和到接近零梯度区域。这个看似简单的缩放因子是注意力机制稳定训练的关键。

7

章节 07

3. 正弦位置编码

注意力机制本身对输入顺序是置换不变的。为了注入位置信息而不增加可学习参数,Mini-GPT 采用了正弦位置编码。不同频率的正弦波为模型提供了相对位置的数学表达。

8

章节 08

4. 残差连接与层归一化

残差连接让梯度能够干净地绕过各层,避免梯度消失;层归一化则在每个 Transformer 块前后重新中心化激活值,确保 3 个堆叠块的训练稳定性。