为什么要本地部署?

在云端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 模型大小速查表

模型大小最低显存推荐显存代表模型
3B4GB6GBPhi-3 Mini
7B6GB8GBLlama 3.1 7B, Qwen2.5 7B
13B10GB16GBLlama 3.1 13B
34B20GB24GBCodeLlama 34B
70B40GB48GBLlama 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
pip install vllm

启动服务

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。

使用方法

  1. 下载模型

    • 打开 LM Studio
    • 搜索想要的模型(如 “qwen2.5”)
    • 点击下载
  2. 对话

    • 选择已下载的模型
    • 在聊天界面直接对话
  3. 启动本地服务

    • 点击 “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)
  • 跨平台

缺点

  • 性能不如vLLM
  • 高级功能受限
  • 不适合生产部署

推荐模型

通用对话

模型大小特点下载命令(Ollama)
Qwen2.57B中文最强ollama run qwen2.5
Llama 3.18B综合均衡ollama run llama3.1
Mistral7B欧洲血统,推理强ollama run mistral

代码生成

模型大小特点下载命令
DeepSeek Coder V216B代码专精ollama run deepseek-coder-v2
CodeLlama7B-34BMeta出品ollama run codellama
Qwen2.5-Coder7B代码+中文ollama run qwen2.5-coder

长文本处理

模型上下文特点
Qwen2.5128K超长上下文
Yi-1.5200K国产长文本王者

性能优化技巧

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:

  1. 使用更小的模型(7B代替13B)
  2. 使用量化版本(Q4/Q5)
  3. 减少上下文长度
  4. 使用CPU推理(会慢很多)

Q: Mac 能跑吗?

A: 可以!Apple Silicon(M1/M2/M3)效果很好。

  • Ollama 原生支持
  • LM Studio 原生支持
  • vLLM 不支持Mac GPU

Q: 生成速度太慢?

A:

  1. 检查是否使用了GPU(而非CPU)
  2. 使用量化模型
  3. 减少生成长度
  4. 升级到 vLLM

Q: 如何让多人同时使用?

A:

  1. 部署在服务器上
  2. 使用 vLLM(支持高并发)
  3. 前面加一层 Nginx 做负载均衡

总结

方案适合人群难度性能
Ollama开发者、个人使用⭐⭐⭐
vLLM团队、生产环境⭐⭐⭐⭐⭐⭐⭐⭐
LM Studio小白、尝鲜⭐⭐

我的建议

  • 刚入门 → 先用 LM Studio 体验
  • 日常开发 → Ollama 足够
  • 生产部署 → vLLM 一把梭

本地大模型的时代已经来临,拥抱它!