跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

主流大模型架构全景:GPT/LLaMA/DeepSeek/Qwen 深度对比

GPT、LLaMA、DeepSeek、Qwen 四大主流大模型架构深度解析,涵盖从 GPT-1 到 V3 的演进脉络、MoE 与 MLA 创新机制、RoPE 位置编码原理及工程实践细节。重点对比各系列在参数分布、注意力机制、训练策略上的差异,并提供高频面试题解答与选型指南。

CodeArtist发布于 2026/4/8更新于 2026/5/2112 浏览

主流大模型架构全景 | GPT/LLaMA/DeepSeek/Qwen 深度对比

深入理解主流模型的底层设计逻辑,不仅知其然,更知其所以然。看完本章,你能画出 GPT/LLaMA/DeepSeek 的架构图,说清每个设计选择背后的权衡。

模块一:GPT 系列架构演进 | 从 GPT-1 到 GPT-4

1.1 核心概念

什么是 GPT?

GPT(Generative Pre-trained Transformer)是 OpenAI 推出的系列模型,核心思想是在大量文本上做自回归预训练,然后通过 prompt 引导做各种任务。

GPT-1(2018):首次证明'预训练 + 微调'在 NLP 上的威力。12 层 Transformer Decoder,117M 参数。用 BookCorpus 做 CLM 预训练。

GPT-2(2019):证明'大模型 + 大数据+zero-shot'可行。1.5B 参数。关键洞察:不需要微调,prompt 就能做任务。

GPT-3(2020):175B 参数,ICL 的标志性模型。96 层、12288 维度、96 头。训练数据 300B tokens。核心发现:few-shot 就能做几乎任何任务。

GPT-4(2023):多模态,传闻 MoE 架构(8 个专家,每次激活 2 个,总参数约 1.8T)。

代际参数量层数隐藏维度头数上下文核心创新
GPT-1117M1276812512预训练 + 微调
GPT-21.5B481600251024Zero-Shot, Pre-Norm
GPT-3175B9612288962048ICL, Few-Shot
GPT-4~1.8T????128K多模态,MoE
1.2 原理推导

GPT 的预训练目标:Causal Language Modeling (CLM)

$$\mathcal{L} = -\sum_{t=1}^{T} \log P(x_t | x_{<t}; \theta)$$

每个 token 基于前面所有 token 预测下一个,所有位置都参与 loss 计算。

ICL(In-Context Learning)为什么有效?

  • GPT-3 论文的解释:大模型在预训练时隐式学会了'从上下文示例中学习'
  • 贝叶斯推理解释(Xie et al., 2022):ICL 是在做隐式贝叶斯推理
  • 梯度下降视角(Akyürek et al., 2023):Transformer 的前向传播等价于在隐式执行梯度下降
  • 直觉理解:预训练数据中天然包含'示例→回答'模式

Pre-Norm vs Post-Norm:为什么 GPT-2 切换到 Pre-Norm?

# Post-Norm: x → Attn → Add → LN → FFN → Add → LN
# Pre-Norm: x → LN → Attn → Add → LN → FFN → Add

数学分析:

  • Post-Norm:$x_{l+1} = \text{LN}(x_l + F(x_l))$,梯度经过 LN 后被归一化,深层梯度消失
  • Pre-Norm:$x_{l+1} = x_l + F(\text{LN}(x_l))$,残差直连保证梯度直通,训练更稳定
  • 代价:Pre-Norm 的最终表示可能'塌缩'到残差通道,需要在最后加一层 LN
1.3 代码实现
# GPT-2 风格的 Transformer Block
class GPT2Block(nn.Module):
    def __init__(self, d_model, n_heads, d_ff, dropout=0.1):
        super().__init__()
        self.ln1 = nn.LayerNorm(d_model) # Pre-Norm
        self.attn = MultiHeadAttention(d_model, n_heads, dropout)
        self.ln2 = nn.LayerNorm(d_model)
        self.ffn = nn.Sequential(
            nn.Linear(d_model, d_ff),
            nn.GELU(),
            nn.Linear(d_ff, d_model),
            nn.Dropout(dropout)
        )

    def forward(self, x, mask=None):
        x = x + self.attn(self.ln1(x), mask=mask)
        x = x + self.ffn(self.ln2(x))
        return x
1.4 工程实践

GPT 系列的关键工程决策

  1. GPT-1 到 GPT-2:从 Post-Norm 换到 Pre-Norm
  2. GPT-3 训练:Model Parallelism+Data Parallelism,约 1200 万美元
  3. GPT-4 训练:传闻约 25000 个 A100 训练约 90 天
1.5 面试考点精讲

Q1:GPT-1/2/3/4 的核心区别?

参考答案:GPT-1 证明预训练有效,GPT-2 证明 zero-shot 可行,GPT-3 证明 ICL 有效,GPT-4 加入多模态和 MoE。

展开:最重要的范式转变是 GPT-2 到 GPT-3:从'预训练 + 微调'变成'预训练+prompt'。一个大模型通过不同 prompt 就能做所有任务,催生了整个 prompt engineering 领域。

Q2:GPT-3 的 175B 参数是怎么分布的?

参考答案:96 层,每层约 1.8B 参数。MHA($4d^2$) + FFN($8d^2$) + Embedding。

