本地大模型llama.cpp

模型与算力

讲清 llama.cpp 是干什么的、怎么装起来跑通,以及它的模型库怎么挑、怎么把 GGUF 文件找对放对。

你手上有一台带显卡的机器,想不联网把模型跑起来,搜到 llama.cpp 但文档全是英文、参数一堆,不知道从哪下手;或者你已经装好了,却发现模型库里的文件五花八门,不知道该下哪个。这篇按「先跑通再优化」的顺序,把安装、模型文件挑选、跑起来之后的排查动作讲一遍,参数和硬件门槛的坎在哪也一并说清。

你手边有台带显卡的机器,想不联网把模型跑起来,搜到 llama.cpp 一看文档全英文、参数一屏接一屏,不知道从哪下手;或者你已经装好了,打开模型库发现同一模型下十几个文件,体积差好几倍,不知道该点哪个下载。这篇按「先跑通再优化」的顺序,把安装、挑文件、跑起来之后的排查动作捋一遍。

先说清预期:这里不承诺「几分钟搞定」,也不替你做硬件选型。不同机器、不同模型差别很大,参数和硬件门槛的坎在哪,只给判断标准,具体数字到站内页面核对当时的版本。

llama.cpp 到底是什么,谁该用它

一句话,它是用 C/C++ 写的本地推理程序,把模型权重跑在 CPU 或显卡上,不依赖云端接口,编译完就是一个可执行文件。它和你听过的 Ollama 不是同一层东西——后者更像打包好的管理器,底层经常就是它在干活。所以学会 llama.cpp,等于拿到了更底层的开关。

适合谁
想折腾量化档位、机器上没有 Python 环境、想在小内存设备上跑,或者想把推理嵌进自己程序里
不适合谁
要多用户并发、要跑超大模型吃满多张卡,这类场景该去看专门的推理服务框架,别硬扛
和上层工具的关系
很多一键跑模型的工具底层就是它,你把它的参数搞懂了,上层工具出问题也能自己查
  • 它不管下载,只负责加载和推理,模型文件得你自己找好放好
  • 它不吃各种花哨格式,得先把文件转成它能读的格式
  • 编译产物是命令行程序,习惯图形界面的要适应一下
  • 同一份代码能选 CPU 跑还是显卡跑,靠启动参数切换

模型库怎么用:找到能直接喂给它的文件格式

模型库的第一道坎不是选模型,是选文件。它主要吃 GGUF 这类单文件格式,一个文件里打包了权重和元信息。模型仓库里经常同时放好几种格式,下错了它根本读不了,白等半天。打开一个模型仓库,先看文件后缀,不是目标格式的直接跳过。

你要看的怎么判断不对怎么办
文件格式后缀是不是它认的那种单文件在仓库文件列表里翻有没有对应版本
量化标记文件名里带的量化和体积档位标识按自己内存/显存挑,别只看名字
文件体积和你的内存、显存对不对得上体积超标就换更低的量化档,硬下也跑不动
文件完整性下载后先用程序读一遍文件头读不出层数和量化类型就是坏了,重下

别只盯着参数量。参数量只决定模型的上限,量化档位才决定你能不能装下、跑多快。同一个模型不同量化档位,体积能差出好几倍,质量也差一截。选档位这事凭感觉容易翻车,去站内部署页按你的硬件算一遍:/models/deploy。

第一次跑通的最小步骤

第一次跑,目标是「能出一句话」,不是跑得好看。参数给多了,出了问题你根本不知道是哪一项导致的。所以先把参数减到最少,跑通之后再一项一项加。

  1. 准备环境把程序编译好,或者拿现成的预编译包。确认机器上有能用的编译器和显卡驱动,驱动不对后面卸载层数会一直是零。
  2. 放模型文件单文件模型放哪个目录都行,路径由你启动时自己指。别指望它有个固定的模型目录,放错地方只会报找不到文件。
  3. 最少参数启动先只指定模型路径和对话模式,能正常出一句话就说明链路通了。这时候谈速度优化还早。
  4. 确认跑在哪块硬件看启动日志里的卸载层数。如果全是零,说明模型整个压在内存里,慢就是这里的问题,再去调卸载相关参数。

跑起来之后怎么调,以及常见的坑

跑通之后的问题基本分三类:慢、答得不对、直接报错。三类各有各的排查顺序,最忌讳一次改好几个参数,改完不知道是哪个起的作用。按下面的对照表一项项来,每次只动一样。

现象先查什么再查什么最后才考虑
速度很慢有没有把层卸载到显卡上上下文长度是不是开太大换更小的量化档位
答非所问对话模板和模型对不对得上上下文里有没有混入多余内容换量化档位重试
输出乱码模型文件是不是下坏了量化档位是不是压得太狠换一个模型文件
内存或显存报错降上下文长度降卸载层数换更低量化档
  • 量化档位怎么选:质量、体积、速度三者互斥,选完去站内部署页按硬件算一遍再定,别凭感觉
  • 上下文长度不是越大越好,它直接吃内存,跑不动先砍它
  • 换档位比换模型省事,质量不够时先试高一档量化,再考虑换模型
  • 报错信息别只看最后一行,前面常有真正的原因,比如文件没找到、驱动版本不匹配

这几步跑完,你手上就有了一条能复现的启动命令。把它记下来,以后换模型、换硬件,只改其中对应的一两项就行。真正的坑多半在模型文件选错和参数一次改太多,这两件事避开了,剩下的都是体力活。

下一步想知道你现在的硬件跑哪些本地模型比较合适、各类量化档位大概什么体验,去站内部署参考页按机型对照当时的说明。

常见问题

llama.cpp 和 Ollama 有什么区别,我该用哪个?

它更底层,直接跑模型文件,参数和控制权都在你手里;Ollama 更像加工过的管理器,装模型、起服务一条命令搞定。想省事选后者,想调量化档位、嵌进自己程序或者在没有 Python 环境的机器上跑,就看它。

模型库里的文件那么多,怎么知道该下哪个?

先按量化标记和文件体积筛,挑一个体积明显小于你显存或内存的版本,下完用程序读一遍文件头确认能识别。同一模型不同档位体积和质量都不一样,具体对应关系去 /models/deploy 按硬件算一遍比瞎猜靠谱。

为什么我跑起来特别慢?

最常见的原因是模型层全压在内存里没卸载到显卡,看启动日志里的层数就能确认。其次是上下文长度开得太大、量化档位太保守。按「卸层→上下文→量化档」的顺序调,每次只改一项再看效果。

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