不是"照着做就能成功"的教程,而是"照着做、踩坑、修好"的完整记录。 本文配套代码已开源:github.com/wovow-mak/l...
一、写在最前面
ini
Collecting llama-cpp-python==0.2.90
Downloading ...whl (446.9 MB)
━━━━━━╺━━━━━━━━━━━━━━━━━━ 13.9/446.9 MB 53.6 kB/s eta 2:14:44
这是我第一次在 Windows 上部署大模型时,屏幕上真实的一行字:447MB 的安装包,预计要下 2 小时 14 分钟。
那时候我还不知道,这只是一连串坑的第一个。接下来两天里,我又依次撞上:装包提示 is not a supported wheel、导入模型报 Could not find module 'llama.dll'、双击脚本窗口一闪就没、换个目录运行说模型文件不存在......
网上教程很多,但它们大多只写"正确的路",很少有人写报错长什么样、为什么错、怎么修。而新人恰恰是卡在那一刻才来搜索的。
所以我把这半个月踩的坑整理成这篇,新手写给新手------不用懂原理,照着做就能跑起来。
- 我的环境:Windows 11 + RTX 4060(8G 显存)+ Python 3.12
- 全流程耗时:约 30 分钟(含下载)
- 需要花钱吗:不需要,只有电费
二、先判断:你的电脑能不能跑
先讲结论:显存决定能跑多大的模型。
| 显存 | 能跑的模型(4bit 量化) | 体验 |
|---|---|---|
| 4G | 1.5B | 能用,但慢 |
| 8G(我的配置) | 1.5B 流畅 / 7B 勉强 | 流畅 |
| 12-16G | 7B / 14B | 很流畅 |
| 24G+ | 32B | 接近云端体验 |
量化是什么 :把模型权重从 16 位小数压成 4 位,体积缩到 1/4,效果只降一点点。家用电脑一律选 Q4_K_M。
磁盘留 20G 以上空闲,内存建议 16G。
三、装环境(3 个软件)
1. Python 3.12(版本很重要!)
- 下载:python.org,装的时候勾选 Add Python to PATH
- 验证:命令行输入
python --version
⚠️ 坑 2 :我电脑里有 3.13、3.15 好几个 Python,结果装包时报
is not a supported wheel on this platform------因为预编译包是cp312(给 3.12 的),版本对不上就装不了。 教训:一个项目用哪个 Python 要写清楚,别靠"默认那个"。
2. 显卡驱动(不是 CUDA Toolkit)
- 装 NVIDIA 官网最新驱动即可,不需要下 3GB 的 CUDA Toolkit
- 验证:命令行输入
nvidia-smi,能看到显卡型号就对了
3. Git(可选)
用来拉代码,后面上传 GitHub 也要用。
四、装推理框架(这一步最容易卡 2 小时)
bash
python -m pip install llama-cpp-python --prefer-binary --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
⚠️ 坑 1 :直连 GitHub 下载 447MB 的包,速度只有 53.6 kB/s,预计 2 小时 14 分 。 解决:用镜像
ghfast.top手动下载,9 分钟搞定,再本地安装:
bashpip install 本地文件.whl实测对比:GitHub 直连 25 秒几乎没下到数据;ghfast.top 约 872 KB/s;gh-proxy.com 约 184 KB/s。
⚠️ 坑 3 :装完 import 报Could not find module 'llama.dll' (or one of its dependencies)原因:显卡驱动 ≠ CUDA 运行库。程序要用 GPU,还需要 cudart、cublas 这些运行库。 解决(不用装 3GB Toolkit):
bashpip install nvidia-cuda-runtime-cu12 nvidia-cublas-cu12再把
site-packages/nvidia/**/bin/下的cudart64_12.dll、cublas64_12.dll、cublasLt64_12.dll复制到site-packages/llama_cpp/lib/。 验证是否真的能用 GPU:
bashpython -c "import llama_cpp.llama_cpp as lc; print(lc.llama_supports_gpu_offload())" # 输出 True 才算成功
五、下载模型(1GB,走国内镜像)
bash
curl -L -o qwen2.5-1.5b-instruct-q4_k_m.gguf https://hf-mirror.com/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.gguf
HuggingFace 国内直连很慢,
hf-mirror.com是官方镜像,把域名换掉即可。
六、跑通第一句对话
python
from llama_cpp import Llama
llm = Llama(
model_path="qwen2.5-1.5b-instruct-q4_k_m.gguf",
n_gpu_layers=-1, # -1 = 全部放进 GPU
n_ctx=2048, # 上下文窗口
)
history = []
while True:
q = input("你: ")
if q == "q":
break
history.append({"role": "user", "content": q})
print("AI: ", end="")
reply = ""
for chunk in llm.create_chat_completion(messages=history, stream=True):
t = chunk["choices"][0]["delta"].get("content", "")
reply += t
print(t, end="", flush=True)
print()
history.append({"role": "assistant", "content": reply})
跑起来是这样的(模型加载 2 秒,回答速度约 105 tok/s,全程不联网):
ini
===== 环境体检 =====
[OK] Python 3.12.8 (C:\Python312\python.exe)
[OK] 显卡显存 8188 MiB(约 7 GB)
[OK] llama-cpp-python 0.2.90
[OK] 模型文件 qwen2.5-1.5b-instruct-q4_k_m.gguf(1066 MB)
====================
加载模型 (ctx=2048, gpu_layers=-1) ...
加载完成!
你: 你是谁
AI: 我是Qwen,由阿里云开发的大规模语言模型。我是一个人工智能助手,能够回答问题、创作文字,还能进行多轮对话。
⚠️ 坑 5 :双击 .py 直接闪退? 因为双击用的是系统默认 Python(我这里是 3.15,没装 llama_cpp),报错还没看清窗口就关了。 解决:在终端里跑 ,或写个 .bat 指定解释器并在末尾加
pause。
⚠️ 坑 6 :换个目录运行就报Model path does not exist: ../models/...因为相对路径的锚点是"你敲命令的目录",不是脚本所在位置。 正确写法:
pythonimport os MODEL = os.path.join(os.path.dirname(os.path.abspath(__file__)), "models", "xxx.gguf")
⚠️ 坑 4 :.bat 里写中文提示,运行报
'??场编译...' is not recognized as an internal or external command原因:脚本存成 UTF-8,cmd 按 GBK 解析,提示文字被当成命令执行了。 解决:另存为 ANSI 编码,或开头加chcp 65001。
七、性能实测:我的 RTX 4060 能跑多快
GPU 层数对速度的影响
| 配置 | 速度 |
|---|---|
n_gpu_layers=0(纯 CPU 跑) |
18.7 tok/s |
n_gpu_layers=-1(全部塞 GPU) |
105.7 tok/s |
结论:差 5.6 倍。有显卡一定要开 GPU。
上下文窗口对显存的影响
| n_ctx | 显存占用 |
|---|---|
| 未加载 | 596 MiB |
| 256 | 1798 MiB |
| 2048 | 2017 MiB |
| 8192 | 2185 MiB |
| 32768 | 3398 MiB |
结论:8G 显卡跑 1.5B 模型开 32K 上下文完全够,还剩 4.7G。
顺带算出个有用的数:KV cache 的边际成本约 46 KB/token (从 2048 到 32768 多了 30720 token,显存多了约 1.4GB)。按这个数估,7B 模型(Q4 权重约 4.5GB)配 32K 上下文大约要 6.3GB------8G 卡塞得下,但只剩 1.5G 余量,同时开浏览器就可能 OOM。所以 8G 卡 + 7B + 8K~16K 上下文是比较稳的组合。
怎么看显存 :开一个窗口跑 nvidia-smi -l 1,另一个窗口跑脚本,你会亲眼看到显存从 600 跳到 2100------模型"住进"显卡的瞬间。
yaml
601 → 601 → 592 → 604 → 2133 → 2141 → 2130 → 664 → 577
↑ 模型加载进显存 ↑ 进程结束释放
上下文开太小会报错:
java
ValueError: Requested tokens (389) exceed context window of 256
意思是"输入 + 历史 + 要生成的"加起来超了模型记忆容量。中文 1 token ≈ 0.6 字,256 token 只有 150 字左右。
八、本地部署 vs 云 API,怎么选
| 本地部署 | 云 API | |
|---|---|---|
| 成本 | 只有电费 | 按 token 计费 |
| 速度 | 无网络延迟(105 tok/s) | 排队 + 网络往返 |
| 能力 | 1.5B 小模型,能力有限 | 千亿参数,强得多 |
| 数据 | 不出本机 | 上传云端 |
我的判断:学原理、处理敏感数据、离线用 → 本地;真正干活、要效果 → 云 API。 两者不是替代关系,是一个人的两只手。
九、我把这些写成了一个一键脚本
上面这些坑踩完之后,我把代码整理成了一个可以直接用的脚本,省得下一个人再踩一遍:
仓库地址:github.com/wovow-mak/l...
bash
git clone https://github.com/wovow-mak/local-llm-easy-deploy.git
cd local-llm-easy-deploy
pip install -r requirements.txt
python deploy.py --check # 先体检:Python / 显存 / 推理库 / 模型文件
python deploy.py # 体检通过就直接开聊
它比我上面贴的示例代码多做了 5 件事:
| 能力 | 示例代码 | deploy.py |
|---|---|---|
| 路径 | 写死相对路径 | 以脚本自身为锚点,任何目录可跑 |
| 参数 | 改代码才能调 | --ctx --cpu --model 命令行传 |
| 显卡 | 不管 | 自动读显存,推荐该跑多大的模型 |
| 报错 | traceback 甩脸上 | 人话 + 具体解决命令 |
| 上下文超限 | 直接崩 | 提示"输入 /clear 清空记忆" |
它还会在启动前估算显存占用 (1000 + n_ctx × 0.046 MiB,就是上面测出来的 46KB/token),超过显卡 92% 就提前警告,而不是等你跑到一半 OOM。
接下来打算做的:Web 界面 / 微调一个自己的垂直领域模型 / 用 RAG 做本地知识库问答。
有问题评论区见,看到都会回。
附:完整踩坑速查表
| # | 现象 | 根因 |
|---|---|---|
| 1 | 下载 447MB 要 2 小时 | 直连 GitHub,走镜像 |
| 2 | 装不上包(not a supported wheel) | Python 版本和 wheel 标签不一致 |
| 3 | import 崩(llama.dll missing dependency) | 缺 CUDA 运行库,不是缺驱动 |
| 4 | .bat 中文乱码还报错 | 编码 UTF-8 vs GBK |
| 5 | 双击 .py 闪退 | 用了系统默认 Python(无依赖) |
| 6 | 换目录跑不了(Model path does not exist) | 相对路径锚点是运行目录 |