Q3:GPT-4 为什么可能用 MoE?

参考答案:MoE 让总参数量大(知识容量大)但推理时只激活一部分(保持速度)。多个信源证实 8 专家 Top-2 架构。

Q4:ICL 的理论解释有哪些?Transformer 如何隐式实现梯度下降?

参考答案:三种主流解释:(1) 贝叶斯推理——模型在隐式推断任务分布;(2) 梯度下降——Akyürek 等人证明线性 Attention 层的前向传播数学上等价于一步梯度下降,示例相当于'训练数据';(3) 任务识别——模型在预训练时见过类似任务模式,ICL 本质是模式匹配。

展开:梯度下降视角最有启发性。对于线性回归任务,单层线性 Attention 的前向传播可以写成 $\hat{y} = W_{OV} \sum_i \text{softmax}(q \cdot k_i) v_i$,这与在示例上做一步 GD 后的预测数学形式一致。

Q5:GPT-3 的训练数据质量控制做了什么?

参考答案:(1) 用高质量参考语料训练二分类器,对 Common Crawl 做质量过滤;(2) 基于文档间 n-gram 重叠做模糊去重;(3) 用 LSH 做近似去重;(4) 对高质量来源(Wikipedia、书籍)过采样 2-3 倍。最终从 45TB 过滤到 570GB。


模块二:LLaMA 系列 | 开源 LLM 的标杆

2.1 核心概念

LLaMA-1(2023.02):Meta 的开源 LLM,证明'高质量数据 + 充分训练'比盲目增大模型更有效。

关键设计选择:

  • RMSNorm + Pre-Norm
  • SwiGLU 激活
  • RoPE 位置编码
  • 无 Bias

LLaMA 架构总览

Input tokens ↓ [Embedding (无位置编码)] ↓ ┌──────────────────────────────┐ ×N 层 │ RMSNorm → GQA + RoPE → Add │ │ RMSNorm → SwiGLU FFN → Add │ └──────────────────────────────┘ ↓ [RMSNorm → Linear → Softmax] ↓ Output logits 

LLaMA-2(2023.07):2T tokens 训练、上下文 2K→4K、70B 用 GQA、推出 Chat 版

LLaMA-3(2024.04):15T+ tokens、词表 128K、上下文 128K、405B 版本

参数LLaMA-7BLLaMA-13BLLaMA-70BLLaMA-405B
层数324080126
维度40965120819216384
头数324064128
KV 头数324088
FFN 维度11008138242867253248
2.2 原理推导

RMSNorm vs LayerNorm

LayerNorm:$\text{LN}(x) = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta$(需要计算均值和方差)

RMSNorm:$\text{RMS}(x) = \frac{x}{\sqrt{\frac{1}{d}\sum_{i=1}^{d}x_i^2 + \epsilon}} \cdot \gamma$(只计算 RMS,省去均值和偏移)

优势:计算量减少约 10-15%,效果几乎无差别。去掉了 re-centering(减均值),只保留 re-scaling。

SwiGLU 激活函数

$\text{SwiGLU}(x) = \text{Swish}(xW_1) \otimes (xW_2)$

其中 $\text{Swish}(x) = x \cdot \sigma(\beta x)$,$\otimes$ 是逐元素乘法。

对比普通 FFN(2 个矩阵)SwiGLU 用 3 个矩阵($W_1, W_2, W_3$),但实验表明在同等参数量下效果更好。PaLM、LLaMA、Qwen 都采用。

MHA / MQA / GQA 对比

方案Q 头数KV 头数KV-Cache 大小精度
MHAhh$2 \times h \times d_k \times L$最高
MQAh1$2 \times d_k \times L$有损失
GQA-ghg$2 \times g \times d_k \times L$接近 MHA

GQA 是 MHA 和 MQA 的折中:将 h 个 Query 头分成 g 组,每组共享一对 KV 头。LLaMA-70B 用 h=64, g=8。

MHA: Q1→KV1 Q2→KV2 Q3→KV3 Q4→KV4 (每个 Q 有自己的 KV)
MQA: Q1→KV1 Q2→KV1 Q3→KV1 Q4→KV1 (所有 Q 共享 1 个 KV)
GQA: Q1→KV1 Q2→KV1 Q3→KV2 Q4→KV2 (分组共享 KV)

RoPE(旋转位置编码)核心思想

将位置信息编码为旋转矩阵,使得 $q_m^T k_n$ 只依赖于相对位置 $m-n$:

$f(q, m) = q \cdot e^{im\theta}$

在实数域展开为 2D 旋转:

$R_\theta(m) = \begin{pmatrix} \cos m\theta & -\sin m\theta \ \sin m\theta & \cos m\theta \end{pmatrix}$

对每一对相邻维度应用不同频率的旋转:$\theta_i = 10000^{-2i/d}$

优势:天然编码相对位置、可以通过 NTK 扩展到更长序列、对长距离衰减有良好特性。

参数量计算(7B 为例)

  • Embedding: 32000 x 4096 = 131M
  • 每层 MHA: 4 x 4096^2 = 67M
  • 每层 FFN(SwiGLU): 3 x 4096 x 11008 = 135M
  • 32 层:(67M+135M) x 32 = 6464M
  • 总计:~6.7B
