很多人第一次用 llama.cpp 是卡在「命令敲完了,但它只吐一堆报错」——模型文件格式不对、量化档位选高了下不去、上下文开太大直接爆显存,都会表现成看起来差不多的失败。这篇不给万能命令,而是给一条可复用的加载与参数配置流程:先确认文件,再定参数,最后按顺序排查。
很多人第一次用 llama.cpp,卡住的地方不是不会敲命令,而是敲完之后屏幕上只滚一堆报错,看着都差不多:文件没被识别、量化档位挑高了跑不动、上下文开太大显存直接爆炸。这几种失败的表现高度相似,但修法完全不一样,所以上来别猜,按顺序走。
下面给一条可以反复用的流程:先确认手里那个文件到底能不能被吃,再定加载参数,最后按固定顺序排查。核心思路是「每次只动一个变量」,跑通比跑快重要。具体的模型清单和部署选型,可以到 /models/deploy 对照着看当时的资料。
开跑之前:确认文件与运行环境
llama.cpp 吃的是它自己那套 GGUF 体系,你直接把训练权重或者别的格式的模型文件拖进去,它根本不会认,只会报文件读不出来。所以第一步永远是看清楚手里文件的后缀和量化标记,不认识的格式先去查名词,别急着怀疑程序装错了。
- 先确认文件格式与量化标记,llama.cpp 只认它自己那套体系,格式名词到 /ai-dict/category/tech 查
- 确认是源码自编译还是装现成包,两种方式能调用的后端不一样,不确定就看官方仓库当前支持清单
- 把模型放到纯英文、无空格的短路径下,路径带中文或空格是新手最常见的「找不到文件」来源
- 确认运行设备是纯 CPU 跑还是要用独显,这直接决定后面卸载层数怎么设
加载模型与核心参数怎么配
参数别一上来就全调。本地跑模型真正影响成败的其实就两个:有多少层卸载到显卡上,以及上下文开多长。前者决定速度,后者决定你能一次聊多长,两个同时开大,就是显存爆掉的直接原因。
- 先跑最小可用配置上下文给到最小,卸载层数尽量少甚至为零,先让服务起来、能吐字。这一步只验证「能不能跑」,不追求快。
- 一层层往显卡上加确认能出字之后,逐步增加卸载层数,每次只加一点,加完重跑一次确认没崩。崩了就退回上一档,这一档就是你的稳定值。
- 再调上下文长度速度稳定后再拉长上下文,从短到长逐档试。日常问答和长文档处理建议各留一份配置,不要共用。
- 采样参数先别碰温度、重复惩罚这类保持默认。输出不像预期时,先怀疑量化损失或提示词模板,不要拿采样参数去救场。
| 参数类别 | 作用 | 什么时候动它 |
|---|---|---|
| 卸载层数 | 决定多少计算在显卡上跑,影响速度 | 跑通之后,想提速时逐档加 |
| 上下文长度 | 决定单次能处理多长的内容 | 问答和长文档分开配,不要一套通吃 |
| 采样类参数 | 影响输出的随机性和重复倾向 | 确认模型本身没问题之后,再微调 |
| 线程数 | 决定 CPU 侧用多少核 | 纯 CPU 跑时才需要关注,别超过物理核数 |
显存、上下文与速度的取舍
判断显存够不够,不能只看模型文件多大。真正占地方的是两块:权重本身,加上上下文带来的缓存。模型文件小并不代表跑得起来,上下文一拉长,缓存会跟着涨,这也是很多人「明明模型不大却爆显存」的原因。想认真估一遍,到 /models/deploy 用测算页面跑一遍当时的数字。
- 按「权重占用 + 上下文缓存」两块估算,不看单一文件大小
- 上下文越长越吃显存也越慢,长文档和日常问答分开配置
- 显存塞不下就往 CPU 退,速度慢但能跑,先保证能用再谈快慢
- 跑通之后用 /tools/speed-test 量一个自己的延迟基线,之后调参拿数字对比,不靠感觉
本地部署的默认姿势是先跑通、再跑快,顺序颠倒过来就是无限折腾。
跑不起来时的排查顺序
出问题不要倒着查。正确的顺序是:文件是否被识别、显存是否够、参数是否越界、提示词或对话模板是否匹配。倒着查的话,你会在调参数上耗很久,最后发现压根是模板没对上。
- 报显存相关错误
- 先把卸载层数和上下文各砍一半再试,能起来就说明是容量问题,不是程序问题
- 能加载但输出乱码停不下来
- 多半是对话模板没对上,换用模型自带的模板配置再试
- 换量化档位后效果变差
- 先退回上一档确认是量化导致,再决定要不要降档,别一次改太多变量
- 纯 CPU 跑速度慢
- 正常现象,先接受速度换可用性,后面再考虑加减层数或换更小档位
这套顺序的价值在于:每一步都能排除一类原因,而不是靠猜。养成「改一个参数就重跑一次」的习惯,你很快就会有一套属于自己的稳定配置档,换模型时在这基础上改,比每次从零试快得多。
下一步想知道当前哪些本地部署方案和中转站更适合你的场景,可以到站点导航页对比可信度与适用条件,再回到测算页选配置。→常见问题
llama.cpp 和 Ollama 跑同一个模型,我该用哪个?
看你想要什么。llama.cpp 参数暴露更细,适合要抠显存、上下文和卸载层数的人;Ollama 省事,模型管理和接口都替你办了。同一台机器上两个都装不冲突,先用 Ollama 验证模型能跑,再去 llama.cpp 调性能,是常见的省时顺序。
为什么我的模型加载成功,但输出速度慢得没法用?
最常见原因是卸载到显卡的层数太少,大部分计算落在 CPU 上。其次是把上下文开得过大,缓存挤占了算力空间。先把层数往上加、上下文往下调,各试一次对比,基本能定位到是哪一头拖的。硬件本身不够的话,降量化档位是最后一步。
换一个模型,之前的参数还能直接用吗?
不能整套照搬。模型大小、量化方式和对话模板都可能不同,显存占用和模板匹配是最容易出问题的两项。稳妥做法是保留「上下文、采样」这类通用项,重新确定卸载层数,并确认模板对得上,再跑一次基线测速。