从零开始,在 Windows 笔记本上部署本地大模型(llama.cpp + Qwen2.5 完整教程)
不需要高端显卡,不需要云服务,一台普通笔记本就能跑大模型。本文记录了从零部署 llama.cpp + Qwen2.5 的完整过程,包括 CUDA 加速配置、模型下载、常见问题等。
📖 前言
事情的起因有点偶然。
今天刷视频号,刷到一个 AI 相关的视频,评论区里有人说"llama 可以在本地部署"。立马有人回复纠正:"你说的是 Ollama 吧?"结果又有人接话:"没毛病,确实有 llama,llama.cpp。"
这一来一回给我整好奇了——我一直以为本地跑大模型就是 Ollama,没想到它底层还有个更核心的东西叫 llama.cpp。本着"来都来了"的精神,我决定亲自上手折腾一把。折腾了一下午,终于在自己的笔记本上跑起来了。把整个过程记录下来,希望能帮到想上手的朋友。
我的配置:
- CPU:Intel i5-1135G7
- GPU:NVIDIA GeForce MX450(2GB 显存)
- 内存:16GB
- 系统:Windows 11
你没看错,MX450 这种入门级显卡也能跑!当然不能跑太大的模型,但 1.5B 参数的模型完全够用了。
一、llama.cpp 是什么?
llama.cpp 是一个开源的大语言模型本地推理引擎,核心特点:
- 🚀 纯 C/C++ 实现,零依赖,编译完就是几个 exe 文件
- ⚡ 极致性能优化,支持 CPU、GPU、Apple Silicon 等各种硬件
- 📦 模型量化技术,把大模型"压缩"后在小显存上也能跑
- 🔌 OpenAI 兼容 API,启动后能当本地版 ChatGPT 用
简单说:想在自己电脑上离线跑大模型,llama.cpp 是首选工具。
💡 很多知名的本地 AI 应用(如 Ollama、LM Studio)底层都是基于 llama.cpp 开发的——这也解答了前言里评论区的争论:Ollama 是"套壳"的易用版,llama.cpp 才是底层的发动机。
二、部署 llama.cpp
2.1 下载预编译版本
不用自己编译,直接下载官方提供的预编译包即可:
- 访问 llama.cpp releases 页面
- 找到最新的 build 版本(带版本号的正式版可能没有 Windows 包,找
b开头的构建版,比如b11429) - 根据你的显卡选择下载:
| 你的情况 | 下载哪个包 |
|---|---|
| NVIDIA 显卡 | llama-xxx-bin-win-cuda-12.4-x64.zip |
| 只有 CPU | llama-xxx-bin-win-cpu-x64.zip |
| AMD 显卡 | llama-xxx-bin-win-rocm-x.x-x64.zip |
我选的是 CUDA 12.4 版本,约 250MB。
2.2 解压部署
下载完后解压到任意目录,我放在了 D:\llama.cpp\。
解压后你会看到一堆 exe 和 dll 文件,常用的有:
| 文件 | 用途 |
|---|---|
llama-cli.exe | 命令行聊天工具 |
llama-server.exe | API 服务器(带网页界面) |
llama-quantize.exe | 模型量化工具 |
ggml-cuda.dll | CUDA 加速库 |
2.3 验证安装
打开 PowerShell,进入目录后:
cd D:\llama.cpp .\llama-cli.exe --version
输出版本号就说明安装成功了。
三、配置 CUDA GPU 加速
这一步可能有点坑,详细说一下。
3.1 两种方案对比
| 方案 | 说明 | 推荐度 |
|---|---|---|
| 安装完整 CUDA Toolkit | 几 GB 的安装包,需要管理员权限 | ⭐⭐ |
| 使用 cudart 运行时包 | 只需几个 DLL 文件,免安装 | ⭐⭐⭐⭐⭐ |
推荐 cudart 方案——轻量、不需要管理员权限、不会污染系统。
3.2 cudart 方案操作步骤
- 在 releases 页面下载
cudart-llama-bin-win-cuda-12.4-x64.zip(约 370MB) - 解压后得到 3 个 DLL 文件:
cudart64_12.dll— CUDA 运行时cublas64_12.dll— 基础线性代数库cublasLt64_12.dll— 轻量线性代数库
- 把这 3 个 DLL 放到一个目录,比如
D:\cuda124-runtime\ - 将该目录添加到系统 PATH 环境变量
3.3 验证 GPU 是否工作
运行一下看看能不能识别到显卡:
.\llama-cli.exe -m "随便一个不存在的模型.gguf" -ngl 1 -v 2>&1 | findstr "CUDA"
如果输出类似下面的内容,说明 GPU 识别成功:
- CUDA0 : NVIDIA GeForce MX450 (2047 MiB, 1572 MiB free)
💡 第一次运行可能会慢一些,因为 CUDA 在编译 shader 缓存,后面就快了。
四、下载模型
llama.cpp 支持 GGUF 格式的模型。推荐去 Hugging Face 下载社区量化好的版本。
4.1 模型选择建议
根据你的显存大小选择合适的模型:
| 显存 | 推荐模型 | 量化等级 | 效果 |
|---|---|---|---|
| 2GB | Qwen2.5-1.5B-Instruct | Q4_K_M | 日常聊天够用 |
| 4GB | Qwen2.5-3B-Instruct | Q4_K_M | 不错的体验 |
| 8GB | Qwen2.5-7B-Instruct | Q4_K_M | 比较聪明 |
| 12GB+ | Qwen2.5-14B-Instruct | Q4_K_M | 很强 |
💡 Qwen(通义千问)是阿里云开源的模型,中文能力非常好,强烈推荐中文用户使用。
4.2 量化等级怎么选?
| 量化 | 显存占用 | 质量 | 推荐场景 |
|---|---|---|---|
| Q2_K | 最小 | 一般 | 显存极度紧张 |
| Q3_K_M | 小 | 尚可 | 追求速度 |
| Q4_K_M | 中等 | 不错 | ⭐ 平衡之选 |
| Q5_K_M | 较大 | 很好 | 追求质量 |
| Q8_0 | 大 | 接近原版 | 显存充足 |
新手直接选 Q4_K_M 就对了,质量和速度的最佳平衡点。
4.3 下载地址
我用的是 bartowski 大佬量化的版本,质量有保障:
- 模型地址:
https://huggingface.co/bartowski/Qwen2.5-1.5B-Instruct-GGUF - 下载文件:
Qwen2.5-1.5B-Instruct-Q4_K_M.gguf(约 0.9GB)
下载后放到 D:\llama.cpp\models\ 目录下。
五、开始使用
5.1 命令行聊天
cd D:\llama.cpp .\llama-cli.exe -m models\Qwen2.5-1.5B-Instruct-Q4_K_M.gguf -ngl 99 -c 1024
参数说明:
-m:模型文件路径-ngl 99:把所有层都放到 GPU 上(数字大于模型层数就行)-c 1024:上下文长度(模型的"记忆容量")
启动后出现 > 提示符就可以聊天了,输入 /exit 退出。
⚠️ 注意:新版 llama-cli 已经没有
-i参数了,默认就是交互模式。
5.2 网页版聊天(推荐)
.\llama-server.exe -m models\Qwen2.5-1.5B-Instruct-Q4_K_M.gguf -ngl 99 -c 1024 --port 8080
然后浏览器打开 http://localhost:8080 就能用网页聊天了,体验好很多。
5.3 单次提问
.\llama-cli.exe -m models\Qwen2.5-1.5B-Instruct-Q4_K_M.gguf -ngl 99 -p "你好,请介绍一下你自己。" -n 100 -st
参数 -st 表示 single-turn,回答完就退出。
六、速度表现
6.1 我的实际测试
| 硬件 | 模型 | 量化 | 生成速度 |
|---|---|---|---|
| MX450 (2GB) | Qwen2.5-1.5B | Q4_K_M | ~12 t/s |
12 token/s 大概是什么概念呢?普通人打字速度约 4-6 t/s,所以这个速度比人打字快,基本能跟上阅读节奏。
6.2 为什么我的 GPU 比 CPU 还慢?
小模型 + 低端显卡可能出现 GPU 不如 CPU 快的情况,原因:
- 显存带宽瓶颈 — 推理主要吃显存带宽,入门卡显存位宽低
- 模型太小 — 小模型 CPU 已经很快了,GPU 优势体现在大模型上
- 显存不够 — 模型 + KV cache 挤在小显存里,频繁调度
如果觉得 GPU 速度不满意,可以试试:
- 换更小的模型(如 0.5B),速度会快很多
- 直接用 CPU 跑(去掉
-ngl参数) - 降低上下文长度(
-c 512)
七、API 接口
llama-server 提供了 OpenAI 兼容格式的 API,这意味着所有支持 OpenAI 的工具都能对接你的本地模型。
7.1 主要接口
| 接口 | 地址 | 用途 |
|---|---|---|
| 聊天补全 | http://localhost:8080/v1/chat/completions | 对话式调用 |
| 文本补全 | http://localhost:8080/v1/completions | 纯文本生成 |
| 模型列表 | http://localhost:8080/v1/models | 查看可用模型 |
7.2 PowerShell 测试
$body = @{
model = "Qwen2.5-1.5B-Instruct-Q4_K_M.gguf"
messages = @(
@{ role = "user"; content = "用一句话介绍人工智能" }
)
max_tokens = 100
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri "http://localhost:8080/v1/chat/completions" `
-Method Post -Body $body -ContentType "application/json"
7.3 对接其他模型
你可以用第三方前端(如 Open WebUI、Lobe Chat)同时接入多个模型源:
- 本地模型(llama-server)
- DeepSeek API
- 通义千问 API
- 智谱 AI API
- ...
这些厂商都提供 OpenAI 兼容格式,填个 API 地址和 Key 就能用。
八、常见概念扫盲
Token(令牌/代币)
模型处理语言的基本单位。不是一个字一个字地处理,而是把文字切成小块,每块叫一个 token。
- 英文:1 token ≈ 0.75 个单词
- 中文:1 token ≈ 1-2 个汉字
上下文窗口(Context)
模型的"记忆容量",即最多能记住多少 token 的对话内容。超过了就会"忘记"前面的内容。
KV 缓存
模型的"短期记忆"——把计算好的中间结果存起来,下次回复时不用从头算,节省时间。显存占用的主要来源之一。
量化(Quantization)
把模型的参数从高精度(16位浮点数)压缩到低精度(4位整数),大幅减少显存占用,速度也更快,质量损失相对可控。
九、常见问题
Q:启动时报错找不到 CUDA? A:检查 CUDA 运行时 DLL 是否在 PATH 里,或者直接把 DLL 放到 llama.cpp 目录。
Q:-i 参数报错 invalid argument?
A:新版 llama-cli 已经去掉了 -i,默认就是交互模式,直接运行即可。
Q:GPU 速度很慢怎么办? A:小模型 + 低端显卡是这样的。可以试试更小的模型,或者直接用 CPU 跑。
Q:模型从哪下载? A:推荐去 Hugging Face 搜模型名 + GGUF,找下载量高的。
Q:网页界面是英文的,能改成中文吗? A:自带的网页界面只有英文,但聊天内容支持中文。想要中文界面可以用第三方前端(Open WebUI、Lobe Chat 等)。
十、总结
整个流程其实很简单:
- 下载 llama.cpp 预编译包 → 解压
- 配置 CUDA 运行时(有 GPU 的话)
- 下载 GGUF 格式的模型
- 运行 llama-server,打开浏览器开聊
整个过程最耗时的就是下载模型,其他都是分分钟的事。
本地大模型的意义不在于和云端比性能,而在于:
- 🔒 隐私:数据不经过第三方
- 📴 离线可用:没网也能用
- 💰 免费:不用按 token 付费
- 🎮 折腾的乐趣:自己动手部署的成就感
谁能想到,这一切的开始只是视频号评论区里的一句"llama 可以部署"。希望这篇文章能帮到你。有问题欢迎留言交流!
本文基于 llama.cpp b11429 版本编写,如有更新请以官方文档为准。
评论