2.3 代码实现
class LLaMABlock(nn.Module):
    def __init__(self, d_model, n_heads, n_kv_heads, d_ff):
        super().__init__()
        self.norm1 = RMSNorm(d_model)
        self.attn = GroupedQueryAttention(d_model, n_heads, n_kv_heads)
        self.norm2 = RMSNorm(d_model)
        self.ffn = SwiGLU_FFN(d_model, d_ff)

    def forward(self, x, freqs_cis, mask=None):
        h = x + self.attn(self.norm1(x), freqs_cis, mask)
        out = h + self.ffn(self.norm2(h))
        return out
2.4 工程实践

LLaMA 的核心贡献:证明数据质量和训练充分度比模型大小更重要。7B 用 1.4T tokens 训练,效果优于 175B 的 GPT-3。

2.5 面试考点精讲

Q1:LLaMA 相比 GPT-3 做了哪些架构改进?

参考答案:RMSNorm 替代 LayerNorm、SwiGLU 替代 GeLU、RoPE 替代 Learned PE、去掉所有 bias。组合效果显著。

Q2:LLaMA-2 的 Chat 版本怎么训练的?

参考答案:先 SFT(27K 高质量数据),再 RLHF(PPO),迭代 5 轮。迭代是关键——每轮用更好模型收集更好数据。

Q3:LLaMA-3 相比 LLaMA-2 的重大变化?

参考答案:数据从 2T 增到 15T+,词表 32K 增到 128K,上下文 4K 增到 128K。8B 效果接近 LLaMA-2-70B。

Q4:RoPE 是如何编码相对位置信息的?

参考答案:RoPE 对 query 和 key 向量按维度对施加不同频率的旋转矩阵。两个位置的内积 $q_m^T k_n$ 只依赖于 $(m-n)$,天然编码相对位置。频率从低到高覆盖不同尺度的位置信息。

展开:数学上,$\langle f(q,m), f(k,n) \rangle = \text{Re}[\sum_i q_i k_i^* e^{i(m-n)\theta_i}]$。低频维度编码远距离关系,高频维度编码近距离关系。NTK-aware 扩展通过调整 base 频率实现长度外推。

Q5:LLaMA-3 的训练数据策略有什么变化?

参考答案:(1) 数据量从 2T 暴增到 15T+ tokens;(2) 大幅增加代码和数学数据占比;(3) 使用质量分类器和去重 pipeline 更激进过滤;(4) 增加多语言数据覆盖。关键洞察:在 8B 规模上用 15T 数据 over-training,效果接近 70B 模型用 2T 数据。

Q6:为什么 LLaMA 去掉了所有 bias?

参考答案:实验发现去掉 bias 对模型质量影响极小,但能减少参数量和计算量。QKV 投影去掉 bias 后矩阵乘法可以更高效地做张量并行(不需要额外 broadcast bias)。PaLM 也做了同样选择。

2.6 【大厂真题 - 字节/DeepSeek 高频】

真题 1:字节跳动 架构岗——'从 MHA 到 GQA 减少了 KV 头数,那它到底是在解决训练瓶颈还是推理瓶颈?如果把 GQA 用到训练中,会有性能提升吗?'

痛点剖析:考察对计算体系结构(Compute-bound vs Memory-bound)的透彻理解。很多人以为改变网络结构就能全方位加速。

极客解法:核心定性:GQA 纯粹是为了解决推理阶段的显存墙(Memory-bound)问题,对训练阶段(Prefill/训练前向)的速度提升微乎其微。原理解释:在训练阶段,所有的 Token 是并行计算的(一个大矩阵乘法 $Q \times K^T$),此时是计算密集型(Compute-bound)。显存主要被模型权重和中间激活(Activation)占据,KV Cache 根本没存下来,所以 GQA 省 KV 显存的优势在训练时发挥不出来。推理阶段的蜕变:但在推理的 Decoding 阶段(逐字生成),每次只生成一个 Token,但要读取前面所有 Token 的 KV Cache。这时的瓶颈变成了算力都在等显存喂数据(Memory Bandwidth Bound)。GQA 通过几组 Query 共享一个 KV,把需要读取的 KV 总量砍掉了几倍甚至几十倍(比如 LLaMA3 的 8 倍),极大地缓解了带宽压力,让生成阶段的速度直接起飞,并且允许单卡塞进大几倍的 Batch Size。

真题 2:DeepSeek 算法研发——'DeepSeek V3 和 R1 采用了 DeepSeekMoE 架构,它与传统的 Mixtral MoE(Top-2)相比,在路由机制和专家颗粒度上做了什么颠覆性设计?为什么这么做能解决常识知识遗忘问题?'

痛点剖析:考察对 MoE 演进前沿的追踪,以及'专家协同'与'知识分配'的底层逻辑。

