如何有效降低LLM的推理成本

在本文中,我们将探讨业内人士采用的一些技术,以在不产生过高成本的情况下实现尖端模型。

如何有效降低LLM的推理成本

如果您关注我一段时间了,您应该知道我写过一些关于优化和高效训练神经网络的文章。虽然这绝对是一个很好的起点,尤其如果您从事数据/建模方面的工作,但在过去的几年里,整个人工智能行业(从芯片制造商到云超大规模云服务商和基础设施提供商)都专注于一件事——推理扩展。

在本文中,我们将探讨业内人士采用的一些技术,以在不产生过高成本的情况下实现尖端模型。

1、什么是推理扩展?

推理扩展是指随着使用量的增长,高效可靠地运行模型预测的能力。与训练(一次性或间歇性进行)不同,推理会在用户每次发出查询或系统每次生成输出时发生。在生产应用(例如 Gemini、Claude 等)中,每天的操作次数可能从数千次到数百万次不等。如果不采用智能扩展技术,成本很容易失控,原本每月 20 美元的 Gemini Pro 订阅费用可能高达每月 200 美元。

成本增加的原因主要有以下几点:

  • GPU 使用时长——无论您是自行托管还是使用云服务,GPU 都是最大的成本驱动因素。更大的模型需要更多的显存和计算资源,这反过来又会促使您购买/租赁昂贵的硬件。
  • 令牌处理——每个 LLM 都是逐个生成输出的。换句话说,这意味着每次生成新的文本都需要重新计算上下文——当输出内容较长且用户流量较高时,这会造成巨大的成本增加。
  • 内存带宽和数据移动——模型受限于内存:将数据移入和移出显存需要耗费时间和金钱——尤其是在分布式系统中。要减少这种移动,芯片制造商和超大规模数据中心运营商需要构建定制硬件,以尽可能减少这种移动。
  • GPU 空闲时间——如果没有批处理或动态扩展,GPU 就会闲置等待请求,造成资源浪费。高效利用资源是推理过程中的关键所在。

遗憾的是,模型的成本并非线性增长,而是与计算时间、标记数量、硬件选择、利用率和系统拓扑结构相关。理解并优化这些因素,才能确保您的订阅费用控制在每月 20 美元以内。

2、批处理和并行化——吞吐量的主要驱动因素

在硬件层面,LLM 受限于内存而非计算能力。当您运行单个请求时,GPU 的大部分时间都花在等待数据从显存 (VRAM) 传输到处理器上,这无疑是一种资源浪费。为了解决这个问题,我们可以采用以下方法:

2.1 连续批处理

按回车键或点击查看完整尺寸的图片

连续批处理无需等待整个批次完成,而是在为现有批次生成新词元时立即插入新的请求。与逐个处理请求相比,这显著提高了计算效率和资源利用率。当您调用模型时,底层会发生两件事:

  • 预填充 — 一次性处理整个输入提示。这需要大量的矩阵乘法运算,因此并行处理更多序列意味着更高的 GPU 利用率。
  • 解码 — 一次生成一个词元。每个词元都依赖于先前词元的历史记录,因此这主要依赖于内存读写操作。

在每个词元生成步骤中,系统都会检查批次中是否有任何序列已完成。如果有,则会尽快将队列中的新请求插入 GPU,以确保 GPU 始终处于活跃计算状态。

这是以最小的努力获得巨大回报的经典技术。为了进一步榨取 GPU 的性能,批处理技术已经有了多项改进(例如,多箱批处理),但这值得单独讨论。本身就是一个分支。如果您有兴趣了解更多关于连续批处理工作原理的信息,我建议您阅读 Hugging Face 的这篇详细文章

2.2 多 GPU 并行

大多数最先进的模型都非常庞大,无法在单个 GPU 上运行。这时就需要用到多 GPU 并行!在推理过程中,通常会采用张量并行和流水线并行等技术,将模型分配到多个 GPU 上,从而带来以下优势:能够处理更大的模型,并通过并行化繁重的矩阵乘法来提高吞吐量。如果您还不了解这些技术是什么或它们是如何工作的,强烈建议您阅读我存档中的这篇文章

3、深度学习编译器和图执行

