本地 LLM 部署指南
在本地运行大语言模型,保护隐私、降低成本、提升响应速度。
这页适合作为“本地大模型系统部署入口”。真正决定部署体验的,通常不是模型名本身,而是你准备走桌面交互、开发 API、批量推理,还是长期自托管服务。
先按用途选方案
- 个人桌面体验:Ollama / LM Studio
- 高性能推理服务:vLLM
- 轻量本地实验:llama.cpp
- 想快速接 OpenAI 兼容 API:优先 Ollama 或 vLLM
- 想少折腾先验证可行性:先上 7B 级别模型
为什么选择本地部署
优势
- 隐私保护:数据不离开本地设备
- 成本控制:无 API 调用费用
- 离线可用:无需网络连接
- 低延迟:本地推理更快
- 定制化:可微调模型
劣势
- 硬件要求:需要较强的 GPU/CPU
- 模型质量:小模型能力有限
- 维护成本:需要自己管理
硬件要求
最低配置(7B 模型)
- CPU:8 核心以上
- 内存:16GB RAM
- 存储:50GB 可用空间
- GPU:可选,但推荐
推荐配置(13B-34B 模型)
- CPU:16 核心以上
- 内存:32GB RAM
- GPU:NVIDIA RTX 3060 12GB / 4060 Ti 16GB
- 存储:100GB SSD
高端配置(70B+ 模型)
- CPU:32 核心以上
- 内存:64GB+ RAM
- GPU:NVIDIA RTX 4090 24GB / A100 40GB
- 存储:200GB+ NVMe SSD
Ollama(推荐入门)
安装
# Windows
winget install Ollama.Ollama
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
基本使用
# 运行模型
ollama run llama3.2
# 运行中文优化模型
ollama run qwen2.5:7b
# 运行代码模型
ollama run deepseek-coder:6.7b
# 列出已下载模型
ollama list
# 删除模型
ollama rm llama3.2
推荐模型
| 模型 | 大小 | 用途 | 内存需求 |
|---|---|---|---|
| qwen2.5:7b | 4.7GB | 通用中文 | 8GB |
| llama3.2:3b | 2GB | 轻量对话 | 4GB |
| deepseek-coder:6.7b | 3.8GB | 代码生成 | 8GB |
| mistral:7b | 4.1GB | 通用英文 | 8GB |
| phi3:3.8b | 2.3GB | 快速推理 | 4GB |
| qwen2.5:14b | 9GB | 高质量中文 | 16GB |
| codellama:13b | 7.4GB | 代码专家 | 16GB |
API 使用
# 启动服务(默认端口 11434)
ollama serve
# 测试 API
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "你好,介绍一下自己"
}'
集成到 AI 代理
nanobot 配置:
{
"providers": {
"ollama": {
"apiKey": "ollama",
"apiBase": "http://localhost:11434/v1"
}
},
"model": "qwen2.5:7b"
}
OpenClaw 配置:
{
"model": {
"provider": "openai",
"apiBase": "http://localhost:11434/v1",
"apiKey": "ollama",
"model": "qwen2.5:7b"
}
}
自定义模型
创建 Modelfile:
FROM qwen2.5:7b
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
SYSTEM """
你是一个专业的 Python 编程助手,擅长:
- 代码审查和优化
- Bug 修复
- 最佳实践建议
"""
构建模型:
ollama create python-expert -f Modelfile
ollama run python-expert
vLLM(高性能推理)
安装
# 使用 pip
pip install vllm
# 或使用 Docker
docker pull vllm/vllm-openai:latest
启动服务器
# 基本启动
vllm serve Qwen/Qwen2.5-7B-Instruct
# 指定 GPU
vllm serve Qwen/Qwen2.5-7B-Instruct --gpu-memory-utilization 0.9
# 多 GPU
vllm serve Qwen/Qwen2.5-14B-Instruct --tensor-parallel-size 2
# 量化加速
vllm serve Qwen/Qwen2.5-7B-Instruct --quantization awq
Docker 部署
docker run -d \
--name vllm \
--gpus all \
-p 8000:8000 \
vllm/vllm-openai:latest \
--model Qwen/Qwen2.5-7B-Instruct
性能优化
# 启用 PagedAttention
vllm serve model --enable-paged-attention
# 调整批处理大小
vllm serve model --max-num-batched-tokens 8192
# 启用前缀缓存
vllm serve model --enable-prefix-caching
LM Studio(图形界面)
安装
下载:lmstudio.ai
特点
- 图形化界面,易于使用
- 内置模型市场
- 支持 GGUF 格式
- 本地 API 服务器
使用流程
- 打开 LM Studio
- 搜索并下载模型(如 Qwen2.5-7B-GGUF)
- 加载模型到聊天界面
- 或启动本地服务器(端口 1234)
API 集成
{
"providers": {
"lmstudio": {
"apiKey": "lm-studio",
"apiBase": "http://localhost:1234/v1"
}
},
"model": "qwen2.5-7b-instruct"
}
llama.cpp(轻量级)
编译安装
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
# 启用 CUDA(NVIDIA GPU)
make LLAMA_CUDA=1
# 启用 Metal(Apple Silicon)
make LLAMA_METAL=1
下载模型
从 Hugging Face 下载 GGUF 格式模型:
# 使用 huggingface-cli
huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF \
qwen2.5-7b-instruct-q4_k_m.gguf
运行模型
# 交互模式
./llama-cli -m models/qwen2.5-7b-instruct-q4_k_m.gguf -p "你好"
# 服务器模式
./llama-server -m models/qwen2.5-7b-instruct-q4_k_m.gguf \
--host 0.0.0.0 --port 8080
量化模型
# 转换为 GGUF
python convert-hf-to-gguf.py models/Qwen2.5-7B-Instruct
# 量化
./llama-quantize models/qwen2.5-7b-f16.gguf \
models/qwen2.5-7b-q4_k_m.gguf Q4_K_M
模型量化
量化级别对比
| 量化 | 大小 | 质量 | 速度 | 推荐场景 |
|---|---|---|---|---|
| F16 | 100% | 最佳 | 慢 | 评测基准 |
| Q8_0 | 50% | 优秀 | 中 | 高质量需求 |
| Q5_K_M | 35% | 良好 | 快 | 平衡选择 |
| Q4_K_M | 25% | 可用 | 很快 | 日常使用 |
| Q3_K_M | 20% | 较差 | 极快 | 资源受限 |
使用建议
- 16GB 内存:Q4_K_M 量化的 7B 模型
- 32GB 内存:Q5_K_M 量化的 13B 模型
- 64GB 内存:Q4_K_M 量化的 34B 模型
性能对比
推理速度(tokens/s)
| 工具 | 7B 模型 | 13B 模型 | 备注 |
|---|---|---|---|
| Ollama | 30-50 | 15-25 | 易用性最佳 |
| vLLM | 80-120 | 40-60 | 性能最强 |
| LM Studio | 25-40 | 12-20 | 图形界面 |
| llama.cpp | 40-70 | 20-35 | 轻量级 |
测试环境:RTX 4090 24GB
实战案例
案例 1:本地代码助手
配置:
# 下载代码模型
ollama pull deepseek-coder:6.7b
# 启动服务
ollama serve
集成到 VS Code: 安装 Continue 插件,配置:
{
"models": [
{
"title": "DeepSeek Coder",
"provider": "ollama",
"model": "deepseek-coder:6.7b"
}
]
}
案例 2:私有知识库问答
架构:
文档 → 向量化(Embedding)→ 向量数据库(Chroma)
↓
用户提问 → 检索相关文档 → 本地 LLM 生成答案
实现:
from langchain.vectorstores import Chroma
from langchain.embeddings import OllamaEmbeddings
from langchain.llms import Ollama
# 初始化
embeddings = OllamaEmbeddings(model="qwen2.5:7b")
vectorstore = Chroma(embedding_function=embeddings)
llm = Ollama(model="qwen2.5:7b")
# 添加文档
vectorstore.add_texts(["文档内容..."])
# 查询
docs = vectorstore.similarity_search("问题")
answer = llm(f"根据以下内容回答:{docs}\n\n问题:...")
案例 3:离线翻译服务
# 使用专门的翻译模型
ollama pull aya:8b
# 创建翻译助手
ollama create translator -f - <<EOF
FROM aya:8b
SYSTEM "你是专业翻译,将输入翻译为中文"
EOF
# 使用
echo "Hello, world!" | ollama run translator
故障排除
内存不足
# 减少上下文长度
ollama run qwen2.5:7b --ctx-size 2048
# 使用更小的模型
ollama run qwen2.5:3b
GPU 未被使用
# 检查 CUDA
nvidia-smi
# 强制使用 GPU
CUDA_VISIBLE_DEVICES=0 ollama serve
推理速度慢
# 启用 Flash Attention
vllm serve model --enable-flash-attention
# 增加批处理
vllm serve model --max-num-seqs 256
模型推荐
中文对话
- Qwen2.5-7B:阿里通义千问,中文能力强
- GLM-4-9B:智谱 AI,对话流畅
- Yi-6B:零一万物,性能均衡
代码生成
- DeepSeek-Coder-6.7B:代码专家
- CodeLlama-13B:Meta 代码模型
- StarCoder2-7B:多语言支持
轻量级
- Phi-3-3.8B:微软小模型,性能出色
- Llama3.2-3B:Meta 轻量版
- Gemma-2B:Google 小模型
推荐部署顺序
建议按这个顺序推进:
- 先确认硬件和磁盘预算
- 先跑一个小模型
- 再决定是否升级到更大模型
- 再接 UI、API、RAG 或代理工具
- 最后再做并发、监控和长期服务化
常见问题
跑得动但不好用
很多时候不是“本地模型不行”,而是:
- 模型太小
- 量化过重
- 任务不适合本地小模型
- 提示词和工作流没有调整
显存不够怎么办
先考虑:
- 换更小模型
- 用更高量化版本
- 优先 CPU / 混合推理接受更慢速度
- 不要一开始就追 70B 级别
本地部署是不是一定比云 API 省钱
不一定。如果你只是偶尔用、机器本身不强、还要花很多时间维护,云 API 反而更省心。
风险提醒
- 模型和素材会吃掉大量磁盘,目录管理要提前规划
- 本地服务若暴露到局域网或公网,要补鉴权和访问限制
- 先验证场景价值,再逐步追加硬件投入