07. 成本高时你一般有哪些优化思路?

整理成本高时你一般有哪些优化思路?的面试回答思路与拆解方式。

简单回答

大模型应用的成本主要来自 GPU 推理(自建)或 API 调用费用(商用),核心优化思路是"减少 token 消耗"和"降低单 token 成本"。具体手段包括:裁剪 Prompt 减少输入 token、控制输出长度、用 Prompt Caching 减少重复计算、用更小/更便宜的模型处理简单任务(模型路由)、缓存高频查询的结果、以及自建部署替代 API 调用(取决于请求量)。

详细解释

成本的构成

用商用 API(OpenAI、Anthropic 等)的成本主要是按 token 计费——输入 token 和输出 token 单价不同(输入通常比输出便宜 3~4 倍)。一个 RAG 请求可能消耗 3000 输入 token(System Prompt + 检索结果 + 用户问题)和 500 输出 token,每天 10 万请求的月成本可能数千到数万美元。

自建部署的成本主要是 GPU 硬件(购买或租用)、电费、运维人力。A100 80GB 的云租赁价格约 2~ 3 美元/小时,一个月就是 1500 ~2000 美元一张卡。

减少输入 token

输入 token 通常是成本大头(因为 RAG 系统的 Prompt 很长)。优化手段:

裁剪上下文——只放最相关的 3~5 个 Chunk 而不是堆 10 个。用 Rerank 分数做阈值过滤,低于阈值的不放。很多时候少放几个高质量 Chunk 效果反而更好——信噪比高了模型表现更好,同时还省了 token。

精简 System Prompt——有些 System Prompt 写得又长又啰嗦,三千 token 的 Prompt 精简到一千 token 效果可能一样。定期审视 Prompt 中哪些指令是真正有用的,哪些是"感觉应该加但实际没效果的"。

Prompt Caching——System Prompt 部分缓存后,API 计费可能降低 50%~90%。这对 System Prompt 很长的场景收益巨大。

对话历史裁剪——多轮对话中历史消息会不断累积。做历史摘要替代完整历史,或者只保留最近 N 轮。

减少输出 token

在 Prompt 中引导模型简洁回答——"请用 2~3 句话回答"。设置 max_tokens 硬限制。对于结构化输出的场景,定义精简的 JSON schema 避免模型输出多余字段。

用更便宜的模型

这是最有杠杆的优化。GPT-4o 的单价是 GPT-4o-mini 的 10 倍以上,但很多任务用 mini 就够了。

模型路由——用分类器判断每个请求的"难度",简单的走便宜模型,复杂的走贵模型。实际效果取决于分类器的准确率和流量中简单/复杂请求的比例。如果 70% 的请求是简单的,路由到便宜模型可以节省约 60% ~65% 的成本。

级联——先用便宜模型尝试回答,如果"信心不够"再转发给贵模型。比模型路由更保守但也更安全——不会因为分类错误而用了不合适的模型。

缓存

语义缓存——对高频 query 缓存回答。客服场景中很多用户问的是类似的问题("怎么退货""运费多少"),命中缓存就完全不需要调用 LLM。缓存命中率取决于 query 的重复度,高频场景下可能达到 30% ~50%。

自建 vs API

请求量小的时候用 API 更划算——不需要买 GPU、不需要运维。但随着请求量增大,API 的变动成本会线性增长,而自建的固定成本(GPU 硬件)不变,边际成本几乎为零。

粗略估算:如果每天的 API 支出超过一张 GPU 的租赁成本(约 50~70 美元/天),就值得考虑自建部署。具体取决于模型大小、请求量、团队运维能力。

自建部署用 vLLM 等框架,配合量化和 Continuous Batching,单卡的吞吐量远高于逐条调 API。但自建需要处理运维、扩缩容、模型更新等工程问题。

批量处理

如果有非实时的批量任务(如每天批量处理一批文档的分类/提取),用 Batch API(OpenAI/Anthropic 都有,价格是实时 API 的 50%)或者在非高峰时段集中处理。

面试时可以这样答

成本优化我通常从三个角度入手。减 token 消耗——裁剪上下文只放高质量 Chunk、精简 System Prompt、用 Prompt Caching。用更便宜的模型——做模型路由把简单请求导给小模型,70% 的请求是简单的就能省 60% 以上的成本。缓存——高频 query 缓存结果,客服场景命中率可以到三四十。

还有一个大的决策是自建还是用 API。请求量小用 API 更划算,但日支出超过 GPU 租赁成本时就该考虑自建了——自建的边际成本几乎为零,配合量化和 vLLM 的吞吐优化,单卡性价比远高于 API。

成本优化的核心原则是不能牺牲效果底线——裁剪上下文、换小模型之前一定要在评测集上验证效果没有明显下降。

常见追问

  1. 模型路由的分类器怎么训练?准确率要到多少才划算?
  2. 你实际项目中每月成本大概多少?做过哪些优化?
  3. 自建部署和 API 的 break-even point 你是怎么算的?