推理优化是应用于生产环境的生成式人工智能应用中的关键部分。在大规模范围内高效使用大型语言模型是一个挑战过去几年里已经开发出了许多技术来加快推理速度并降低成本。在本文中我们将回顾这些技术。A Focus On LLMs Architecture大型语言模型LLMs均基于由瓦斯瓦尼等人于 2017 年发明的 Transformer 架构。该架构在各种语言任务中实现了卓越的准确性、少样本学习能力和接近人类的水平。然而这些基础模型通常包含数十亿至数百亿个参数训练成本高昂在推理过程中资源需求也十分巨大。随着输入上下文的增加推理成本会大幅上升因为需要处理大量输入数据这需要强大的计算能力。这使得高效推理成为一项关键挑战尤其是在管理内存和计算资源方面。在这里插入图片描述更具体地说大多数知名的大型语言模型都是仅具有解码功能的模型例如 GPT-3、GPT-4、LLaMA、Mistral、DeepSeek 等。这些模型是在因果建模任务上进行预训练的其功能类似于下一个词预测器。它们将一系列标记作为输入进行处理并以自回归的方式生成后续标记直到达到停止条件。在仅使用解码器的模型中LLM语言模型推理包含两个关键阶段预填充阶段和解码阶段。在预填充阶段模型处理输入标记以计算生成第一个新标记所需的中间状态键和值。这一阶段类似于矩阵与矩阵的运算具有高度并行性并能高效利用 GPU 能力。相反解码阶段逐个生成标记依赖于先前标记的状态。这一矩阵向量运算受内存限制因为数据传输到 GPU 而非计算速度主要决定了延迟从而导致 GPU 计算能力未得到充分利用。优化解码阶段是解决推理难题的关键所在。其解决方案包括开发高效的注意力机制以及更好地管理键值对以减少内存瓶颈。本文重点介绍了提高推理性能的实用方法假设读者对 Transformer 架构和注意力机制有基本的了解。这些优化对于在实际的大型语言模型部署中提高吞吐量和降低延迟至关重要。此外由于不同语言模型使用了不同的分词器这导致了分词的可比性受到影响。分词大致相当于四个英文字符但其表示形式会因分词器的不同而有所差异这使得对推理吞吐量例如每秒的分词数量的直接比较变得不准确。这种差异性凸显了需要标准化的评估指标以便在推理过程中准确评估和比较语言模型的性能。Batching批处理是提高大型语言模型LLM中 GPU 利用率和吞吐量的关键策略。通过使用同一模型同时处理多个请求批处理能够将模型权重的内存成本分配到各个请求中从而使较大的批次能够利用更多的 GPU 计算能力。然而批次大小存在一定的限制因为过大的批次可能会由于 LLM 的内存需求特别是与键值KV缓存相关的内存需求而导致内存溢出稍后会对此进行详细说明。在这里插入图片描述传统的或静态的批处理方式存在局限性因为一个批次内的请求通常会产生不同数量的完成令牌从而导致执行时间各不相同。这会导致所有请求都要等待最慢的那个请求完成当生成长度差异显著时这种情况可能会带来问题。为了解决这个问题已经开发出了诸如in-flight批处理等高级技术来优化性能。in-flight 批处理也被称为连续式批处理能够应对大型语言模型工作负载的动态特性所带来的挑战。这些工作负载的规模可能从简单的聊天机器人回复到复杂的文档总结或代码生成不等。这些任务会产生大小差异极大的输出使得并行高效地批处理和执行请求变得十分困难。与静态批处理不同in-flight 批处理允许服务器立即从批处理中清除已完成的序列并在其他请求仍在进行时开始处理新的请求。这种方法通过适应实际场景中请求的执行时间变化显著提高了 GPU 的利用率。Multi-GPU Deployment With Model Parallelization模型并行化是管理大规模机器学习模型的内存和计算需求的关键策略它通过将模型分布在多个 GPU 上来实现这一目的。这种方法能够处理超出单个设备内存容量的更大模型或输入批次因此在内存限制严格的情况下对于训练和推理都至关重要。存在多种分割模型权重的技术包括管道并行、张量并行和序列并行每种方法都针对模型分布的不同方面。与数据并行不同数据并行侧重于在设备间复制模型权重以在训练期间处理更大的输入批次这些方法更适用于在训练和推理过程中减少内存占用。在这里插入图片描述管道并行处理将模型纵向划分为一系列顺序的块每个块包含一组被分配到单独设备的层。例如在一个四路管道设置中每个设备负责处理模型四分之一的层并按顺序将输出传递给下一个设备。虽然这显著降低了每个设备的内存需求但它引入了被称为“管道气泡”的低效现象即设备在等待前一层的输出时可能会处于闲置状态。微批处理将输入批次分割成较小的子批次以进行顺序处理可以减少这些“气泡”但无法完全消除它们因为在前向和后向传播过程中闲置时间仍然存在。相比之下张量并行技术将单个层横向拆分为较小的计算块这些计算块可以在不同设备上独立执行。这对于诸如注意力块和多层感知器MLP这样的 transformer 组件尤其有效在这些组件中例如不同的注意力头可以分配到不同的设备上进行并行计算。然而张量并行在诸如 LayerNorm 和dropout操作等操作中效果较差因为这些操作无法轻易分割必须在不同设备上重复执行从而导致用于存储激活值的内存使用出现冗余。这一局限性凸显了需要采用互补方法来优化内存效率的必要性。序列并行性通过沿着输入序列维度对诸如层归一化和丢弃操作等操作进行划分来解决这些操作在内存使用方面的低效问题利用了它们在序列元素之间的独立性。这种方法减少了冗余激活的内存占用使其成为张量并行性的一个有价值的补充。这些并行化技术并非相互排斥可以结合起来进一步优化大型语言模型LLMs。此外针对注意力模块的特定优化策略可以提高可扩展性并减少每个 GPU 的内存需求从而为大型模型实现更高效的训练和推理。Attention Optimization2017 年瓦斯瓦尼等人发表的论文《Attention Is All You Need》介绍了 Transformer 模型其中自注意力机制是其核心。自注意力使模型能够评估句子中不同单词之间的相关性从而增强诸如自然语言处理等任务中的上下文理解能力。该论文对自注意力进行了规范特别是通过了缩放点积注意力SDPA机制该机制将查询和键值对映射为输出使其成为现代神经网络中的关键组成部分。以下是优化注意力计算的一些最重要的技术多头注意力机制MHA是在 SDPA 的基础上发展而来的它通过并行运行多个注意力操作来实现每个操作都有不同的查询、键和值矩阵的投影。这些并行操作或“头”专注于不同的表示子空间从而丰富了模型对输入的理解。这些“头”的输出被连接起来并进行线性投影通过降低每个“头”的维度例如将模型维度除以“头”的数量比如 8保持了与单头注意力相同的计算效率。多查询注意力机制MQA通过在多个注意力头之间共享关键值投影同时保留多个查询投影优化了多头注意力机制MHA在推理过程中的性能。这降低了内存带宽需求以及关键值-值KV缓存的大小从而能够实现更大的批处理规模和更高的计算利用率。然而MQA 可能会略微降低准确性并且使用其的模型需要在训练或微调过程中启用 MQA 来保持性能。分组查询注意力机制GQA通过将查询头进行分组并在每个组内共享键值投影实现了与多头自注意力机制MHA相当的性能同时在计算效率方面又接近查询注意力机制MQA。像 Llama 2 70B 这样的模型采用了 GQA而那些使用 MHA 训练的模型可以通过最少的额外训练即可适应 GQA。MQA 和 GQA 都降低了键值缓存内存需求但缓存管理方面的进一步优化仍有必要。FlashAttention 通过重新安排计算顺序来增强注意力机制从而更有效地利用 GPU 内存层次结构。与传统的逐层处理方式不同FlashAttention 将操作融合在一起并使用“分块”技术一次性计算输出矩阵的小部分从而最大程度地减少内存读/写操作。这种对输入/输出敏感的精确注意力算法能够无缝地集成到现有模型中无需进行任何修改通过优化数据移动实现了显著的性能提升。Key-Value CachingKV 缓存是一种在大型语言模型LLM解码阶段使用的关键优化技术旨在提高自注意力计算的效率。在这一阶段每个生成的标记都依赖于所有先前标记的键K和值V张量包括在预填充阶段和后续解码步骤中计算出的那些。与在每个时间步对每个标记重新计算这些张量不同KV 缓存会将它们存储在 GPU 内存中并在计算出新的张量时将其添加到缓存中。通常模型的每个层都会维护一个单独的 KV 缓存这大大减少了冗余计算并加快了解码过程。在这里插入图片描述在 GPU 上运行大型语言模型LLMs所需的内存主要由两个部分决定模型权重和键值缓存KV 缓存。模型权重由模型的参数组成占据了大量内存例如像 Llama 2 7B 这样具有 70 亿参数的模型在 16 位精度下大约需要 14GB 的内存。而 KV 缓存则用于存储自注意力张量以避免重复计算其大小取决于诸如层数、注意力头数、头维度和精度等因素。对于每个标记缓存大小的计算公式为2 * num_layers * (num_heads * dim_head) * precision_in_bytes其中 2 这个系数同时涵盖了 K 和 V 矩阵。对于一批输入总 KV 缓存大小会随着批次大小和序列长度而变化可能会达到相当大的规模例如对于一个序列长度为 4096、批次大小为 1 的 Llama 2 7B 模型KV 缓存大小约为 2GB。由于 KV 缓存的容量会随着批次大小和序列长度的增加而呈线性增长这给其管理带来了挑战可能会限制吞吐量并使处理长上下文输入变得复杂。常见的低效之处在于静态过度预留的情况即无论实际输入大小如何都会为最大支持的序列长度例如 2048 个标记预留内存。这会导致严重的内存浪费或碎片化因为预留的空间中往往有大量空间在请求的整个生命周期内都处于闲置状态从而占用宝贵的 GPU 内存资源。为解决这些效率低下的问题PagedAttention 算法引入了一种受操作系统分页机制启发的新方法。它将 KV 缓存划分为固定大小的块每个块代表一定数量的标记这些标记可以非连续地存储在内存中。一个块表跟踪这些块在注意力计算过程中根据需要调用它们。随着新标记的生成会动态分配更多的块。这种方法通过消除对连续分配和过度预留的需求最大限度地减少了内存浪费从而能够实现更大的批处理规模并提高吞吐量因此在为 LLM 管理 KV 缓存内存方面是一项重大的进步。Model Optimization在本节中我们将探讨用于优化大型语言模型LLM的各种技术以降低其内存消耗并提升在 GPU 上的性能。主要方法包括量化、稀疏化和蒸馏每种方法针对模型效率的不同方面。这些技术会修改模型权重利用 GPU 硬件加速并将知识转移至更小的模型从而使大型模型能够在有限的硬件上运行同时保持性能。这些方法可能会降低模型的准确性因此使用时应谨慎。量化会降低模型权重和激活值的精度通常会从 32 位或 16 位降低到 8 位或更少位这样可以减少模型占用的内存并更高效地传输数据。由于权重在训练完成后是固定的因此量化权重的过程相对简单而激活值由于存在异常值从而扩大了其动态范围所以量化激活值的过程则更为复杂。例如LLM.int8() 这种技术通过有选择地对某些激活值应用更高的精度或者利用量化权重的动态范围来重复使用该范围来解决这一问题不过 GPU 在执行操作时可能需要将权重转换回更高精度的值。稀疏性涉及剔除接近零的模型值从而生成需要更少内存的稀疏矩阵。GPU 支持结构化稀疏性例如将每四个值中的两个表示为零这能加快计算速度。将稀疏性与量化相结合还能进一步提高执行速度。研究仍在探索针对大型语言模型的最佳稀疏表示方式这为提高推理速度开辟了一条有前景的途径。蒸馏技术将知识从一个较大的“教师”模型传递到一个较小的“学生”模型中既能缩小模型的规模又能保持其性能。例如DistilBERT 与 BERT 相比实现了 40% 的规模缩减和 60% 的速度提升同时保留了 97% 的功能。蒸馏可以包括模仿教师的输出或使用教师生成的数据进行训练比如“逐步蒸馏法”就包含了高效学习的原理说明。然而许多高级语言模型的严格许可限制了适合用于蒸馏的教师模型的可用性。Speculative Inference推测性推理又称推测性采样或辅助生成是一种用于并行执行自回归大型语言模型如 GPT 类型模型的方法这类模型通常逐个生成文本字符。在标准执行过程中每个字符都依赖于所有先前的字符作为上下文这使得并行生成变得不可能因为第 n 个字符必须在第 (n1) 个字符之前生成。推测性推理解决了这一问题它使用一个“成本更低”的草稿模型来同时预测多个后续字符然后由主模型并行地对其进行验证或否定从而实现更快的文本生成。该过程包括使用一种资源消耗较少的方法生成若干标记的续篇草案然后由主模型利用该草案作为推测性上下文进行并行验证。如果验证模型与草案中的标记相匹配则这些标记被接受否则不匹配的标记及其后续标记将被丢弃然后以新的草案重新开始该过程。草案标记可以通过多种方法生成例如训练多个模型、对预训练模型的多个头进行微调以预测未来标记或者使用较小的草案模型与一个更大、更强大的验证模型一起使用每种方法都有其自身的优缺点。Disaggregated Inference“分解式推理”是一种将计算任务分散到不同硬件上的技术旨在优化性能、成本和资源使用。具体而言它将预填充和解码阶段分开处理。通过将这些阶段进行分解每个阶段都可以分配给最适合其计算需求的硬件从而提高效率和可扩展性。在这里插入图片描述预填充是一项计算密集型任务需要进行大量的矩阵乘法运算来处理整个输入提示并生成键值缓存。这一阶段得益于像 GPU 或 TPU 这样的高性能硬件它们在并行计算方面表现出色。由于预填充是每次推理请求时的一次性任务因此可以将其卸载到专门针对此类工作负载进行优化的集中式强大计算节点上。这种设置能够加快对大型提示的处理速度并减轻性能较弱设备的负担使其非常适合在具有高吞吐量硬件的云环境或数据中心环境中使用。相比之下解码则依赖于内存并涉及迭代的令牌生成过程很大程度上依赖于访问键值缓存。它所需的计算能力较少但需要快速的内存访问因此适用于性能较弱、注重内存优化的硬件如中央处理器CPU或边缘设备。将解码转移到独立的硬件上——可能更靠近最终用户例如内部服务器或边缘设备——使分布式推理降低了延迟和网络带宽需求。这种分离使得部署更加灵活预填充在高端云服务器上进行而解码则在本地或边缘设备上进行从而优化资源分配并为实时聊天机器人或交互式人工智能系统等应用实现高效扩展。Conclusion近来为了提升大型语言模型的性能已经发明了许多推理优化技术。要实现这些技术需要对 LLM 架构以及所使用的硬件有深入的了解因此通常使用已经实现了这些技术的现有推理引擎会更简便比如 vLLM、TensorRT-LLM、LMDeploy 等。这里给大家精心整理了一份全面的AI大模型学习资源包括AI大模型全套学习路线图从入门到实战、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等资料免费分享扫码免费领取全部内容1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容