Serverless 推理计费核对与费用排查

依据 RunPod、Modal、Replicate 的官方规则,用统一核对表拆分 Serverless 推理的计算、等待、存储、传输、税费与下游调用成本,定位余额、计费周期和失败请求造成的账单异常。

核对 Serverless 推理账单,不能只按“生成耗时”估算;要把启动、执行、空闲等待以及账单中实际出现的存储、传输、税费和下游调用逐项复算。对 RunPod、Modal、Replicate 来说,算力租赁的计时边界并不相同,应先按各自官方规则复算,再逐行核对账单或报价。

先把“运行时间”和“出账时间”分开

运行时间决定费用组成,出账时间决定何时扣款,两者不能混用。

平台 必须纳入的计费边界
RunPod RunPod Serverless 计费规则规定,从 worker 启动到完全停止按秒计费并向上取整;启动、执行和 idle timeout 都属于可计费阶段。
Modal Modal 定价说明将应用加载、输入处理和最后一次输入后的默认 60 s keep-alive 计入用量;缩到零容器后不再收费,也没有每实例最低使用时长。
Replicate Replicate 计费文档说明,public model 只对 active processing 收费,setup 和 idle 免费;private model 与 deployment 则对 setup、idle、active 全程在线时间收费。

上线前建立可复算清单

上线前,把算力租赁报价和账户账单中的适用行项放入同一张表。只保留实际出现的计算资源、存储、传输、订阅、税费、下游调用和额度抵扣,再填写当前报价中的单价:

RunPod: ceil((YOUR_VALUE - YOUR_VALUE) / 1 second) * YOUR_VALUE
Modal CPU/memory: max(YOUR_VALUE, YOUR_VALUE) * YOUR_VALUE * YOUR_VALUE
Replicate private/deployment: (YOUR_VALUE + YOUR_VALUE + YOUR_VALUE) * YOUR_VALUE

estimated_total = YOUR_VALUE
actual_total = YOUR_VALUE
difference = actual_total - estimated_total

RunPod 的两个时间值分别填启动和完全停止时间。Modal 的 max 中分别填申请量与实际用量,再乘计费秒数和当前单价;GPU 按秒数乘单价。Replicate 的三个时间依次是 setup、idle、active,public model 则只取 active time。

按平台固定影响用量的配置

RunPod:记录 endpoint 配置和伸缩规则

在 Endpoint settings 页面记录 Active workers、Max workers、Idle timeout 和 Execution timeout。当前默认值分别为 0、3、5 s 和 600 s;Active workers 即使闲置也会持续收费。

按请求量伸缩时,官方给出的计算式是:

Math.ceil((requestsInQueue + requestsInProgress) / scalerValue)

把当时的 scalerValue、最大 worker 数和请求时间线一起保存,避免只凭最终响应时间反推费用。

Modal:给应用增加成本标签

Modal 账单说明使用 key-value tags 归因成本,官方示例为:

app = modal.App(name="inference-engine", tags={"team": "llm-platform"})

同一条计费周期规则规定,Workspace 用量按月结算并在周期结束时自动扣款;用量首次超过特定阈值时,还可能产生周期中的增量扣款。因此,月中扣款不一定代表重复计费。

Replicate:先确认公开、私有还是 deployment

按 Replicate 的计费规则,先在模型页面的 Run time and cost 查看硬件,再只对按时间计费的模型套用公式。取消或失败也不能一律按“免费”处理:private model 和 deployment 的失败、取消运行会按实例 active time 计费;official model 取消时仍可能收费,按时间计费的模型则计算到取消时点。模型调用其他模型时,还要加入下游模型的计算费用。

一次请求怎样完成核对

  1. 记录请求到达、资源启动、最后输入、缩到零和账单入账时间。
  2. 按上表选择对应平台的时间边界,把时长和当前报价填入复算公式。
  3. 将计算、等待、存储、传输、订阅、税费、额度抵扣和下游调用逐行映射到账单。
  4. 查看 difference 的第一个不一致字段,先修正计费边界或缺失行项,不要直接修改最终合计。

常见费用排查

余额、停止状态与存储对不上

RunPod 计费总览说明,账户先充值 credits,使用时扣减;计费任务每 5 min 运行一次,近期支出可从 Billing 页面的 Billing Explorer 查看。

同一计费页面还说明:数据传输不收费;余额耗尽时,运行中的 Pod 会自动停止,没有 network volume 的 Pod 被终止后数据无法恢复,而 network volume 在 Pod 停止后仍可能产生存储费用;host machine 不可用时则不收取存储费。

不要跨平台套用免费项目

不同平台的模型类型、伸缩方式和账单行项不能直接类比。若当前官方文档没有明确存储、传输或税费规则,就不要自行按零处理;应继续查看当前报价、账单明细和项目配置。排查时分开记录 RunPod 的 Pod 与 worker、Modal 的 app 与 Workspace,以及 Replicate 的 model 与 deployment,避免把不同对象的费用合并后失去归属。

本文步骤按正文所链接的官方文档整理,未运行或测量任何服务;使用前应按当前版本复核。

资料来源