Guide complet sur l’inférence d’un LLM : la révolution du cache avec KV Cache et DeepSeek V4

ChainNewsAbmedia

当你在 ChatGPT、Claude 或 DeepSeek 输入一段话、模型在几百毫秒内就开始一个字一个字回复——这个过程感觉很简单、实际上是现代运算中最精细的工程之一。本文整理 AI 工程师 Akshay Pachaar 的完整推论流程解析、从 tokenization、embedding、attention、到 prefill/decode 两阶段、KV cache、量化、与 DeepSeek V4 为何把快取体积砍到原本 10%。

核心心智模型:LLM 只是「猜下一個 token」、然后反复做

大型语言模型本质上只做一件事:预测下一个 token。它接收你输入的 token 序列、计算下一个 token 的概率分布、抽样生成一个 token、把该 token 接到输入末尾、再预测下一个——不停重复、直到模型输出停止符或达到上限。

整个推论流程的关键问题不是「它怎么预测」、而是「为什么第二个 token 比第一个快很多?」这个答案,会牵出现代 LLM 服务最重要的两个概念:prefill 与 decode 两阶段、以及 KV cache。

Step 1:Tokenization 把文字变成数字

神经网络不读文字、只读向量。所以你的提示词首先会经过 tokenization、被切成一块一块的「token」、每个 token 对应一个整数 ID。现代 LLM 多数采用 BPE(Byte Pair Encoding、位元对编码):从原始字符出发、把最常一起出现的字符对逐次合并、最后得到约 50 000 个常用 token 的词汇表。

这一步的影响比多数人想象得大。在 tokenizer 训练资料中比重低的语言、会被切成更多 token、推论成本就上升、速度就变慢。中文、繁体中文在许多英文导向的 tokenizer 中、每个字常被拆成 2 至 3 个 token、这是中文使用者推论成本偏高的根本原因之一。

Step 2:Embedding 把整数变成向量、再注入位置信息

每个 token 的整数 ID 会去查一张巨大的「embedding 表」。如果模型词汇是 50K、隐藏维度是 4096、这张表的形状就是 [50000, 4096]。每个 token 取出一行向量、就是它的 4096 维表征。

这些向量并不是随机的——训练时模型会把语意相近的 token 推到同一片空间区域、king 和 queen 在某个方向相邻、python(语言)和 javascript 在另一个方向相邻、python 和 snake(蟒蛇)又在第三个方向相邻。

位置信息也在这一步被注入、因为 attention 机制本身不知道哪个 token 在前哪一个在后。当前主流模型多采用 RoPE(Rotary Position Embedding、旋转位置编码)、对 token 位置旋转向量、把顺序信息隐含在向量本身。

Step 3:Self-Attention 是 Transformer 的核心

向量序列接着进入 32 层(或更多)transformer 层、每层做两件事:用 self-attention 在 token 之间混合信息、再用 feed-forward 在每个 token 内部混合信息。

Self-attention 的运作是:每个 token 透过三个学习得到的权重矩阵 Wq、Wk、Wv、生成 query(查询)、key(键)、value(值)三个向量。每个 token 用自己的 query 与其他所有 token 的 key 做内积、得到「该 token 应从别的 token 拉多少信息进来」的权重、再以此加权混合 value。

这就是 attention 的魔法:每个 token 自行决定要看上下文中的哪些位置、把有用的信息拉进自己的向量。32 层叠起來、模型就能跨越上千 token 追踪指涉。Attention 后接的 feed-forward 网络、则承担模型大部分的「知识」、attention 负责搬运信息、feed-forward 负责处理信息。

Prefill 与 Decode:同一个 GPU、两种完全不同的瓶颈

这是本篇最关键的分界。生成一段 200 字的回复、实际上是两个性质完全不同的任务、跑在同一张 GPU 上。

Prefill 阶段——当你送出提示词、模型必须先把所有输入 token 跑过一次、才能生成第一个 token。这一步可以「并行」处理所有输入 token:每个 token 的 Q、K、V 同时计算、attention 是大型矩阵对矩阵乘法。GPU 为这种运算而生、运算单元(Tensor Cores)满载、瓶颈在「算力」。这个阶段的延迟指标叫 TTFT(Time to First Token、首字延迟)。

Decode 阶段——第一个 token 出来后、模型切换模式。产生第 51 个 token 时、它只需要计算这个新 token 的 Q、K、V、过去 50 个 token 的 K、V 都已算过、不必重来。问题是:每个 token 的计算量很小、但 GPU 仍要从显存把整个模型权重与整段 KV 历史载入、做一次微小运算、再丢回去。瓶颈从「算力」翻转到「记忆体带宽」。这个阶段的延迟指标叫 ITL(Inter-Token Latency、token 间延迟)、它决定了模型「打字」感受快不快。

所以 prefill 是 compute-bound、decode 是 memory-bound——同样的模型、同样的硬件、却有完全不同的效能特性。

KV Cache:让 LLM 推论可行的关键优化

Decode 阶段「不重算过去 token 的 K、V」、靠的就是 KV cache。每个 transformer 层维护两个张量、分别存所有历史 token 的 K 与 V、新 token 算出 K、V 后就 append 进去、attention 时直接读整段历史。