极客解法:细粒度专家(Fine-grained Experts):传统 MoE(如 Mixtral 8x7B)是 8 个大专家,选 2 个激活。这导致一个专家被激活时,带入了大量冗余参数。DeepSeekMoE 的理念是**'专家拆碎',比如把大专家拆成了 256 个小专家(也就是单个专家参数量极小),然后每次路由激活 Top-8 个小专家。相同的激活参数量下,这种细粒度允许模型进行更精细的知识组合(组合爆炸优势)。共享专家路由(Shared Expert Isolation)——解决遗忘的核心:痛点:传统 MoE 中,所有的标点符号、语法连接词('的'、'is')等通用长尾知识**,会被迫通过路由分配到某个专家中,这导致该专家被通用知识塞满,无法精专某项技能(Knowledge Collapse)。极客破局:DeepSeekMoE 硬性划出了一块非路由的共享专家(Shared Experts)(比如 1 个或几个),这部分专家对于每个 Token 是**必将激活(Always-on)**的。化学反应:模型很快学会把所有通用知识、上下文基础逻辑全都塞给共享专家,而让剩下的 256 个路由专家彻底'放飞自我',专精于数学、物理、代码等垂直领域。这从根本上隔离了通用知识与领域知识,彻底解决了微调或长文本推理时的常识遗忘(Catastrophic Forgetting)打架问题。


模块三:DeepSeek 系列 | MoE 与创新架构

3.1 核心概念

**DeepSeek-V2(2024.05)**两大创新:

  1. MLA(Multi-Latent Attention):把 KV 压缩成低维 latent 向量,KV-Cache 仅为 MHA 的 5.4%
  2. DeepSeekMoE:160 个细粒度专家 +2 个共享专家,选 6 个

DeepSeek-V3(2024.12):

  • 671B 总参数,37B 激活参数
  • 256 个路由专家 +1 个共享专家,每个 token 路由到 Top-8 个路由专家(加上始终激活的 1 个共享专家,共 9 个参与计算)
  • 辅助损失无关的负载均衡:用动态 bias 替代辅助 loss
  • FP8 混合精度训练
  • 训练成本仅 557 万美元

DeepSeek-R1(2025.01):

  • 纯 RL 训练让模型自发学会推理
  • GRPO(不需要 Critic 模型)
3.2 原理推导

MLA 核心思想与维度分析

标准 MHA 每个 token 缓存:$2 \times n_h \times d_k = 2 \times 128 \times 128 = 32768$ 个数值

MLA 压缩流程:

  1. 压缩:$c_{KV} = W_{DKV} \cdot x$,$c_{KV} \in \mathbb{R}^{d_c}$($d_c = 512 \ll n_h d_k = 16384$)
  2. 推理时只缓存 $c_{KV}$(512 个数值 vs 32768 个,压缩比 5.4%)
  3. 计算时恢复:$K = W_{UK} \cdot c_{KV}$,$V = W_{UV} \cdot c_{KV}$
标准 MHA 缓存:[K_1, K_2, ..., K_128, V_1, V_2, ..., V_128] → 32768 维
MLA 缓存:[c_KV] → 512 维

比 GQA 更灵活——'软压缩'vs'硬共享'。GQA 是固定分组共享 KV,MLA 是学习一个低维投影,信息保留更充分。

辅助损失无关的负载均衡机制(DeepSeek-V3)

传统方法:$\mathcal{L}{total} = \mathcal{L}{LM} + \alpha \cdot \mathcal{L}_{balance}$,$\alpha$太大伤害路由质量,太小负载不均。

V3 方法:为每个专家维护一个动态 bias $b_i$

  • 每步统计各专家负载 $l_i$
  • 负载低于平均 → $b_i$ 增大(吸引更多 token)
  • 负载高于平均 → $b_i$ 减小
  • 路由打分:$s_i' = s_i + b_i$,但 $b_i$ 不参与梯度计算

优势:完全不影响主 loss 的梯度,路由质量不受损。

DeepSeek-R1 训练 Pipeline

Stage 1: 冷启动 SFT → 基础指令跟随能力
↓
Stage 2: 大规模 RL(GRPO)→ 模型自发学会推理(涌现 CoT)
↓
Stage 3: Rejection Sampling → 收集高质量推理数据
↓
Stage 4: SFT + RL → 最终对齐(格式、安全、有用性)
↓
Stage 5: 蒸馏 → R1-Distill 系列(1.5B~70B)

关键发现:Stage 2 中模型自发学会了"aha moment"——在推理过程中自我纠错。

DeepSeekMoE

$y = \sum_{i=1}^{N_s} \text{FFN}i^{(s)}(x) + \sum{j=1}^{K} g_j \cdot \text{FFN}_{r_j}^{(r)}(x)$

共享专家提供通用能力,路由专家提供专业能力。

3.3 代码实现
class MultiLatentAttention(nn.Module):
    def __init__(self, d_model, n_heads, d_compress):
        super().__init__()
        self.d_k = d_model // n_heads
        self.w_dkv = nn.Linear(d_model, d_compress, bias=False)
        self.w_uk = nn.Linear(d_compress, n_heads * self.d_k, bias=False)
        self.w_uv = nn.Linear(d_compress, n_heads * self.d_k, bias=False)
        self.w_q = nn.Linear(d_model, n_heads * self.d_k, bias=False)
        self.w_o = nn.Linear(n_heads * self.d_k, d_model, bias=False)
3.4 工程实践

V3 的训练效率优化:FP8 训练节省约 50% 显存、DualPipe 流水线将 bubble 率从 33% 降到 10%。

3.5 面试考点精讲

Q1:MLA 相比 GQA 的优势?

参考答案:可学习的压缩比硬共享更灵活,压缩率更高(5.4%),精度损失更小。

