跳转至

本地大模型部署

在本地机器上部署和运行大语言模型,脱离云端 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
1
2
3
4
5
# 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
1
2
3
4
5
# 创建自定义模型
ollama create my-assistant -f Modelfile

# 运行
ollama run my-assistant

推荐 GPU 配置

Bash
1
2
3
4
5
6
7
8
# 指定 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
1
2
3
4
5
6
7
8
# 启动服务(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(推荐生产级)

安装

Bash
pip install vllm

基本使用

Python
1
2
3
4
5
6
7
8
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

使用步骤

  1. 下载安装:https://lmstudio.ai/
  2. 搜索并下载模型(如 Qwen2.5-7B-Instruct-GGUF)
  3. 选择模型 → 开始对话
  4. 开启本地 API 服务(Local Server 标签页)

推荐本地模型

通用对话

模型 参数量 中文 链接 Ollama 标签
Qwen2.5 7B ⭐⭐⭐⭐⭐ https://huggingface.co/Qwen/Qwen2.5-7B-Instruct qwen2.5:7b
Llama 3.1 8B ⭐⭐⭐ https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct llama3.1:8b
GLM-4 9B ⭐⭐⭐⭐⭐ https://huggingface.co/THUDM/glm-4-9b-chat
Mistral Nemo 12B ⭐⭐⭐ https://huggingface.co/mistralai/Mistral-Nemo-Instruct-2407
Qwen2.5 14B ⭐⭐⭐⭐⭐ https://huggingface.co/Qwen/Qwen2.5-14B-Instruct qwen2.5:14b
Yi-1.5 34B ⭐⭐⭐⭐ https://huggingface.co/01-ai/Yi-1.5-34B-Chat

代码模型

模型 参数量 链接 Ollama 标签
Qwen2.5-Coder 7B https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct qwen2.5-coder:7b
DeepSeek-Coder-V2 16B https://huggingface.co/deepseek-ai/DeepSeek-Coder-V2-Instruct deepseek-coder-v2:16b
CodeLlama 7B https://huggingface.co/codellama/CodeLlama-7b-Instruct-hf

Embedding 模型

模型 链接 Ollama 标签
nomic-embed-text https://huggingface.co/nomic-ai/nomic-embed-text-v1.5 nomic-embed-text
mxbai-embed-large https://huggingface.co/mixedbread-ai/mxbai-embed-large-v1 mxbai-embed-large
bge-large-zh https://huggingface.co/BAAI/bge-large-zh-v1.5

完整部署架构示例

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
1
2
3
4
5
6
# 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

练习清单

  • 安装 Ollama,拉取 qwen2.5:7b,完成首次对话
  • 用 Ollama 自定义 Modelfile,创建专属助手
  • 编译 llama.cpp,量化一个模型为 Q4_K_M
  • 用 llama.cpp 启动 HTTP 服务,curl 调用验证
  • 安装 vLLM,启动 OpenAI 兼容服务
  • 用 LM Studio GUI 下载并运行一个模型
  • 对比 Ollama / llama.cpp / vLLM 在同一模型上的推理速度
  • 实现前端 + Go 网关 + Ollama 的完整对话应用
  • 测试不同量化等级(Q2/Q4/Q5/Q8)的质量和速度
  • 配置多 GPU 推理(如有条件)

资源汇总

资源 链接 说明
Ollama 官网 https://ollama.com/ 模型库 + 文档
Ollama 模型库 https://ollama.com/library 所有可用模型
llama.cpp https://github.com/ggerganov/llama.cpp 源码 + 文档
vLLM 文档 https://docs.vllm.ai/ 完整部署指南
LM Studio https://lmstudio.ai/ GUI 工具
LocalAI https://github.com/mudler/LocalAI OpenAI 兼容
text-generation-webui https://github.com/oobabooga/text-generation-webui Web UI
GPT4All https://github.com/nomic-ai/gpt4all CPU 推理
MLC LLM https://github.com/mlc-ai/mlc-llm 移动端部署
GGUF 格式说明 https://github.com/ggerganov/llama.cpp/blob/master/gguf.md 量化格式详解
TheBloke GGUF 模型 https://huggingface.co/TheBloke 预量化模型
MrDarKSider GGUF https://huggingface.co/MrDarKSider 预量化模型合集