首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >大模型不是黑箱:拆开模型看里面有什么

大模型不是黑箱:拆开模型看里面有什么

作者头像
heidsoft
发布2026-07-02 11:01:48
发布2026-07-02 11:01:48
340
举报

先给模型建个档案:以 GPT-2 为例

把一个模型摊开来看,它的基本规格是这样的:

属性

含义

层数(num_layers)

12

有多少个 Transformer block

隐藏维度(hidden_size)

768

每个 token 的向量表示有多长

注意力头数(num_heads)

12

Attention 分成几个头并行计算

词表大小(vocab_size)

50257

模型认识多少个 token

上下文长度(context_length)

1024

一次能处理多长的文本

参数量

约 1.24 亿

模型总共多大

这不是随意定的数字——每个参数都有明确的工程含义。我们一个个拆开来看。


hidden_size 是什么

hidden_size 是每个 token 在模型内部的"指纹"长度。

当模型读到"你好"这两个字时,它会先查词表,得到两个 token ID。然后 Embedding 层把每个 ID 转换成一个 768 维的向量——这就是 token 在模型内部的"表示"。

768 维是什么概念?

可以理解为一个 768 维的坐标系。每个词在这个空间里有一个位置,意思相近的词在空间中也相近。这就是为什么 LLM 能做类比推理("国王-男人+女人≈女王")——这些关系都编码在向量空间的几何关系里。

为什么是 768 而不是 1000?

这也是工程折中:

  • hidden_size 越大,向量空间表达能力越强,能编码越细腻的语义关系
  • 但参数量随 hidden_size 的平方增长:翻倍 hidden_size,参数量变成 4 倍
  • 同时计算量(FLOPs)和显存占用也大幅增加

所以模型设计是在表达能力计算成本之间做权衡。GPT-2 用 768,GPT-3 用 12288——不是因为 768 不够,而是算力约束不一样。


参数都分布在哪儿

一个标准的 Transformer 层,参数主要分布在四个地方:

1. Self-Attention 的 Q/K/V 投影

每个 token 有一个输入向量 x(维度 = hidden_size = 768)。Attention 要把它变成三份:

代码语言:javascript
复制

Q = x × Wq   (形状:[768, 768])
K = x × Wk   (形状:[768, 768])
V = x × Wv   (形状:[768, 768])

Wq、Wk、Wv 是三个独立的权重矩阵,各有 768 × 768 = 589,824 个参数。

然后还有一个 Wo 矩阵(形状:[768, 768]),把多个 Attention 头的输出拼接后投影回来。

四个矩阵合计:4 × 768² = 2,359,296 个参数

2. Feed-Forward Network(FFN)

Attention 之后还有一个两层的全连接网络:

代码语言:javascript
复制

FFN(x) = gelu(x × W1) × W2

其中 W1 的形状是 [768, 3072],W2 的形状是 [3072, 768]。

为什么中间维度是 3072 = 768 × 4?这是 Transformer 的标准配置,FFN 的中间层维度通常是 hidden_size 的 4 倍。

FFN 合计:(768 × 3072) + (3072 × 768) = 4,718,592 个参数

这是整个 Transformer 层里最重的一部分,占了大约 66% 的参数。

3. Layer Norm

每个 Transformer 层里有两次 Layer Norm:

代码语言:javascript
复制

LayerNorm(x) = γ × (x - μ) / σ + β

其中 γ 和 β 各有一个可学习的缩放和偏移向量,每个向量的长度是 768。

Layer Norm 合计:2 × 2 × 768 = 3,072 个参数

4. 残差连接

残差连接本身没有参数,但它让梯度能够直接回传到浅层,是训练稳定性的关键。


把以上全部加起来

一层 Transformer 的参数量:

代码语言:javascript
复制

Attention(Wq/Wk/Wv/Wo):  2,359,296
FFN(W1/W2):              4,718,592
Layer Norm:                     3,072
总计:                         ~7,080,960

GPT-2 有 12 层,所以单是 Transformer 层就有:

代码语言:javascript
复制

12 × 7,080,960 ≈ 84,971,520

再加上输入 Embedding 层(约 50,257 × 768 ≈ 38,597,376)和输出层(约 38,597,376),总计约 1.24 亿参数

