你手上有一台带显卡的机器,想不联网把模型跑起来,搜到 llama.cpp 但文档全是英文、参数一堆,不知道从哪下手;或者你已经装好了,却发现模型库里的文件五花八门,不知道该下哪个。这篇按「先跑通再优化」的顺序,把安装、模型文件挑选、跑起来之后的排查动作讲一遍,参数和硬件门槛的坎在哪也一并说清。
你手边有台带显卡的机器,想不联网把模型跑起来,搜到 llama.cpp 一看文档全英文、参数一屏接一屏,不知道从哪下手;或者你已经装好了,打开模型库发现同一模型下十几个文件,体积差好几倍,不知道该点哪个下载。这篇按「先跑通再优化」的顺序,把安装、挑文件、跑起来之后的排查动作捋一遍。
先说清预期:这里不承诺「几分钟搞定」,也不替你做硬件选型。不同机器、不同模型差别很大,参数和硬件门槛的坎在哪,只给判断标准,具体数字到站内页面核对当时的版本。
llama.cpp 到底是什么,谁该用它
一句话,它是用 C/C++ 写的本地推理程序,把模型权重跑在 CPU 或显卡上,不依赖云端接口,编译完就是一个可执行文件。它和你听过的 Ollama 不是同一层东西——后者更像打包好的管理器,底层经常就是它在干活。所以学会 llama.cpp,等于拿到了更底层的开关。
- 适合谁
- 想折腾量化档位、机器上没有 Python 环境、想在小内存设备上跑,或者想把推理嵌进自己程序里
- 不适合谁
- 要多用户并发、要跑超大模型吃满多张卡,这类场景该去看专门的推理服务框架,别硬扛
- 和上层工具的关系
- 很多一键跑模型的工具底层就是它,你把它的参数搞懂了,上层工具出问题也能自己查
- 它不管下载,只负责加载和推理,模型文件得你自己找好放好
- 它不吃各种花哨格式,得先把文件转成它能读的格式
- 编译产物是命令行程序,习惯图形界面的要适应一下
- 同一份代码能选 CPU 跑还是显卡跑,靠启动参数切换
模型库怎么用:找到能直接喂给它的文件格式
模型库的第一道坎不是选模型,是选文件。它主要吃 GGUF 这类单文件格式,一个文件里打包了权重和元信息。模型仓库里经常同时放好几种格式,下错了它根本读不了,白等半天。打开一个模型仓库,先看文件后缀,不是目标格式的直接跳过。
| 你要看的 | 怎么判断 | 不对怎么办 |
|---|---|---|
| 文件格式 | 后缀是不是它认的那种单文件 | 在仓库文件列表里翻有没有对应版本 |
| 量化标记 | 文件名里带的量化和体积档位标识 | 按自己内存/显存挑,别只看名字 |
| 文件体积 | 和你的内存、显存对不对得上 | 体积超标就换更低的量化档,硬下也跑不动 |
| 文件完整性 | 下载后先用程序读一遍文件头 | 读不出层数和量化类型就是坏了,重下 |
别只盯着参数量。参数量只决定模型的上限,量化档位才决定你能不能装下、跑多快。同一个模型不同量化档位,体积能差出好几倍,质量也差一截。选档位这事凭感觉容易翻车,去站内部署页按你的硬件算一遍:/models/deploy。
第一次跑通的最小步骤
第一次跑,目标是「能出一句话」,不是跑得好看。参数给多了,出了问题你根本不知道是哪一项导致的。所以先把参数减到最少,跑通之后再一项一项加。
- 准备环境把程序编译好,或者拿现成的预编译包。确认机器上有能用的编译器和显卡驱动,驱动不对后面卸载层数会一直是零。
- 放模型文件单文件模型放哪个目录都行,路径由你启动时自己指。别指望它有个固定的模型目录,放错地方只会报找不到文件。
- 最少参数启动先只指定模型路径和对话模式,能正常出一句话就说明链路通了。这时候谈速度优化还早。
- 确认跑在哪块硬件看启动日志里的卸载层数。如果全是零,说明模型整个压在内存里,慢就是这里的问题,再去调卸载相关参数。
跑起来之后怎么调,以及常见的坑
跑通之后的问题基本分三类:慢、答得不对、直接报错。三类各有各的排查顺序,最忌讳一次改好几个参数,改完不知道是哪个起的作用。按下面的对照表一项项来,每次只动一样。
| 现象 | 先查什么 | 再查什么 | 最后才考虑 |
|---|---|---|---|
| 速度很慢 | 有没有把层卸载到显卡上 | 上下文长度是不是开太大 | 换更小的量化档位 |
| 答非所问 | 对话模板和模型对不对得上 | 上下文里有没有混入多余内容 | 换量化档位重试 |
| 输出乱码 | 模型文件是不是下坏了 | 量化档位是不是压得太狠 | 换一个模型文件 |
| 内存或显存报错 | 降上下文长度 | 降卸载层数 | 换更低量化档 |
- 量化档位怎么选:质量、体积、速度三者互斥,选完去站内部署页按硬件算一遍再定,别凭感觉
- 上下文长度不是越大越好,它直接吃内存,跑不动先砍它
- 换档位比换模型省事,质量不够时先试高一档量化,再考虑换模型
- 报错信息别只看最后一行,前面常有真正的原因,比如文件没找到、驱动版本不匹配
这几步跑完,你手上就有了一条能复现的启动命令。把它记下来,以后换模型、换硬件,只改其中对应的一两项就行。真正的坑多半在模型文件选错和参数一次改太多,这两件事避开了,剩下的都是体力活。
下一步想知道你现在的硬件跑哪些本地模型比较合适、各类量化档位大概什么体验,去站内部署参考页按机型对照当时的说明。→常见问题
llama.cpp 和 Ollama 有什么区别,我该用哪个?
它更底层,直接跑模型文件,参数和控制权都在你手里;Ollama 更像加工过的管理器,装模型、起服务一条命令搞定。想省事选后者,想调量化档位、嵌进自己程序或者在没有 Python 环境的机器上跑,就看它。
模型库里的文件那么多,怎么知道该下哪个?
先按量化标记和文件体积筛,挑一个体积明显小于你显存或内存的版本,下完用程序读一遍文件头确认能识别。同一模型不同档位体积和质量都不一样,具体对应关系去 /models/deploy 按硬件算一遍比瞎猜靠谱。
为什么我跑起来特别慢?
最常见的原因是模型层全压在内存里没卸载到显卡,看启动日志里的层数就能确认。其次是上下文长度开得太大、量化档位太保守。按「卸层→上下文→量化档」的顺序调,每次只改一项再看效果。