为什么本地部署才是真正的「零边际成本」
云端免费额度无论怎么领,都有天花板:额度用完就停、限速档位卡住并发、条款一改就失效。本地部署的成本结构完全不同——一次性投入硬件,之后每 100 万 Token 的边际成本趋近于电费。2026 年这条路已经足够成熟:Ollama 负责「好用」,vLLM 负责「能扛」,两者都提供 OpenAI 兼容接口,应用层几乎不用改代码。
关键认知:本地 Token 的「额度」不是领来的,是由显存和量化档位算出来的。算清楚这一步,你才知道自己到底有多少可用产能。
第一步:先算显存预算,再选模型
粗略公式(推理,非训练):
```
权重显存 ≈ 参数量 × 每参数字节数
FP16 ≈ 2 字节/参数
INT8 ≈ 1 字节/参数
INT4 ≈ 0.5 字节/参数
```
再加上 KV Cache 和框架开销,实际预留通常是权重的 1.2~1.5 倍。举例:
- 7B 模型 INT4 ≈ 3.5 GB 权重 → 单卡 12 GB 可跑,留出上下文余量
- 14B 模型 INT4 ≈ 7 GB → 16 GB 卡较舒适
- 32B 模型 INT4 ≈ 16 GB → 需要 24 GB 卡或双卡
- 70B 模型 INT4 ≈ 35 GB → 多卡或量化更激进
先量显存,再定模型尺寸,最后才挑量化档位。顺序反了就会反复 OOM。
第二步:Ollama 做日常层,vLLM 做吞吐层
两者的定位不要混:
Ollama(日常、低并发、热切换)
```bash
ollama pull qwen2.5:14b-instruct-q4_K_M
ollama run qwen2.5:14b-instruct-q4_K_M
# OpenAI 兼容端点默认在 http://localhost:11434/v1
```
适用:个人写代码、单用户问答、需要频繁换模型的场景。Ollama 的模型管理体验好,Modelfile 可以固化 system prompt 与参数。
vLLM(高并发、批处理、吃满显存)
```bash
pip install vllm
vllm serve Qwen/Qwen2.5-14B-Instruct-AWQ \
--quantization awq \
--max-model-len 8192 \
--gpu-memory-utilization 0.90 \
--port 8000
```
--gpu-memory-utilization 0.90 是核心参数:它让 vLLM 把 90% 显存用于 KV Cache,从而支撑更高并发。PagedAttention 让显存碎片大幅减少,连续批处理(continuous batching)让多个请求共享一次前向计算——这是本地吞吐能接近云端小模型的关键。
第三步:把并发上限算成「可计量产能」
并发不是拍脑袋设的。经验关系:
```
最大并发 ≈ (可用显存 - 权重显存) / 单请求 KV Cache
单请求 KV Cache ≈ 2 × 层数 × 隐藏维度 × 序列长度 × 字节数
```
实践中更简单:先用 --max-num-seqs 从 8 起步,压测后逐步上调,观察显存占用与 P99 延迟。超过显存就降 --max-model-len,比降并发更划算。
产能换算:单卡 24 GB 跑 14B INT4,典型输出速度约 40~80 tok/s(取决于卡型与批大小)。按 8 小时满载、平均 60 tok/s 估算,一天约 170 万输出 Token。这就是你的「日额度」——不需要任何平台审批。
第四步:接成 OpenAI 兼容端点,让应用无感切换
两个框架都暴露 /v1/chat/completions,所以应用侧只需改 base_url 与 api_key:
```python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
```
建议做一层薄网关:把 vLLM 作为主后端、Ollama 作为降级后端,主后端超时或过载时自动切到 Ollama。这样单机也能获得「不断供」的体感。
注意事项
- 量化有代价:INT4 在长上下文、数学与代码任务上会有可感知的精度损失。做评测类任务时切回 FP16/INT8,或换更大模型的小量化档。
- 上下文越长,KV Cache 越吃显存:
--max-model-len设得过大,并发会断崖式下跌。按真实任务长度设,不要默认拉满。 - 消费级卡无 NVLink:多卡张量并行在 PCIe 上收益有限,双卡更适合「各跑一个模型」而非「拼一个大模型」。
- 功耗与散热是真实成本:满载电费与散热噪音要计入,长期跑建议限功耗。
- 不是所有模型都适合本地:超大模型即便量化也需多卡,此时云端按量付费可能更经济。
- 合规与数据:本地部署的优势是数据不出内网,但模型许可证(如 Apache 2.0、自定义商用条款)仍需逐个核对。
适用场景
- 个人开发者:日常编码辅助、文档处理,完全离线可用
- 小团队内网:把敏感数据留在本地,用 vLLM 支撑多人共享
- 应用原型:先用本地端点跑通链路,再决定是否上云
- 批量离线任务:数据清洗、分类、摘要,夜间跑满 GPU
结论
本地部署不是「省钱的替代品」,而是一条可控、可计量、不受条款变动影响的 Token 供给线。先把显存预算算清楚,用 Ollama 保日常、用 vLLM 保吞吐,再把两者接成 OpenAI 兼容端点——你的「免费额度」就变成了每天稳定产出的产能。