本地大模型部署
在本地机器上部署和运行大语言模型,脱离云端 API 依赖
为什么本地部署
| 优势 |
说明 |
| 隐私安全 |
数据不出本机,适合企业内网场景 |
| 无速率限制 |
不受 API 调用频率和 Token 配额限制 |
| 低延迟 |
无网络往返,首 Token 延迟更低 |
| 离线可用 |
无需网络,随时随地使用 |
| 成本可控 |
一次硬件投入,无按量计费 |
| 可定制 |
自由选择模型、量化等级、系统 Prompt |
硬件需求参考
| 模型规模 |
量化等级 |
最低显存 |
推荐显存 |
推荐显卡 |
| 1.5B~3B |
Q4_K_M |
2 GB |
4 GB |
RTX 3060 / 集显可跑 |
| 7B~8B |
Q4_K_M |
5 GB |
8 GB |
RTX 3060 8G / RTX 4060 |
| 13B~14B |
Q4_K_M |
8 GB |
12 GB |
RTX 4070 / RTX 3080 12G |
| 32B~34B |
Q4_K_M |
20 GB |
24 GB |
RTX 4090 / RTX 3090 24G |
| 70B~72B |
Q4_K_M |
40 GB |
48 GB |
2×RTX 3090 / A6000 |
| 70B+ |
FP16 |
140 GB+ |
— |
多卡 / 服务器 |
💡 CPU 推理:llama.cpp 支持 AVX2/AVX512 CPU 推理,速度约 5~15 tok/s(7B Q4),适合低频使用
工具对比
| 工具 |
语言 |
易用性 |
性能 |
GPU 支持 |
适合场景 |
配置文档 |
| Ollama |
Go |
⭐⭐⭐⭐⭐ |
⭐⭐⭐ |
✅ |
个人开发,极简上手 |
配置指南 |
| llama.cpp |
C++ |
⭐⭐⭐ |
⭐⭐⭐⭐ |
✅ |
极致性能,自定义编译 |
配置指南 |
| LM Studio |
Electron |
⭐⭐⭐⭐⭐ |
⭐⭐⭐ |
✅ |
GUI 用户,零代码 |
配置指南 |
| vLLM |
Python |
⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
✅ |
高并发服务,生产级 |
配置指南 |
| LocalAI |
Go |
⭐⭐⭐ |
⭐⭐⭐⭐ |
✅ |
OpenAI 兼容 API |
配置指南 |
| text-generation-webui |
Python |
⭐⭐⭐⭐ |
⭐⭐⭐ |
✅ |
Web UI,多后端 |
配置指南 |
| GPT4All |
C++/Python |
⭐⭐⭐⭐ |
⭐⭐⭐ |
❌(CPU) |
CPU 推理,跨平台 |
配置指南 |
| MLC LLM |
Python/C++ |
⭐⭐⭐ |
⭐⭐⭐⭐ |
✅ |
移动端/浏览器部署 |
配置指南 |
Ollama(推荐入门)
安装
| Bash |
|---|
| # macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows
# 下载安装包:https://ollama.com/download/windows
|
常用命令
| Bash |
|---|
| # 拉取模型
ollama pull qwen2.5:7b
ollama pull llama3.1:8b
ollama pull deepseek-coder-v2:16b
# 查看已安装模型
ollama list
# 运行对话
ollama run qwen2.5:7b
# 删除模型
ollama rm qwen2.5:7b
# 查看模型信息
ollama show qwen2.5:7b
|
API 调用
| Bash |
|---|
| # 生成(兼容 OpenAI API 格式)
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "为什么天空是蓝色的?",
"stream": false
}'
# 对话
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [
{"role": "user", "content": "你好,请自我介绍"}
]
}'
# OpenAI 兼容接口
curl http://localhost:11434/v1/chat/completions -d '{
"model": "qwen2.5:7b",
"messages": [
{"role": "user", "content": "Hello"}
]
}'
|
自定义 Modelfile
| Docker |
|---|
| # Modelfile 示例
FROM qwen2.5:7b
# 设置系统提示词
SYSTEM """
你是一个专业的Python开发助手,回答简洁准确。
"""
# 设置参数
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
# 设置模板
TEMPLATE """
{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{- end }}
<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}<|im_end|>
"""
|
| Bash |
|---|
| # 创建自定义模型
ollama create my-assistant -f Modelfile
# 运行
ollama run my-assistant
|
推荐 GPU 配置
| Bash |
|---|
| # 指定 GPU
OLLAMA_GPU=0 ollama run qwen2.5:7b
# 多 GPU
OLLAMA_GPU=0,1 ollama run qwen2.5:32b
# 纯 CPU 模式
OLLAMA_GPU=-1 ollama run qwen2.5:7b
|
llama.cpp(推荐进阶)
编译安装
| Bash |
|---|
| git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# CUDA GPU 编译
cmake -B build -DGGML_CUDA=ON && cmake --build build --config Release -j
# 纯 CPU 编译(AVX2)
cmake -B build && cmake --build build --config Release -j
# Metal (macOS)
cmake -B build -DGGML_METAL=ON && cmake --build build --config Release -j
|
模型量化
| Bash |
|---|
| # 下载原始模型后,先转换为 GGUF FP16
python convert-hf-to-gguf.py /path/to/model --outfile model-f16.gguf
# 量化为 Q4_K_M(推荐平衡点)
./llama-quantize model-f16.gguf model-q4_km.gguf Q4_K_M
# 量化等级说明
# Q4_K_M — 4bit,推荐默认,质量/大小平衡
# Q5_K_M — 5bit,质量更好,体积稍大
# Q8_0 — 8bit,接近原质量,体积翻倍
# Q2_K — 2bit,极致压缩,质量损失明显
|
命令行推理
| Bash |
|---|
| # 基本对话
./llama-cli -m model-q4_km.gguf -p "你好,请自我介绍" -n 512
# 交互模式
./llama-cli -m model-q4_km.gguf -i -cnv
# 指定 GPU 层数
./llama-cli -m model-q4_km.gguf -ngl 99 -i -cnv
# 调整参数
./llama-cli -m model-q4_km.gguf \
--temp 0.7 \
--top-p 0.9 \
--repeat-penalty 1.1 \
-c 4096 \
-i -cnv
|
HTTP 服务
| Bash |
|---|
| # 启动服务(OpenAI 兼容 API)
./llama-server -m model-q4_km.gguf -ngl 99 --port 8080
# 调用
curl http://localhost:8080/v1/chat/completions -d '{
"model": "model-q4_km",
"messages": [{"role": "user", "content": "你好"}]
}'
|
性能调优
| 参数 |
说明 |
建议 |
-ngl |
GPU 层数,0=纯CPU |
设为模型层数(全GPU) |
-b |
batch size |
默认 512,大显存可增大 |
-ub |
微批次大小 |
CPU 推理时设小 |
-c |
上下文长度 |
按需设置,越大越吃显存 |
--mlock |
锁定内存,防止换页 |
推荐开启 |
--parallel |
并行请求数 |
服务化时按需增大 |
vLLM(推荐生产级)
安装
基本使用
| Python |
|---|
| from vllm import LLM, SamplingParams
llm = LLM(model="Qwen/Qwen2.5-7B-Instruct")
params = SamplingParams(temperature=0.7, max_tokens=512)
outputs = llm.generate(["你好,请自我介绍"], sampling_params=params)
for output in outputs:
print(output.outputs[0].text)
|
OpenAI 兼容服务
| Bash |
|---|
| # 启动服务
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--gpu-memory-utilization 0.9 \
--max-model-len 4096
# 调用(与 OpenAI SDK 兼容)
curl http://localhost:8000/v1/chat/completions -d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "你好"}],
"stream": true
}'
|
关键参数
| 参数 |
说明 |
建议 |
--gpu-memory-utilization |
GPU 显存利用率 |
0.85~0.95 |
--max-model-len |
最大上下文长度 |
按需设置 |
--quantization |
量化方法 |
awq / gptq / fp8 |
--tensor-parallel-size |
张量并行(多GPU) |
按 GPU 数量 |
--enable-prefix-caching |
前缀缓存 |
开启可加速重复 Prompt |
--enable-chunked-prefill |
分块预填充 |
提升吞吐 |
LM Studio(推荐 GUI 用户)
特点
- 图形界面,零代码上手
- 内置模型搜索和下载(HuggingFace)
- 自动硬件检测和配置
- 内置 OpenAI 兼容 API 服务
- 支持对话、补全、Embedding
使用步骤
- 下载安装:https://lmstudio.ai/
- 搜索并下载模型(如 Qwen2.5-7B-Instruct-GGUF)
- 选择模型 → 开始对话
- 开启本地 API 服务(Local Server 标签页)
推荐本地模型
通用对话
代码模型
Embedding 模型
完整部署架构示例
| Text Only |
|---|
| ┌─────────────────────────────────────────────────┐
│ 前端 (Vue/React) │
│ 流式渲染 / Markdown / 代码高亮 │
└────────────────────┬────────────────────────────┘
│ SSE / WebSocket
┌────────────────────▼────────────────────────────┐
│ Go API Gateway │
│ 认证 / 限流 / 路由 / 缓存 / 日志 │
└────────┬───────────┬───────────┬────────────────┘
│ │ │
┌────────▼──┐ ┌────▼─────┐ ┌─▼──────────┐
│ Ollama │ │ vLLM │ │ llama.cpp │
│ (开发) │ │ (生产) │ │ (极致性能) │
│ :11434 │ │ :8000 │ │ :8080 │
└────┬──────┘ └────┬─────┘ └────┬────────┘
│ │ │
┌────▼──────────────▼──────────────▼────────────┐
│ 模型存储 (GGUF / Safetensors) │
│ Qwen2.5-7B-Q4 / Llama3.1-8B / Embedding │
└───────────────────────────────────────────────┘
|
常见问题
Q: 显存不够怎么办?
- 使用更低量化等级(Q4 → Q2_K)
- 减少
-c 上下文长度
- 使用
--gpu-memory-utilization 控制显存占用
- 部分 offload 到 CPU(llama.cpp 的
-ngl 设为部分层数)
- 使用更小的模型(7B → 3B → 1.5B)
Q: CPU 推理太慢?
- 确保编译时启用 AVX2 / AVX512
- macOS 确保启用 Metal 后端
- 使用更小的模型 + 更激进的量化
- 考虑 GGUF Q4_0 格式(CPU 优化)
Q: 多 GPU 怎么用?
- Ollama:自动检测多 GPU
- llama.cpp:
-ngl 99 + 多 GPU 自动分配
- vLLM:
--tensor-parallel-size 2(2卡并行)
Q: 如何评估推理速度?
| Bash |
|---|
| # llama.cpp 性能测试
./llama-bench -m model.gguf -p 512 -n 128 -ngl 99
# Ollama 查看推理速度(输出中包含 eval rate)
ollama run qwen2.5:7b
# 输出中显示:eval count / eval duration = tok/s
|
练习清单
资源汇总