没有 KV cache、生成 1 000 个 token 的回复每一步都要重算整个成长中的序列、复杂度二次方爆炸。有了 KV cache、长生成可以加速 5 倍以上。但代价是:cache 住在 GPU 显存里、每多生成一个 token、cache 就增大一份。13B 规模的模型、每个 token 约占 1MB;4K 上下文就烧掉 4GB 显存、单纯存放这个 cache。

这就是「长上下文很慢、很贵」的真正原因——不是模型「想」不过来、而是 cache 把显存吃光、单张 GPU 能服务的同时用户数随之大跌。常见的优化手段包括:把 cache 量化成 INT8 或 INT4、用 sliding window 丢掉太旧的 token、用 grouped-query attention(GQA)让多个 attention head 共用 K、V、或像 vLLM 采用的 PagedAttention 把 cache 分页管理(类似作业系统管理记忆体)。

DeepSeek V4 的快取革命:1M context 下砍到原本 10%

量化和分页把 KV cache 当成「固定成本」优化。DeepSeek 2025 年底预览的 V4 系列走更激进的路线:直接重新设计 attention、让 cache 从一开始就很小。

V4 采用混合机制、结合稀疏与密集两种压缩 attention 变体、两者都在高度压缩过的 KV 流上运行。在百万 token 上下文下、V4-Pro 报告 KV cache 体积仅前代的约 10%、每 token 计算量仅约 27%。意义不只是「DeepSeek 又便宜了」、而是 KV cache 已成为整个 LLM 领域被优化的瓶颈——当 attention 机制本身被重新设计来缩小 cache、代表整个技术社群的「限制条件」已彻底位移。

对台湾读者更实用的消息是:DeepSeek V4-Flash 已上 Ollama Cloud 与美国主机(参见 abmedia 4/24 报导)、Claude Code、OpenClaw 已可一键串接、不必自架就能验证新一代 attention 在长上下文场景的优势。

Quantization:用精度换速度与显存

训练需要高精度、推论不需要。多数正式部署改用 FP16 或 BF16 取代 FP32、立即把显存与 throughput 加倍。更激进的做法把权重量化为 INT8、甚至 INT4。

数字直观:7B 参数模型在 FP32 下需 28GB、FP16 下 14GB、INT8 下 7GB、INT4 下仅 3,5GB。这就是为什么一般笔电显卡也能跑 7B 模型。GPTQ 与 AWQ 等方法会挑选每个通道的缩放系数、让有损压缩造成的品质损失最小化——设计得好的 INT4、在多数标竿上的表现只比原版差 1 个百分点以内。

把所有步骤串起来:一段提示词的完整旅程

把上面所有环节串起来、一次推论的完整路径是:(1)Tokenize——文字变整数字 ID。(2)Embed——ID 变向量、注入位置信息。(3)Prefill——所有层对所有输入 token 并行运算、属于 compute-bound、KV cache 被建立、第一个输出 token 生成。(4)Decode loop——每次只投影新 token 的 Q、对 cache 中的 K、V 做 attention、跑 feed-forward、抽样输出、把新 K、V 写回 cache、属于 memory-bound。(5)Detokenize——token ID 转回字符、串流输出到屏幕。

vLLM、TensorRT-LLM、Text Generation Inference 等服务框架在这个循环外加上连续批次(不同用户的 token 可在同一個 GPU step 中交错)、speculative decoding(小模型先打草稿、大模型验证)、与精细的记忆体管理——这就是单张 GPU 服务数十用户的方法。

给开发者的实务 takeaway:你该关心 TTFT 还是 ITL?

当推论流程的全貌清楚、几个实务判断会自然浮现:

长提示词会放大 TTFT、长输出会放大 ITL——它们压力来源不同、别把优化资源放在错的指标上。Context 不是免费的、上下文加倍不只翻倍计算、还会压缩 KV cache 可容纳的批次大小。量化是当前最高槓杆的旋钮、FP16 换到 INT8 经常能砍掉一半延迟、品质损失极小。GPU 使用率(utilization)也常是误导指标——prefill 阶段把 GPU 拉满、decode 阶段可能只用 30%、解决办法不是更多算力,而是更快的记忆体或更小的 cache。

Transformer 架构吸引最多目光、但推论效能其实活在「无聊的细节」里:记忆体配置、cache 管理、位元宽度。当有人说「这个模型很慢」、下一个问题该问的不是「换 GPU」、而是「慢在『开始』还是『串流』?」——答案决定整个优化路径。

这篇文章 LLM 推论完整教学:KV cache 与 DeepSeek V4 的快取革命 最早出现在 鏈新闻 ABMedia。

Avertissement : Les informations contenues dans cette page peuvent provenir de tiers et ne représentent pas les points de vue ou les opinions de Gate. Le contenu de cette page est fourni à titre de référence uniquement et ne constitue pas un conseil financier, d'investissement ou juridique. Gate ne garantit pas l'exactitude ou l'exhaustivité des informations et n'est pas responsable des pertes résultant de l'utilisation de ces informations. Les investissements en actifs virtuels comportent des risques élevés et sont soumis à une forte volatilité des prix. Vous pouvez perdre la totalité du capital investi. Veuillez comprendre pleinement les risques pertinents et prendre des décisions prudentes en fonction de votre propre situation financière et de votre tolérance au risque. Pour plus de détails, veuillez consulter l'avertissement.
Commentaire
0/400
Aucun commentaire