要点
- 模型权重在 16 位下每参数约需 2 字节,8 位 1 字节,4 位 0.5 字节,此外还需上下文缓存空间。
- 租赁 GPU 按占用时长计费,而 API 仅按你发送和接收的 token 计费。
- 输入 token 每 1M $0.15,输出 token 每 1M $0.50,每天 20,000 次对话(每次 1,500 输入和 500 输出),每月成本 $285。
- 当你需要微调、使用不同模型、离线使用或流量稳定且极高时,自建托管更胜一筹。
简短回答:取决于你的流量规模
如果你问如何自行托管 LLM 权重,客观总结是:在自己的机器上运行模型很容易,但让模型为其他人低成本服务很难。笔记本或桌面 GPU 足以满足个人使用。若要同时响应大量用户且全天候服务,则需要更多显存、更多调优以及专人维护。
替代方案是调用托管的 OpenAI 兼容接口并按 token 付费。对于中小规模负载,这几乎总是更便宜,因为你无需支付 GPU 空闲时间费用。对于超大规模且稳定的负载,或需要自有微调模型的任务,自持硬件开始变得合理。以下部分列出了双方的数据,助你找到盈亏平衡点。
这里没有免费套餐。注册后,你可以在 API 密钥页面领取一次 $0.50 试用额度,之后需充值预付额度,最低充值金额为 $20。试用额度足以让你在实际测试自己的提示词,然后再做决定。
托管模型实际需要什么
语言模型是一个巨大的数字文件(权重),在模型运行时必须驻留在快速内存中。文件大小是第一个约束,你可以自行计算:参数量乘以每参数的字节数。
| 模型大小 | 16-bit 权重 | 8 位权重 | 4-bit 权重 |
|---|---|---|---|
| 80 亿参数 | 16 GB | 8 GB | 4 GB |
| 32B 参数 | 64 GB | 32 GB | 16 GB |
| 70B 参数 | 140 GB | 70 GB | 35 GB |
这些仅是权重。此外,你还需要键值缓存的内存,它随每个活跃对话的长度增长,以及运行时的一些余量。名义上适合 24 GB 的模型,在请求长上下文或多个并发用户时可能会内存不足。量化到 4 位会缩小文件大小,但也会略微改变输出质量,且效果因模型而异。
然后是软件方面。你需要推理服务器(如 llama.cpp、Ollama 或 vLLM)、HTTP 层以便应用调用它、崩溃时重启它的方法,以及监控以便及时发现故障。单独看这些都不难,但都需要时间,而时间也是成本的一部分。
方案一:在你的电脑上运行
最便宜的起步方式是使用你现有的机器。Ollama 和 llama.cpp 等工具会下载模型并提供本地服务器,其中许多还提供 OpenAI 兼容的端点,因此你针对它们编写的代码只需更改两个设置即可指向托管 API。
本地托管适合以下情况:
- 你是个人实验者,每次回答只需几秒即可接受;
- 数据绝不能离开机器;
- 你想快速尝试许多不同的开放模型;
- 你拥有足够内存的 GPU,且大部分时间处于闲置状态。
当你需要服务他人、想要的模型大于你的内存,或需要长上下文时,它就不太适合。我们关于 本地无审查模型与托管 API 的对比更详细地探讨了这些权衡,包括小型本地模型与大型托管模型之间回答质量的变化。
对于单个用户,电费是一项真实但微小的支出。更大的成本是你必须购买的硬件,无论是否使用都要付费。如果你已经拥有它,边际成本很低,本地托管在私有实验中很难被超越。
方案二:租赁 GPU 服务器
当你的机器不够用时,下一步是租赁 GPU。提供商按小时收取具有特定 GPU 内存机器的费用。不同提供商之间的价格差异很大且经常变化,因此请查看他们的当前定价,而不是相信你在文章中读到的任何数字,包括本文。
重要的是账单的形式。租赁服务器按开启的小时数收费,无论它是处理一个请求还是零个请求。如果你整月开启,算术很简单:一个月约有 730 小时(一年 8,760 小时除以 12)。假设(纯假设示例,非报价),合适的服务器每小时成本 $1。全天候运行则每月成本 730 × $1 = $730,尚未加上存储、带宽和你的时间。
你可以在不使用服务器时将其关闭,但随后你会付出延迟的代价:将大型模型加载到内存中需要时间,暂停后的第一个用户需要等待加载。自动伸缩设置可以减少这种情况,但会增加复杂性。
与 API 的盈亏平衡点源于价格。一百万输入 token 加一百万输出 token 在此 API 上的成本为 $0.15 + $0.50 = $0.65。你假设的 $730 服务器等于 730 ÷ 0.65 ≈ 1,123 对这样的组合,或每月约 1.1B 输入和 1.1B 输出 token。低于该流量,API 成本更低。高于该流量,利用率良好的服务器可以胜出,前提是其能跟上该流量,这取决于模型、GPU 以及你调优服务器的水平。
方案三:使用托管 API
API 方式消除了硬件、服务器和闲置时间。你发送请求,获得回答,并为使用的 token 付费。定价为输入 token 每 1M $0.15,输出 token 每 1M $0.50,从预付额度按量付费,无订阅。额度永不过期,失败或被拒绝的请求不收费。
以下是三种典型流量下的成本表现。假设典型对话回合使用 1,500 输入 token(系统提示词加历史)和 500 输出 token。
- 一次请求: 1,500 输入 token 成本 0.0015 × $0.15 = $0.000225,500 输出 token 成本 0.0005 × $0.50 = $0.00025。合计 $0.000475。
- 每天 1,000 次对话,30 天: 1,000 × $0.000475 = 每天 $0.475,或每月 $14.25。
- 每天 20,000 次对话,30 天: 20,000 × $0.000475 = 每天 $9.50,或每月 $285。
- 100,000 请求的批处理任务,每次 2,000 输入和 400 输出 token:输入为 200M token,所以 200 × $0.15 = $30;输出为 40M token,所以 40 × $0.50 = $20。总计 $50。
在中间数字下,API 每月成本 $285,远低于假设的始终开启服务器 $730。在最大数字下,你需要更多的流量才能使租赁服务器赶上。你自己的提示词决定实际数字,因此请测量样本而非猜测。每次响应返回的使用量块会告诉你确切的 token 计数。
$0.50 试用额度可覆盖约 1,052 次请求(输入 1,500 token,输出 500 token)(0.50 ÷ 0.000475 ≈ 1,052),足以进行测试。之后你可以以 $20 至 $500之间的任意整数金额充值。大额充值享有奖励:$50 起 +5%,$100 起 +10%,$200 起 +15%,因此充值 $100 可获得 $110 额度。详情见 定价页面。支持银行卡(Visa、Mastercard、Apple Pay、Google Pay)或加密货币(TRC20 上的 USDT、Base 上的 USDC)支付。
不托管你放弃了什么
API 并非没有权衡,在基于它构建之前了解这些权衡是更好的选择。
- 单一模型。 你获得单个开放权重模型,标识为
uncensored。你无法替换其他模型或加载自己的权重。 - 无微调且仅文本。 没有训练接口,没有嵌入,没有图像、音频或视频生成。
- 限制。 完整密钥允许 8 个并发请求和每分钟 300 个请求。试用密钥允许 2 个和 60 个。这适用于大多数应用,但超大批次需要在你的端侧进行排队。
- 上下文。 上下文窗口为 100,000 token(提示词加补全)。
- 你的数据离开你的网络。 提示词不用于训练,但它们确实传输到第三方。如果这对于给定数据集不可接受,请本地托管。
当以下任何一项是硬性要求时,自建托管是更好的选择:使用自有数据微调、API 未提供的特定模型、完全离线运行,或流量足够大以至于自有硬件全天候忙碌。
在购买硬件之前先试用 API
一小时测试的费用低于租用大多数服务器的一小时费用,可帮你判断模型是否能很好地响应你的提示词。该端点兼容 OpenAI,因此如果你已有与本地服务器通信的代码,只需更改 base URL、密钥和模型 ID 即可。此脚本还会根据响应中的用量数据报告每次调用的成本:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise the pros and cons of self-hosting an LLM."}],
)
u = resp.usage
cost = u.prompt_tokens / 1_000_000 * 0.15 + u.completion_tokens / 1_000_000 * 0.50
print(resp.choices[0].message.content)
print(f"in={u.prompt_tokens} out={u.completion_tokens} cost=${cost:.6f}")
用你真实的几十条提示词运行测试,汇总成本行,并乘以你预期的日访问量。这将给你一个可与硬件报价并列设置的数值。如需设置详情,文档 列出了支持的参数,包括流式输出、函数调用和 JSON 模式。
