这篇整理一下我在 Windows 本地部署开源大模型的完整流程。

目标很直接:不用复杂的服务端环境,也不折腾一堆框架,直接用 llama.cpp 在本机跑 Qwen / Qwen2.5 系列模型,能聊天、能走 WebUI,也能提供 OpenAI 兼容 API。

我这里主要以 Qwen3.8-27B、Qwen2.5、Qwen2.5-VL 这一类 GGUF 模型为例。具体模型版本和文件名可能会随着社区更新变化,但整体思路是通用的。

本地大模型一键启动参数确认

本地部署能做什么?

本地部署不只是为了“炫技”,它其实很适合学习和做一些低成本的小工具。

从学习角度看,本地部署可以帮你真正理解大模型是怎么跑起来的。比如模型文件为什么动不动十几 GB,什么是 GGUF,为什么有 Q4、Q5、Q8 这些量化版本,显存不够的时候为什么会变慢,-ngl 这种参数到底在控制什么。

这些东西只看文章容易云里雾里,但你自己跑一次、爆一次显存、调一次参数,就会清楚很多。

从实用角度看,本地模型也能做不少事:

  • 离线写草稿、改文章、整理笔记。
  • 分析代码、解释报错、辅助写脚本。
  • 总结资料、提取结构、帮你把零散内容整理成文档。
  • 在隐私敏感的场景下处理一些不方便丢到公网模型里的内容。
  • 配合视觉模型处理截图、PDF 图片、扫描资料。

最后这一点我觉得挺有意思。比如一些 PDF 是扫描版,直接复制不出文字,或者资料里混着大量截图。这个时候可以把页面导成图片,再丢给本地小模型或视觉模型,让它帮你识别、归纳、分类,甚至整理成 Markdown。

它不一定比云端大模型更强,但胜在成本低、可反复试、数据也留在自己机器上。

先理解几个核心概念

本地跑大模型,最先遇到的不是代码,而是硬件资源。

GPU 显存,也就是 VRAM。

显存速度很快,模型权重能放进显存多少层,基本决定了你的推理速度。如果显存够,体验会很舒服;如果显存不够,就会把一部分计算放到内存和 CPU 上,能跑,但会慢。

CPU 内存,也就是 RAM。

显存不够时,剩下的模型层数会走内存。内存越大,能容纳的模型越大,但速度肯定比纯显存慢。

GGUF 格式。

GGUF 是现在 llama.cpp 生态里非常常见的模型格式,适合 CPU / GPU 混合推理,也方便在 Windows 上直接运行。

所以我们要做的事,本质上就是三步:

  1. 下载合适的 llama.cpp Windows 运行包。
  2. 下载合适的 GGUF 模型文件。
  3. 根据自己的显存和内存,调整启动参数。

下载 llama.cpp 运行时

llama.cpp 的官方发布页在这里:

https://github.com/ggml-org/llama.cpp/releases

打开 Releases 页面后,你会看到很多压缩包。Windows 用户可以按下面这个思路选:

电脑硬件 推荐包 说明
NVIDIA 显卡 llama-bXXXX-bin-win-cuda-cu12.4-x64.zip 推荐优先选 CUDA 版
NVIDIA 显卡依赖 cudart-llama-bin-win-cuda-cu12.4-x64.zip CUDA 版需要一起下载 DLL 依赖
纯 CPU / 无独显 llama-bXXXX-bin-win-cpu-x64.zip 能跑,但速度看 CPU
AMD 显卡 Vulkan 或 ROCm 相关版本 Windows 下 Vulkan 更常见
Intel 核显 / 独显 SYCL 或 OpenVINO 相关版本 需要配套驱动环境

如果你是 NVIDIA 显卡,重点记住一句话:主程序包和 CUDA DLL 依赖包要一起下载,并解压到同一个目录。

比如可以统一放到:

1
E:\LLMWork\llama-bin\

里面应该能看到类似这些文件:

1
2
3
4
5
llama-server.exe
llama-cli.exe
llama-bench.exe
cublas64_12.dll
cudart64_12.dll

如果只解压了主程序,少了 CUDA 相关 DLL,很容易启动失败。

下载模型:先选量化版本

大模型原始权重通常很大,27B 级别的 FP16 / BF16 模型可能要 50GB 以上。普通电脑肯定吃不消,所以本地部署一般会用量化后的 GGUF 文件。

常见后缀大概可以这样理解:

量化后缀 体积和速度 智力保留 适合配置
IQ2_M 体积很小,速度友好 有损较明显,但能用 6GB / 8GB 显卡想体验大参数模型
IQ4_XS 比 Q4 更紧凑 效果不错 12GB 显卡或 32GB 内存
Q4_K_M 平衡点 综合体验好 16GB / 24GB 显卡,或内存较大
Q5_K_M 更高精度 效果更稳 24GB 显卡或 64GB 内存
Q8_0 接近无损,体积大 效果最好 多卡、工作站或服务器

我的理解是:

  • 显存只有 6GB / 8GB,又想试 27B,可以先看 IQ2_M
  • 想要日常体验舒服,7B / 14B 的 Q4_K_M 往往更实际。
  • 24GB 显存以上,再考虑 27B 的 Q4_K_M / Q5_K_M

不要一上来就追最大模型。能稳定跑起来,比参数大但卡到难受更重要。

视觉模型 mmproj 是什么?

如果你要用 Qwen2.5-VL 这类视觉模型处理图片,除了主模型 GGUF,通常还会遇到一个 mmproj 文件。

可以简单理解为:

  • 主语言模型:负责理解文字、生成回答。
  • mmproj:负责把图片转成模型能理解的特征。