Python 的灵活性在生产环境中却成了瓶颈。在底层,像 PyTorch/TensorFlow 这样的库会发出数千次 GPU 内核调用,并将中间结果写入 GPU 的全局高带宽内存 (HBM),随后写入寄存器。所有这些读写操作都会在推理过程中增加大量不必要的开销。这时,推理编译器(例如 Nvidia TensorRT、ONNX Runtime 等)和内核融合就派上了用场。通过将多个操作合并到单个内核中,我们可以有效地消除 GPU 寄存器和内存之间的数据传输开销,并减少内核启动次数。如果您想更深入地了解编译器的工作原理或功能,我也有相关的文章

4、量化——以更少的资源实现更多功能

通常情况下,您并不需要模型权重的全部 16/32 位精度来保持准确性。量化可以降低模型权重的精度(例如,从 FP32/16 降至 INT8 甚至 4 位)。混合量化方法,配合适当的校准,在将模型内存占用减少 4 倍的同时,性能损失几乎可以忽略不计,从而使您可以将 700 亿参数的模型运行在单个 GPU 上,而不是 GPU 集群上。像 Nvidia 的 FP4(在 Blackwell 芯片上)这样的新标准,甚至可以在几乎零精度损失的情况下,将内存使用量减少 50%,有效地使单个 GPU 可以处理的上下文长度翻倍。数学原理很简单:

权重越小 = 内存流量越少 = 每秒处理更多 token

一旦你的量化模型在评估数据集上的回归率低于 1%,你的工作就完成了。

5、键值缓存优化

Transformer 模型在每一层为每个 token 存储两个向量:键 (K) 和值 (V)。它们共同构成了键值缓存,如果没有它,每个 token 都必须从头开始重新计算。然而,键值缓存的内存占用会随着上下文长度线性增长,这体现了软件工程中经典的内存占用与计算资源消耗之间的权衡。这就是分页注意力机制、上下文缓存、分组注意力机制等技术的用武之地。这里就不赘述细节了,以下技术被认为是行业标准:

5.1 分页注意力机制

分页注意力机制借鉴了操作系统虚拟内存的原理,允许将键值缓存存储在非连续的内存块中(类似于虚拟内存)。这消除了碎片化,并允许更高的并发性,从而更容易重用常用前缀。

5.2 上下文缓存

通常情况下,系统提示(尤其是在基于聊天的应用程序中)在多个提示中是相同的。上下文缓存(也称为提示或前缀缓存)的工作原理是识别并缓存频繁重用的文本(预填充阶段),例如较长的系统指令、多轮聊天记录或 RAG 文档,并将后续请求指向相同的数据。如果您发送的请求以一分钟前使用的相同的 2000 个词元的系统提示开头,服务器不会重新读取这 2000 个词元。它会在内存中查找文本的哈希值,找到预先计算的键值张量,然后直接跳转到解码阶段。它提供的一些好处包括:

  • 缩短首词响应时间 (TTFT):对于较长的提示,“预填充”阶段可能需要几秒钟。上下文缓存可以将延迟缩短至毫秒级。
  • 大幅节省成本:由于服务器几乎无需处理缓存的令牌,因此价格比标准输入令牌便宜高达 90%。Anthropic 和 OpenAI 等主要供应商现在都为这些缓存令牌提供折扣价格。
  • 持久的多回合上下文:在基于聊天的上下文中,在应用程序中,每次发送消息时,都会重新发送整个历史记录。如果没有缓存,每次操作都需要为整个历史记录付费。而有了缓存,您只需为新消息及其生成过程付费。

5.3 多查询注意力机制 (MQA) 和分组查询注意力机制 (GQA)

MQA 中,所有查询头共享一个键值头,而不是每个查询头都拥有自己的键值头。对于 32 或 64 个注意力头,这意味着 32 或 64 个相同的信息副本。使用 MQA,如果您的模型有 32 个注意力头,您仍然有 32 个查询头,但每个查询头只有一个键值头和一个值头。相反,GQA 不是让所有查询头共享一个键值头,而是将查询头分成多个组。每个组共享一对键值头。如果实现得当,这可以将缓存大小减少 8 倍甚至更多。

5.4 键值量化

