大模型如何推理:从分词到答案一秒之内的旅程

发布时间:2026/5/21 1:05:07

大模型如何推理:从分词到答案一秒之内的旅程 一、一秒之内发生了什么你在输入框里敲下一行字按下回车。一秒钟后屏幕上出现了答案。这一秒里模型内部经历了什么前几篇文章讲的是身体结构——Token 怎么切、Embedding 怎么表示、Attention 怎么工作、FFN 怎么消化、残差和 LayerNorm 各自负责什么。但这些都是静态的零件图。现在把它们组装起来让它动起来。以一个问题为例从按下回车到巴字出现所有计算步骤完整走一遍。[外链图片转存中…(img-5IygWBmK-1779287429159)]二、把你的话切成词块模型只认数字不认文字。第一步是把句子切成模型认识的词块——分词Tokenization工具叫词元化器Tokenizer本质是一个查找表。法国的首都是什么↓[1374,11223,1585,3425,30,40674]每个数字代表一个 Token。Token 不等于汉字——它是模型在训练时自己学出来的最小语义单元。几个常见切分结果巴黎→[1585]一个 Token首都→[3425]一个 Token人工智→[24597,5765]被切成两块训练时没见过这个词ChatGPT→[203,1372,1273,164,58]五个 Token英文切得更碎Token 越少计算越快内存占用越低。这也是 GPT-4 Turbo 把上下文窗口从 32K 扩展到 128K Token 的原因——不只是多装文字更是为了让代码、数学这类 Token 密集的内容更高效地处理。法国的首都是什么切成 9 个 Token标点也占一个三、把词块变成数字每个 Token 要变成一个向量这一步叫Embedding嵌入把离散的符号映射到连续的向量空间。Token ID[1374,11223,1585,3425,30,40674]↓ Embedding 查表 向量序列[v₁, v₂, v₃, v₄, v₅, v₆]每个v是768维浮点数向量GPT-2Embedding 表是训练时学出来的。每个 Token 在训练数据里反复出现模型逐渐学到最适合它表达语义的向量。但有个问题Token Embedding 本身不包含位置信息。人咬狗和狗咬人Embedding 之后完全一样——对 Attention 来说是两条一样的数据。所以需要额外加上位置编码Position Embedding最终输入向量Token Embedding Position Embedding给每个位置分配一个专属向量加到 Token 向量上模型这才知道谁在谁前面。四、多层 Attention/FFN依次消化经过 Embedding 后的向量进入 Attention/FFN 层。多层结构完全相同但参数不同每一层都在做两件事Layer NLayerNorm → Attention → 残差连接 LayerNorm → FFN → 残差连接来看法这个 Token 的向量在这一秒里经历了什么。Attention 层每个 Token 只能向自己及之前的 Token 提问。GPT 类模型叫这个因果掩码Causal Mask只能看见过去不能偷看未来。注意力矩阵法 国 的 首 都 是 什 么 法能看见 ✓ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗国能看见 ✓ ✓ ✗ ✗ ✗ ✗ ✗ ✗ ✗能看见 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓国问法和自己训练数据里法和国高频共现所以跟法相关性高。“问之前所有 8 个 Token跟首”都相关性高首都是固定搭配跟法相关性也高法国首都是什么这个句式见过无数次。Attention 计算之后每个 Token 的向量都被更新了它看见了自己之前所有上下文。FFN 层每个 Token 单独经过自己的前馈网络GPT-2 是 768→3072→768“法在这个向量附近学会了法常与国”“欧洲”首都等词共现但第一层上下文还很少无法确定是哪个欧洲国家。LayerNorm 把向量拉回标准范围残差连接叠加原始信息信息不丢失。多层叠加的效果虽然法永远不能直接看见后面的词但首都等后续 Token 的向量在每一层都被精炼。第 多层的首都向量比第 1 层丰富得多经过 多 次精炼最终汇聚出完整理解。[外链图片转存中…(img-Tmt1TK4Z-1779287429161)]五、把向量翻译回词经过 多层后对最后一个 Token“”的输出向量进行解码叫LM Head语言模型头一个从隐藏维度映射回词表大小的线性层。v₁₂经过 多层后的输出向量768 维 ↓ LM HeadW^T50257维向量词表中每个词的概率 ↓ Softmax[P(法), P(国),..., P(巴)0.042, P(北)0.018,...]↑ 最高50257 个数字每个代表模型认为下一个词应该是什么的概率。巴的概率最高因为训练语料里法国的首都是……后面接巴黎的频率远高于其他词。六、从概率到文字拿到概率分布后下一步是从概率分布里抽取一个词——采样Sampling。Greedy贪心直接选概率最高的词。结果确定但容易陷入重复循环。Temperature Sampling温度采样在 Softmax 前对 logits 除以一个温度参数 T。T 1 时分布变平坦高概率词优势减小T 1 时分布变尖锐更倾向于高概率词T 1 是标准 Softmax。对话场景通常 T0.7~1.0创意写作可以更高。Top-K Sampling只从概率最高的 K 个词里采样避免从 5 万个词里选到荒谬的词。Top-PNucleus Sampling从概率最高的词开始累加达到阈值 P 为止。Token 概率分布窄时少选几个宽时多选几个比 Top-K 更灵活。GPT 系列默认用 Top-P Temperature 组合。七、循环把输出的词再加回去选出巴之后故事还没结束。模型不能只输出一个字它要生成一整句话。巴要加回到输入序列从头再跑一遍 多层 Attention/FFN预测下一个词。这个过程叫自回归Autoregressive生成。第1轮[法, 国, 的, 首, 都, 是, 什, 么, ]→巴第2轮[法, 国, 的, 首, 都, 是, 什, 么, , 巴]→黎第3轮[法, 国, 的, 首, 都, 是, 什, 么, , 巴, 黎]→。第4轮[法, 国, 的, 首, 都, 是, 什, 么, , 巴, 黎, 。]→[EOS]每生成一个新 Token都要重新跑一遍 多层 Attention/FFN。生成 50 个 Token要跑 50 次完整前向——不是多算一点而是线性叠加。推理贵的根本原因就在这里。八、成本拆解这一次推理花了多少算力用 GPT-2多层768 维12 头约 1.2 亿参数来感受一下计算量。输入 9 个 Token输出一段话大约经历• Embedding 查表9 次• 多层 Attention/FFN每层 2 次 LayerNorm 1 次 Attention 1 次 FFN• LM Head1 次768→50257• Softmax 采样1 次• 自回归上述过程重复 N 次N 输出 Token 数粗略估算一次前向传播 ≈ 参数量 ×3经验值≈1.2亿 ×3≈3.6亿次浮点运算 生成50个 Token ≈50×3.6亿 ≈180亿次浮点运算这只是 GPT-2 的量级。LLaMA 7B 一次前向是 GPT-2 的 56 倍难怪 ChatGPT 要收费。推理优化的三个核心方向•KV Cache把已经算好的 Key、Value 存起来不用每次重新算。•量化Quantization把 FP32 参数量化成 INT8、INT4大幅降低内存和计算量精度损失小。•投机解码Speculative Decoding用小模型猜几个词大模型验证并行加速。九、结语按下回车后的这一秒大模型内部经历了输入 → Token 化 → Embedding → 多层 Attention/FFN → LM Head → Softmax → Top-P 采样 → 输出词 → 加回输入 → 重复 多层 … → 出现[EOS]停止输入 9 个 Token、输出 50 个 Token一次推理约 180 亿次浮点运算换来 50 个词。Attention 让模型看见上下文FFN 调用知识残差连接保留信息LayerNorm 稳定数值。这些机制在推理的每一毫秒里同时工作。下篇文章要说的是这一切是怎么来的几十亿个随机参数是怎么变成能精准预测下一个词的大脑的—文章首发于 「小小寰宇」

相关新闻