LLM-FinOps


文档摘要

LLM-FinOps 本节摘要:传统 FinOps 在 LLM 花费上崩盘。成本是 token 交易,不是资源在线时长。标签映射不上——一次 API 调用是一笔交易,不是一个资产。工程决策(提示设计、上下文窗口、输出长度)就是财务决策。2026 的剧本有三个第一天就要埋点的归因维度:按用户( )用于席位定价与扩张、按任务( + )用于产品面成本与优先级、按租户( )用于单位经济与续约。四层 token——提示、工具、记忆、响应——全塞一个桶会掩盖花费。多租户产品的强制阶梯:按租户限流(预期峰值的 23 倍,清晰的 429 + retry-after);每日花费上限(合同上限的 1.53 倍,触发限流收紧 + 告警);花费 z 分数 >4 的杀开关(自动暂停 + 叫值班)。

LLM-FinOps

本节摘要:传统 FinOps 在 LLM 花费上崩盘。成本是 token 交易,不是资源在线时长。标签映射不上——一次 API 调用是一笔交易,不是一个资产。工程决策(提示设计、上下文窗口、输出长度)就是财务决策。2026 的剧本有三个第一天就要埋点的归因维度:按用户(user_id)用于席位定价与扩张、按任务(task_id + route)用于产品面成本与优先级、按租户(tenant_id)用于单位经济与续约。四层 token——提示、工具、记忆、响应——全塞一个桶会掩盖花费。多租户产品的强制阶梯:按租户限流(预期峰值的 23 倍,清晰的 429 + retry-after);每日花费上限(合同上限的 1.53 倍,触发限流收紧 + 告警);花费 z 分数 >4 的杀开关(自动暂停 + 叫值班)。归因模式:标签聚合、遥测连接器(trace-ID → 账单,精度最高)、采样外推、模型分配、事件溯源、实时流式。单位指标:每解决查询成本、每生成制品成本——不是每百万 token 多少美元。回溯打标总会漏;在请求创建时埋点。

