成本优化对比
本地运行 DeepSeek 还是使用 API?硬件、速度、成本
检查你的 GPU 和内存能否运行 DeepSeek V4-Flash,预期速度是多少,以及何时修改 base_url 更简单。包含成本表。

大概率不行,除非你拥有 128 GB 内存或 Mac Studio 级别的机器,或者你有理由把每个 token 都留在自己的磁盘上。仅 DeepSeek V4-Flash 一个文件就约 100 GB,而一份社区指南报告称,即使在昂贵的硬件上,速度也只有大约每秒 6–10 个 token。对大多数应用和智能体循环来说,更短的路径是把 OpenAI 客户端指向托管 API:你只需修改 base_url 和密钥,代码中其他内容都不用动。
下面介绍:如何在五分钟内检查自己的机器、预期速度是多少,以及真实工作负载通过 API 的成本。
DeepSeek 能装进你的内存吗?#
这里的尺寸来自一份关于在本地运行 DeepSeek 的社区指南(GitHub 上的 deepseek-,共 18 部分,CC BY 4.0,阅读于 2026 年 10 月 22 日)。它是非官方指南,与 DeepSeek 没有关联。该指南自己的页面在尺寸上并不完全一致,所以在开始 100 GB 下载之前,请先在 Hugging Face 模型卡上确认文件大小。
根据该指南,DeepSeek V4-Flash-0731 有 284B 参数,其中每个 token 激活 13B。文件如下:
向右滚动表格 →
| 量化 | 文件大小(指南中的数字) |
|---|---|
| Q3 | 约 103 GB |
| Q4 | 约 155 GB |
| Q8 | 约 162 GB |
模型不必完全放在显存中。llama.cpp 可以把专家层保留在系统内存中,但指南的经验法则很直白:24 GB 的 GPU 旁边需要 128 GB 的内存。
假设你有一台不错的游戏 PC,配有 24 GB GPU 和 64 GB 内存。把两者相加,再与最小的文件比较:
24 + 64 = 88 GB,而 Q3 文件是 103 GB。
装不下,而且操作系统本身还需要内存。如果有 24 GB 显存和 128 GB 内存,你就有 152 GB,103 GB 的文件装得下还有余量。
更新的 DeepSeek-V4.1-Flash-1017 更大:根据同一份指南,约 552B 参数加上 196B 的 Engram,FP8 下约 510 GB,2-bit 下约 167 GB。支持是另一个问题。截至该指南(检查于 2026 年 10 月 22 日),它无法在 Ollama 中运行,因为不支持 deepseek_v41 架构,而 llama.cpp 和 LM Studio 的支持也不在其主分支中。这种情况变化很快,所以在围绕它做规划之前,请查看你所使用引擎的发布说明。
它有多快?#
该指南给出了两项测量结果,都是在重量化下,且都是社区数字,所以请把它们理解为数量级,而不是基准测试:
- 配备 128 GB 的 DGX Spark,V4-Flash 在 IQ2 下:约每秒 6–7 个 token。
- 配备 256 GB 的 Mac Studio M3 Ultra,V4.1-Flash 在 MLX 2-bit 下:约每秒 9.5 个 token。
该指南没有给出 RTX 4090 或 5090 的数字。
那是什么感觉?一个 1,000 token 的回答大约是文本的一页半:
1,000 ÷ 9.5 = 105.3 秒
1,000 ÷ 6 = 166.7 秒
对于边流式输出边阅读的聊天来说,这很慢但可用。对于每个任务要发起几十次调用的智能体来说,这会迅速累积。假设你的循环每天产生 2,000,000 个输出 token,而机器真的不间断地每秒生成 9.5 个 token:
2,000,000 ÷ 9.5 = 210,526 秒
210,526 ÷ 3,600 = 58.5 小时
一天的工作需要超过一天的生成时间。真实服务器会把多个请求批处理在一起,所以对团队来说情况没那么糟,但你会忙于调优引擎,而不是构建产品。
同样的工作负载通过 API 要花多少钱#
让我们把例子具体化。假设一个智能体循环每天发送 1000 万输入 token,得到 200 万输出 token。这些是假设数字,请用你使用日志中的数字替换。
DeepSeek 自己的定价页面(2026 年 10 月 22 日,页面本身未显示日期)列出了 deepseek-flash,由 DeepSeek-V4.1-Flash-1017 提供服务,每 1M token 的价格如下,非高峰 / 高峰:缓存未命中的输入 $0.15 / $0.30,输出 $0.60 / $1.20。高峰时段为 UTC 周一至周五 01:00–04:00 和 06:00–10:00,中国法定节假日除外;非高峰是高峰的一半。缓存命中的输入便宜得多($0.003 / $0.006),所以重复发送相同长前缀的循环会低于这里的数字。
对于假设的工作负载,在缓存未命中的情况下:
非高峰:10 × $0.15 + 2 × $0.60 = 每天 $2.70
高峰:10 × $0.30 + 2 × $1.20 = 每天 $5.40
在 CheapTokens 上,对于同类智能体循环,采用 MiniMax-M2.7(minimax-m2.7):任何时段一个固定价格,没有高峰窗口,每个回答最多 8,192 个输出 token,180K 上下文,所有模型共用一个余额。同样的 1000 万输入和 200 万输出 token 每天花费 $0.80。总体而言,把输入和输出加在一起计算,它比 OpenRouter 便宜;以下是针对这个工作负载的实时表格:
| 模型 | 输入 $/1M | 输出 $/1M | 费用 | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.28 | $0.565 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.35 | $0.789 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.80 | $5.40 |
总计 10,000,000 个输入 token 和 2,000,000 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。
该表格每次显示时都会读取当前价格表,所以价格变化时它仍然正确。完整价格表在 CheapTokens 定价页面上,2026 年 DeepSeek API 定价解释了缓存命中和高峰时段如何改变账单。
自己的硬件什么时候才划算?#
本地 token 每次请求不花钱,但机器要花钱。一个简单的检查方法:
payback days = hardware price ÷ (daily API bill − daily electricity)我这里不给出硬件价格,因为它变动太大;请填入你得到的报价。为了有个感觉,取上面 DeepSeek 定价页面的非高峰账单。每 $1,000 的硬件需要这么多天的 API 账单才能回本,还不算电费和你自己的时间:
1,000 ÷ 2.70 = 370.4 天
而且这还假设机器能承担这个量:在每秒 9.5 个 token 下它做不到(见上面的速度部分),所以对于智能体工作负载,回本算不过来。本地更有意义的情况是:
- 数据不能离开你的网络,而且这比账单更重要;
- 你已经拥有这台机器,且负载很轻,比如个人工具每天几百次请求;
- 你想实验权重本身:量化、微调、自选引擎。
当工作负载是智能体或服务、当你需要几秒内得到答案、或者当你的硬件低于上述内存尺寸时,API 更有意义。如果你的机器连最轻的 DeepSeek 文件都太小,MiniMax-M2.7(180K 上下文,每个回答最多 8,192 个输出 token,总体比 OpenRouter 便宜)是一个可以通过同一客户端尝试的模型。
从本地迁移到托管 API#
业余项目通常从 Ollama 开始,然后超出它的能力。好消息是:本地引擎使用 OpenAI 协议。Ollama 的兼容性页面(docs.ollama.com,检查于 2026 年 10 月 22 日)显示了端点 http:/;客户端需要某个 api_key 值,但 Ollama 会忽略它。流式传输、JSON 模式和工具都能用;logprobs 不行。
所以切换就是两行加上模型名称:
import os
from openai import OpenAI
# Local Ollama: the key is required by the client but ignored by the server
# client = OpenAI(base_url="http://localhost:11434/v1/", api_key="ollama")
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
reply = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7", # take the exact id from the CheapTokens docs
messages=[{"role": "user", "content": "Summarize this ticket in one sentence: ..."}],
max_tokens=200,
)
print(reply.choices[0].message.content)
print(reply.usage)成功时你会看到一句话摘要和一个 usage 对象,包含提示和补全的 token 计数,也就是账单所依据的相同数字。CheapTokens API 也接受 Anthropic Messages 格式,文档逐步展示了第一个请求。如果你对 base_url 不熟悉,OpenAI 兼容 API:base_url 是什么只需两分钟。
如果它不工作#
Connection refused出现在localhost:11434上:Ollama 没有运行,或者你仍然指向本地地址。401:密钥缺失或复制时带了空格;像示例中那样从环境变量读取它。404或未知模型:模型 id 不匹配。本地名称和托管名称不同,所以请从文档中复制 id。
该选哪个#
如果你拥有 128 GB 或更多内存并且好奇,就在家里运行权重并享受控制权。如果你构建的智能体每天消耗数百万 token,或者构建用户等待答案的服务,请使用 API,并把本地设置留作实验。无论哪种方式代码都保持不变,所以你可以从一种开始,以后再迁移到另一种。关于自托管的更多内容,请参阅 DeepInfer 对自托管意味着什么;要通过 API 尝试 DeepSeek,请参阅 CheapTokens DeepSeek 模型。



