【大模型】- 预训练 Mini-GPT
预训练 Mini-GPT
从头构建并训练一个小语言模型
类型: 学习 | 语言: Python | 🏷 前置:《数据管道》(本系列第 3 篇)
学习目标
- 实现一个小型 GPT 架构用于预训练
- 理解下一个 token 预测的训练目标
- 设置训练循环并监控损失
- 生成文本以评估训练进度
- 保存和加载模型检查点
预训练概述
预训练是语言模型学习的主要阶段。模型在大规模文本上训练,以预测下一个 token。这使得模型学习语法、语义、世界知识和推理模式。
模型架构
我们将构建一个小型 GPT 风格的模型:
1 | Token Embeddings + Position Embeddings → |
配置
1 | config = { |
实现
注意力机制
1 | import torch |
Feed-Forward 网络
1 | class FeedForward(nn.Module): |
Transformer 块
1 | class Block(nn.Module): |
完整模型
1 | class GPT(nn.Module): |
训练循环
1 | model = GPT(config) |
文本生成
1 |
|
保存和加载
1 | # 保存 |
训练监控
监控以下指标:
- 训练损失:应该稳步下降
- 验证损失:检查过拟合(如果开始上升)
- 生成质量:定性检查
- 学习率:可以衰减以稳定训练
下一步
下一课将扩展到分布式训练,以处理更大的模型和数据集。
📚 本文改编自 AI Engineering from Scratch(MIT License · 作者 Rohit Ghumare),中文内容来自官方中文镜像。原课程共 503 课 · 20 阶段 · 免费开源,教程网站见 aiengineeringfromscratch.com。
📝 自我检查(课程配套测验)
Q1(学前) GPT 预训练使用什么训练目标?
A. 掩码语言建模(预测被掩码的 token)
B. 下一 token 预测:给定先前 token,预测下一个
C. 句子分类
D. 图文对齐
答案: B 解析: GPT 是因果(自回归)语言模型,用下一 token 预测训练。给定 [t1, t2, …, tn],学习预测 tn+1。损失是预测与真实下一 token 的交叉熵。
Q2(学前) GPT-2 Small(124M)有多少 transformer 层、注意力头和嵌入维度?
A. 6 层、6 头、512 维
B. 12 层、12 头、768 维
C. 24 层、16 头、1024 维
D. 48 层、25 头、1600 维
答案: B 解析: GPT-2 Small 有 12 层 transformer、每层 12 个注意力头、768 维嵌入。该架构约 1.24 亿参数,可在单 GPU 上几小时完成训练。
Q3(学后) GPT 中因果注意力掩码的作用是什么?
A. 防止关注 padding token
B. 防止每个 token 关注未来 token,确保预测时只能使用过去上下文
C. 掩蔽低置信注意力分数
D. 减少训练内存
答案: B 解析: 因果掩码是三角矩阵,在 softmax 前将未来位置设为负无穷。位置 5 的 token 可关注 1–5 但不能关注 6+。确保模型从左到右生成 token。
Q4(学后) 文本生成中「温度」控制什么?
A. 生成速度
B. token 选择的随机性:温度越低输出越确定,越高越多样
C. 生成 token 数量
D. 模型置信阈值
答案: B 解析: 温度在 softmax 前除以 logits。温度=0.1 使分布非常尖锐(近乎确定)。温度=1.0 是训练分布。温度>1.0 使其平坦,增加随机性。
Q5(学后) 为什么预训练比微调需要更多算力?
A. 预训练使用更大 batch
B. 预训练从零处理数万亿 token 学习通用语言模式,微调在已有能力模型上用数千样本调整
C. 预训练用不同架构
D. 微调不用梯度
答案: B 解析: 预训练从随机权重在数万亿 token 上构建全部语言知识。微调从这些已学权重出发,在更小数据集(数千到数百万样本)上调整。
- 标题: 【大模型】- 预训练 Mini-GPT
- 作者: 宋
- 创建于 : 2026-08-19 09:04:00
- 更新于 : 2026-08-21 16:20:12
- 链接: https://sxl-space.tk/2026/08/19/010_LLM/010_LLM-04-PreTrainingMiniGPT/
- 版权声明: 版权所有 © 宋,禁止转载。