从 Bit 到 AGI第十一章:工程化(Serving)

成本治理

从 Bit 到 AGI · 第十一章:工程化(Serving) · Token 预算、分摊与 FinOps

作者 David更新于 第 174 篇(共 186 篇)

A/B 通过 v7 时成本/会话只涨了 4.8%——若全站 日 50 M tokens,那就是 $2 400/月 → $2 520/月。成本治理回答:谁花了多少、上限在哪、如何用 80% 预算拿到 95% 质量——把 GPU 电费、云 API、存储变成可问责的 FinOps 指标,而不是月底一张吓人的账单。

直觉

LLM 成本像水电费按 token 计:开灯(发 prompt)和开空调(长输出)都计价;自托管是「自家发电(GPU 折旧 + 电)」,OpenAI 是「电网直购」。治理就是 每户(team)装表、设限额、峰谷电价(路由到便宜模型)。

图表加载中…

定义

成本治理三层:

层工具产出
MeteringLiteLLM spend logs、vLLM metricstokens in/out per user/team
Budget日/月 cap、告警 80%硬拒绝或降级
Optimization路由、量化、缓存$/resolved_ticket

单位 economics:

$/1K tokens=GPU 月租+电+运维月产出 tokens / 1000\text{\$/1K tokens} = \frac{\text{GPU 月租} + \text{电} + \text{运维}}{\text{月产出 tokens / 1000}}

或云 API 标价表直接加总。

例子

例 1:自托管 vs 云 API(8B 级,2025 市价量级)

方案月成本(100 M tok/mo)$/1M tokensTTFT P95
1×A100 24/7 自托管 vLLM~$2 200$22~650 ms
GPT-4o-mini~$15 000$150~680 ms
混合 80% 自托管 + 20% 4o~$5 200$52~520 ms

自托管 break-even:月 token > ~15 M 通常划算(视 GPU 单价)。

例 2:LiteLLM 团队预算

general_settings:
  max_budget: 1000          # 全局 $/月
  budget_duration: 30d

litellm_settings:
  success_callback: ["langfuse"]

team_settings:
  - team_id: support-bot
    max_budget: 300
    models: ["llama3-8b", "gpt-4o-mini"]
  - team_id: research
    max_budget: 500
    models: ["gpt-4o", "claude-3-5-sonnet"]

support-bot 超 $300 → 403;research 仍可用至 $500。

例 3:降本杠杆排序(实测影响)

措施成本降幅质量影响
INT4 AWQ 8B-35% GPUMMLU -0.3
Prefix cache (RAG)-40% prefill FLOPs无
路由简单问 → 8B,复杂 → 4o-55% API bill复杂题 +2% 失败
max_tokens 512→256 cap-18% out tokens长答截断
Prompt 压缩-25% in tokens需 eval

组合 1+2+3 常见 -60%~70% 总成本。

量化

Token 预算告警:

阈值动作
70% 月预算Slack 通知
90%邮件 + 限流 50%
100%硬停或 仅允许 cheap model

Chargeback(内部摊销):

Team A 账单=∑(tokensi×ratemodeli)+GPU 份额×utilA\text{Team A 账单} = \sum (\text{tokens}_i \times \text{rate}_{\text{model}_i}) + \text{GPU 份额} \times \text{util}_A

GPU 份额按 team A 的 tokens / 全站 tokens 分摊固定成本。

FinOps Review 周期:每周 看 Top 10 消耗 user/endpoint;每月 调路由策略与 reserved GPU。

hidden cost:70B 实验 pod 忘关 $12/h × 720 h = $8 640/月;registry Archived + K8s namespace quota 强制回收。

常见误区

  1. 「只看 $ 不看 tokens」——GPT-4 与 8B 混用时 $ 可比性差;统一 normalized tokens 或 quality-weighted cost。
  2. 「自托管一定便宜」——利用率 < 30% 时自托管贵于 API;小流量用 serverless API。
  3. 「限 max_tokens 就够」——输入侧 RAG 10 K token 文档才是大户;治理 in+out 分开 cap。

FinOps 仪表盘与责任制

每月成本复盘四象限(Leadership 一页纸):

象限指标行动
总 spend$ vs budget超 10% 冻结新实验
单位经济$/1K tok, $/resolved ticket路由优化
利用率GPU avg util<40% 缩 pool
Top wastersuser/endpoint rank限流或教育

Showback vs Chargeback:

  • Showback:只展示账单,不转账——适合早期培养意识
  • Chargeback:部门预算扣款——适合 > $10 K/月 组织

Reserved vs On-demand 决策:月 GPU 小时 >500(≈0.7 卡×24×30)买 1y reserved 省 ~38%;波动大用 on-demand + autoscaling,混合 base reserved + burst on-demand 最常见。

Token 定价内部转移价(示例):

模型内部 $/1M in内部 $/1M out
llama3-8b 自托管$8$16
gpt-4o-mini$120$480
gpt-4o$2 000$8 000

support-bot 用 8B 即「低成本」;research 用 4o 需 VP 审批 budget。

动手试一试

# 估算月费
gpu_hour = 3.0          # $/A100/h
gpus = 2
util = 0.55
tok_per_gpu_s = 2800
seconds_month = 30 * 24 * 3600

monthly_tokens = tok_per_gpu_s * gpus * util * seconds_month
cost = gpu_hour * gpus * 24 * 30
print(f"~{monthly_tokens/1e6:.0f}M tokens/mo, ${cost:.0f}, ${cost/(monthly_tokens/1e6):.2f}/1M tok")

改 util 从 0.3 到 0.7,观察 $/1M tok 如何从 ~$0.99 降到 ~$0.43——利用率是 FinOps 第一杠杆。

这里有个必须说破的地方:上面小结那个 $22/1M 和这里的 $0.43/1M 差了 50 倍,它们并不矛盾——差的就是利用率本身:

场景月 token利用率$/1M
100 M tok/月,1×A100 常开100 M1.4%$21.6
满载 55%,2×A1007 983 M55%$0.54

$22/1M 不是「自托管的价格」,是「把一张 A100 闲置 98.6% 的价格」。 这正是 break-even 的真相:自托管贵不贵,取决于你喂不喂得饱它——喂饱了,它比 GPT-4o-mini($150/1M)便宜的不是 7 倍,是近 300 倍。而喂不饱时,你付的是空转费。

所以「月 token > ~15 M 就该自托管」这条线要连着利用率一起读:低于它的量级,GPU 大部分时间在等,$/1M 被空转推高;真正的问题从来不是「够不够量」,而是「这些量是不是集中到足以填满一张卡」——同样 100 M/月,均匀分布和集中在工作日 9-18 点,是两笔完全不同的账。

小结

成本治理 = Metering + Budget + Optimization;100 M tok/月 自托管 8B 约 $22/1M vs GPT-4o-mini $150/1M。Prefix cache、量化、智能路由组合可 -60%~70%;团队 budget 与 FinOps 周_review 防账单失控。

→ 本章总结:第十一章总结

本页目录