OpenRouter测算自托管LLM何时比API便宜,Qwen3.8 27B单卡6%到12%负载即打平
Self-Hosted LLM vs API: When Does Self-Hosting Pay Off
- 1OpenRouter测算:租一张RTX 3090跑Qwen3.8 27B,负载约6%到12%即比API便宜
- 2DeepSeek V4.1 Flash租H200对最便宜ZDR永不回本,B200最低租金下需76%负载
- 3自托管成本约每百万token一美分的报价多按缓存输入计,这类token走API也近乎免费
- 4作者称多数隐私需求可用API满足,provider.zdr限零留存端点,欧美域名锁区域
自托管是否省钱本质是利用率问题,GPU时租要对比同一小时token量的API费用,多卡大模型常打不过API,单卡小模型和自有GPU才有成本空间。
- 影响:GPU按小时计租、忙闲都收费,只有工作时段的流量最多约24%利用率,多数团队租卡跑大模型难回本;公开的超低自托管成本多按缓存输入计价,口径不一致会误导采购对比;隐私需求大多可用零留存端点和区域路由满足,自托管留给必须掌控硬件的场景。
- 参考:可先用公式自算平衡点,以现价把GPU每小时租金除以满负荷一小时token的API费用;已有闲置GPU的值得优先评估,其电费口径约1%负载即可打平;可按稳定基流量定自建规模,峰值走API并设置provider.zdr,采购前再核对最新价格。
- 依据:API侧按作者实跑的计费请求测算,自托管侧用公开基准与租金、作者未实际租用;价格为2026年10月8日实价,10月19日新低价端点已把3090平衡点推至约29%。
如果你在为一个开放权重模型支付 API 账单,你可能会琢磨自己的 GPU 是否会更便宜。GPU 租金按小时收取,无论忙闲,而 API 只按你使用的 token 计费。
只有当你的流量让 GPU 在足够多的时间里保持忙碌时,自托管 LLM 才更便宜。按 2026 年 10 月 8 日的价格,一块租用的 RTX 3090 运行 27B 模型大约在 12% 负载时达到盈亏平衡,而租用 H200 运行大型混合专家模型则永远无法胜过最便宜的零数据保留(ZDR)API 端点。
本文使用来自我们 API 的各提供商实时价格算出盈亏平衡点,然后说明我们的数据控制如何覆盖隐私。
TL;DR
-
盈亏平衡负载等于 GPU 每小时租金除以同样一小时的 token 通过 API 的费用。低于该负载时,API 更便宜。
-
在四块租用的 H200 上运行 DeepSeek V4.1 Flash,相对最便宜的 ZDR 端点永远无法达到盈亏平衡。在两块 B200 上,按我们找到的最低租金,它需要 76% 的负载。
-
按 10 月 8 日的价格,Qwen3.8 27B 在一块每小时 $0.50 的 RTX 3090 上于 6% 至 12% 负载时达到盈亏平衡,但每个用户每秒只能获得约 15 个 token。
-
已公布的每百万 token 约一美分的自托管成本,大多计入的是缓存输入 token,而这些 token 通过 API 也几乎是免费的。
-
大多数隐私要求并不需要自托管。provider.zdr 将请求限制在零数据保留端点上,而我们的欧盟和美国域名可让请求保持在区域内。
如何计算自托管是否划算?
取 GPU 一个小时的使用时间,用两种方式给它定价。一边是租金。另一边是 API 对这块 GPU 在用户可接受的速度下一个小时内能服务的 token 所收取的费用。
break-even load = GPU rent per hour / API cost of one fully loaded GPU-hour of tokens盈亏平衡为 30% 意味着 GPU 必须在你租用它的全部时间里保持 30% 的忙碌,成本才会低于 API。任何超过 100% 的数字都意味着即使 GPU 永不休息,API 仍更划算。
两边必须按相同的 token 组合定价,因为输入、缓存输入和输出 token 的 API 价格差别很大。我们也没有计入工程时间以及为流量高峰预留的备用容量,因此本文中的每个盈亏平衡点都是下限。
同一个开放权重模型通过 API 使用要花多少钱?
大多数开放权重模型由多家提供商提供服务。每家提供商在自己的硬件上运行自己的一份权重,并自行定价。我们的端点 API(GET /api/v1/models/{author}/{slug}/endpoints)返回每个提供商对某个模型的价格和精度,而 GET /api/v1/endpoints/zdr 列出采用 ZDR 策略的端点。截至 2026 年 10 月 8 日,它们返回的结果如下:
| 模型 | 端点(ZDR) | 输入 $/M | 缓存输入 $/M | 输出 $/M |
|---|---|---|---|---|
| qwen/qwen3.8-27b | 18 (14) | 0.024 至 0.99 | 0.02 至 0.99 | 1.49 至 5.25 |
| deepseek/deepseek-v4.1-flash | 31 (24) | 0.016 至 0.45 | 0.0007 至 0.20 | 0.14 至 1.80 |
同样的权重,最贵的提供商对 Qwen3.8 27B 输出的收费是最便宜提供商的 3.5 倍,对 DeepSeek V4.1 Flash 则接近 13 倍。仅凭单一标价算出的盈亏平衡点可能偏差很大。各提供商服务的精度也各不相同,从 fp4 到 bf16,我们的LLM 量化文章测量了这会在多大程度上改变答案。
我们为真实工作负载支付的费用
推理模型在回答之前会消耗输出 token 进行思考,而智能体每一轮都会重新发送全部上下文。因此,我们在强制执行 ZDR 的情况下对每个模型运行了两种工作负载,并用 GET /api/v1/generation 为每个请求计价,该接口会报告提供商实际计费的 token 数量和成本:
| 工作负载 | 模型 | 请求数 | 输入 token(缓存比例) | 输出 token(推理比例) | 成本 | 每 1M 输出 token |
|---|---|---|---|---|---|---|
| 基于 5k token 文档的聊天 | DeepSeek V4.1 Flash | 10 | 53,330 (68%) | 12,476 (97%) | $0.0110 | $0.88 |
| 8 轮智能体,60k token 上下文 | DeepSeek V4.1 Flash | 8 | 504,747 (75%) | 28,509 (83%) | $0.0243 | $0.85 |
| 基于 5k token 文档的聊天 | Qwen3.8 27B | 10 | 72,329 (56%) | 25,084 (97%) | $0.0694 | $2.77 |
| 7 轮智能体,85k token 上下文 | Qwen3.8 27B | 7 | 595,223 (100%) | 81,870 (99%) | $0.1900 | $2.32 |
最后一列是用包含输入在内的总成本除以输出 token 得出的。几乎每个输出 token 都是推理 token,而自托管部署的模型同样会花费相同的 GPU 时间来生成它们。Qwen3.8 27B 在 7 轮智能体对话中的 3 轮里,还在思考时就触及了我们 16,000 token 的上限。本文的所有 API 运行总计花费 $0.49。
自托管 LLM 的运行成本是多少?
我们并没有自己租用这些 GPU。自托管一侧采用的是已公开的基准测试和租赁价格,因此请将每一行都视为一个假设:
| 配置 | 单 GPU 吞吐量 | 来源 | 每 GPU 小时租金 |
|---|---|---|---|
| DeepSeek V4.1 Flash,4x H200,vLLM fp4,32 个并发会话 | 35,084 输入 + 231 输出 tok/s,95% 的输入已缓存,每用户 71 tok/s | InferenceX 智能体追踪数据,2026-09-21 | $2.90(InferenceX 零售档),$4.59(RunPod) |
| DeepSeek V4.1 Flash,2x B200,vLLM fp4,32 个并发会话 | 117,225 输入 + 683 输出 tok/s,96% 已缓存,每用户 232 tok/s | InferenceX,2026-10-03 | $3.70(InferenceX 零售),$6.79(RunPod),$6.89(Lambda) |
| Qwen3.8 27B,1x RTX 3090,vLLM W4A16,64 并发 | 在 128 输入 / 512 输出下达到 942 输出 tok/s,每用户约 15 tok/s | HyperQwen 基准测试 | $0.50(RunPod),或者如果是自己拥有的卡,电费约 $0.05(250 W,按 EIA 2026 年 7 月美国居民电价计算) |
DeepSeek V4.1 Flash 拥有 552B 主干参数,因此需要多 GPU 节点。Qwen3.8 27B 是一个稠密模型,以 4 比特量化可放入单张 24 GB 显卡。
吞吐量按 GPU 计算,InferenceX 就是这样报告的,因此本文中的每项成本都是每 GPU 小时的成本。每用户速度只统计正在生成响应的时间,而这些智能体会话把大部分时间花在预填充上,所以不能简单地乘出总吞吐量。3090 的数据来自 HyperQwen 经过大量补丁修改的 vLLM 构建,因此请将其视为最佳情况。
我们采用的是它的端到端数据(包含预填充),而不是其仅解码的 1,035 tok/s 标称数据。HyperQwen 测试的是 128 token 的提示词,而我们的聊天提示词要长得多,因此针对我们的聊天负载组合,我们根据其测得的预填充和解码速率估算出每秒 565 个输出 token。
自托管何时才划算?
对于每种配置,我们取基准测试所测量的一小时 token 量,将其拆分为未缓存输入、缓存输入和输出,并按该模型的所有 ZDR 端点为这一组合定价,然后用租金除以所得结果。API 价格取自 2026 年 10 月 8 日:
| 配置 | 每 GPU 小时租金 | 同一小时的 API 成本,最低 ZDR / 中位数 ZDR | 相对最低 ZDR 的盈亏平衡负载 | 相对中位数 ZDR 的盈亏平衡负载 |
|---|---|---|---|---|
| DeepSeek V4.1 Flash,4x H200 | $2.90 | $1.70 / $3.54 | 永不 | 82% |
| DeepSeek V4.1 Flash,4x H200 | $4.59 | $1.70 / $3.54 | 永不 | 永不 |
| DeepSeek V4.1 Flash,2x B200 | $3.70 | $4.87 / $9.95 | 76% | 37% |
| DeepSeek V4.1 Flash,2x B200 | $6.79 | $4.87 / $9.95 | 从不 | 68% |
| Qwen3.8 27B,1x RTX 3090,短提示词 | $0.50 | $5.89 / $8.35 | 8% | 6% |
| Qwen3.8 27B,1x RTX 3090,我们的聊天混合负载(估算) | $0.50 | $4.33 / $6.14 | 12% | 8% |
| Qwen3.8 27B,自有 RTX 3090,仅电费 | $0.05 | $5.89 / $8.35 | 1% | 1% |
“从不”指即使满载运行,租金也高于 API 成本。价格变动很快。10 月 19 日,一个新的 Qwen3.8 27B ZDR 端点收费为每百万输出 token 0.50 美元,这把短提示的盈亏平衡点推高至约 29%。

