大模型本地部署实战:Ollama + vLLM 完整指南
写在前面:2026 年,大模型本地部署成为企业 AI 落地的刚需。这篇文章详解 Ollama 和 vLLM 的部署方案,包含量化技术、性能优化和真实踩坑记录。
一、为什么需要本地部署?
1.1 云端 API 的局限
| 问题 |
说明 |
影响 |
| 数据隐私 |
敏感数据上传云端 |
合规风险 |
| 网络延迟 |
每次请求往返云端 |
响应慢 |
| 成本不可控 |
按 Token 计费 |
费用高 |
| 依赖外部 |
API 稳定性不可控 |
业务风险 |
1.2 本地部署优势
1 2 3 4
| ✅ 数据不出域 - 符合企业合规 ✅ 零网络延迟 - 本地推理 ✅ 成本固定 - 一次性硬件投入 ✅ 完全可控 - 自主运维
|
二、Ollama 快速上手
2.1 安装 Ollama
Linux 一键安装:
1
| curl -fsSL https://ollama.ai/install.sh | sh
|
验证安装:
2.2 下载模型
查看可用模型:
下载模型:
1 2 3 4 5 6 7 8
| ollama pull qwen2.5:7b
ollama pull llama3:8b
ollama pull chatglm3:6b
|
模型大小对比:
| 模型 |
大小 |
推荐显卡 |
速度 |
| qwen2.5:7b |
4.7GB |
RTX 3060(12G) |
快 |
| llama3:8b |
4.9GB |
RTX 3060(12G) |
快 |
| chatglm3:6b |
4.2GB |
RTX 3060(12G) |
快 |
| qwen2.5:72b |
41GB |
2×RTX 3090 |
中 |
2.3 运行模型
交互式对话:
命令行调用:
1
| ollama run qwen2.5:7b "你好,请介绍一下自己"
|
API 调用:
1 2 3 4 5
| curl http://localhost:11434/api/generate -d '{ "model": "qwen2.5:7b", "prompt": "你好", "stream": false }'
|
三、vLLM 高性能推理
3.1 为什么用 vLLM?
| 特性 |
Ollama |
vLLM |
| 吞吐量 |
中 |
高(2-5 倍) |
| 并发 |
低 |
高(PagedAttention) |
| 量化 |
支持 |
支持更多格式 |
| 易用性 |
简单 |
中等 |
3.2 安装 vLLM
1 2 3 4 5 6
| python3 -m venv vllm-env source vllm-env/bin/activate
pip install vllm
|
3.3 启动服务
单卡部署:
1 2 3 4
| python -m vllm.entrypoints.api_server \ --model Qwen/Qwen2.5-7B-Instruct \ --port 8000 \ --tensor-parallel-size 1
|
多卡部署:
1 2 3 4
| python -m vllm.entrypoints.api_server \ --model Qwen/Qwen2.5-72B-Instruct \ --port 8000 \ --tensor-parallel-size 4
|
3.4 性能测试
测试脚本:
1 2 3 4 5 6 7 8 9 10 11 12
| from vllm import LLM, SamplingParams
llm = LLM(model="Qwen/Qwen2.5-7B-Instruct") prompts = ["你好"] * 100
sampling_params = SamplingParams( temperature=0.7, max_tokens=100 )
outputs = llm.generate(prompts, sampling_params) print(f"处理了 {len(outputs)} 个请求")
|
性能对比:
| 方案 |
吞吐量 |
延迟 |
显存 |
| Ollama |
50 req/s |
200ms |
6GB |
| vLLM |
200 req/s |
100ms |
5GB |
四、量化技术详解
4.1 量化原理
1 2 3
| FP16(16 位浮点) → INT8(8 位整数) → INT4(4 位整数) 14GB 7GB 4GB 100% 精度 98% 精度 95% 精度
|
4.2 量化格式对比
| 格式 |
大小 |
精度损失 |
速度提升 |
| FP16 |
14GB |
0% |
1x |
| INT8 |
7GB |
1-2% |
1.5x |
| INT4 |
4GB |
3-5% |
2x |
| AWQ |
4GB |
2-3% |
2.5x |
4.3 Ollama 量化
自动量化:
手动指定:
1 2 3 4 5
| ollama pull qwen2.5:7b-q4_K_M
ollama pull qwen2.5:7b-q8_0
|
4.4 vLLM 量化
AWQ 量化:
1 2 3
| python -m vllm.entrypoints.api_server \ --model TheBloke/Qwen-2.5-7B-AWQ \ --quantization awq
|
GPTQ 量化:
1 2 3
| python -m vllm.entrypoints.api_server \ --model TheBloke/Qwen-2.5-7B-GPTQ \ --quantization gptq
|
五、消费级显卡部署方案
5.1 显卡选型建议
| 显卡 |
显存 |
推荐模型 |
价格 |
| RTX 3060 12G |
12GB |
7B 模型(INT4) |
¥2000 |
| RTX 3090 24G |
24GB |
13B 模型(INT4) |
¥5000 |
| RTX 4090 24G |
24GB |
13B 模型(FP16) |
¥12000 |
| 2×3090 |
48GB |
70B 模型(INT4) |
¥10000 |
5.2 RTX 3060 12G 部署方案
推荐配置:
1 2 3 4 5 6
|
ollama pull qwen2.5:7b-q4_K_M ollama run qwen2.5:7b-q4_K_M
|
性能:
- 生成速度:30 tokens/s
- 并发:5-10 请求
- 延迟:200-500ms
5.3 多卡部署方案
2×RTX 3090 部署 70B 模型:
1 2 3 4 5
| python -m vllm.entrypoints.api_server \ --model Qwen/Qwen2.5-72B-Instruct \ --tensor-parallel-size 2 \ --port 8000
|
性能:
- 生成速度:15 tokens/s
- 并发:20-50 请求
- 延迟:500-800ms
六、OpenClaw 集成实战
6.1 配置本地模型
修改 openclaw.json:
1 2 3 4 5 6 7 8 9 10 11
| { "models": { "default": "local/qwen2.5-7b", "providers": { "local": { "baseUrl": "http://localhost:11434/v1", "apiKey": "ollama" } } } }
|
6.2 性能对比
| 场景 |
云端 API |
本地部署 |
| 响应延迟 |
500-1000ms |
100-300ms |
| Token 成本 |
¥0.02/1K |
¥0 |
| 数据隐私 |
云端处理 |
本地处理 |
| 稳定性 |
依赖网络 |
完全可控 |
6.3 混合部署策略
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def get_model_provider(task_type): """根据任务类型选择模型""" if task_type == "simple_qa": return "local/qwen2.5-7b" elif task_type == "complex_reasoning": return "aliyun/qwen-plus" elif task_type == "code_generation": return "local/codellama-7b"
|
七、常见问题与解决方案
7.1 问题 1:显存不足
现象:
1
| CUDA out of memory. Tried to allocate 2.00 GiB
|
解决:
1 2 3 4 5 6 7 8
| ollama pull qwen2.5:7b-q4_K_M
--max-num-seqs 16
--gpu-memory-utilization 0.8
|
7.2 问题 2:生成速度慢
现象:
解决:
1 2 3 4 5 6 7 8
| python -m vllm.entrypoints.api_server ...
ollama pull qwen2.5:7b-q4_K_M
--max-tokens 512
|
7.3 问题 3:模型下载失败
现象:
解决:
1 2 3 4 5 6 7 8
| ollama list
export OLLAMA_MIRROR=https://ollama.azhaoai.com
wget https://ollama.ai/models/qwen2.5-7b.gguf
|
八、最佳实践
8.1 模型选择建议
| 场景 |
推荐模型 |
理由 |
| 日常问答 |
Qwen2.5-7B |
速度快,够用 |
| 代码生成 |
CodeLlama-7B |
代码能力强 |
| 复杂推理 |
Qwen2.5-72B |
推理能力强 |
| 多语言 |
Llama3-70B |
多语言支持好 |
8.2 性能优化技巧
| 技巧 |
效果 |
实施难度 |
| 量化 |
2 倍速度 |
⭐ |
| 批处理 |
3 倍吞吐 |
⭐⭐ |
| 缓存 |
50% 减少 |
⭐ |
| 多卡 |
线性提升 |
⭐⭐⭐ |
8.3 监控指标
1 2 3 4 5 6 7 8
| nvidia-smi
curl -w "@curl-format.txt" http://localhost:11434/api/generate
watch -n 1 'curl http://localhost:8000/metrics'
|
九、总结
9.1 核心要点
- Ollama - 快速上手,适合个人
- vLLM - 高性能,适合企业
- 量化 - 减少显存,提升速度
- 消费级显卡 - 性价比最高
9.2 行动建议
个人开发者:
- RTX 3060 12G + Ollama + Qwen2.5-7B
中小企业:
- 2×RTX 3090 + vLLM + Qwen2.5-72B
大型企业:
十、相关链接
作者:John
创建时间:2026-02-22
最后更新:2026-02-22
文档版本:v1.0