与模型权重量化类似,我们可以将键值对 (K/V) 存储在 INT8 或 INT4 中,而不是 FP16,从而节省一半甚至更多的存储空间和带宽。虽然模型量化已经比较容易理解,但键值量化则更为复杂。如果压缩过度,模型会开始失去逻辑思路,有时甚至会重复自身。不过,像 KIVI 和 FlexGen 这样的现代技术采用了“异常值感知”量化——它们保留一小部分最重要的词元的高精度,同时大幅压缩其余词元。这样可以在模型准确率下降不到 1% 的情况下,大幅节省内存。

5.5 遗忘注意力——局部聚焦策略

滑动窗口注意力技术并非强制每个词元查看庞大序列中的所有其他词元,而是将每个词元的注意力限制在其相邻词元的固定大小窗口 (W) 内(例如,最近的 4096 个词元)。虽然这更像是一种笨拙的解决方法(因为它一旦离开窗口就会忘记一切),但遗忘注意力机制却很巧妙。它使用遗忘门(一种借鉴自早期循环神经网络架构的机制)来判断哪些标记实际上是无用的。

6、迈向稀疏架构

基于Transformer的架构极其密集。模型中的每个参数都会在每个标记上触发,其浮点运算量几乎与模型规模呈线性关系,与上下文长度呈二次方关系。这对于小型模型来说尚可接受,但在生产环境中却难以应用。稀疏性正是解决这一问题的关键,它允许你在不增加密集成本的情况下增加模型容量或长度。有两种方法可以解决这个问题:

6.1 专家混合模型

如果一个特定的提示只需要170亿个参数,为什么还要运行1.8万亿个参数呢?专家混合模型 (MoE) 使用“路由器”来为每个词元仅激活模型的一小部分子集。本质上,它们是由专家子网络和一个门控网络组成的网络,该门控网络能够动态地将输入路由到相应的专家。这使得条件计算成为可能,从而显著提高了大型网络的效率。LLaMA-4 系列模型通过使用专门的“迷你模型”(即专家,最多可扩展到 128 个)推广了这种方法。这使得模型能够在保留大量知识的同时,在推理时仅激活一小部分子集,与密集模型相比,每个词元的 FLOPs 大约减少了 3 倍。如果您有兴趣了解更多信息,Hugging Face 上有一篇非常详细的文章

6.2 稀疏注意力

稀疏注意力遵循“少即是多”的理念,并将其应用于注意力矩阵。该模型并非让每个词元都关注其他所有词元,而是只计算一小部分策略性子集的交互。这使得复杂度从 O(N²) 降低到接近线性 O(NlogN) 甚至 O(N)。

7、推测解码——草稿与审查策略

推测解码是一种优化技术,它通过使用一个小型、低成本的辅助模型来猜测词元,然后再由一个大型、昂贵的专家模型进行验证,从而加快推理速度。其工作原理如下:

  • 草稿(小型模型)——一个小型、快速的模型快速“猜测”多个未来的词元(假设为 n 个词元)。由于模型规模小,因此可以非常快速且低成本地完成此操作。
  • 验证(大型模型)——大型模型对原始上下文以及草稿模型生成的 n 个词元执行一次前向传播。如果该模型与前几个猜测(假设为 k 个)一致,它就会生成下一个代币。这样,只需一次昂贵的内存加载周期,就能获得 k+1 个代币。

实现这一目标的方法有很多,有时在 LLM 中能实现近 2.8 倍的性能提升。该工具在低 QPS 和高 QPS 环境下通常都非常有效,因此是一种提高效率的通用方法。提高效率并降低延迟。

谷歌的研究提出了一种名为推测级联的独特方法。在这种方法中,如果较小的模型有把握完成任务,它会自行完成;如果没有把握,它会为较大的模型生成草稿。这确保了只有在绝对必要时才需要使用“昂贵”的模型。

8、结构化生成——强制正确性

结构化生成(使用约束解码)旨在使模型可控。简而言之,结构化生成是一种强制语言学习模型 (LLM) 遵循特定规则集的技术,例如 JSON 模式、正则表达式 (regex) 或编程语言的语法。当 LLM 输出 JSON 或代码时,它可能会产生错误信息或将词元浪费在对话填充词上。虽然添加检查器看似会增加开销,但实际上它能从三个主要方面降低系统总成本:

  • 消除“重试”循环:如果没有约束,LLM 可能会生成略微损坏的 JSON(例如缺少逗号)。在生产应用中,这会导致错误,迫使系统重新运行整个提示,从而使成本翻倍。
  • 支持更小的模型:通过使用约束,通常可以从更小、更便宜的模型(例如 Llama-8B)中获得“GPT-4 级别”的结构化数据。约束就像一道护栏,防止较小的模型偏离主题或产生错误的格式。
  • 减少输出长度:通过强制模型严格遵循模式,可以防止模型自我解释的倾向(即“喋喋不休”)。生成的标记越少,成本就越低。

