news 2026/4/15 12:22:24

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从输入到输出:大语言模型一次完整推理简单解析

前言

大语言模型(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 dV×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,,zV),ziR
    带 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=1Vexp(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=Tzazb,Temperature 实际是在缩放 logits 差值,从而控制概率分布的熵。
    • 极限行为
      • T→0T \to 0T0:分布收敛为 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,,pV),ipi=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 决定输出行为的稳定性与熵。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 2:42:19

为什么我们还在害怕修改表结构?

MySQL 大表字段修改完全指南:从基础到高级实战 面对500万数据的表,如何安全高效地修改字段?本文总结普通修改和高级优化技巧 前言 在日常数据库维护中,修改表结构是常见但风险较高的操作。对于百万级甚至千万级的大表&#xff…

作者头像 李华
网站建设 2026/4/15 11:57:46

Conda安装特定版本Python以匹配TensorRT要求

Conda安装特定版本Python以匹配TensorRT要求 在部署深度学习模型到生产环境时,尤其是涉及自动驾驶、工业质检或智能安防这类对延迟极为敏感的场景中,推理性能优化不再是“加分项”,而是决定系统能否落地的关键。训练完成的模型若直接运行于P…

作者头像 李华
网站建设 2026/4/14 8:30:20

FaceFusion人脸增强功能实测:对比传统图像处理工具的优势

FaceFusion人脸增强功能实测:对比传统图像处理工具的优势 在数字内容创作门槛不断降低的今天,一张“看起来很真”的换脸视频已不再是影视工业的专属产物。从社交媒体上的趣味滤镜,到专业影视中的角色重塑,AI驱动的人脸编辑技术正以…

作者头像 李华
网站建设 2026/3/26 0:40:31

PaddlePaddle图像分类模型训练:使用清华源加速预处理库下载

PaddlePaddle图像分类模型训练:使用清华源加速预处理库下载 在高校实验室的某个下午,一位研究生正焦急地盯着终端——pip install paddlepaddle 已经卡在“Downloading”状态超过十分钟。网络延迟、连接超时、包文件损坏……这些看似琐碎的问题&#xff…

作者头像 李华
网站建设 2026/4/12 13:23:34

如何在本地运行LobeChat镜像?超详细图文教程来了

如何在本地运行 LobeChat 镜像?超详细图文教程来了 你有没有试过,明明本地已经跑起了 Ollama 或者其他大模型服务,却苦于没有一个像样的聊天界面来和它交互?复制粘贴 API 请求太原始,自己从零写前端又太耗时——这正是…

作者头像 李华
网站建设 2026/4/13 23:17:25

基于Next.js的LobeChat为何成为GitHub星标项目?

基于Next.js的LobeChat为何成为GitHub星标项目? 在AI技术席卷全球的今天,大语言模型(LLM)的能力已经足够惊艳——写代码、做翻译、生成内容信手拈来。但一个常被忽视的事实是:再强大的模型,如果交互界面粗糙…

作者头像 李华