Q2:DeepSeek-V3 为什么不用辅助损失?

参考答案:辅助损失会伤害路由质量。V3 用动态 bias——负载低的专家自动加正 bias 吸引更多 token,不影响主 loss 梯度。

Q3:DeepSeek-R1 的核心创新?

参考答案:纯 RL 训练(不做 SFT)也能让模型自发学会推理。用 GRPO 替代 PPO,不需要 Critic 模型。

Q4:MLA 与 Linear Attention 有什么关系?

参考答案:两者都试图降低 KV-Cache 的开销。Linear Attention 用核函数近似 softmax 消除序列维度的二次复杂度;MLA 保留标准 softmax Attention,但把 KV 投影到低维空间。MLA 在实践中精度保持更好,因为没有牺牲 Attention 的表达能力。

Q5:DeepSeek-V3 的训练成本为什么只有 557 万美元?

参考答案:三个关键因素:(1)FP8 混合精度训练节省约 50% 显存和计算;(2)DualPipe 流水线将 bubble 率从 33% 降到 10%,GPU 利用率极高;(3)MoE 架构使得 671B 总参数只需 37B 激活参数,等效 Dense 模型的训练 FLOPs 远低于同参数量 Dense 模型。对比 GPT-4 传闻 1 亿美元以上的训练成本,V3 效率提升了约 20 倍。

Q6:DeepSeek-V3 的 FP8 训练具体怎么做?

参考答案:采用 Per-Tensor 量化(而非 Per-Channel),对 GEMM 的输入做 FP8 量化,用 E4M3 格式存前向激活,E5M2 格式存反向梯度。关键 trick 是保留 FP32 的 master weight 做累加,只在矩阵乘法中用 FP8。Loss 几乎无损失,但训练吞吐提升约 40%。


模块四:Qwen 系列 | 阿里的全能选手

4.1 核心概念

Qwen-2.5(2024.09):0.5B 到 72B 全系列,18T tokens 训练,151K 超大词表。

特性Qwen-2.5
注意力GQA
FFNSwiGLU
位置编码RoPE
词表151,643
BiasQKV 有 bias

Qwen-2.5 完整参数表

规格0.5B1.5B7B14B32B72B
层数242828406480
维度89615363584512051208192
Q 头数141228404064
KV 头数224888
FFN 维度4864896018944138242764829568

Qwen-VL 视觉语言模型

  • 视觉编码器:ViT-G/14(约 2B 参数)
  • 连接方式:Cross-Attention Resampler,将视觉 token 压缩到固定数量(256 个)
  • 支持任意分辨率输入,动态切片后分别编码再拼接

Qwen-Coder 代码模型

  • 基于 Qwen-2.5 基座,增加代码数据比例(约 40% 代码数据)
  • 支持 128K 长上下文,适合大型代码仓库分析
  • 在 HumanEval/MBPP 上与 GPT-4 接近
4.2 原理推导

大词表的权衡

  • 编码效率高:同样文本用更少 token→推理更快
  • Embedding 层参数增大:但对 7B+ 模型影响<5%

YARN 位置编码扩展

Qwen 使用 YARN(Yet Another RoPE Extension)扩展上下文长度:

  • 将 RoPE 频率分成三组:高频保持不变、中频做 NTK 插值、低频做线性插值
  • 加上 attention scaling factor 补偿长序列的注意力稀释
  • 效果:4K 训练上下文可以扩展到 32K-128K
4.3 工程实践

Qwen 的特色能力矩阵:Qwen-Math(数学)、Qwen-Coder(代码)、Qwen-VL(视觉)、Qwen-Audio(音频)

Qwen vs 同级别竞品

能力Qwen-72BLLaMA-70BDeepSeek-V2
中文最强一般强
英文强最强强
代码强强强
数学最强一般强
多模态原生支持需 LLaVA不支持
词表大小151K128K100K
4.4 面试考点精讲

Q1:Qwen 为什么选 151K 词表?

参考答案:提高中文编码效率。32K 词表中文每字 2-3 个 token,151K 可能 1 个 token。推理快 40%+。

Q2:Qwen 和 LLaMA 架构区别?

参考答案:基础架构几乎相同,主要差异在词表大小、QKV 是否有 bias、训练数据的语言分布。

Q3:Qwen 的 YARN 位置编码扩展是什么?

参考答案:YARN 将 RoPE 频率分为高、中、低三组分别处理——高频不动、中频 NTK 插值、低频线性插值,加上 attention scaling 因子。相比简单线性插值或 NTK-aware,YARN 在长距离上保持更好的注意力分辨率。

Q4:Qwen-VL 如何处理图文混合输入?

参考答案:图像经 ViT 编码后通过 Resampler 压缩成固定数量的视觉 token(256 个),与文本 token 在同一序列中拼接送入 LLM。支持任意分辨率——大图先切成多个 patch 分别编码再拼接,保留空间信息。多图多轮对话也支持。


模块五:MoE 架构 | 用更少算力训练更大模型

5.1 核心概念

MoE 核心:把 FFN 替换成多个'专家',每次只激活几个。总参数大(知识多),激活参数少(推理快)。