这就是为什么 GPT-2 被称为 "1.24B model"(1.24 Billion = 1.24 亿)。


一层 Transformer 的完整旅行

了解了参数分布,我们来看数据流过一层 Transformer 的时候,发生了什么:

代码语言:javascript
复制

第 N 层输入向量(形状:[batch, seq_len, 768])
    ↓
① Layer Norm → 标准化,稳定数值分布
    ↓
② Multi-Head Self-Attention
    ├─ 把输入复制三份,分别 × Wq, Wk, Wv 得到 Q, K, V
    ├─ Q × Kᵀ / √d → 相关度分数(d=768)
    ├─ softmax → 归一化成概率分布
    └─ 概率分布 × V → 加权求和,得到融合上下文的输出
    ↓
③ 残差连接:output = input + attention_output
    ↓
④ Layer Norm → 再次标准化
    ↓
⑤ FFN:gelu(W2·(gelu(W1·x)))
    ↓
⑥ 残差连接:output = input + ffn_output
第 N 层输出向量(形状:[batch, seq_len, 768])

重复 12 次(GPT-2),每经过一层,向量表示就变得更抽象。


层数与抽象层次:层层递进的语义

研究表明,Transformer 的每一层做的事情有规律可循:

层范围

主要任务

具体表现

第 1-3 层

词汇级

识别词形、词频、位置编码

第 4-6 层

句法级

主谓关系、动宾关系、依存分析

第 7-9 层

语义级

实体识别、语义角色、常识关系

第 10-12 层

任务级

推理、问答、生成逻辑

这就是为什么可以用 Probing Classifier 在特定层的激活向量上训练分类器,从而"透视"模型在某个层级关注什么信息。


真实模型的规模对比

模型

层数

hidden_size

参数量

需要多少显存

GPT-2

12

768

1.2 亿

~2GB

GPT-3

96

12288

1750 亿

~350GB

LLaMA-2

32

4096

70 亿

~140GB

Claude 3

40+

8192+

数千亿

数千GB

一个粗略的公式:

代码语言:javascript
复制

模型显存 ≈ 参数量 × 2(FP16 存储)

所以 GPT-3(1750 亿参数)在 FP16 下需要约 350GB 显存——这已经超出了单卡的范围,需要多卡并行。


写给工程师的视角

如果你是开发者,理解这些有什么用?

1. 估算推理显存 当你用 transformers 加载模型时,可以先用参数量估算:float16 下,每 10 亿参数约需 2GB 显存。

2. 理解为什么 batch_size 这么小 显存大部分被模型权重占了,剩下的才给激活值和 KV cache 用。所以大模型 natural batch size 都很小。

3. 理解微调策略 全量微调 GPT-3 需要 350GB+ 显存,所以有了 LoRA、QLoRA 等参数高效微调方法——只更新一小部分参数,而不是整个模型。


总结:三个核心takeaway

  1. hidden_size 是每个 token 的向量维度——决定了模型单个词的表示精度,GPT-2 是 768,GPT-3 是 12288
  2. 参数主要集中在 FFN 层——占了一层的 2/3,是主要的计算和存储瓶颈
  3. 层数代表抽象的深度——从词汇到句法到语义,层层递进,越深越抽象

看完这篇,你应该能回答:Attention 的 Wq/K/V 形状是什么?([768, 768])FFN 为什么是 4 倍 hidden_size?(工程经验值,实验效果最好)残差连接是干什么的?(让梯度直接回传,防止深层训练不稳定)

第 3 篇我们会讲大模型的"涌现能力"——为什么规模突破临界点后会突然出现新能力,以及这背后意味着什么。

系列解读,持续更新。你还想了解哪些模型内部细节?评论区见。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先给模型建个档案:以 GPT-2 为例
  • hidden_size 是什么
  • 参数都分布在哪儿
    • 1. Self-Attention 的 Q/K/V 投影
    • 2. Feed-Forward Network(FFN)
    • 3. Layer Norm
    • 4. 残差连接
  • 把以上全部加起来
  • 一层 Transformer 的完整旅行
  • 层数与抽象层次:层层递进的语义
  • 真实模型的规模对比
  • 写给工程师的视角
  • 总结:三个核心takeaway
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档