# 5.10 买卡自托管，多久回本

这份代码回答一个问题：买显卡自己跑开放权重模型，按你的用量、你拿到的显卡报价和你在付的 API 价格，几年能回本。

它算的是最简单的一笔账：每年替代掉的云端费用，减去电费，得到每年净省多少；硬件价格除以这个数，就是简单回本期。云端费用有三种算法，对应三种比较对象：

- `api`：机器满载时一年能产出多少 token，这些 token 按云端 API 的标价值多少钱。可以设输入输出比和缓存命中率。
- `subscription`：拿订阅席位的年费来比。
- `my_bill`：直接拿你每月真实付的 API 账单来比。对大多数个人和小团队，这一行最接近现实。

## 需要什么设备

任何电脑。只用 Python 标准库，不用装包，也不调 API。

## 运行

```bash
cd 5_10_payback
python3 payback.py              # 文章里的六个场景，加上你的 MY_SETUP
python3 payback.py --load 0.25  # 把 api 场景的负载率改成 25%
```

## 该看到什么

前六个场景的数字取自文章《如果我买显卡自托管 GLM 和 DeepSeek，到底要几年才能回本？》（2026 年 7 月），计算器算出来和文章一致：

| 场景 | 24 小时满载 | 负载 25% |
|---|---|---|
| GLM-5.2，8×H200，$40 万，对标 API（不算缓存） | 1.15 年 | 4.62 年 |
| DeepSeek-V4-Flash，2×RTX PRO 6000，$3.25 万，对标 API（不算缓存） | 1.77 年 | 7.07 年 |
| GLM-5.2，8×B300，$40–50 万，对标 agent 负载 API（92% 命中缓存） | 0.19–0.24 年 | 0.78–0.97 年 |
| DeepSeek-V4-Flash，2×RTX PRO 6000，对标 agent 负载 API（92% 命中） | 0.88 年 | 3.51 年 |
| GLM-5.2，8×B300，对标 1 个订阅席位 | 回不了本 | 回不了本 |
| GLM-5.2，8×B300，对标同等用量的 29 个订阅席位 | 21.8–27.3 年 | （同左，席位数按满载折算） |

样例输出见 `sample_output/`（2026-10-23）。

看这张表有三点值得注意。同一台机器，比较对象换一下，回本期可以从两三个月变成二十多年。云端缓存价越便宜，自托管越难回本：GLM 的缓存价是 DeepSeek 的约 93 倍，同样是 92% 命中，GLM 那台不到 3 个月回本，DeepSeek 那台要 10 个月以上。最后，文章的数字都假设机器一年 365 天、每天 24 小时满载；负载降到 25%，回本期大约变成四倍。你的机器实际有多忙，往往比显卡价格更决定结论。

## 换成你自己的数据

打开 `scenarios.py`，改最下面的 `MY_SETUP`：显卡或整机报价、整机功耗、电价、每天开机几小时、你现在每月为这部分工作付的 API 费用。如果你想按满载产能来算，把 `compare` 改成 `'api'`，并填上吞吐（output_tok_per_s，用 5.7 的测速脚本在你的机器上测）、输入输出比、缓存命中率和 API 价格。也可以照着前面的场景复制一份，写进 `SCENARIOS` 列表。

几个容易漏的地方：吞吐要用你实际负载下的数字，不要用宣传的单流峰值；`my_bill` 只该填本地模型真能替代的那部分账单（本地小模型做不了的活，账单还在）；负载率低于 1 时，电费按满载功耗乘开机时间估算，没算待机功耗。计算器只算硬件和电费，机柜、网络、运维人力、停机冗余、折旧和残值都没算，真实的回本期只会更长。
