从输入到输出:大语言模型一次完整推理简单解析

前言

大语言模型(LLM)的推理过程,本质上是一个在离散 token 空间中进行条件概率建模与自回归采样的计算流程。从系统角度看,这一过程可以被严格拆解为:文本离散化、全量上下文建模(Prefill)、概率分布构造、候选空间裁剪、随机采样、状态递推,直至满足终止条件。以下按照真实执行顺序,对每一阶段进行完整解析。


一、文本输入与 Tokenisation:离散化的起点

模型无法直接处理字符串。所有文本输入首先通过 tokenizer 映射为 token ID 序列。Tokenisation 是一个确定性函数,其输出完全由 tokenizer 和词表定义,与模型参数无关。tokenization分为字词级、子词级、字节级词元化,各有优劣。

现代 LLM 普遍采用子词级(subword)tokenisation(如 BPE、Unigram LM)。其核心目标不是"语言学合理",而是相对于其他词元化的规则,子词级有以下优势:

  • 控制词表规模;
  • 覆盖长尾词与未登录词;
  • 压缩 token 数以降低 Attention 计算成本。

Tokenisation 的结果直接决定:

  • 输入 token 数(影响 Attention 的 O(n2)O(n^2)O(n2) 复杂度);
  • 可用上下文长度(context window 是 token 数上限,而非字符数);
  • 推理成本与延迟的下限。

模型后续所有计算均发生在 token 空间中,任何字符串级操作在此之后都不再存在。


二、Embedding 与 Transformer:进入连续空间

每个 token ID 通过 embedding lookup 映射为一个定长向量,其维度为模型的 hidden size,与词表大小无关。Embedding 层的本质是一个形状为 (∣V∣×d|V| \times d∣V∣×d) 的查表矩阵,其中单个 token 对应的向量长度为 (d)。

Embedding 向量叠加位置编码后,输入 Transformer Decoder 堆栈。每一层 Transformer 由:

  • 多头自注意力(Self-Attention)
  • 前馈网络(FFN)
  • 残差连接与 LayerNorm
    组成。

Self-Attention 的计算复杂度随 token 数平方增长,这是长上下文推理的根本瓶颈。


三、Prefill:全量上下文的 Attention 展开

Prefill 是指模型对全部输入 token 进行一次前向传播的阶段,其核心目的不是生成输出,而是构建 Attention 所需的 Key / Value Cache

在 Prefill 阶段:

  • 每一层 Transformer 都会为每个 token 计算对应的 Key 和 Value;
  • Attention 在完整序列上展开,复杂度为 O(n2)O(n^2)O(n2);
  • Prefill 只执行一次,但计算量巨大。

工程上,长 prompt 导致的首 token 延迟,几乎完全由 Prefill 决定。RAG、长对话、系统 prompt 叠加,本质上都是在放大这一阶段的成本。


四、KV Cache:自回归生成的状态基础

Prefill 结束后,模型已为当前上下文中所有 token 构建好 KV Cache。KV Cache 存储的是各层 Attention 的 Key / Value 张量,其维度属于 hidden space,而非词表空间。

KV Cache 的存在,使得后续生成阶段无需重新计算历史 token 的 Attention,从而将自回归生成的复杂度从 O(n2)O(n^2)O(n2) 降为 O(n)O(n)O(n)。代价是显存占用随上下文长度线性增长。


五、Logits 与 Softmax:从连续表示到词表空间

  • 在 Prefill 的最后一个 token,或 Decode 阶段的每一步,模型都会输出一个 logits 向量,其维度等于词表大小 (∣V∣|V|∣V∣)。这是模型唯一一次显式进入"词表空间"。
  • Logits 是未归一化的对数得分,不具备概率意义。通过 softmax,将 logits 映射为一个在词表上的概率分布:
    pi=ezi/T∑jezj/T p_i = \frac{e^{z_i / T}}{\sum_j e^{z_j / T}} pi=∑jezj/Tezi/T
  • Temperature 本质上是对 logits 的线性缩放,用于调节概率分布的陡峭程度。Temperature 不改变 token 排序,仅影响概率差距与分布熵,因此只在 sampling 场景中生效。
    设模型在某一步输出的 logits 为:
    z=(z1,z2,...,z∣V∣),zi∈R \mathbf{z} = (z_1, z_2, \dots, z_{|V|}), \quad z_i \in \mathbb{R} z=(z1,z2,...,z∣V∣),zi∈R
    带 Temperature 的 softmax 定义为:
    pi(T)=exp⁡(zi/T)∑j=1∣V∣exp⁡(zj/T) p_i(T) = \frac{\exp(z_i / T)}{\sum_{j=1}^{|V|} \exp(z_j / T)} pi(T)=∑j=1∣V∣exp(zj/T)exp(zi/T)
    其中(T>0T > 0T>0) 为 temperature,pi(T)p_i(T)pi(T) 是 token (iii) 的生成概率
  • Temperature 数学性质
    • 排序不变性 :对任意 T>0T>0T>0,若 za>zbz_a > z_bza>zb,则 pa(T)>pb(T)p_a(T) > p_b(T)pa(T)>pb(T),Temperature 不改变 token 排序,只改变概率差距。
    • 对数概率差缩放 :log⁡papb=za−zbT\log \frac{p_a}{p_b} = \frac{z_a - z_b}{T}logpbpa=Tza−zb,Temperature 实际是在缩放 logits 差值,从而控制概率分布的熵。
    • 极限行为
      • T→0T \to 0T→0:分布收敛为 one-hot(近似 argmax)
      • (T \to \infty):分布收敛为均匀分布

