llama.cpp部署本地对话模型
核心执行流程
graph TD
A[配合工具和显卡CUDA版本安装CUDA ToolKit(最好搜索教程安装)] --> B[Scoop 安装 llama.cpp]
B --> C[Scoop 安装 fastfetch 查看机器配置]
C --> D[将配置发给大模型,获取适配模型推荐]
D --> E[前往 HuggingFace 官网查找 GGUF 格式模型]
E --> F[pip 安装 huggingface-cli 命令行工具]
F --> G[命令行下载 GGUF 模型到本地]
G --> H[llama.cpp 加载模型使用]
H --> H1[llama-cli:命令行交互式对话]
H --> H2[llama-server:本地 API 服务]
环境准备
前置条件
- Windows 10/11 系统
- 已安装 Scoop 包管理器(未安装看下方)
- 已安装 Python(用于下载模型)
分步详细教程
1. 安装 Scoop(未安装必看)
以管理员身份打开 PowerShell,执行:
1 | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser |
2. 获取 lamma.cpp 版本
1 | scoop search lamma.cpp |
3. 获取自己机器配置(fastfetch)
1 | scoop install fastfetch |
4. 询问网页端大模型下载哪个版本
将获取到的llama.cpp和机器配置发给大模型,让它推荐合适的llama.cpp版本,但这只能作为参考。
N卡用户先在终端输入 nvidia-smi 查看自己的CUDA版本,进 scoop官网 搜索 llama.cpp,找到对应的版本(CUDA12/CUDA13,截止文章日期只有这俩比较新),用scoop安装。
下载安装对应版本CUDA Toolkit,不然大模型只能跑在CPU上。
(建议安装CUDA ToolKit去找一些教程)
5. Scoop 安装核心工具:llama.cpp
1 | # 安装 llama.cpp(根据安装的CUDA版本选择) |
6. 再次询问大模型获取合适模型推荐
机器配置重点:CPU、显卡、显存、内存,发给网页大模型(在之前应该全发了),提问示例:
1 | 我的机器配置:[粘贴你的配置] |
7. 安装 HuggingFace 命令行工具(下载模型专用)
llama.cpp 仅支持 GGUF 格式模型,我们用官方工具高速下载:
1 | # 安装 huggingface 命令行工具 |
可以配置 huggingface 命令行工具下载镜像:
1 | # 临时设置 |
8. 下载 GGUF 格式模型(本地存放)
首先去 huggingface 官网 查找之前推荐的模型,然后复制名称,用命令行工具下载即可(命令行工具的好处是可以批量下载)。
命令行工具查看仓库中的模型文件:
1 | hf models info Qwen/Qwen2.5-7B-Instruct-GGUF |
新建模型文件夹(推荐非 C 盘)
1 | mkdir D:\llm\models |
下载模型(以 Qwen2.5-7B-Instruct-GGUF 为例),--include 指定了下载仓库中的哪个模型文件(这里的模型文件是分卷保存的,把分卷保存的模型文件都下载下载下来)。
1 | hf download Qwen/Qwen2.5-7B-Instruct-GGUF --include "qwen2.5-7b-instruct-q4_k_m*.gguf" --local-dir D:\llm\models\qwen |
然后合并分卷文件:
1 | # 命令格式: .\llama-gguf-split.exe --merge <第一个分片文件路径> <输出文件路径> |
性能测试
使用下面的命令能看到你的模型在你的机器上能跑到的性能极限
1 | llama-bench -m D:\llm\models\qwen\qwen2.5-7b-instruct-q4_k_m.gguf -ngl 100 |
这里如果 backend 没看到 GPU,可能要去检查CUDA ToolKit有没有搞好之类的。
1 | ➜ ~ llama-bench -m D:\llm\models\qwen\qwen2.5-7b-instruct-q4_k_m.gguf -ngl 100 |
pp512:处理512个token输入tg128:生成128个token输出
llama.cpp cli/server 使用模型
推荐看这个教程视频:使用llama.cpp部署本地大模型
以下内容是我根据自己的机器配置让AI帮我完成的,仅供参考。
想流畅运行 llama-cli 和 llama-server,关键是让模型在GPU和CPU之间协同工作。
核心思路是:模型默认在CPU上运行,通过 -ngl (或 --n-gpu-layers) 参数,可以把模型的计算层”卸载”到性能更强的独立显卡上进行加速。你可以把它想象成给一辆车(CPU)加装了一个火箭助推器(GPU),而 -ngl 就是这个助推器的启动按钮。
llama-server和llama-cli的核心参数是通用的,两者都可以使用。
命令核心参数详解
这里有一些最常用的参数,你可以把它们想象成AI的“操作手册”。
| 参数 | 作用 | 针对你配置的建议 |
|---|---|---|
-m, --model |
指定模型文件的路径。 | 必填,需要提供你下载好的GGUF模型文件位置。 |
-ngl, --n-gpu-layers |
核心加速参数。指定将模型的计算层卸载到GPU的数量。 | 推荐值:28。对于7B模型和你的8GB显卡,这个值很稳妥,能有效利用显存且不易溢出。 |
-c, --ctx-size |
设定模型的“上下文窗口”大小,即模型一次能“记住”的文本量(以Token为单位)。 | 推荐值:8192。这是性能和显存占用的平衡点,足以应对长篇小说的上下文。 |
-t, --threads |
指定 CPU 线程数,用于处理GPU卸载后剩余的计算任务。 | 推荐值:6。你的i7-13700H有20个核心,设置为6可以避免CPU过饱和,同时保证系统流畅。 |
-p, --prompt |
提供初始提示词,用于启动单次生成任务。 | 根据你的写作需求自定义。 |
-n, --n-predict |
限制生成的最大Token数量,控制回答的长度。 | 根据你的需要设置,例如 -n 512。 |
-b, --batch-size |
物理批处理大小。每次将多少Token输入模型进行处理。 | 推荐值:512。默认值即可,一般无需调整。 |
-ub, --ubatch-size |
逻辑批处理大小,影响内存使用和计算效率。 | 推荐值:256。较低的数值可以帮助稳定运行,特别是在显存紧张时。 |
--mlock |
锁定内存,防止模型在运行时被系统换出到硬盘上,保证性能稳定。 | 推荐添加,能保证生成速度平稳。 |
--no-mmap |
不使用内存映射。直接将模型加载到内存中。 | 可选。如果你的系统内存(RAM)非常充裕(大于32GB),可以考虑添加。 |
-j, --jinja |
启用Jinja聊天模板,对于多轮对话非常关键。 | 推荐在交互模式或服务器模式下启用,以获得更好的对话体验。 |
-cnv, --conversation |
开启交互式对话模式,方便进行多轮对话。 | 如果你通过命令行与AI交互,建议启用。 |
--host |
设置llama-server监听的IP地址。 |
默认为127.0.0.1(仅本机访问)。如需局域网访问,可设为0.0.0.0。 |
--port |
设置llama-server监听的端口号。 |
推荐值:8080。这是常用的默认值。 |
快速上手实战
下面我们通过具体的命令,来看看这个“火箭助推器”是怎么点火的。
1. 开启交互式对话 (llama-cli)
这个命令就像是让AI根据你的提示词一次性写出一个短篇故事。
1 | # 假设你的模型放在 D:\llm\models\qwen 目录下 |
命令解析:
-m:指向你下载好的模型文件。-ngl 100:将100层模型计算交给你的RTX 4060显卡处理,这是性能提升的关键,层数搞大点没事,只是尽可能让显卡处理计算任务罢了。-c 16384:模型能记住约 16384 个字的上下文,足够处理复杂的情节。-t 6:使用6个CPU核心辅助计算。-p "...":这是你的故事开头或指令。-n 512:让模型生成大约512个词的故事。
不带 -p、-n,会直接打开交互式窗口对话,使用 /exit 退出交互式命令窗口。
2. 启动一个API服务器 (llama-server)
启动服务器后,你不仅可以通过浏览器访问一个简单的Web界面,还可以通过代码(如Python)调用API来使用模型。
1 | llama-server -m D:\llm\models\qwen\qwen2.5-7b-instruct-q4_k_m.gguf -ngl 100 -c 16384 -t 6 -ctk q8_0 -ctv q8_0 --host 127.0.0.1 --port 8080 |
命令解析:
- -ctk: –cache-type-k 的简写,控制缓存中 K (Key) 部分的数据类型。
- -ctv: –cache-type-v 的简写,控制缓存中 V (Value) 部分的数据类型。
你可以把它们想象成给这个“短期记忆”选择不同材质的“便签纸”:
- f32 (浮点32位): 最高精度的“金箔纸”,效果最好但最占显存。
- f16 (浮点16位): 标准“A4纸”,性能与容量的平衡选择。
- q8_0 (8位量化): 实用“便签纸”,大部分场景下优先推荐,能有效节省显存,且性能损失极小。
- q4_0 (4位量化): 紧凑“便利贴”,极致省显存,但可能对复杂逻辑略有影响。
参数 --host 127.0.0.1 --port 8080:设置服务器地址。启动后,在浏览器打开 http://127.0.0.1:8080 就能看到交互界面。
除此之外还可以通过 --api-key 设置apikey,这样通过 base url: http://127.0.0.1:8080和 apikey 就可以调用模型了,不设置的话在 agent 中 apikey 栏随便填写内容。