前段时间开始研究怎么在本地跑大模型。折腾了一周,从完全不懂到现在能流畅对话,记录一下踩过的坑。

为什么选择本地部署

最开始图省事,用的是在线API。但几个问题让我受不了:

  • 网络不稳定,经常超时
  • 数据要发到服务器,毕设等个人数据敏感
  • 调用次数多了真的贵

本地部署虽然折腾,但跑起来之后是真的很爽。自己的机器,想怎么玩怎么玩。

我的环境

  • Windows 11 + WSL2 (Ubuntu 22.04)
  • RTX 3050 4G显存

这个配置跑7B以下的量化过的模型还是没什么问题的,甚至能同时跑两个量化较好的服务。

第一步:搞定WSL2

如果你也在Windows上开发,WSL2是必须的。安装很简单:

wsl --install

装好之后记得更新系统,然后装一些基础工具:

sudo apt update
sudo apt install aria2 git build-essential

aria2是多线程下载工具,下模型的时候比浏览器快多了。

第二步:搞模型文件

我主要用GGUF格式的模型,这是llama.cpp专用的量化格式,体积小加载快。

下载方式有几种:

1. 直接下载(适合小模型)

mkdir -p ~/models
cd ~/models
# 用aria2多线程下载
aria2c -x 4 -s 4 "模型下载链接"

2. 从Windows复制(我常用的)

# 把D盘的模型复制到WSL
mkdir -p ~/models
cp /mnt/d/Models/Qwen2.5.Q6_K.gguf ~/models/

3. 用hfd脚本(适合HuggingFace上的模型)

./hfd.sh microsoft/Phi-4-mini-instruct --local-dir ~/models/Phi-4

或者也可去魔搭社区下载模型。

第三步:llama.cpp 快速上手

如果你只想快速跑起来对话,llama.cpp是最简单的选择。

编译(一次性)

git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make

启动服务

./bin/llama-server -m ~/models/Qwen2.5.gguf \
  --host 0.0.0.0 \
  --port 9090

然后打开浏览器访问 http://localhost:9090,就能看到聊天界面了。

第四步:vLLM 部署(生产级)

llama.cpp适合本地使用,但如果要接入RAG或者做API调用,vLLM更合适。它兼容OpenAI的API格式,直接替换base_url就能用。

安装vLLM

pip install vllm

启动服务(以Phi-3为例)

python -m vllm.entrypoints.openai.api_server \
  --model ~/models/Phi-3-mini-128k-instruct.Q4_K_M.gguf \
  --served-model-name Phi-3-mini \
  --quantization gguf \
  --max-model-len 1536 \
  --gpu-memory-utilization 0.8 \
  --port 5000

几个关键参数解释:

  • --max-model-len: 模型最大上下文长度,显存小就设小点
  • --gpu-memory-utilization: GPU显存占用比例,留点余地给系统
  • --quantization gguf: 声明这是GGUF格式
  • --enforce-eager: 如果遇到CUDA错误,加上这个试试

测试API

curl http://localhost:5000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Phi-3-mini",
    "messages": [{"role": "user", "content": "你好"}],
    "max_tokens": 512,
    "temperature": 0.7
  }'

推荐模型

Phi-4-mini

  • 微软出品,体积小(3.8B参数)
  • 适合写代码,逻辑清晰

调参与踩坑

temperature设置

  • 0.1-0.3: 确定性输出,适合代码生成
  • 0.5-0.7: 平衡,日常对话用这个
  • 0.8+: 创意写作,但可能胡言乱语

遇到CUDA OOM

  • 减小 --max-model-len
  • 降低 --gpu-memory-utilization
  • 用更小量化的模型(Q4_K_M换成Q4_K)

WSL2内存不够 在Windows用户目录创建 .wslconfig

[wsl2]
memory=24GB
processors=8

写在最后

本地部署AI最大的好处是掌控感。你可以随意调参,换不同的模型,不用担心API限流或者涨价。

当然缺点也很明显:折腾。但对我这种喜欢折腾的人来说,这反而是乐趣。

我的毕设RAG系统就跑在本地Qwen2.5上,如果你也在考虑本地部署,希望这篇记录能帮你少走点弯路。