六、候选空间裁剪:Top-k 与 Top-p

直接在完整词表上采样在工程上不可控,因此需要对概率分布进行裁剪。

设经过 softmax(已包含 temperature)后得到的概率分布为:
p=(p1,p2,...,p∣V∣),∑ipi=1p = (p_1, p_2, \dots, p_{|V|}), \quad \sum_i p_i = 1p=(p1,p2,...,p∣V∣),i∑pi=1将所有 token 按概率从大到小排序:
p(1)≥p(2)≥⋯≥p(∣V∣) p_{(1)} \ge p_{(2)} \ge \dots \ge p_{(|V|)} p(1)≥p(2)≥⋯≥p(∣V∣)

  • Top-k:仅保留概率最高的 (k) 个 token,形成硬截断的候选集。
  • Top-p(Nucleus Sampling):保留累计概率达到阈值 § 的最小 token 集合,属于分布感知型裁剪

若同时启用,最终候选集为二者的交集。实践中通常以 Top-p 为主、Top-k 为安全阀,用于限制极端平坦分布。

裁剪并不等于选择,它只是定义"哪些 token 仍有资格被选中"。


实际执行顺序为:

logits;→/T;softmax;→Top-p;Vp;→re-normalize;sampling \text{logits} ;\xrightarrow{/T}; \text{softmax} ;\xrightarrow{\text{Top-p}}; V_p ;\xrightarrow{\text{re-normalize}}; \text{sampling} logits;/T ;softmax;Top-p ;Vp;re-normalize ;sampling

Temperature 决定概率如何分布,Top-p 决定哪些概率仍然存在。


七、重归一化与随机采样:离散决策的发生点

候选集确定后,系统会将候选集外 token 的概率置零,并在候选集内重新归一化,形成新的合法概率分布。随后进行一次分类分布采样,选出下一个 token ID。

这是整个推理过程中唯一引入随机性的步骤。所有生成多样性、漂移、重复、幻觉风险,最终都可以追溯到这一采样操作及其参数设置。

当候选集退化为单一 token 时,采样等价于 greedy decoding。


八、Decode 循环:自回归推进

采样得到的 token 会立即:

  • 转换为 embedding;
  • 输入 Transformer;
  • 使用已有 KV Cache,仅计算新 token 的 Attention;
  • 输出新的 logits。

同时,新 token 对应的 Key / Value 会被追加进 KV Cache。随后再次进入"logits → 裁剪 → 采样"的循环。

这一 Decode 过程持续进行,直到满足停止条件(EOS、最大 token 数或自定义规则)。Streaming 输出只是 Decode 阶段逐 token 暴露中间结果的表现形式,不改变计算本质。


九、整体视角下的因果链

从系统角度看,整个推理过程可以压缩为一条因果链:

  • Tokenisation 决定 token 数与计算下限;
  • Prefill 决定首 token 延迟与 Attention 成本;
  • KV Cache 决定 Decode 阶段是否可扩展;
  • Sampling 决定输出行为的稳定性与熵。
相关推荐
【建模先锋】2 小时前
特征提取+概率神经网络 PNN 的轴承信号故障诊断模型
人工智能·深度学习·神经网络·信号处理·故障诊断·概率神经网络·特征提取
轲轲012 小时前
Week02 深度学习基本原理
人工智能·深度学习
老蒋新思维2 小时前
创客匠人:认知即资产 ——AI 时代创始人 IP 知识变现的底层逻辑
网络·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
开放知识图谱2 小时前
论文浅尝 | 大语言模型在带超关系的知识图谱上的推理(ICLR2025)
人工智能·语言模型·自然语言处理·知识图谱
世岩清上2 小时前
世岩清上:“人工智能+”可以赋能哪些行业场景?
人工智能·百度
sumAll2 小时前
别再手动对齐矩形了!这个开源神器让 AI 帮你画架构图 (Next-AI-Draw-IO 体验)
前端·人工智能·next.js
Java后端的Ai之路2 小时前
【智能体搭建平台篇】-Dify部署方案介绍
人工智能·chatgpt·aigc·ai编程
smile_Iris2 小时前
Day 40 复习日
人工智能·深度学习·机器学习
深度学习实战训练营2 小时前
TransUNet:Transformer 成为医学图像分割的强大编码器,Transformer 编码器 + U-Net 解码器-k学长深度学习专栏
人工智能·深度学习·transformer