例如:

1
2
Qwen2.5-VL-7B-Instruct-abliterated.Q4_K_M.gguf
Qwen2.5-VL-7B-Instruct-abliterated.mmproj-Q8_0.gguf

这两个要配套使用。

这里有个坑:不要跨型号、跨参数混用 mmproj。

比如 Qwen2.5 的 mmproj 不要拿去配 Qwen3.8,7B 的 mmproj 也不要拿去配 27B。混用很容易报 Dimension Mismatch 之类的错误。

推荐目录结构

为了后续移动、备份、写脚本都方便,我建议把本地大模型相关文件放在一个固定目录里。

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
E:\LLMWork\
├── llama-bin\
│ ├── llama-server.exe
│ ├── llama-cli.exe
│ ├── llama-bench.exe
│ ├── cublas64_12.dll
│ ├── cudart64_12.dll
│ └── ...
├── models\
│ ├── Qwen3.8-27B-Uncensored-IQ2_M.gguf
│ ├── mmproj-Qwen3.8-27B-f16.gguf
│ ├── Qwen2.5-VL-7B-Instruct-abliterated.Q4_K_M.gguf
│ └── Qwen2.5-VL-7B-Instruct-abliterated.mmproj-Q8_0.gguf
├── start.bat
├── 一键启动.bat
└── run.ps1

llama-bin 放运行时,models 放模型,脚本放根目录。这样脚本可以用相对路径扫描模型,不用每次改绝对路径。

不同配置怎么选模型?

下面是一个比较实用的参考,不需要完全照抄,重点看思路。

配置 推荐模型组合 推荐 -ngl 适合场景
RTX 3050 / 2060 6GB + 16GB/32GB 内存 Qwen2.5-VL-7B Q4_K_M 33 左右 日常对话、截图识别、文档整理
RTX 3050 / 2060 6GB + 32GB 内存 Qwen3.8-27B IQ2_M 18 左右 尝鲜 27B,速度不会太快
RTX 3060 / 4060 8GB + 32GB 内存 Qwen3.8-27B IQ2_M 24 左右 平衡体验和大模型能力
RTX 3060 / 4070 12GB + 32GB 内存 Qwen2.5-14B Q4_K_M 48 左右 编程、写作、较流畅响应
RTX 4070 Ti Super / 4080 16GB + 32GB/64GB 内存 Qwen3.8-27B IQ4_XS / Q4_K_M 40 左右 更强的综合生产力
RTX 3090 / 4090 / 5090 24GB+ + 64GB 内存 Qwen3.8-27B Q4_K_M / Q5_K_M 99 更完整的本地大模型体验

-ngl 控制的是卸载到 GPU 的层数。层数越高,越吃显存,但速度也通常越快。遇到显存爆掉,就把它往下调。

一键启动脚本的思路

手动敲 llama-server 参数当然可以,但每次输入模型路径、端口、上下文长度、GPU 层数,其实挺烦。

所以更舒服的方式是写一个脚本:

  1. 自动扫描 models 目录里的 .gguf 文件。
  2. 让你输入数字选择要启动的模型。
  3. 如果是视觉模型,自动找配套 mmproj
  4. 根据模型类型给一个相对保守的 -ngl 默认值。
  5. 启动 llama-server
  6. 自动打开浏览器访问 WebUI。

实际启动后可以看到类似这样的确认信息:

启动参数确认:模型、mmproj、GPU 层数和上下文长度

启动成功后,llama-server 会监听本地端口,例如:

1
2
http://127.0.0.1:8080
http://127.0.0.1:8080/v1

第一个是 WebUI,第二个是 OpenAI 兼容 API 地址。也就是说,后续你可以把一些支持自定义 OpenAI API 的工具接到本地模型上。

实际加载日志大概是这样:

llama-server 加载模型并启动本地服务

常见问题

双击 bat 一闪而过

通常是脚本编码、PowerShell 调用方式、路径里有中文,或者环境变量有问题。

建议在 .bat 里调用 PowerShell,并在脚本里加上暂停逻辑。这样即使报错,窗口也不会直接消失,至少能看到错误信息。

CUDA out of memory

这是显存爆了。

最直接的办法就是把 -ngl 调低,比如从 33 降到 28,或者从 24 降到 18。如果还是不行,就换更小的量化版本,或者换 7B / 14B 模型。

图片上传后提示不是视觉模型

一般是两个原因:

  1. 没有放 mmproj 文件。
  2. mmproj 和主模型不匹配。

先确认模型文件名和 mmproj 是同一个系列,再确认启动日志里有没有加载多模态模型。

生成速度很慢

如果只有 1 到 2 tokens/s,大概率是模型太大,很多层跑到了 CPU / 内存上。

这种情况不要硬撑。换小一点的模型,或者换更低量化版本,实际体验会好很多。

下载链接参考

下面这些链接以实际页面为准,社区模型更新比较快,下载前建议再看一下模型说明。

最后

本地部署开源大模型这件事,看起来步骤多,但拆开以后其实就是:下载运行时、下载模型、调整参数、启动服务。

它不一定适合所有人,也不一定能替代云端大模型。但对我来说,它最大的价值是把“能不能试试”这件事变便宜了。

想研究模型,就在本地折腾;想处理一些不方便上传的资料,也可以先用本地模型跑一遍。哪怕最后发现效果一般,这个试错成本也很低。


如果你也喜欢折腾 AI、自动化和一些奇奇怪怪的小工具,可以关注我的公众号,后面我会继续整理这些实践记录。

公众号二维码