为什么要本地部署
- 隐私:数据不出公司
- 成本:高频调用云 API 烧钱
- 延迟:数据中心到用户的网络延迟
- 离线:网络不好的环境
- 定制:装自己微调的模型
Ollama:开发 / 单机 / 个人
# 装 Ollama(Mac/Linux/Windows 都有)
curl -fsSL https://ollama.com/install.sh | sh
# 拉模型
ollama pull llama3.1
ollama pull qwen2.5:7b
# 跑
ollama run qwen2.5:7b
# REST API(自动开在 11434 端口)
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [{"role":"user","content":"你好"}]
}'
Python 调 Ollama
import requests
resp = requests.post(
"http://localhost:11434/api/chat",
json={
"model": "qwen2.5:7b",
"messages": [{"role": "user", "content": "你好"}],
"stream": False,
},
)
print(resp.json()["message"]["content"])
或用 OpenAI 兼容 API:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama", # 任意值
)
resp = client.chat.completions.create(
model="qwen2.5:7b",
messages=[{"role": "user", "content": "你好"}],
)
几乎零配置 + OpenAI 兼容——开发首选。
Ollama 的硬件要求
- 7B 模型:8 GB 内存 / 显存
- 13B 模型:16 GB
- 70B 模型:48 GB(一般要 2 张 4090)
不够就跑量化版(qwen2.5:7b-q4_K_M 之类)。
vLLM:生产 / 高并发
pip install vllm
vllm serve Qwen/Qwen2.5-7B-Instruct --port 8000
OpenAI 兼容 API:
client = OpenAI(base_url="http://localhost:8000/v1", api_key="x")
client.chat.completions.create(model="Qwen/Qwen2.5-7B-Instruct", ...)
vLLM 的杀手锏
- PagedAttention:显存利用率超高
- Continuous Batching:动态批处理,吞吐量比 transformers 高 10–20 倍
- 量化支持:AWQ / GPTQ / FP8
- Tensor Parallelism:跨多卡部署大模型
单 A100 跑 70B?vLLM 是答案。
选哪个
| 场景 | 用 |
|---|---|
| 本地开发 / Mac / 个人玩 | Ollama |
| 团队部署 / Linux 服务器 / 中等流量 | Ollama 或 vLLM |
| 生产环境 / 高并发 / SaaS 产品 | vLLM |
| 手机 / 嵌入式 | llama.cpp / MLX (Mac) |
| Windows + 显卡 / 桌面 GUI | LM Studio |
llama.cpp:CPU 也能跑
C++ 实现,支持 CPU 推理 + 量化到 4-bit。Mac 上跑 LLM 几乎都基于它(MLX / Ollama 内部都用)。
brew install llama.cpp # 或源码编译
llama-cli -m model.gguf -p "你好"
该不该自托管:成本对比
云 API 按 token 计费,输入便宜、输出贵几倍——具体数字请看各家定价页(OpenAI / Anthropic),价格随时调整。
本地 7B QLoRA:一张 RTX 4090 + 电费,月成本约几十元到一两百元(取决于使用率和电价)。
经验区间:
- 月 token < 千万:云 API 几乎一定划算
- 月 token 千万 ~ 亿级:要算账,看具体模型和并发模式
- 数据不能出境 / 有合规要求:必须自托管,价格不是首要因素
经验法则
先用 Claude / GPT 跑通 → 上线后看实际流量 → 决定要不要换本地。
不要一开始就自托管——浪费精力调环境,业务还没跑通。
下一篇讲怎么把模型包成 API 部署。