故障排查 / 装不下

CUDA out of memory / ggml: failed to allocate

本站未复现 推导 影响:llama.cpp / Ollama / vLLM 全版本 · Windows / Linux

报错原文

CUDA out of memory. Tried to allocate 2.00 GiB | ggml_cuda_buf: ggml_backend_cuda_buffer_type_alloc_buffer: allocating ... bytes failed

这段字符串可以直接粘到 站内搜索 或外部搜索引擎里找。

现象

加载模型时报显存不足,或者加载成功但第一次生成时崩;nvidia-smi 显示显存已经顶到接近总量。

原因

权重 + KV + 框架开销三者之和超过了实际可用显存。最常见的三个具体原因是:① 按整卡容量规划而没扣系统占用的那 0.5–1.5GB ② 上下文(-c)开得比需要的大,KV 预留直接把余量吃光 ③ 浏览器/游戏/其他推理进程已经占走 1–2GB。

按这个顺序处理

  1. 先把上下文降到真正需要的值:聊天 8192 通常够,别默认填 32768。
  2. 退一档量化:Q4_K_M → IQ4_XS → Q5_K_M 之间每档差 5–15% 权重,14B 从 Q8 退到 Q6_K 能省 3.4GB。
  3. 加 KV 量化:llama.cpp 用 -ctk q8_0 -ctv q8_0 让 KV 减半,长上下文场景可上 q4_0。
  4. 关掉吃显存的程序再跑(浏览器硬件加速、其他框架的常驻服务、Ollama 的旧模型没卸载)。
  5. 确认 -ngl 没有把不该放内存的层留在显存之外——但这条是解决速度,不是解决 OOM。
  6. 以上都不够就是容量上限到了:本站口径下 16G(可用约 14.1G)跑 27B Q4_K_M 是权重本身就超容量,不是参数没调好,见 weight-does-not-fit。

怎么确认解决了

重新起一次,看启动日志里打印的 KV cache 大小与各层分配数;nvidia-smi 在生成过程中稳定低于可用水位(Windows 16G 约 14.1G)且不继续上涨,就算过了。

来源与可信度

条目性质本站依据容量与速度公式推导撰写
是否已在本站机器复现否——请把这条当线索而不是结论

相关条目

参数调到最低还是装不下:权重本身就超容量装不下 · 换最小量化、降上下文、关所有程序,还是加载失败或者只跑 1–2 tok/s。KV cache 是什么?为什么上下文那么吃显存?KV cache 是为了不重复计算而存下来的历史注意力数据,它随上下文线性增长,长对话和长文档的显存大户就是它。

装不下 · 其他条目

刚装上好好的,聊十几轮就崩或开始忘事参数调到最低还是装不下:权重本身就超容量微调训练 CUDA out of memory(QLoRA/LoRA 显存爆)Ollama 上下文被限 4096 / OLLAMA_CONTEXT_LENGTH 不生效
回到故障排查首页查容量是否本来就不够上传实测数据
这条内容有帮助吗?