下好了 .gguf 文件,正琢磨到底怎么跑?最快的路:ollama run hf.co/<repo>:Q4_K_M——Ollama 直接从 Hugging Face 把 GGUF 拉下来跑起来。GGUF 是 llama.cpp 推出的单文件模型格式,如今所有本地 LLM 工具都说这门语言,同一个文件能在 Ollama、llama.cpp、LM Studio、Jan 以及(带保留意见的)vLLM 里运行。本文覆盖每个运行器的可复制命令、怎么按显存挑对量化,以及你真正会撞上的加载错误。
GGUF 文件是什么?
GGUF(GGML Universal File)是量化语言模型的容器格式。一个文件装下权重、tokenizer 和模型元数据——不用再下别的,也没有配置大杂烩。里面的权重是量化过的:从 16 位浮点压到 4 位(或更低)整数,所以全精度需要约 18 GB 的 9B 模型,做成 Q4 文件只占约 5.5 GB,游戏卡甚至 CPU 都能跑。
GGUF 文件名里有两处值得在意:
- 基础模型——
gemma-3-4b-it-GGUF是微调过的 Gemma 3 4B 导出成 GGUF。 - 量化标签——
Q4_K_M、Q8_0、IQ4_XS这些标记说明权重被压得有多狠。怎么选,下文细说。
Ollama 能跑 GGUF 模型吗?
能——GGUF 是 Ollama 的原生格式,而且从 2024 年起可以直接从 Hugging Face 拉取,你连文件都不用碰:
# 直接从 Hugging Face 拉一个 GGUF 量化并开始对话
ollama run hf.co/bartowski/gemma-2-9b-it-GGUF:Q4_K_M
# 冒号后的量化标签决定取仓库里哪个文件
ollama run hf.co/ggml-org/gemma-3-4b-it-GGUF:Q8_0 已经自己下好了 .gguf 文件?用一个 Modelfile 指过去:
# Modelfile——一行就够
FROM ./gemma-2-9b-it-Q4_K_M.gguf ollama create gemma9b -f Modelfile
ollama run gemma9b Ollama 自动决定 GPU 卸载,并在 11434 端口暴露 OpenAI 兼容 API,任何会说这套 API 的工具都能用上模型。代价是控制力:多少层上 GPU,你说了不算。
怎么在 llama.cpp 里跑 GGUF 文件?
GGUF 出自 llama.cpp——这个格式就是为它而生的——所以支持最深、更新最快。llama-server 一个二进制同时给你聊天界面和 OpenAI 兼容端点:
# 直接从 Hugging Face 下载(自动挑选匹配你机器的 GGUF)
llama-server -hf ggml-org/gemma-3-4b-it-GGUF --port 8080
# 或者跑一个已有的文件,GPU 全量卸载
llama-server -m ./gemma-2-9b-it-Q4_K_M.gguf -ngl 99 --port 8080 -ngl 99 表示往 GPU 上推 99 层;设得比显存允许的低,剩下的层就留在 CPU。这个部分卸载旋钮是 llama.cpp 的看家本领——9B 模型在 6 GB 卡上卸载 48 层中的 20 层也能跑,只是慢些。只想一次性提问、不开服务,把 llama-server 换成 llama-cli,-m 参数不变。
LM Studio 是同一个引擎外面套了桌面 GUI:把 .gguf 文件丢进它的 models 目录(或在应用内搜 Hugging Face),点加载。至于工具本身怎么选,Ollama vs LM Studio 对比讲的就是给模型底下垫哪个。
该下载哪个 GGUF 量化版本?
默认答案:Q4_K_M。它是社区的甜点位——质量距全精度一到两个百分点以内,体积只有四分之一左右。完整的梯子,从大到小:
- Q8_0——几乎无损;显存吃得下每权重 8.5 位且毫无压力,就用它。
- Q6_K / Q5_K_M——体积降一档,30B 以上的模型依然优秀。
- Q4_K_M——默认选择。7–14B 模型在这一档达到每 GB 质量的峰值。
- IQ4_XS / Q3_K_M——把大模型硬塞进小卡用;质量损失开始可感。
- Q2_K 及以下——最后的手段;模型会在句子中间开始胡言乱语。
装得下的经验法则:文件体积(GB)加约 1–2 GB 上下文开销,不超过显存即可。9B 模型的 4.7 GB Q4_K_M 在 8 GB 卡上很从容。宁可选更小的模型配更高的量化,也别选大模型配糟糕的量化——Q8 的 4B 通常打赢 Q2 的 9B。
GGUF 对比 Safetensors:你需要哪种格式?
Safetensors 是未量化的归档格式——服务训练、微调和 transformers、ComfyUI 这类工具的全精度权重。GGUF 是量化、可运行的格式,面向你自己的硬件做推理。GGUF 没法微调,safetensors 也没法直接在 Ollama 或 llama.cpp 里跑,得先转换(llama.cpp 的 convert_hf_to_gguf.py 脚本干的就是这个活)。规则:训练或图像管线 → safetensors;本地聊天与服务 → GGUF。如果你的搜索词本来就是”gguf vs safetensors”,这一刀切就是全部答案。
GGUF 运行器该选哪个?
| 运行器 | 最适合 | 安装 | GPU 卸载 | OpenAI 兼容 API |
|---|---|---|---|---|
| Ollama | 一次配置、长期无感运行的服务 | curl 一行命令 | 自动 | 有(:11434/v1) |
| llama.cpp | 最大控制权、最新特性 | 自行编译或包管理器 | 手动 -ngl 旋钮 | 有(llama-server) |
| LM Studio | 桌面 GUI、浏览模型 | 下载应用 | 自动 | 有(本地服务器) |
| vLLM | 批量多用户服务 | pip install vllm | 自动 | 有(原生) |
想让它开机自启、藏在幕后——选 Ollama,我在自己的 homelab 上就是用它给全网设备供模型。想要新特性发布当天就用上(新架构总是先落到这里),或者要层级粒度的显存控制——选 llama.cpp。想要 GUI——LM Studio。一个模型要同时服务许多并发用户——才轮到 vLLM,它的 GGUF 支持能用,但相较原生格式终归是二等公民。
GGUF 模型为什么加载不起来?
覆盖大多数情况的四种错误:
unknown model architecture——GGUF 用了你的运行时还不认识的架构(新的 MoE 和视觉模型层出不穷)。升级 Ollama 或重新编译 llama.cpp;没有别的修法。- 加载时内存不足——量化对”显存加上下文”来说太大了。降一档(
Q4_K_M→Q3_K_M)、调低-ngl,或用-c 4096缩上下文。 - 下载截断/损坏——加载 GGUF 时报 magic number 或元数据错误。重新下载,和 Hugging Face 页面上标注的 SHA256 对一下。
ollama run ./model.gguf不接受——正常现象:Ollama 的run接收模型名,不收文件路径。走上文演示的 Modelfile 路线。
最后一个值得知道的角度:本地 GGUF 端点和 agentic 编码工具是绝配——把 OpenAI 兼容客户端指过去,completion 的成本只剩电费。写代码最好的本地 LLM测过管线跑通之后,哪些模型配得上这个位置。
— mrsaynothing
Get the next one by email
One email per post. No spam, no algorithms.
what is this?喜欢这些文章?我的本职工作就是这样的工程。 雇用我