大模型运行逻辑详解

举报
yd_265642819 发表于 2026/08/12 10:14:51 2026/08/12
【摘要】 大模型运行逻辑详解

大模型运行逻辑详解

大语言模型(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 → 变成概率分布(加起来=14. 加权求和:输出 = 注意力概率 × 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-396 层)
│  ┌─ 多头自注意力          │
│  ├─ 残差连接 + 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 (温度):
  T0:  几乎确定性,总是选最高概率(适合事实问答)
  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 → 预测EA,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(加速)       │
│  └──────────┘              • 采样(控制随机性)      │
└─────────────────────────────────────────────────┘
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。