模型总参数激活参数专家数Top-K共享专家
Switch Transformer各种各种各种1无
GShard各种各种各种2无
Mixtral 8x7B46.7B12.9B82无
DeepSeek-V2236B21B16282
DeepSeek-V3671B37B2578+1 共享1

MoE 发展脉络

阶段模型核心创新
2022Switch TransformerTop-1 路由,简化通信
2022GShardTop-2 路由,容量因子
2024Mixtral第一个开源高质量 MoE
2024DeepSeekMoE细粒度专家 + 共享专家
2024DeepSeek-V3无辅助损失负载均衡
5.2 原理推导

Router:$g(x) = \text{TopK}(\text{softmax}(W_g \cdot x))$

负载均衡损失:$\mathcal{L}{\text{balance}} = N \cdot \sum{i=1}^{N} f_i \cdot P_i$

其中 $f_i$ 是专家 $i$ 实际接收的 token 比例,$P_i$ 是所有 token 对专家 $i$ 的路由概率均值。

Capacity Factor:每个专家能处理的最大 token 数 = $CF \times \frac{T}{N}$($T$=总 token 数,$N$=专家数)。CF=1.25 意味着允许 25% 的不均衡。超出容量的 token 被丢弃或溢出到其他专家。

Expert Parallelism 通信

MoE 的 All-to-All 通信模式:

Step 1: 每个 GPU 计算所有 token 的路由决策
Step 2: All-to-All → 把 token 发送到对应专家所在的 GPU
Step 3: 每个 GPU 上的专家处理分配到的 token
Step 4: All-to-All → 把结果发回原始 GPU

通信量 = $O(\text{batch_size} \times d_{model})$,与专家数无关但与 batch 大小线性相关。

5.3 代码实现
class MoELayer(nn.Module):
    def __init__(self, d_model, d_ff, n_experts, top_k):
        super().__init__()
        self.gate = nn.Linear(d_model, n_experts, bias=False)
        self.experts = nn.ModuleList([
            SwiGLU_FFN(d_model, d_ff) for _ in range(n_experts)
        ])
        self.top_k = top_k

    def forward(self, x):
        # x: [batch, seq, d_model]
        bsz, seq_len, d = x.shape
        x_flat = x.view(-1, d) # [B*S, d]
        # 路由计算
        logits = self.gate(x_flat) # [B*S, n_experts]
        weights, indices = torch.topk(
            torch.softmax(logits, dim=-1), self.top_k
        )
        weights = weights / weights.sum(dim=-1, keepdim=True)
        # 稀疏计算(简化版,实际用 scatter/gather 优化)
        output = torch.zeros_like(x_flat)
        for i, expert in enumerate(self.experts):
            mask = (indices == i).any(dim=-1)
            if mask.any():
                expert_input = x_flat[mask]
                expert_output = expert(expert_input)
                # 加权合并
                w = weights[mask][indices[mask] == i]
                output[mask] += w.unsqueeze(-1) * expert_output
        return output.view(bsz, seq_len, d)
5.4 面试考点精讲

Q1:MoE vs Dense 模型的优缺点?

参考答案:MoE 同算力参数更多(知识更多),但显存占用大(总参数要全加载)、通信开销高、训练不稳定。

Q2:路由崩溃是什么?怎么解决?

参考答案:所有 token 路由到少数专家。解决:辅助损失、容量因子限制、Noise Top-K。

Q3:细粒度专家 vs 粗粒度专家的权衡?

参考答案:粗粒度(如 Mixtral 8 个大专家)实现简单,但每个专家参数多、冗余大。细粒度(如 DeepSeek 256 个小专家)路由更精准、专业化更强,但通信开销更大、路由不稳定风险更高。DeepSeek 的实验表明,同等激活参数下细粒度专家效果更好。

Q4:Shared Expert 的作用是什么?

参考答案:共享专家(DeepSeek 首创)始终被激活,负责处理所有 token 共有的通用知识(如语法、常识)。路由专家只需学习专业化知识。这解决了'信息冗余'问题——没有共享专家时,每个路由专家都要学习通用知识,浪费容量。


模块六:Scaling Laws | 模型规模的科学

6.1 核心概念

Kaplan(2020):增大模型比增加数据更高效。训练'大而短'的模型。

$L(N) = (N_c / N)^{\alpha_N}, \quad \alpha_N \approx 0.076$

Chinchilla(2022):模型和数据应等比例增长。$N$和$D$的最优比例约 1:20。

$L(N, D) = E + \frac{A}{N^\alpha} + \frac{B}{D^\beta}, \quad \alpha \approx 0.34, \beta \approx 0.28$

最优分配:$N_{opt} \propto C^{0.5}$,$D_{opt} \propto C^{0.5}$($C$=总计算预算)。

Over-Training 趋势(2024-2026):故意用远超最优比例的数据训练小模型。

模型参数量Tokens比例策略
GPT-3175B300B1:1.7Kaplan 时代
Chinchilla70B1.4T1:20Chinchilla 最优
LLaMA-17B1.4T1:200Over-Training
LLaMA-38B15T1:1875极致 Over-Training

Emergent Abilities(涌现能力)

某些能力在小模型上完全不存在,模型规模超过某个阈值后突然出现:

  • CoT 推理:~100B 参数后出现
  • 多步数学推理:~50B 参数后出现
  • 自我纠错:~100B 参数后出现

