简介:本文从第一性原理出发,系统解析大语言模型(LLM)推理的完整生命周期。深入探讨分词、向量嵌入、注意力机制等核心步骤,并剖析Prefill与Decode双阶段的性能差异。同时详解KV缓存优化及量化技术,帮助开发者与架构师彻底理解LLM的运行机制与工程优化方向。
大语言模型(LLM)推理,是指模型在完成训练后,接收用户输入的文本提示,通过内部神经网络的前向传播计算,逐一生成输出Token,直到产生完整回复的过程。从工程视角来看,它并非一个简单的“输入即输出”的黑盒,而是当今计算系统中最为精密的工程流水线之一。在用户敲下键盘到模型流式输出第一个字之间的几百毫秒内,系统需要完成文本到数字的转换、高维向量的映射以及复杂的上下文注意力计算。
随着大模型在各行各业的普及,企业与技术选型人员面临的挑战已从“如何训练模型”转变为“如何高效、低成本地部署模型”。理解LLM的推理机制具有以下核心价值:
要理解LLM如何工作,必须从其最底层的“心智模型”出发。LLM本质上是一个用于“预测下一个Token”的神经网络。它一次只预测一个Token,然后将其拼接到原输入后,循环往复。这一过程包含以下四个核心步骤:
1. 文本数字化(分词,Tokenization)
神经网络无法直接理解自然语言,它只能处理数字。因此,推理的第一步是使用分词器将输入文本切分为多个小块,并为每一块分配一个整数ID。业界常采用字节对编码(BPE)等算法,通过从字符级开始不断合并高频相邻字符对,构建约数万规模的词表。
示例代码演示了文本到数字列表的转换过程:
prompt = "How does inference work?"ids = tokenizer.encode(prompt)# 转换结果可能类似于: [2437, 1374, 32278, 670, 30]
在这个阶段,常见词通常对应一个Token,而生僻词或复杂词根则会被拆解为多个片段。
2. 向量嵌入
得到整数ID序列后,模型通过查表操作,将每个离散的ID映射为一个连续的高维浮点数向量。这些向量不仅代表了Token本身的含义,还编码了词与词之间的语义关系。在此阶段,文本彻底转化为神经网络能够进行矩阵运算的数学格式。
3. 注意力层
这是LLM理解上下文的核心模块。在生成每一个新Token时,注意力机制会计算当前正在生成的Token与输入提示中所有已有Token之间的关联权重。通过这种机制,模型能够判断上下文中哪些词对当前的预测最重要,从而在生成下一个词时“聚焦”于关键信息,保证逻辑的连贯性。
4. 预测下一个Token
经过多层注意力和前馈神经网络的计算后,模型最终输出一个覆盖整个词表的概率分布。系统通常采用采样策略(如Top-K、Top-P或贪心搜索)从分布中挑选出概率最高的候选词,作为最终输出的Token。
很少有人意识到,在回答一个问题时,模型实际上在同一次请求、同一张GPU上,执行了两种完全不同的“工作”,且各自有着截然不同的性能瓶颈。这被称为推理的两个阶段:
阶段一:Prefill(预填充阶段)
当用户输入一段长长的Prompt时,模型需要一次性“消化”并计算所有输入Token的向量表示和注意力权重,并将这些中间结果保存下来。这一阶段是计算密集型的,GPU需要进行大规模的矩阵乘法。Prefill阶段的时间直接决定了用户看到第一个输出字的延迟(TTFT)。
阶段二:Decode(解码阶段)
Prefill完成后,模型进入逐字生成状态。每生成一个新Token,模型都需要将其与之前的上下文进行注意力计算。这一阶段每次只处理一个Token,计算量很小,但需要频繁读取内存中庞大的历史数据。因此,Decode阶段是显存带宽密集型的。这也解释了为什么第二个Token往往比第一个Token生成得更快——因为首个Token的生成包含了耗时的Prefill计算。
为了让上述推理过程在有限的硬件资源下变得可行且高效,业界引入了关键的工程优化技术:
1. KV缓存:让自回归生成变得可行
在Decode阶段,每生成一个新Token,理论上都要重新计算它与之前所有Token的注意力。但实际上,之前Token的键值对矩阵是不会改变的。因此,模型会将这些计算过的中间结果缓存到GPU显存中,这就是KV缓存。
有了KV缓存,模型在生成新词时无需重新计算历史上下文,极大地降低了计算复杂度。然而,代价是KV缓存会随着序列长度的增加而线性占用巨量显存,这也是当前限制大模型上下文长度的核心因素之一。目前,主流技术方案正致力于从源头压缩缓存体积,例如通过多查询注意力(MQA)或分组查询注意力(GQA)等架构创新来减少KV缓存的并行副本。
2. 量化技术:用精度换速度与空间
面对庞大的模型参数和KV缓存对显存的渴求,量化技术应运而生。量化是指将模型中原本使用16位或32位浮点数表示的权重和激活值,压缩为8位甚至更低位数的整数表示。
虽然降低精度可能会带来微小的性能损失,但它能显著减少模型占用的显存空间,并提升数据在显存与计算单元之间的传输速度。在Decode这一显存带宽受限的阶段,量化带来的速度提升往往能完美弥补精度下降的微小代价。
理解LLM推理机制后,可以更好地将其应用于以下企业级场景:
大语言模型的推理过程绝非简单的文本调用,而是一场从文本到向量、从矩阵乘法到显存读写的精密编排。Prefill与Decode两阶段的划分,揭示了模型在不同时刻的算力需求差异;而KV缓存与量化技术,则是支撑这一庞大系统高效运转的基石。开发者与架构师只有从第一性原理出发,彻底理解这些底层机制,才能在未来的AI应用开发中,做出最合理的技术选型与性能调优决策。