大模型运行逻辑详解
大模型运行逻辑详解
大语言模型(LLM)的运行逻辑可以从 架构、训练、推理、生成 四个层面来理解。下面逐层拆解。
────────────────────
一、核心架构:Transformer
大模型几乎都基于 Transformer 架构(2017年 Google 提出),核心思想是 自注意力机制(Self-Attention)。
1.1 为什么不用 RNN/LSTM?
特性 │ RNN/LSTM │ Transformer
────────────┼─────────────────┼─────────────────────
并行计算 │ ❌ 必须序列计算 │ ✅ 可全并行
────────────┼─────────────────┼─────────────────────
长距离依赖 │ ⚠️ 容易遗忘 │ ✅ 直接关注任意距离
────────────┼─────────────────┼─────────────────────
训练效率 │ 慢 │ 快
1.2 自注意力机制(核心中的核心)
本质:让每个词"看到"句子中所有其他词,并决定关注谁。
输入: "猫坐在垫子上,因为它很累"
"它" 这个词需要判断指代的是"猫"还是"垫子":
→ 通过注意力机制,"它" 对 "猫" 的注意力权重最高
→ 模型理解 "它" = "猫"
计算过程(简化版):
1. 每个词向量生成三个向量:Q(查询)、K(键)、V(值)
2. 注意力分数 = Q × K^T / √d (d是维度,防止分数过大)
3. 分数过 Softmax → 变成概率分布(加起来=1)
4. 加权求和:输出 = 注意力概率 × V
直觉理解:
• Q = "我在找什么信息?"
• K = "我能提供什么信息?"
• V = "我实际携带的信息内容"
• Q 和 K 匹配度越高 → 注意力权重越大 → 更多地采纳对方的 V
1.3 多头注意力(Multi-Head Attention)
不是只做一次注意力,而是做 多组(如 96 个头),每个头关注不同方面:
头1: 关注语法关系(主谓宾)
头2: 关注指代关系
头3: 关注语义相似性
头4: 关注位置/顺序
...
1.4 整体结构
输入文本
↓
Token化(分词)→ 每个token变成一个ID
↓
Embedding(嵌入)→ ID变成向量(如 12288维)
↓
┌──────────────────────────┐
│ Transformer Block × N │ ← 堆叠 N 层(GPT-3 是 96 层)
│ ┌─ 多头自注意力 │
│ ├─ 残差连接 + LayerNorm │
│ ├─ 前馈网络(FFN) │
│ └─ 残差连接 + LayerNorm │
└──────────────────────────┘
↓
输出向量 → 映射到词表 → 概率分布
↓
选下一个token
────────────────────
二、训练逻辑:从随机到智能
2.1 三阶段训练流程
阶段1: 预训练(Pre-training)
→ 海量文本(万亿token),学习语言规律
→ 目标: 预测下一个token(自回归)
→ 产出: 基座模型(会续写,但不听话)
阶段2: 监督微调(SFT, Supervised Fine-Tuning)
→ 人工编写的"问题-回答"对
→ 目标: 学会按指令回答
→ 产出: 会对话的模型
阶段3: 对齐训练(RLHF / DPO)
→ 人类对多个回答排序/打分
→ 目标: 回答更符合人类偏好(有用、无害、诚实)
→ 产出: 可部署的最终模型
2.2 预训练的核心:下一个token预测
训练样本: "今天天气真不错"
模型看到的任务:
输入 "今天" → 预测 "天气"
输入 "今天天气" → 预测 "真"
输入 "今天天气真" → 预测 "不错"
损失函数: Cross-Entropy Loss
→ 模型预测的概率分布 vs 真实的下一个token
→ 反向传播更新参数
这就是为什么大模型本质上是"文字接龙"——但万亿次的接龙练习涌现出了理解能力。
2.3 涌现能力(Emergent Abilities)
参数规模 能力
─────────────────────────
~1B (10亿) 基本语言流畅
~10B 简单推理、翻译
~70B+ 复杂推理、代码、数学
~175B+ 少样本学习、指令遵循
能力不是平滑增长的,而是在某些规模点 突然出现,这被称为"涌现"。
────────────────────
三、推理逻辑:生成一个回答的全过程
3.1 完整推理流程
用户输入: "中国的首都是哪里?"
│
├─① Tokenize(分词)
│ → ["中国", "的", "首都", "是", "哪里", "?"]
│ → [1234, 56, 7890, 23, 456, 99]
│
├─② 加上系统提示(System Prompt)
│ → "你是一个有用的助手。用户问:中国的首都是哪里?"
│
├─③ Embedding → 向量序列
│ → 每个token → 12288维向量
│
├─④ 经过 N 层 Transformer
│ → 每层都在做自注意力 + 前馈网络
│ → 最后一层输出每个位置的隐向量
│
├─⑤ 取最后一个位置的向量 → 映射到词表
│ → logits = [词表大小] 的分数
│ → softmax → 概率分布
│ → P("北京")=0.92, P("上海")=0.01, ...
│
├─⑥ 采样策略选择下一个token
│ → Greedy: 选概率最高的 → "北京"
│ → Top-K: 从前K个中采样
│ → Top-P (nucleus): 从累积概率>P的最小集合中采样
│ → Temperature: 控制随机性
│
├─⑦ 把选中的token加到输入末尾,重复 ④⑤⑥
│ → "北京" → 继续预测 → "。" → 继续预测...
│
└─⑧ 遇到结束符(EOS)或达到长度限制 → 停止
→ 拼接所有生成的token → "北京。"
3.2 关键采样参数
Temperature (温度):
T → 0: 几乎确定性,总是选最高概率(适合事实问答)
T = 1: 原始概率分布
T → ∞: 完全随机(输出混乱)
Top-P (核采样):
P = 0.1: 只从累积概率达10%的token中选(保守)
P = 0.9: 从累积概率达90%的token中选(平衡)
P = 1.0: 所有token都可能(发散)
Top-K:
K = 1: 贪心解码
K = 40: 只从前40个候选中选
3.3 自回归生成的本质
每生成一个token,都要把【全部历史 + 已生成内容】重新过一遍模型
Step 1: 输入[问题] → 预测token_1
Step 2: 输入[问题, token_1] → 预测token_2
Step 3: 输入[问题, token_1, token_2] → 预测token_3
...
这就是为什么:
✅ 模型能"看到"完整上下文
❌ 生成越长越慢(计算量线性增长)
❌ KV Cache 优化: 缓存已计算的K/V,避免重复计算
────────────────────
四、关键概念深入
4.1 KV Cache(推理加速核心)
没有KV Cache:
Step 1: 计算 [A,B,C] 的K,V → 预测D
Step 2: 重新计算 [A,B,C,D] 的K,V → 预测E ← A,B,C重复算了!
有KV Cache:
Step 1: 计算 [A,B,C] 的K,V → 存缓存 → 预测D
Step 2: 只计算 [D] 的K,V → 追加到缓存 → 预测E ← 只算新的!
这是推理时最重要的优化,显存占用主要就是 KV Cache。
4.2 位置编码(Positional Encoding)
Transformer 本身没有顺序概念,需要额外注入位置信息:
绝对位置编码: 每个位置一个固定向量(原版Transformer)
相对位置编码: 编码token之间的相对距离(T5, RoPE)
RoPE (旋转位置编码): 当前主流,支持长序列外推
→ GPT-4, LLaMA, Qwen 等都在用
4.3 上下文窗口(Context Window)
模型能"看到"的最大token数 = 上下文窗口
GPT-3: 2K tokens
GPT-4: 8K / 32K / 128K tokens
Claude: 100K / 200K tokens
Qwen2: 128K tokens
超出窗口的内容 → 被截断,模型"看不到"
→ 这就是为什么长对话会"忘记"前面说的话
────────────────────
五、一张图总结
┌─────────────────────────────────────────────────┐
│ 大模型运行全景 │
│ │
│ 训练阶段 推理阶段 │
│ ┌──────────┐ ┌──────────────┐ │
│ │ 预训练 │ │ 用户输入 │ │
│ │ (万亿token)│ │ → Tokenize │ │
│ └────┬─────┘ │ → Embedding │ │
│ ↓ │ → Transformer │ │
│ ┌──────────┐ │ × N层 │ │
│ │ SFT微调 │ │ → 概率分布 │ │
│ │ (指令数据) │ │ → 采样选token │ │
│ └────┬─────┘ │ → 追加到输入 │ │
│ ↓ │ → 循环... │ │
│ ┌──────────┐ │ → 遇到EOS停止 │ │
│ │ RLHF对齐 │ └──────────────┘ │
│ │ (人类偏好) │ │
│ └────┬─────┘ 核心机制: │
│ ↓ • 自注意力(看全局) │
│ ┌──────────┐ • 自回归(逐字生成) │
│ │ 最终模型 │ • KV Cache(加速) │
│ └──────────┘ • 采样(控制随机性) │
└─────────────────────────────────────────────────┘
- 点赞
- 收藏
- 关注作者
评论(0)