从你实际拥有的负载出发。只在工作时间到达的流量——每周 168 小时中的 40 小时——至多只能让 GPU 有 24% 的时间处于忙碌状态。按 10 月 8 日的价格,这排除了所有 DeepSeek 行,只剩下 3090。面对 10 月 19 日的端点,3090 需要约 29% 的利用率,所以购买前请查看当前价格。一个全天候运行的批处理流水线可以达到 70%,这使两行 B200 相对于 ZDR 中位价格都进入可行范围,但相对最低价则都不可行。
按月计算,租用的 3090 每月花费 365 美元,在按我们的聊天混合负载输出约 1.7 亿个 token 后即可回本。双 B200 节点按零售租金每月花费 5,402 美元,必须服务 27 亿个输出 token 才能比最便宜的 ZDR 端点更划算。
小模型胜出的原因在于,与其所需硬件相比,它的 API 价格偏高。各家提供商对 Qwen3.8 27B 收取每百万输出 token 1.49 至 5.25 美元的费用,而一张每小时 0.50 美元的显卡每小时能产出约 340 万个这样的 token。DeepSeek V4.1 Flash 则是相反的情况。有 24 个 ZDR 端点在争夺它的流量,其中最便宜的每百万输出 token 只收 0.18 美元。
3090 的低成本伴随着速度上的取舍。它通过同时服务 64 个请求达到该吞吐量,每个请求约每秒 15 个 token。这对聊天界面来说很慢,对那种在给出答案之前要写出数千个隐藏 token 的推理模型来说就更慢了。在 Qwen3.8 27B 的 18 个 API 端点中,在我们抓取前的 30 分钟内,中位数速度为每秒 45 个 token,最快的为每秒 474 个。
为什么已公开的自托管成本看起来这么低?
如果你见过自托管报价约为每百万 token 一美分,通常原因在于 token 构成。InferenceX 按超大规模云服务商定价,把 DeepSeek V4.1 Flash 跑在 H200 上,成本为每百万 token 0.012 美元。这个数字是按每百万总 token 计的,而在其 agentic 工作负载中,99% 的 token 是输入,其中 95% 由前缀缓存提供。通过 API,该模型的缓存输入每百万收费 0.0007 至 0.20 美元,所以无论哪种方式这些 token 都很便宜。
按每输出 token 计价,同一块 H200 按 2.90 美元的零售租金计算,在计入任何输入之前每百万成本就达 3.49 美元。而最便宜的 ZDR 端点只收 0.18 美元。
为了隐私你需要自托管吗?
隐私是自托管的另一个常见理由,而其中大部分你也可以通过 API 获得。在请求上设置 provider.zdr 会将其限制在不存储你的提示词或补全内容的提供商的端点上。如果你的 ZDR 设置还允许 Safety Retention 端点,那些端点可能会为检测滥用而保留提示词和响应,所以只有在完全不需要保留时才选择 ZDR。支持隐式缓存的提供商也可能在短时间内保留派生的 KV 缓存数据,正如我们的隐式缓存说明所述。你还可以强制执行 ZDR,范围可以是整个账户、单个模型组,或是覆盖特定 API 密钥的护栏。在 Business 和 Enterprise 计划中,发送到 eu.openrouter.ai 或 us.openrouter.ai 的请求只会在该区域内的端点上运行,这些请求宁可失败,也不会离开该区域。
这个脚本把两者都试了一遍,其中包括我们预期会失败的两个请求:
"""The privacy paths: ZDR per request, a ZDR conflict, and EU in-region routing."""
import os
import requests
KEY = {"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"}
MSG = [{"role": "user", "content": "Reply with the word ok."}]
def ask(base, model, provider=None):
body = {"model": model, "messages": MSG, "max_tokens": 400, "provider": provider or {}}
r = requests.post(f"{base}/api/v1/chat/completions", json=body, headers=KEY, timeout=120)
data = r.json()
if r.status_code == 200:
return f"{r.status_code} served by {data['provider']}"
return f"{r.status_code} {data['error']['message']}"
GLOBAL, EU = "https://openrouter.ai", "https://eu.openrouter.ai"
print("1. ZDR on, any provider: ", ask(GLOBAL, "deepseek/deepseek-v4.1-flash", {"zdr": True}))
print("2. ZDR on, only DeepSeek API:", ask(GLOBAL, "deepseek/deepseek-v4.1-flash", {"zdr": True, "only": ["deepseek"]}))
print("3. EU domain, DeepSeek: ", ask(EU, "deepseek/deepseek-v4.1-flash"))
print("4. EU domain, GLM 5.3 + ZDR: ", ask(EU, "z-ai/glm-5.3", {"zdr": True}))
eu_models = requests.get(f"{GLOBAL}/api/v1/models", params={"region": "eu"}, timeout=60).json()["data"]
print(f"5. models eligible for EU in-region routing: {len(eu_models)}")输出记录于 2026 年 10 月 8 日:
1. ZDR on, any provider: 200 served by Decart
2. ZDR on, only DeepSeek API: 404 No endpoints found matching your data policy (Zero data retention). Configure: https://openrouter.ai/settings/privacy
3. EU domain, DeepSeek: 404 No endpoints found supporting your data region.
4. EU domain, GLM 5.3 + ZDR: 200 served by Inceptron
5. models eligible for EU in-region routing: 72这两个过滤器都在我们选择提供商之前运行,因此它们缩小的是候选端点的列表,而不是事后重新路由。开启 zdr 后,DeepSeek 自己的 API 会被排除,因为它会保留数据。用 only 将请求固定到该提供商后就没有任何端点可用,于是返回了第一个 404。EU 域名只保留我们在欧洲已接入的端点。DeepSeek V4.1 Flash 一个都没有,因此第三个请求失败了,而不是悄悄转到美国。要使用 EU 路由,请从 GET /api/v1/models?region=eu 中选择一个有 EU 端点的模型,该接口列出了 72 个模型,其中包括 GLM 5.3。
ZDR 有一个局限。你的提示词仍然在提供商的 GPU 上处理,因此它并不能让你控制硬件。如果你的政策要求模型运行在你控制的部署上,Private Endpoints(Enterprise 计划)可以将你自己的专用或微调部署添加到目录模型的提供商列表中。它必须托管在我们支持 BYOK 的提供商那里,你的团队用相同的 slug 来调用它,而且如果你把它们列出来,公共端点仍可作为后备使用。如果数据绝不能离开你运营的硬件,那就自行托管,并按照上面的盈亏平衡表来规划硬件规模。我们的 ZDR 说明和 数据驻留指南更详细地比较了这些选项。
能否既自行托管又使用 API?
可以,而且对大多数团队来说,盈亏平衡表正指向这种配置。GPU 只有在高负载下才划算,因此按流量的稳定基线来规划自己的 GPU,让它保持忙碌,而把峰值流量发给 API,这样只需为实际用量付费。
这样做之所以可行,是因为 vLLM 和 SGLang 提供的 OpenAI 兼容聊天 API 与我们的相同。客户端只需更改 base URL、密钥和模型名称即可在两者之间切换。遇到连接错误,或者你的服务器在队列已满时返回 429 或 503,就回退到 API。在 API 一侧设置 provider.zdr,让溢出流量保持零数据留存。如果你的政策要求提示词必须留在你控制的硬件上,就不要把溢出流量发给 API。
这种配置有两处可能出问题。如果你本地副本运行的精度与 API 端点不同,同一个提示词可能得到不同的答案,因此请用 提供商路由把 API 一侧固定到匹配的量化版本。而在对话进行到一半时切换后端会丢失其 提示词缓存,所以对话一旦开始,就让它保持在同一侧。
常见问题
自行托管 LLM 值得吗?
单从成本来看,只有能让 GPU 保持忙碌才值得。按我们的数据,在租用的 RTX 3090 上运行 Qwen3.8 27B 在 6% 到 12% 的负载下达到盈亏平衡。在租用的数据中心 GPU 上运行 DeepSeek V4.1 Flash 则需要 37% 或更高的负载,而对比最便宜的零数据留存端点,它往往永远无法达到盈亏平衡。隐私和控制方面的考虑可以让自行托管在任何负载下都物有所值。
哪种 LLM 最适合自行托管?
能装进单个 GPU 的模型最合适,因为它们避开了多 GPU 服务器,而且其 API 价格留出的节省空间最大。例如 Qwen3.8 27B 可以在 4 比特精度下运行在一张 24 GB 显卡上。我们的 排行榜和 开源权重与闭源权重对比显示了开发者最常使用的模型。
最便宜的自行托管 LLM 方案是什么?
一块你已经拥有的 GPU。一块功率限制在 250 W 的 RTX 3090,按 2026 年 7 月美国居民电价计算,电费约为每小时 $0.05,因此只要它的忙碌时间达到约 1%,就比 Qwen3.8 27B 最便宜的零数据保留端点更划算。代价是每位用户的响应速度会更慢,而且你需要自己花时间维护。
我可以托管自己的模型,同时仍通过 OpenRouter 使用它吗?
可以,在 Enterprise 计划中即可。Private Endpoints 会将目录中某个模型的 slug 路由到你自己专用的或经过微调的部署上,托管在我们支持 BYOK 的提供商处。只有你批准的用户和组织才能看到或调用它。
下一步
-
零数据保留:可按请求、按模型组、在护栏中或账户范围内强制执行 ZDR。
-
区域内路由:通过欧盟和美国域名发送请求,并使用护栏强制指定区域。
-
DeepSeek V4.1 Flash 和 Qwen3.8 27B 的模型页面列出了各提供商当前的定价和吞吐量。
来源:OpenRouter:Blog(Announcements) · openrouter.ai