争议(Schaeffer et al., 2023):涌现可能是评估指标的'幻觉'——用连续指标替代离散指标后,性能增长是平滑的。

6.2 面试考点精讲

Q1:Kaplan 和 Chinchilla 的核心区别?

参考答案:Kaplan 建议'模型优先',Chinchilla 建议'等比增长'。Chinchilla 更正确。

Q2:为什么流行 Over-Training?

参考答案:推理成本>>训练成本。小模型推理便宜,多花训练计算让小模型极致,总 ROI 更高。

Q3:Scaling Laws 对模型训练的具体指导意义?

参考答案:(1) 预算分配——给定计算预算,确定最优模型大小和数据量;(2) 性能预测——用小规模实验预测大模型的最终 loss;(3) 超参迁移——μP 可以从小模型直接迁移学习率等超参;(4) ROI 估算——评估增大模型/数据的边际收益。

Q4:涌现能力真的存在吗?批评观点是什么?

参考答案:Schaeffer et al.(2023)认为涌现是评估指标的'幻觉'——当用精确匹配等离散指标衡量时,小模型部分正确的回答被计为 0 分,造成'突变'假象。改用连续指标(如 BLEU、token-level accuracy)后,性能增长是平滑的。但反对观点认为:对于需要完整推理链的任务(如多步数学),离散指标才能反映真实能力。


模块七:Tokenizer | 大模型的'语言入口'

7.1 核心概念
算法核心思想方向代表
BPE反复合并最高频相邻对自底向上GPT
WordPiece按似然选择合并自底向上BERT
Unigram从大词表反复删除低分词自顶向下SentencePiece
Byte-level BPE字节为基础单元做 BPE自底向上GPT-2+, LLaMA

BPE 训练伪代码

Input: 训练语料,目标词表大小 V
1. 初始化词表 = 所有字节 (256 个) + 特殊 token
2. while |词表| < V:
3. 统计语料中所有相邻 token 对的频率
4. 找到频率最高的 pair (a, b)
5. 将所有 "a b" 替换为 "ab"
6. 将 "ab" 加入词表
7. return 词表 + 合并规则

Unigram 模型(与 BPE 对比)

Unigram 从大词表开始,反复删除对整体似然影响最小的 token:

  • 初始化:收集所有高频子串构成超大候选词表
  • 打分:每个候选词的 unigram 概率 $P(x_i) = \frac{count(x_i)}{\sum_j count(x_j)}$
  • 分词:对输入文本用 Viterbi 算法找最大概率分词
  • 裁剪:删除贡献最小的 10-20% 候选词,重新估计概率
  • 重复直到达到目标词表大小

各模型词表大小对比

模型词表大小算法中文效率
GPT-250,257Byte-level BPE低(每字 2-3 token)
LLaMA-132,000SentencePiece BPE低
LLaMA-3128,256tiktoken BPE中高
Qwen-2.5151,643tiktoken BPE高(常用字 1 token)
DeepSeek-V3100,015BPE中高
7.2 面试考点精讲

Q1:BPE 和 WordPiece 区别?

参考答案:BPE 按频率选择合并,WordPiece 按似然增益。BPE 更简单。

Q2:为什么用 Byte-level BPE?

参考答案:以字节为基础天然支持任何语言,无 OOV 问题。

Q3:如何为特定领域扩展 Tokenizer?

参考答案:(1) 收集领域文本训练新词表;(2) 将新词表与原词表合并(取并集或增量训练);(3) 扩大 Embedding 层(新 token 随机初始化或用子词平均值初始化);(4) 需要 continue pre-training 让模型学会新 token 的语义。注意不要改变原有 token 的编码。

Q4:Tokenizer 对多语言支持的影响?

参考答案:词表中覆盖的语言越多,各语言的编码效率都会降低("fertility"增大)。解决方案:(1) 用超大词表(Qwen 的 151K);(2) 增加目标语言训练数据在 BPE 训练中的比例;(3) 确保字节级覆盖作为 fallback。一个中文效率差的 Tokenizer 会让模型推理速度慢 2-3 倍。


模块八:模型选型指南 | 面试中如何回答'选什么模型'

8.1 选型决策树
需要最强性能?→ GPT-4o / Claude / Gemini
需要本地部署?
├── 多卡 (80GB+) → DeepSeek-V3 / LLaMA-405B
├── 单卡 80GB → LLaMA-70B-Q4 / Qwen-72B-Q4
├── 单卡 40-48GB → LLaMA-70B-Q2 / Qwen-14B
├── 单卡 24GB → LLaMA-8B / Qwen-7B
└── 单卡 16GB → Qwen-7B-Q4 / Phi-3-mini

按场景选型对比

场景推荐模型理由
代码生成DeepSeek-Coder / Qwen-Coder代码专项训练,HumanEval 高
数学推理DeepSeek-R1 / Qwen-Math推理链能力强
中文对话Qwen-2.5 / DeepSeek-V3中文训练数据占比高
英文通用LLaMA-3 / Mistral英文 benchmark 最强
RAG 系统Qwen-7B~14B性价比高,上下文够长
多模态Qwen-VL / LLaVA原生图文理解
端侧部署Phi-3 / Qwen-0.5B参数量极小

开源模型推理显存估算

