为什么要本地部署?#
在云端API满天飞的2025年,为什么还要本地部署大模型?
理由1:隐私安全#
你的代码、文档、聊天记录……全都发给了云端。
1
2
3
4
| 敏感场景:
- 公司内部代码 → 发给OpenAI?
- 医疗病历数据 → 发给云端?
- 法律合同文本 → 谁来保证不泄露?
|
本地部署 = 数据永远不出你的电脑。
理由2:成本控制#
| 使用场景 | 云端API成本 | 本地部署成本 |
|---|
| 每天1万次调用 | ~$300/月 | 电费 ~$30/月 |
| 7B模型长期使用 | 持续付费 | 一次性硬件投入 |
| 团队10人使用 | $200+/人/月 | 共享一台服务器 |
理由3:低延迟#
云端API:网络往返 100-500ms
本地部署:几乎零延迟
理由4:自由定制#
- 想微调?随便调
- 想改提示词模板?自己改
- 想限制输出长度?随心所欲
硬件要求#
最低配置(跑7B模型)#
1
2
3
4
5
| CPU:8核以上
内存:16GB
显卡:8GB显存(如RTX 3070)
或 Apple M1/M2/M3(统一内存)
存储:50GB SSD可用空间
|
推荐配置(跑13B-70B模型)#
1
2
3
4
5
| CPU:12核以上
内存:32GB+
显卡:24GB显存(如RTX 4090)
或 Apple M2 Pro/Max/Ultra
存储:200GB SSD可用空间
|
显存 vs 模型大小速查表#
| 模型大小 | 最低显存 | 推荐显存 | 代表模型 |
|---|
| 3B | 4GB | 6GB | Phi-3 Mini |
| 7B | 6GB | 8GB | Llama 3.1 7B, Qwen2.5 7B |
| 13B | 10GB | 16GB | Llama 3.1 13B |
| 34B | 20GB | 24GB | CodeLlama 34B |
| 70B | 40GB | 48GB | Llama 3.1 70B |
注:使用量化(Q4/Q5)可降低约50%显存需求。
方案一:Ollama(推荐新手)#
Ollama 是目前最简单的本地大模型部署方案,一行命令就能跑。
macOS / Linux:
1
| curl -fsSL https://ollama.com/install.sh | sh
|
Windows:
下载安装包:https://ollama.com/download
基础使用#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # 下载并运行 Llama 3.1 8B
ollama run llama3.1
# 下载并运行 Qwen 2.5 7B(中文更好)
ollama run qwen2.5
# 下载并运行 DeepSeek Coder(代码专用)
ollama run deepseek-coder-v2
# 查看已下载的模型
ollama list
# 删除模型
ollama rm llama3.1
|
作为API服务使用#
Ollama 默认启动 API 服务在 http://localhost:11434
1
2
3
4
5
6
7
8
9
| import requests
response = requests.post('http://localhost:11434/api/generate', json={
'model': 'qwen2.5',
'prompt': '用Python写一个快速排序',
'stream': False
})
print(response.json()['response'])
|
兼容 OpenAI API 格式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| from openai import OpenAI
client = OpenAI(
base_url='http://localhost:11434/v1',
api_key='ollama' # 任意值即可
)
response = client.chat.completions.create(
model='qwen2.5',
messages=[
{'role': 'user', 'content': '你好,介绍一下你自己'}
]
)
print(response.choices[0].message.content)
|
自定义模型(Modelfile)#
创建 Modelfile:
1
2
3
4
5
6
7
8
9
10
11
| FROM qwen2.5
# 设置系统提示词
SYSTEM """
你是一个专业的Python开发助手。
回答要简洁,代码要有注释。
"""
# 设置参数
PARAMETER temperature 0.7
PARAMETER num_ctx 4096
|
构建并运行:
1
2
| ollama create my-python-helper -f Modelfile
ollama run my-python-helper
|
Ollama 优缺点#
优点:
- 安装简单,一行命令
- 模型库丰富,一键下载
- 内存管理优秀
- 社区活跃
缺点:
- 推理速度不是最快
- 高级功能较少
- 不支持多卡并行(原生)
方案二:vLLM(推荐生产环境)#
vLLM 是性能最强的本地推理引擎,来自UC Berkeley。
启动服务#
1
2
3
4
5
| # 启动 OpenAI 兼容的 API 服务
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--port 8000 \
--tensor-parallel-size 1
|
使用 API#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| from openai import OpenAI
client = OpenAI(
base_url='http://localhost:8000/v1',
api_key='vllm'
)
response = client.chat.completions.create(
model='Qwen/Qwen2.5-7B-Instruct',
messages=[
{'role': 'user', 'content': '解释一下什么是RAG'}
]
)
print(response.choices[0].message.content)
|
高级特性#
1. 多GPU并行
1
2
3
4
| # 使用2张显卡
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-70B-Instruct \
--tensor-parallel-size 2
|
2. 量化加载
1
2
3
4
| # AWQ 量化
python -m vllm.entrypoints.openai.api_server \
--model TheBloke/Llama-2-7B-Chat-AWQ \
--quantization awq
|
3. 批处理优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| from vllm import LLM, SamplingParams
llm = LLM(model="Qwen/Qwen2.5-7B-Instruct")
sampling_params = SamplingParams(temperature=0.8, max_tokens=256)
# 批量处理多个请求
prompts = [
"什么是机器学习?",
"Python和Java的区别?",
"如何学习编程?"
]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(output.outputs[0].text)
|
vLLM 优缺点#
优点:
- 推理速度最快(PagedAttention技术)
- 吞吐量高,适合生产环境
- 支持多GPU并行
- 内存效率极高
缺点:
- 安装配置较复杂
- 需要CUDA环境
- 不支持macOS(GPU加速)
方案三:LM Studio(推荐小白)#
LM Studio 是带GUI的本地大模型工具,适合不想碰命令行的用户。
下载地址:https://lmstudio.ai/
支持 Windows / macOS / Linux。
使用方法#
下载模型:
- 打开 LM Studio
- 搜索想要的模型(如 “qwen2.5”)
- 点击下载
对话:
启动本地服务:
- 点击 “Local Server”
- 启动后可在
localhost:1234 访问 API
API 调用#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| from openai import OpenAI
client = OpenAI(
base_url='http://localhost:1234/v1',
api_key='lm-studio'
)
response = client.chat.completions.create(
model='local-model',
messages=[
{'role': 'user', 'content': '你好'}
]
)
print(response.choices[0].message.content)
|
LM Studio 优缺点#
优点:
- 图形界面,操作简单
- 模型管理方便
- 支持各种量化格式(GGUF)
- 跨平台
缺点:
推荐模型#
通用对话#
| 模型 | 大小 | 特点 | 下载命令(Ollama) |
|---|
| Qwen2.5 | 7B | 中文最强 | ollama run qwen2.5 |
| Llama 3.1 | 8B | 综合均衡 | ollama run llama3.1 |
| Mistral | 7B | 欧洲血统,推理强 | ollama run mistral |
代码生成#
| 模型 | 大小 | 特点 | 下载命令 |
|---|
| DeepSeek Coder V2 | 16B | 代码专精 | ollama run deepseek-coder-v2 |
| CodeLlama | 7B-34B | Meta出品 | ollama run codellama |
| Qwen2.5-Coder | 7B | 代码+中文 | ollama run qwen2.5-coder |
长文本处理#
| 模型 | 上下文 | 特点 |
|---|
| Qwen2.5 | 128K | 超长上下文 |
| Yi-1.5 | 200K | 国产长文本王者 |
性能优化技巧#
1. 使用量化模型#
1
2
3
4
5
6
7
8
| # Q4 量化(速度快,精度略降)
ollama run qwen2.5:7b-q4_K_M
# Q5 量化(平衡选择)
ollama run qwen2.5:7b-q5_K_M
# Q8 量化(精度高,显存占用大)
ollama run qwen2.5:7b-q8_0
|
2. 调整上下文长度#
1
2
3
4
5
6
7
| # Ollama
ollama run qwen2.5 --num-ctx 8192
# vLLM
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--max-model-len 8192
|
3. 启用 Flash Attention#
1
2
3
| # vLLM 自动启用
# 确保安装了 flash-attn
pip install flash-attn
|
4. 使用 GPU Offloading#
对于显存不足的情况:
1
2
3
| # Ollama 自动处理
# 可通过环境变量控制
OLLAMA_NUM_GPU=1 ollama run llama3.1:70b
|
常见问题#
Q: 显存不够怎么办?#
A:
- 使用更小的模型(7B代替13B)
- 使用量化版本(Q4/Q5)
- 减少上下文长度
- 使用CPU推理(会慢很多)
Q: Mac 能跑吗?#
A: 可以!Apple Silicon(M1/M2/M3)效果很好。
- Ollama 原生支持
- LM Studio 原生支持
- vLLM 不支持Mac GPU
Q: 生成速度太慢?#
A:
- 检查是否使用了GPU(而非CPU)
- 使用量化模型
- 减少生成长度
- 升级到 vLLM
Q: 如何让多人同时使用?#
A:
- 部署在服务器上
- 使用 vLLM(支持高并发)
- 前面加一层 Nginx 做负载均衡
| 方案 | 适合人群 | 难度 | 性能 |
|---|
| Ollama | 开发者、个人使用 | ⭐ | ⭐⭐⭐ |
| vLLM | 团队、生产环境 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| LM Studio | 小白、尝鲜 | ⭐ | ⭐⭐ |
我的建议:
- 刚入门 → 先用 LM Studio 体验
- 日常开发 → Ollama 足够
- 生产部署 → vLLM 一把梭
本地大模型的时代已经来临,拥抱它!