GPUFits

CPU 卸载:部分层放上显卡值得吗?

更新于 2026-08-04 · 核实于 2026-08-04

你的显卡差 2GB 装不下模型。llama.cpp 的 -ngl 参数承诺了一个方案:把大部分层放显卡,剩下的放 CPU。这到底要付出什么代价?

部分卸载怎么工作

llama-cli -ngl 20 model.gguf 把 20 层放上显卡;剩下的层和部分计算在 CPU 上用系统内存跑。每个 token 仍然要流过所有层——所以每个 token 都要等流水线中最慢的一环:你的系统内存。

内存墙

路径带宽在每个 token 耗时中的角色
GPU 显存(4090)1008 GB/s
PCIe 4.0 x16约 32 GB/s(传输)中等
系统内存(DDR5 双通道)60–100 GB/s瓶颈

4090 读权重的速度比 CPU 读系统内存快约 12 倍。我们的速度模型如实反映:

卸载速度 = min(GPU 带宽, 约 80 GB/s) × 效率 ÷ 每 token 权重体积

真实数字(24B 模型,Q4_K_M)

配置估算速度体感
全量在 RTX 4090约 50 tok/s即时
60% 层卸载约 6 tok/s阅读速度
全量 CPU(DDR5)约 4 tok/s痛苦

两条对卸载有利的补充:MoE 模型卸载表现更好(每 token 只读激活专家路径——gpt-oss-20b 部分卸载仍可用),以及批量/离线任务不像聊天那样在乎 tok/s。

什么时候卸载值得

  • 评估和一次性任务:「这个 32B 模型到底能不能做 X?」——能,卸载着跑一夜。
  • 批量流水线:总结 500 篇文档,4 tok/s × 并行流完全可以接受。
  • 容量救急:需要的模型超了 2GB,而替代方案是云端账单。

什么时候不值得

  • 交互聊天——阅读速度的输出几分钟就让人烦躁。
  • Agent 循环——Agent 要串几十次调用,10 倍减速复利成不可用。
  • 存在更小的全量常驻模型时——而 2026 年几乎总是存在。实操中全量在卡的 Qwen3-14B 会比在 DDR5 里喘息的 32B 产出更多好结果,因为你会真的去迭代它。

更好的逃生通道

  1. 降一档量化(Q4→Q3):质量损失通常比卸载的速度损失小。
  2. q8 KV 缓存 + 更短上下文:不动速度路径就能腾出实打实的 GB。
  3. 加一张二手显卡:两张 180 美元的 RTX 3060(合计 24GB,层拆分)在速度上完胜任何卸载方案。见我们的多卡指南

常见问题

CPU 卸载到底多慢?

预期 5–10 倍减速。24B 模型在 4090 上全量跑约 35 tok/s,一半层卸载到典型 DDR5 系统(60–100 GB/s,对比 1008 GB/s 带宽)后降到约 4–8 tok/s。

Mac 上卸载会好点吗?

Apple Silicon 上没有卸载惩罚——CPU 和 GPU 共享同一内存池,没有任何东西要过总线。「卸载」只是 PC/独立显卡世界的概念。

卸载和小模型,该选哪个?

几乎总是小模型。Q6 的 13B 全量在卡上,速度和每瓦质量都胜过半卸载的 Q4 32B。只有当你明确需要大模型的能力、且能容忍阅读速度的输出时,卸载才有意义。

来源