这通常使用有限状态机工具(例如 Guidance 或 Outlines)来“强制”模型仅选择有效标记。要详细了解带有约束解码的结构化生成,我强烈建议您阅读 Aidan 的这篇博客。

9、教师-学生蒸馏

这是一种模型压缩技术,它使用一个大型、高性能的教师模型来训练一个更小、更高效的学生模型。学生模型并非仅仅从原始数据中学习,而是被训练来模仿教师的“软”内部逻辑——特别是其概率分布和推理模式。这使得较小的模型能够捕捉大型模型的复杂决策过程,而无需使用相同的庞大硬件。由于较小的模型参数更少,因此它们可以轻松地安装在显存较小的 GPU 中,从而提供更低的延迟、更快的吞吐量和更高的能源效率。实现这一目标的方法有几种——

  • Logit 蒸馏——学生模型匹配教师模型的概率分布这是最有效的模型精炼方法,您应该将至少 80% 的精炼预算投入其中。
  • 响应精炼——学生直接模仿输出。
  • 对齐精炼——学生继承来自更大对齐模型的约束条件。

Gemini 3 Flash 是这项技术的最佳示例之一,它本质上是对功能更强大、规模更大的 Gemini 3 Pro 的精炼!

9、模型剪枝

模型剪枝是一种通过识别并移除模型内部结构中“冗余”或不重要的部分来减小学习学习模型 (LLM) 的规模和计算复杂度的技术。它本质上是一种外科手术式的神经网络“修剪”方法,旨在创建一个更紧凑的版本,其性能几乎与原始版本一样出色。有两种类型:

  • 非结构化剪枝:这种方法将各个权重设置为零,从而产生“稀疏性”。但由于标准硬件通常仍会处理这些零值,因此如果没有专门的内核,实际的速度提升可能有限。
  • 结构化剪枝:这种方法会物理移除整个组件,例如神经元、注意力头,甚至整个层。这可以显著缩小模型体积,从而在标准 GPU 上立即提升速度。

如果您有兴趣了解更多,我撰写了一篇关于不同剪枝技术的文章

10、进程奖励模型 (PRM)

这本质上是一种算法捷径,它不是使用结果奖励模型 (ORM) 检查最终结果,而是通过验证器检查逻辑的每一步。如果路径错误,则会立即将其剪枝。这种搜索+验证的方法使得较小的基础模型能够通过更长的思考时间达到规模大十倍的模型的准确率。PRM(概率资源管理)是OpenAI-O1和DeepSeek-R1等推理模型性能大幅提升的核心秘诀。PRM不仅能加快收敛速度​​和训练速度,还有助于扩展推理时间。也称为测试时计算,因为较小的模型可以“思考”更多:

  • N 点最佳采样 — 模型生成 10 条不同的推理路径。PRM 对所有 10 条路径进行评分,并选择每一步得分最高的路径。
  • 搜索引导 — 在“思考”过程中,PRM 可以充当导航器。如果模型开始执行的推理路径被 PRM 标记为“错误”,则模型可以提前停止并回溯到之前的步骤,从而节省完成注定失败的响应的成本。
  • 更小的模型 — PRM 使更小、更便宜的模型能够超越更大的模型。一个使用 PRM 验证其步骤的 70 亿模型通常可以胜过一个盲目猜测的 700 亿模型。

11、边际改进

即使是最优化的模型也运行在分布式系统上。这些系统包含 CPU、GPU、内存、网络和缓存等众多组件。虽然这些并非显而易见的瓶颈(例如优化浮点运算次数、内存和模型架构),但诸如此类的小优化有时能迅速将性能从 80 提升到 100。

11.1 拓扑感知推理

模型的放置位置以及数据在不同组件间的流动方式通常决定了推理的速度。拓扑感知推理优化了 GPU 之间的数据流动方式。通过最小化网络中的“跳数”(使用 NVLink 或 InfiniBand),可以降低尾延迟(单个响应速度慢),并确保集群不会因网络瓶颈而停滞。

