llama.cpp 可以在纯 CPU、甚至很弱的机器上运行大模型。它使用自有的 GGUF 格式,通过量化将模型权重压缩到更低精度,从而降低内存和算力需求。
在 CPU 上推理,基本只能高效处理 整数运算,因此 GGUF 模型通常是 4 / 5 / 6 / 8-bit 量化版本。
所谓量化,是将原本的 FP32 / BF16 浮点权重,转换为更低精度的表示形式,如 int8 / int4,或少量混合精度(例如 5-bit)。原始浮点权重精度高,但显存和存储占用巨大;而 LLM 对权重精度的敏感度相对有限,因此可以接受低精度表示。另一方面,CPU 对整数运算远比浮点运算友好,这也是 int 量化在 CPU 推理中可行的原因。
因此,本地运行大模型时,算力固然重要,但现阶段真正的瓶颈是显存(VRAM)和内存容量。
在消费级硬件中,显卡显存通常最多只有 24–32GB,且价格极高。同时,英伟达已在消费级显卡上取消 NVLink,多卡只能通过 PCIe 互联,带宽和延迟都不适合大规模模型切分。即使存在 NVLink,也无法单独扩展显存容量,只能通过增加整张显卡来实现。如果显存不足,需要频繁在内存和显存之间交换数据,又会受到 PCIe 带宽的严重限制。
若完全不用显卡,改为纯 CPU 推理,则可以依赖系统内存,但模型一旦过大,即使“放得下”,计算速度也会慢到不可用。
此外,除了模型权重本身,KV cache 也会占用大量内存/显存,其大小与 context window 呈线性关系。因此,context window 越大,内存占用就越高,这是本地推理时常被低估的成本。
在 Hugging Face(可视为 LLM 领域的 GitHub)上,用户可以填写自己的硬件配置,模型页面会提示是否可运行。我使用的是 16GB DDR4 内存(8GB×2 双通道)+ i7-1065G7,在 llama.cpp 中通过 -dev none -ngl 0 禁用 GPU(核显性能过弱),最多只能运行 Qwen3 14B 的 Q4_K_M 量化版本,速度约 3 token/s,勉强可用。代价是 context window 只能设为 2048。综合体验来看,8B 更现实,4B 才算真正可用。
而我最初尝试的 0.6B 超小模型,在这台机器上速度很快,但模型能力明显不足,实用性有限。
至于真正意义上的“大模型”,例如 Qwen3 A22B(约 235B 权重) 或 DeepSeek V3 / R1(约 635B 权重),普通个人硬件完全无法运行。即便是极端的 1-bit 版本,体量也在 200GB 级别。现实中,消费级显卡“跑得比较舒服”的上限大约在 30B 左右(仍需量化)。这也解释了为什么 Hugging Face 上下载量最高的模型,集中在 10B 左右,甚至 5B 以下。