模型工程系列实战篇。前面把容量、过载、监控都聊完了——这篇收一个最贴肉的话题:推理成本优化。十个动作按「见效速度×实施难度」排序,前三个当天能做,后七个按需排期。每条都带实测数据或明确量级,来自最近一轮真实优化(成本降了 58%)的完整清单。
当天能做的三个(零风险)
动作 1:按量计费审计(省 5~15%)
第一步不是优化,是看清账单构成:按 token 的支出里,输入输出比例多少、哪类请求吃掉大头、失败重试占几个点。实测多数团队的账单里有 5~15% 是「无效支出」:重复请求、调试流量、忘了关的测试任务。看不清的账单没法优化——这是第零动作。
动作 2:上下文瘦身(省 10~25%)
系统提示词瘦身+术语表按需注入(只注入当段命中的术语)+关闭双语回传——三刀下去输入 token 降 30%+,质量不降(上下文膨胀的边际收益本来就是负的)。
动作 3:缓存命中(省 10~30%)
前缀缓存+内容级缓存:翻译/摘要类任务里重复前缀和重复内容占比高(实测术语表类前缀重复率 60%+),缓存命中部分按缓存价计费,直接砍输入成本。
本周能做的四个(低风险)
动作 4:量化(省 30~50% 显存成本)
Q4 量化权重减半,同卡并发翻倍(容量规划篇的换算链直接受益)。质量损失用混合量化兜底:首末层 FP16、中间 Q4,实测中文质量损失从 7% 收到 2%。
动作 5:连续批处理(吞吐 ×2~3)
continuous batching 让同卡并发上限翻倍以上——不上它,后面的动作都在漏水的池子里省水。
动作 6:小模型分流(省 20~40%)
按任务分级路由:简单任务(分类、抽取、短句翻译)走小模型,复杂任务走旗舰。实测 70% 的请求量是小模型能接住的——用旗舰模型跑简单任务是成本最大的浪费形态。
动作 7:错峰与预算(省 5~10%)
批量任务挪到低峰时段(价格或资源都便宜),给每类任务设 token 预算上限,超了自动降级或排队。
按排期做的三个(中风险)
动作 8:请求合并
同类小请求合并批处理(embedding、打标签类),请求数降一个量级,固定开销摊薄。
动作 9:结果复用
同输入的结果在业务层复用(而不是依赖服务层缓存)——业务语义的缓存命中率高得多(用户重看同一页的翻译,业务层直接返回)。
动作 10:架构级——按量 API 与自建的混合
最重的决策:自建 vs 按量 API。我的实测结论(详见系列前篇的算账):持续大流量+数据敏感=自建;波动流量+快速起步=按量。多数团队的甜点是混合:基线流量自建、峰值溢出走按量 API(OpenAI 兼容接口的按量服务切流量就是改个 base_url 的事,比如我实测用的算邻坊就属于这类——按量计费、不用不花钱、和自建集群组成弹性组合)。
一张总表
| 动作 | 省幅 | 难度 | 时效 |
|---|---|---|---|
| 1 账单审计 | 5~15% | 零 | 当天 |
| 2 上下文瘦身 | 10~25% | 低 | 当天 |
| 3 缓存命中 | 10~30% | 低 | 当天 |
| 4 量化 | 30~50%(显存) | 中 | 本周 |
| 5 连续批处理 | 吞吐×2~3 | 中 | 本周 |
| 6 小模型分流 | 20~40% | 中 | 本周 |
| 7 错峰预算 | 5~10% | 低 | 本周 |
| 8 请求合并 | 请求数↓90% | 中 | 排期 |
| 9 结果复用 | 业务定 | 中 | 排期 |
| 10 混合架构 | 结构性 | 高 | 排期 |
执行纪律
按表从上往下做,每个动作做完对账一次(成本曲线+质量回归)——不做回归的优化都是赌博。十个动作全上一轮,实测总账:同等质量下成本 -58%。你的起点大概率在 -30% 以上,因为前三个动作几乎人人有空间。
(模型工程实战:本篇为系列的成本收官——扩缩容 → 混部 → 冷启动 → 输出缓存 → 过载保护 → 灰度发布 → 容量规划 → 监控体系 → 本文:成本清单)