11.2 策略调优

通过直接偏好优化 (DPO) 或基于人类反馈的强化学习 (RLHF) 进行策略调优可以降低冗余度。如果一个模型仅需 50 个令牌(而非 200 个)即可提供准确答案,则成本可降低 75%。如今,各组织都在专门调整模型,使其“成本感知”且简洁。

11.3 基于设计的扩展——“系统之系统”

基于设计的扩展使用路由代理来管理模型集群。

  • 分层推理:简单的查询交给较小的模型处理;复杂的查询交给较大的模型处理。
  • 上下文缓存:如前所述,对于永不改变的系统提示,可以重用计算状态。如果系统提示包含 1000 个令牌,并且每次调用都会用到,那么缓存它可以将预填充成本降低 90% 以上。

11.4 基于模型的扩展

从底层架构开始的创新正在取代标准的 Transformer。例如:

无矩阵乘法模型:最新研究表明,LLM 可以无需矩阵乘法即可构建(使用 -1、0、1 等三元权重),从而实现 10 倍的内存效率提升和人脑级别的功耗。

接受度加权键值 (RWKV) 和线性注意力机制:结合了 Transformer 的快速训练和 RNN 的恒定内存推理。

潜在推理:像 Coconut 这样的模型允许 AI 在“隐藏的数学”(潜在空间)中进行推理,而不是逐字逐句地写出答案,这可以使复杂推理的速度呈指数级增长。

11.5 预填充-解码分离

预填充阶段(接收提示信息)计算量巨大,而解码阶段(输入答案)则受内存限制。高端实验室现在将这些任务拆分到不同的 GPU 集群上执行。一个集群针对高吞吐量进行了优化(预填充节点),然后将键值缓存流式传输到针对低延迟令牌生成进行了优化的解码节点。这种分离可以将整体硬件效率提高 30% 以上。

11.6 多 LoRa 服务

企业无需为 10 个不同的任务托管 10 个不同的微调模型,只需托管一个基础模型,并动态地在 GPU 内存中交换小型 LoRa 适配器即可。这使得您可以使用一个模型的内存占用来服务数千个自定义模型,从而使个性化 AI 在经济上可行。

11.7 闪速注意力

按回车键或点击查看完整尺寸的图片

闪速注意力架构 [来源]

虽然上述大多数优化都侧重于减少计算量,但闪速注意力解决的是一个完全不同的问题。如前所述,GPU 通常花费更多时间在其庞大但速度较慢的 HBM 和体积小但速度极快的片上 SRAM 之间来回传输数据,而不是实际执行矩阵乘法 (MatMul) 操作。Flash Attention 通过一种名为 Tiling 的巧妙技术解决了这种频繁的数据往返问题。它并非尝试一次性处理整个注意力矩阵,而是将查询矩阵、键矩阵和值矩阵分割成大小合适的图块(tile),这些图块可以完美地放入 GPU 的 SRAM 中,并在这些图块内完成所有必要的计算,最后才将最终结果写回内存,从而将内存访问量减少高达 10 倍。正是这种“神奇”的技巧使得现代 LLM 能够处理超过 10 万个 token 的上下文窗口而不会导致硬件崩溃。

12、结束语

随着我们迈入  2026 年——新年快乐!,人工智能行业经历了一次巨大的效率提升。对暴力训练技术的研究正在缓慢地……但如今,智能技术正被一个复杂、分层且高度优化的推理堆栈时代所取代。在这个时代,主要挑战不再仅仅是构建一个全新的智能模型,而是要让智能技术变得经济实惠。

智能技术的成本已经低到几乎无处不在。

对于企业而言,这种转变意味着从耗资巨大的试点项目到能够随着时间推移不断提升投资回报率、最终实现盈利的生产就绪系统之间的区别。对于终端用户而言,这些进步意味着可以以接近零的边际成本使用更大、更强大的模型——有效地将智能技术商品化,而无需承担定期订阅的负担。通俗地说,正是通过这些技术,像谷歌、Anthropic 和 OpenAI 这样的公司才能几乎免费地提供对其最先进模型的访问。


原文链接:How To Reduce Inference Costs While Running LLMs

汇智网翻译整理,转载请标明出处