模型 · Model 篇
数据是教材,那学生本人呢?模型就是那个等着被训练的"大脑"——它长什么样、有多少神经元、初始状态如何、以什么节奏学习,全部要在动手训练之前定下来。这些选择合起来,就是一个模型的"先天条件"。
假设你是育儿专家,一次要培养一个天才少年,摆在你面前的选择有:
脑容量——8B 参数?70B?还是 405B?大脑越大越聪明,但也越贵、越挑食;
大脑结构——是标准的 Transformer 骨架,还是 MoE 稀疏专家,还是 Mamba 状态空间?
初始状态——出生时神经连接是随机杂乱,还是遵循某种"黄金比例"?
学习节奏——每天学多少小时?学多快?多久换一批新题?
这些决定合起来,就叫"选架构 + 调超参"。
一、参数量:模型的"脑容量"
参数是神经网络里的可训练权重——每一根神经元之间的连接强度。参数量越大,理论上模型能表达的函数越复杂、能记住的知识越多。看看这几年的军备竞赛:
| 模型 | 参数量 | 发布时间 | 备注 |
|---|---|---|---|
| GPT-2 | 15 亿 (1.5B) | 2019 | 当时惊为天人 |
| GPT-3 | 1750 亿 (175B) | 2020 | 第一次涌现 |
| GPT-4 | 据传 1.8T (MoE) | 2023 | 官方从未公布 |
| Llama 3 | 8B / 70B / 405B | 2024 | 开源天花板 |
| DeepSeek-V3 | 671B (MoE, 37B 激活) | 2024 | 中国开源标杆 |
| Claude / Gemini | 未公布 | - | 推测数百 B 到 T 级 |
参数量决定了模型的"知识容量上限"。但请注意:参数量不是越大越好,而是要跟数据量匹配——DeepMind 提出的 Chinchilla 缩放定律指出,最优的参数/数据比例大约是 1 : 20:8B 参数最好搭配 160B token 训练;175B 参数最好用 3.5T token;否则要么"营养过剩"要么"营养不良"。
二、架构选型:Transformer 一统江湖
模型的"骨架"叫架构(architecture)。从 2017 年 Transformer 论文之后,几乎所有主流大模型都是 Transformer 变体:
- Decoder-OnlyGPT 系列、Llama、Claude、Gemini——最主流,专攻生成任务。
- Encoder-OnlyBERT 系列——擅长理解和分类,但已经被取代得差不多。
- Encoder-DecoderT5、Flan-T5——机器翻译、摘要任务的经典结构。
- MoE 稀疏专家Mixtral、DeepSeek-V3、GPT-4——总参数超大,但每次只激活一小部分,性价比高。
- Mamba / SSM2024 新势力——试图挑战 Transformer 的长序列瓶颈,但尚未成主流。
为什么架构选型这么重要?因为不同架构对同样的数据,学到的东西完全不同。就像让同一个孩子分别用"死记硬背"和"理解推导"两种方法学数学,最终的能力差别巨大。Transformer 之所以赢,就是因为它的"注意力机制"特别适合语言这种长距离依赖的数据——这个我们下一章会详细讲。
如果说训练数据是砖头,那模型架构就是建筑蓝图。同样一堆砖,你按四合院图纸盖,就是四合院;按摩天大楼图纸盖,就是 100 层高楼。Transformer 就是当代 AI 世界里"最靠谱的摩天大楼蓝图"——扎实、可扩展、几乎所有名楼都照它盖。
三、权重初始化:出生时的"起点"
模型架构定了,参数量定了——但每一个参数的初始值该设成多少?全设成 0 行不行?答案是:绝对不行。如果所有参数都是 0,那所有神经元的输出都相同,反向传播的梯度也都相同——网络永远学不出任何有意义的东西,这叫"对称性问题"。
那随机初始化行不行?可以,但也有讲究:如果初始值太大,激活函数会饱和(sigmoid、tanh),梯度消失;如果太小,信号一层层传下去就淹没了。所以业界发明了几种精心设计的初始化方法:
- Xavier / Glorot 初始化适合 tanh / sigmoid 激活函数,让每层输入输出的方差保持一致。
- He / Kaiming 初始化适合 ReLU 系列,是现代深度网络的默认选择。
- 正态 / 均匀分布两种采样方式,配合上面的方差控制。
本质上,好的初始化就是给模型一个"不偏不倚的起点"——像跑步比赛前所有选手站在同一条起跑线,谁也不比谁多占一步。
四、超参数:训练前的"作息表"
还有一堆参数不属于模型本身,但决定训练的过程,叫超参数(hyperparameters):
| 超参数 | 含义 | 典型值 |
|---|---|---|
| 学习率 Learning Rate | 每步权重更新的步长 | 1e-5 ~ 1e-3 |
| 批大小 Batch Size | 每次训练用多少条样本 | 32 ~ 4096(大模型上百万) |
| 训练轮数 Epochs | 整个数据集过几遍 | 大模型通常只过 1-3 遍 |
| 层数 Layers | Transformer 的深度 | 12 (GPT-2) ~ 126 (Llama 405B) |
| 隐藏维度 Hidden Size | 每层的"宽度" | 768 ~ 16384 |
| 注意力头数 Heads | 并行的注意力子空间数 | 12 ~ 128 |
| Dropout | 训练时随机丢弃的比例 | 0 ~ 0.1 |
| Warmup Steps | 学习率从 0 慢慢升起的步数 | 数百到数千 |
超参数为什么重要?举一个真实故事:同一个模型架构,同一份数据,学习率从 3e-4 改到 3e-5,最终效果可能相差 5 个 MMLU 百分点。这就是为什么大模型团队要花几百万美元跑"超参搜索"——每一次实验都是烧钱,但值得。
五、层数 vs 宽度:深还是宽
一个有趣的问题:给定同样的参数预算(比如 10B),是把网络堆得更深(100 层每层 1000 维),还是更宽(20 层每层 5000 维)?经验规律是:先增宽、再增深——太深会梯度消失、训练不稳定;太宽会计算不高效。Llama 3 8B 是 32 层 × 4096 维;70B 是 80 层 × 8192 维——你能看出比例上的讲究。
六、"配置一个模型"的完整清单
把上面这些放在一起,训练一个大模型前,工程师要在一张 yaml 配置里定义大概这些东西:
- 架构选择Decoder-only / MoE / 是否 RoPE / 是否 GQA
- 规模三要素层数、隐藏维度、注意力头数
- 初始化方案He / Xavier / 自定义
- 优化器AdamW / Adafactor(下一篇讲)
- 学习率调度Warmup + Cosine Decay
- 分布式策略数据并行 / Tensor 并行 / Pipeline 并行
- 精度FP32 / BF16 / FP8——影响速度和显存
这张配置表,就是这个"待培养的天才少年"的完整先天档案。
模型是训练开始之前,就要决定的一切"先天"——多少参数、什么架构、如何初始化、怎么调节奏。这些配置里的每一个数字,都可能让最终效果相差几个百分点。好的模型 = 合适的架构 × 匹配的参数量 × 合理的初始化 × 精调的超参数。做完这些,你才拥有了一个"值得砸算力去训练"的胚子。