对应原课程:Phase 17 · Lesson 27 · 27-finops-llms(原英文 phases/17-infrastructure-and-production/27-finops-llms/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 解释传统 FinOps(标签 + 分层)为何在 LLM 花费上崩盘,并说出三个新归因维度。
  2. 列举四层 token(提示、工具、记忆、响应),并说明单桶计费为何掩盖成本。
  3. 为多租户产品设计强制阶梯(限流 → 花费上限 → 杀开关)。
  4. 选单位指标(每解决查询成本/每制品成本)而非每百万 token 多少美元。

一、问题与直觉

你的账单写着 4 万美元。你不知道:

  • 哪个租户花的。
  • 哪个产品特性驱动的。
  • 是否有某个用户在滥用。
  • 是提示臃肿、工具调用,还是记忆放大惹的祸。

provider 侧的标签聚合对云资源(EC2、S3)有效,因为标签会传播到账单行。LLM API 调用不会自动打标——你得在调用点给 user/task/tenant 盖戳并贯穿。回溯归因总会漏边界情况。

二、核心概念

三个归因维度

按用户(user_id):谁花了多少。驱动席位定价、扩张对话、识别重度用户。

按任务(task_id + route):哪个产品面花了多少。驱动特性优先级、砍掉昂贵特性的决策。

按租户(tenant_id):哪个客户盈利。驱动单位经济、续约定价、分层阈值。

第一天就在调用点埋三个维度。回溯总是更糟。

四层 token

示例 典型占比
提示 系统 + 用户输入 40~60%
工具 喂回的工具调用结果 20~40%(智能体工作负载)
记忆 先前对话 / 检索文档 10~30%
响应 模型输出 10~30%

全塞一桶让优化变瞎。在归因 schema 里把它们拆开。

强制阶梯

  1. 限流 按租户。预期峰值的 2~3 倍。返回带 Retry-After 的 429。租户感受摩擦;无意外账单。

  2. 每日花费上限 按租户。合同上限的 1.5~3 倍。触发:收紧限流 + 告警客户成功。

  3. 杀开关 花费 z 分数相对租户基线 >4。自动暂停租户;叫值班;升级到运维 + CS。

归因模式

  • 标签聚合:盖元数据头;事后聚合。简单;粗糙。
  • 遥测连接器:经 trace-ID 把链路连到账单。精度最高。成熟团队的做法。
  • 采样 + 外推:采 5~10%,乘上去。对粗略花费划算;漏尾部。
  • 模型分配:回归推断成本驱动。用于无标签的遗留数据。
  • 事件溯源:成本作为事件流(Kafka/Kinesis)。实时。
  • 实时流式:仪表盘亚秒更新。

每单位成本才是单位指标

每百万 token 多少美元是厂商话术。产品指标:

  • 每解决支持工单成本。
  • 每生成文章成本。
  • 每成功智能体任务成本。
  • 每用户会话分钟成本。

把成本绑到产品结果。否则优化无锚。

成本归因 trace 形态

trace_id: abc123 user_id: u_42 tenant_id: t_7 task_id: task_classify_doc route: model_haiku layers: prompt_tokens: 1800 tool_tokens: 600 memory_tokens: 400 response_tokens: 150 cost_usd: 0.0135 cached_input: true batch: false

每次调用都发。存数据湖。按维度聚合。第 13 节的可观测栈就是它住的地方。

复合节省栈

栈:缓存 + 批处理 + 路由 + 网关。四者齐全时:

  • L2 缓存(第 14 节):输入便宜约 10 倍。
  • 批处理(第 15 节):5 折。
  • 路由到便宜模型(第 16 节):60% 成本削减。
  • 网关效率(第 19 节):冗余 + 重试。

最佳叠加:约为朴素基线的 510%。多数团队拉了 23 个杠杆;很少四个全叠。

你该记住的数字

  • 归因维度:按用户、按任务、按租户。
  • 四层 token:提示、工具、记忆、响应。
  • 杀开关:花费 z 分数 >4。
  • 单位指标:每解决查询成本,不是每百万 token 多少美元。
  • 叠加优化:可达基线的 5~10%。

三、从零实现:多租户归因 + 杀开关

原课程 code/main.py 模拟带三级强制阶梯的多租户 LLM 服务,注入一个滥用租户并演示杀开关触发。下面给最小可读的 z 分数杀开关骨架。

def spend_zscore(current_spend, baseline_mean, baseline_std): """花费 z 分数:相对租户历史基线的偏离程度。 current_spend: 当期租户花费 baseline_mean: 该租户历史花费均值 baseline_std: 该租户历史花费标准差 返回: z 分数 """ if baseline_std == 0: return 0.0 return (current_spend - baseline_mean) / baseline_std def kill_switch(z, threshold=4.0): """杀开关:z 分数超阈值即自动暂停租户并叫值班。""" if z > threshold: return {"pause_tenant": True, "page_oncall": True, "reason": f"花费 z={z:.2f} > {threshold},疑似滥用"} return {"pause_tenant": False} # 案例:租户 t_7 历史日均 50 美元(std=8),今日突发 95 美元 z = spend_zscore(95, baseline_mean=50, baseline_std=8) print(f"z={z:.2f}", kill_switch(z)) # z≈5.6 > 4 → 自动暂停 + 叫值班

💡 杀开关的阈值要设在「正常波动之上、演变成真损失之前」。z 分数 >4 是经验值——它意味着「比均值高 4 个标准差」,在正态假设下约万分之一概率是正常波动,几乎可断定是异常。

四、框架对比:归因模式横向对照

模式 精度 实时性 复杂度 适合
标签聚合 粗糙 事后 起步、粗略花费
遥测连接器 最高 近实时 成熟团队、trace-ID 已有
采样外推 中(漏尾部) 近实时 大规模、可接受误差
模型分配 低(遗留) 事后 无标签的遗留数据
事件溯源 实时 已有 Kafka/Kinesis
实时流式 亚秒 需要仪表盘亚秒更新

心法:起步用标签聚合,成熟后升级到遥测连接器(精度最高)。事件溯源与实时流式是高投入高回报,适合规模化的多租户产品。采样外推适合「粗略够用」的场景,但尾部滥用会漏。

五、可复用产物

本节产出 outputs/skill-finops-plan.md(原课程目录)。给定产品与规模,它设计:

  1. 归因 schema:调用点埋点 user_id/tenant_id/task_id/route,以及四层 token 拆分。
  2. 强制阶梯:按租户限流(峰值 23 倍)、每日花费上限(合同 1.53 倍)、杀开关(z>4)。
  3. 单位指标:把成本绑到产品结果(每解决查询/每制品),而非每百万 token。
  4. 复合节省栈:评估缓存 + 批处理 + 路由 + 网关四个杠杆的叠加潜力。

六、练习

  1. 跑通模拟器:运行 code/main.py。杀开关在哪个 z 分数触发?阈值怎么选?

  2. 设计仪表盘:设计一个按租户、按任务的成本仪表盘。先建哪 5 个视图?

  3. 单位经济为负:你最大租户的单位经济为负。按客户影响排序提出三个干预。

  4. 每解决工单成本:为一个支持产品算每解决工单成本:每工单 3M token、每天约 800 工单、GPT-5 缓存费率。

  5. 回溯打标:论证回溯打标是否可能有效。何时可接受?

本节要点回顾

  1. 传统 FinOps 在 LLM 崩盘:成本是 token 交易不是资源在线,标签不传播到账单行。
  2. 工程决策=财务决策:提示设计、上下文窗口、输出长度直接影响成本。
  3. 三个归因维度:按用户(席位/扩张)、按任务(特性成本)、按租户(单位经济),第一天埋点。
  4. 四层 token:提示、工具、记忆、响应——单桶掩盖花费,必须拆开。
  5. 强制阶梯:限流(峰值 23 倍)→ 每日上限(合同 1.53 倍)→ 杀开关(z>4 自动暂停 + 叫值班)。
  6. 归因模式:遥测连接器精度最高(trace-ID → 账单),成熟团队做法;标签聚合起步。
  7. 单位指标是每 X 成本:每解决查询/每制品,不是每百万 token——厂商话术绑不到产品结果。
  8. trace 形态:每次调用发 user/tenant/task/route + 四层 token + 成本 + 缓存/批处理标记。
  9. 复合节省栈:缓存 + 批处理 + 路由 + 网关,四者全叠可达基线 510%,多数团队只拉 23 个。
  10. 回溯打标总会漏:在请求创建时埋点,不要事后补——边界情况必然丢失。

最后一节,我们做全章收尾——自托管服务选型,把前面所有引擎(vLLM、SGLang、llama.cpp、Ollama、TGI)按硬件、规模、工作负载串成一条决策路径,并封上整章「基础设施与生产化」。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U