AI News HubLIVE
站内改写2 分钟阅读

生产中减少LLM延迟和推理成本的12种方法

扩展LLM的关键不是增加GPU,而是消除每个请求中的不必要工作。本文介绍了12种实用的减少延迟和成本的方法。

来源KDnuggets作者: Kanwal Mehreen

在将大语言模型(LLM)投入生产时,延迟和成本往往会迅速超出预期。优化通常不在于升级模型或增加GPU,而在于消除不必要的计算。以下12种方法可帮助您有效降低LLM推理延迟和成本。

  1. 先测量正确的延迟指标。全面的监控应包括队列时间、首token时间(TTFT)、token间延迟、端到端延迟、输入输出token数量、缓存命中率以及工具和检索延迟。尾延迟(P95/P99)比平均值更重要,有助于定位瓶颈。
  1. 积极减少输出token。输出token是延迟和成本的主要来源。设置合理的max_tokens限制,要求模型提供简洁答案,使用停止序列,避免重复用户问题,采用紧凑JSON格式。区分“简要回答”和“详细解释”模式,不为用户不读的内容付费。
  1. 将请求路由到最小的可行模型。并非所有任务都需要最大模型。情感分析、数据提取、FAQ回答等重复性任务可用小模型处理。使用模型路由:小模型处理简单请求,低置信度时升级到大模型。
  1. 减少LLM调用次数。避免工作流中包含过多顺序调用。合并步骤,使用单个设计良好的提示替代多次调用。用确定性代码替代LLM处理日期格式化、字段验证等任务。独立任务并行执行。
  1. 设计支持前缀缓存的提示。将系统指令、安全策略、示例等稳定内容放在提示开头,用户请求等变化内容放在后面,以便重用前缀缓存,避免重复处理。
  1. 添加多层缓存。除提示缓存外,使用精确响应缓存(针对相同请求)、语义缓存(针对相似请求)、检索缓存和工具结果缓存。避免重复处理已知信息。
  1. 控制RAG上下文预算。检索过多文档会增大提示、增加延迟和成本。限制检索数量,重排序后输入模型,去重,移除无关内容。为系统指令、检索内容、对话历史等设置独立的token预算。
  1. 将非交互任务移至批处理。数据标注、批量摘要、报表生成等任务不应占用实时资源。使用低优先级队列或批处理API,保护用户体验。
  1. 针对延迟调整批处理。过大的批处理会提高队列时间和TTFT。根据用户服务目标(P95 TTFT、并发量等)调整批处理大小,追求最佳用户体验而非GPU利用率。
  1. 谨慎管理KV缓存和上下文长度。长上下文会快速消耗GPU内存。设置合理的最大上下文长度、输出长度、并发请求数等限制。避免不必要地使用最大上下文窗口。
  1. 基于真实流量测试服务优化。量化、推测性解码、分块预填充等优化并非普遍适用。用生产环境的真实提示长度、输出长度、并发模式进行基准测试。
  1. 添加准入控制和优雅降级。突发流量下,实施用户速率限制、请求大小限制、优先级队列、降级到小模型等策略。确保系统在过载时仍能提供可接受的服务。

通过系统性地应用这些策略,您可以在不显著影响质量的情况下,大幅降低LLM生产应用的延迟和成本。