深度解析大语言模型推理引擎:从内部机制到设计权衡,一文读懂!
01 模型内部机制、KV Cache 与张量并行Tensor Parallelism在 Part 1 中探讨了 Nano - vLLM 的工程架构当时将模型计算视为黑盒。现在要打开这个盒子深入探究模型内部原理包括 Token 如何转化为向量、每个 decoder 层内部情况、KV Cache 在 GPU 显存中的存储方式以及张量并行如何拆解计算任务到多个 GPU 上。读完本节你将对从 Prompt 进入系统到文本生成输出的全过程有完整认知。02 模型究竟是什么提到“模型”人们常想到权重文件但真正能推理的模型需三部分协同 - **Vocabulary**token 和其对应 ID 的静态映射表负责文本与数值表征的双向翻译。 - **Weights**训练中学到的参数如 7B 模型有 70 亿个可调参数。 - **Runtime Code**定义使用权重、将输入转换为输出的执行逻辑是在 GPU 上运行的部分。2.1 为何推理引擎要自己实现模型代码model code很多模型提供方虽开源了权重和 runtime code但代码往往非“开箱即用”需针对具体场景深度优化。这就是 vLLM 这类推理引擎重写 model code 的原因vLLM 代码库涵盖多种模型架构优化Nano - vLLM 简化后仅支持 Qwen 模型但其工程模式和优化思路通用。03 模型 pipeline现在追踪一个 token 在模型中的流转过程。3.1 Embedding从 Token 到向量旅程从 embedding 开始token ID 是数字嵌入层在词表中查找 ID 并检索出向量即隐藏状态是模型对该 token 的内部表征。选择 4096 维是在表达能力与计算成本间的权衡更多维度能捕捉更细微语义但需更多计算量和显存。3.2 Decode Layers魔法发生的地方隐藏状态流经 24 层解码层每层操作相同但权重不同逐层精细化加工表征。每层接收和输出的隐藏状态 shape 不变4096 维这种统一性使层与层可堆叠。3.3 LM Head从向量回到 Token经过所有解码层后最终隐藏状态转换为词表上的概率分布这是 LM Head 的工作输出 logits后续采样环节根据分值选出实际输出的词元。04 解码层Decode Layer的内部构造每个解码层有两大核心模块注意力机制Attention和多层感知机MLP。4.1 多头注意力机制Multi - Head Attention现代 LLM 使用多头注意力机制将注意力计算拆分到多个并行的“heads”中。Qwen 模型有 32 个 heads每个处理 128 维切片。每个 head 执行投影将 4096 维输入压缩成 128 维表征。每个 head 还参与注意力机制计算当前 token 对先前 token 的关注程度捕捉上下文。所有 heads 计算后输出拼接并投影回 4096 维。4.2 MLP自我优化MLP 接收注意力机制的输出并优化独立处理每个 token 的隐藏状态。它先将隐藏状态从 4096 扩展到 11008 维应用非线性激活函数再压缩回 4096 维。这就像提升分辨率扩展创造添加细节的空间压缩是对信息增强后的表征的提炼。4.3 Dense 架构与 MoE 架构的对比之前描述的 MLP 是 dense 架构每个 token 经同一个 MLP 模块处理。有些现代模型用 Mixture of Experts (MoE)有多个小型“expert” MLPs由路由网络决定由哪些 experts 处理输入。使用 MoE 的主要动机是计算效率而非输出质量。给定相同总参数量dense 模型输出质量通常更高但超大规模下 dense 模型训练计算成本高MoE 可扩展到 dense 架构无法实现的参数量以单位参数效率的适度下降换取可训练性。05 KV Cache数据平面第一部分将 Block Manager 视为 KV 缓存的控制平面现在聚焦数据平面即 KV 缓存如何存储在 GPU memory 中。5.1 什么被缓存了Attention 计算中每个 token 产生 K 和 V 向量用于与后续 token 计算 Attention 分数为避免重新计算将它们缓存。5.2 物理布局GPU 上的 KV cache 是多维结构包括 Block 维度、Layer 维度、K/V 维度和 Token 维度。Block Manager 中的一个逻辑块对应 GPU 上 24 × 2 48 个物理缓存区域。5.3 用于缓存访问的 Triton KernelNano - vLLM 使用 Triton Kernel 操作 GPU 内存它是高级 GPU 编程语言编译为高效的 CUDA 代码封装了 GPU memory 管理的底层复杂性让上层逻辑更简洁。06 张量并行Tensor Parallelism计算层面第一部分介绍了张量并行的通信模式现在看实际计算如何拆分到各 GPU 上。6.1 Attention 中的并行以 TP 2 为例两张 GPU 都接收完整的隐藏状态每张 GPU 处理一半的 head产生部分输出通过 All - reduce 合并结果。并行发生在 head 维度每张 GPU 看到完整输入但只计算分配的部分 head。6.2 MLP 中的并行MLP 并行类似两张 GPU 接收完整隐藏状态中间维度拆分每张 GPU 计算部分输出通过 All - reduce 合并。6.3 通信的开销张量并行有开销All - reduce 操作增加延迟所以在单机多 GPU 且有高速互联的场景下最有效网络连接的机器间使用效果会大打折扣。其优势是每块 GPU 只需存储部分模型权重能运行单个 GPU 内存装不下的模型。07 思考设计上的权衡取舍了解内部机制后探讨常见设计问题。7.1 网络层Layers数与注意力头Heads数分别控制什么更多网络层数意味着更深的推理能力更多注意力头数支持更丰富的注意力模式。但创建“窄而深”或“宽而浅”的模型效果不佳模型需在广度与深度间取得平衡成功的模型在这些维度间保持大致均衡比例。真正影响模型能力的是训练数据和训练方法而非极端架构设计。7.2 为什么 MoE 架构越来越流行混合专家模型MoE架构受欢迎不是因为单位参数产出更优结果一个 70B 的稠密模型通常表现更好。MoE 让规模扩展成为可能用当前基础设施训练 600B 的稠密模型成本高但总参数量 600B、每词元仅激活 50B 参数的 MoE 模型可训练。它以单位参数效率的适度下降换取触及原本无法达到的模型规模。08 结语至此梳理了从输入提示词到生成文本的流程Tokenization 转换文本为 token IDEmbedding 映射为隐藏状态向量Decode layers 细化隐藏状态KV cache 缓存中间结果LM head 转换为 token 概率分布Sampling 选择输出 tokenTensor parallelism 让步骤在多张 GPU 间扩展。推理引擎统筹流水线模型架构定义计算逻辑。理解这些机制能让大语言模型的“魔法”过程清晰可解。大语言模型本质是精密函数“智能”源于参数规模、训练数据质量和工程巧思。无论部署模型、排查问题还是好奇系统工作原理这份梳理都有帮助。本期互动内容 文章提到推理引擎要重写 model code 来做深度优化。在你自己的实践中有没有遇到过“理论可行但工程跑不动”的部署场景最后是怎么妥协或突破的