llama.cpp运行本地模型

模型与算力

讲清 llama.cpp 加载本地模型的完整流程:从文件格式与量化档位确认,到启动参数配置、显存与上下文设置,再到卡住时的排查顺序。

很多人第一次用 llama.cpp 是卡在「命令敲完了,但它只吐一堆报错」——模型文件格式不对、量化档位选高了下不去、上下文开太大直接爆显存,都会表现成看起来差不多的失败。这篇不给万能命令,而是给一条可复用的加载与参数配置流程:先确认文件,再定参数,最后按顺序排查。

很多人第一次用 llama.cpp,卡住的地方不是不会敲命令,而是敲完之后屏幕上只滚一堆报错,看着都差不多:文件没被识别、量化档位挑高了跑不动、上下文开太大显存直接爆炸。这几种失败的表现高度相似,但修法完全不一样,所以上来别猜,按顺序走。

下面给一条可以反复用的流程:先确认手里那个文件到底能不能被吃,再定加载参数,最后按固定顺序排查。核心思路是「每次只动一个变量」,跑通比跑快重要。具体的模型清单和部署选型,可以到 /models/deploy 对照着看当时的资料。

开跑之前:确认文件与运行环境

llama.cpp 吃的是它自己那套 GGUF 体系,你直接把训练权重或者别的格式的模型文件拖进去,它根本不会认,只会报文件读不出来。所以第一步永远是看清楚手里文件的后缀和量化标记,不认识的格式先去查名词,别急着怀疑程序装错了。

  • 先确认文件格式与量化标记,llama.cpp 只认它自己那套体系,格式名词到 /ai-dict/category/tech 查
  • 确认是源码自编译还是装现成包,两种方式能调用的后端不一样,不确定就看官方仓库当前支持清单
  • 把模型放到纯英文、无空格的短路径下,路径带中文或空格是新手最常见的「找不到文件」来源
  • 确认运行设备是纯 CPU 跑还是要用独显,这直接决定后面卸载层数怎么设

加载模型与核心参数怎么配

参数别一上来就全调。本地跑模型真正影响成败的其实就两个:有多少层卸载到显卡上,以及上下文开多长。前者决定速度,后者决定你能一次聊多长,两个同时开大,就是显存爆掉的直接原因。

  1. 先跑最小可用配置上下文给到最小,卸载层数尽量少甚至为零,先让服务起来、能吐字。这一步只验证「能不能跑」,不追求快。
  2. 一层层往显卡上加确认能出字之后,逐步增加卸载层数,每次只加一点,加完重跑一次确认没崩。崩了就退回上一档,这一档就是你的稳定值。
  3. 再调上下文长度速度稳定后再拉长上下文,从短到长逐档试。日常问答和长文档处理建议各留一份配置,不要共用。
  4. 采样参数先别碰温度、重复惩罚这类保持默认。输出不像预期时,先怀疑量化损失或提示词模板,不要拿采样参数去救场。
参数类别作用什么时候动它
卸载层数决定多少计算在显卡上跑,影响速度跑通之后,想提速时逐档加
上下文长度决定单次能处理多长的内容问答和长文档分开配,不要一套通吃
采样类参数影响输出的随机性和重复倾向确认模型本身没问题之后,再微调
线程数决定 CPU 侧用多少核纯 CPU 跑时才需要关注,别超过物理核数

显存、上下文与速度的取舍

判断显存够不够,不能只看模型文件多大。真正占地方的是两块:权重本身,加上上下文带来的缓存。模型文件小并不代表跑得起来,上下文一拉长,缓存会跟着涨,这也是很多人「明明模型不大却爆显存」的原因。想认真估一遍,到 /models/deploy 用测算页面跑一遍当时的数字。

  • 按「权重占用 + 上下文缓存」两块估算,不看单一文件大小
  • 上下文越长越吃显存也越慢,长文档和日常问答分开配置
  • 显存塞不下就往 CPU 退,速度慢但能跑,先保证能用再谈快慢
  • 跑通之后用 /tools/speed-test 量一个自己的延迟基线,之后调参拿数字对比,不靠感觉
本地部署的默认姿势是先跑通、再跑快,顺序颠倒过来就是无限折腾。

跑不起来时的排查顺序

出问题不要倒着查。正确的顺序是:文件是否被识别、显存是否够、参数是否越界、提示词或对话模板是否匹配。倒着查的话,你会在调参数上耗很久,最后发现压根是模板没对上。

报显存相关错误
先把卸载层数和上下文各砍一半再试,能起来就说明是容量问题,不是程序问题
能加载但输出乱码停不下来
多半是对话模板没对上,换用模型自带的模板配置再试
换量化档位后效果变差
先退回上一档确认是量化导致,再决定要不要降档,别一次改太多变量
纯 CPU 跑速度慢
正常现象,先接受速度换可用性,后面再考虑加减层数或换更小档位

这套顺序的价值在于:每一步都能排除一类原因,而不是靠猜。养成「改一个参数就重跑一次」的习惯,你很快就会有一套属于自己的稳定配置档,换模型时在这基础上改,比每次从零试快得多。

下一步想知道当前哪些本地部署方案和中转站更适合你的场景,可以到站点导航页对比可信度与适用条件,再回到测算页选配置。

常见问题

llama.cpp 和 Ollama 跑同一个模型,我该用哪个?

看你想要什么。llama.cpp 参数暴露更细,适合要抠显存、上下文和卸载层数的人;Ollama 省事,模型管理和接口都替你办了。同一台机器上两个都装不冲突,先用 Ollama 验证模型能跑,再去 llama.cpp 调性能,是常见的省时顺序。

为什么我的模型加载成功,但输出速度慢得没法用?

最常见原因是卸载到显卡的层数太少,大部分计算落在 CPU 上。其次是把上下文开得过大,缓存挤占了算力空间。先把层数往上加、上下文往下调,各试一次对比,基本能定位到是哪一头拖的。硬件本身不够的话,降量化档位是最后一步。

换一个模型,之前的参数还能直接用吗?

不能整套照搬。模型大小、量化方式和对话模板都可能不同,显存占用和模板匹配是最容易出问题的两项。稳妥做法是保留「上下文、采样」这类通用项,重新确定卸载层数,并确认模板对得上,再跑一次基线测速。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。