模型FP16 显存INT8 显存INT4 显存
7B14GB7GB4GB
14B28GB14GB8GB
70B140GB70GB35GB
405B810GB405GB203GB
8.2 面试考点精讲

Q1:为中文客服系统选基座模型?

参考答案:Qwen-2.5 或 DeepSeek,中文强且开源可微调。7B-14B 通常够用。

Q2:Dense 和 MoE 怎么选?

参考答案:显存充足选 MoE(性能好),显存有限选 Dense(部署简单)。

Q3:如何评估一个模型是否适合你的业务?

参考答案:四步评估法:(1) 在公开 benchmark 上初筛(MMLU、HumanEval 等);(2) 构建业务评测集(50-200 条典型 query),人工评分;(3) 测试推理延迟和吞吐量,确认满足 SLA 要求;(4) 评估微调潜力——用少量业务数据做 LoRA 微调看提升幅度。不要只看公开榜单,业务评测集的排名经常和公开排名不同。

Q4:开源 vs 闭源模型的选择考量?

参考答案:选闭源(GPT-4/Claude)的理由——性能最强、无需运维、按量付费起步低。选开源的理由——数据隐私可控、可微调定制、长期成本低(日调用量>10 万时)、不依赖外部服务。折中方案:用闭源模型建立 baseline 和标注数据,训练开源模型替代。


全章总结

模块核心知识点面试题数
GPT 系列演进脉络、ICL、Pre-Norm5 题
LLaMA 系列RMSNorm、SwiGLU、GQA、RoPE6 题
DeepSeek 系列MLA、MoE、R1、FP86 题
Qwen 系列大词表、YARN、VL4 题
MoE 架构Router、负载均衡、共享专家4 题
Scaling LawsChinchilla、涌现能力4 题
TokenizerBPE、Unigram、多语言4 题
模型选型场景选型、评估方法4 题

下一章预告:第 3 章《预训练全流程深度解析》深入预训练的每个环节。

目录

  1. 主流大模型架构全景 | GPT/LLaMA/DeepSeek/Qwen 深度对比
  2. 模块一:GPT 系列架构演进 | 从 GPT-1 到 GPT-4
  3. 1.1 核心概念
  4. 1.2 原理推导
  5. Post-Norm: x → Attn → Add → LN → FFN → Add → LN
  6. Pre-Norm: x → LN → Attn → Add → LN → FFN → Add
  7. 1.3 代码实现
  8. GPT-2 风格的 Transformer Block
  9. 1.4 工程实践
  10. 1.5 面试考点精讲
  11. 模块二:LLaMA 系列 | 开源 LLM 的标杆
  12. 2.1 核心概念
  13. 2.2 原理推导
  14. 2.3 代码实现
  15. 2.4 工程实践
  16. 2.5 面试考点精讲
  17. 2.6 【大厂真题 - 字节/DeepSeek 高频】
  18. 模块三:DeepSeek 系列 | MoE 与创新架构
  19. 3.1 核心概念
  20. 3.2 原理推导
  21. 3.3 代码实现
  22. 3.4 工程实践
  23. 3.5 面试考点精讲
  24. 模块四:Qwen 系列 | 阿里的全能选手
  25. 4.1 核心概念
  26. 4.2 原理推导
  27. 4.3 工程实践
  28. 4.4 面试考点精讲
  29. 模块五:MoE 架构 | 用更少算力训练更大模型
  30. 5.1 核心概念
  31. 5.2 原理推导
  32. 5.3 代码实现
  33. 5.4 面试考点精讲
  34. 模块六:Scaling Laws | 模型规模的科学
  35. 6.1 核心概念
  36. 6.2 面试考点精讲
  37. 模块七:Tokenizer | 大模型的“语言入口”
  38. 7.1 核心概念
  39. 7.2 面试考点精讲
  40. 模块八:模型选型指南 | 面试中如何回答“选什么模型”
  41. 8.1 选型决策树
  42. 8.2 面试考点精讲
  43. 全章总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • HS-FPN:微小目标检测的频域与空间感知架构
  • CosyVoice 安装 openai-whisper 报错 pkg_resources 缺失原因与解决方案
  • Flutter Web 混合开发:构建跨平台 Web 应用
  • VS Code Copilot 完整使用教程
  • py-xiaozhi Python 语音客户端本地部署与配置指南
  • 普通程序员大模型(LLM)学习指南:构建全面知识体系路径
  • Flutter 与 OpenHarmony 下 web_socket 标准 WebSocket 客户端跨平台实现
  • 磨损均衡算法详解
  • Sublime Text 在 Windows 系统上的下载与安装配置
  • 扩散模型(Diffusion Model)原理与图像生成实战
  • 人工智能(AI)常见面试题及答案汇总
  • WebCodecs 设备能力检测与硬解/软解降级方案
  • cann-recipes-train 解析:昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习实践
  • n8n 与私有 AI 模型本地化部署实战指南
  • 前端Bug修复专家:从现象到根因,再到测试闭环的SOP
  • SpringBoot 原理详解:配置、Bean 管理与自动配置
  • DeepSeek 时代下前端开发的应用与实践
  • 解决 Git 下载慢的问题:国内外镜像地址与安装教程
  • 7 款最佳开源 LLM WebUI 工具推荐
  • qwen论文阅读笔记

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online