llama.cpp显存不足

unable to allocate CUDA0 buffer 报错

报错原文

unable to allocate CUDA0 buffer

是什么意思

llama.cpp 加载模型时,没能在这块设备上为权重分配到空间。设备名随后端不同而变化:CUDA0、ROCm0、Vulkan0 或 Metal。

为什么会出现

  • 仅权重本身就超过了这块设备的空闲显存 —— 还没算上下文。
  • 用 -ngl 强制放到显卡上的层太多。
  • 其他进程已经占用了显卡的一部分。

怎么解决

  1. 在显存计算器里把文件大小和你的显卡对比;权重大约是 参数量 × 比特数 ÷ 8。
  2. 下载同一模型更小的量化档位,或者不传 -ngl,让 llama.cpp 自己决定放多少层到显卡。
  3. 腾出显卡:停掉其他服务(NVIDIA 用 nvidia-smi,AMD 用 rocm-smi 查看谁在占用)。

改参数之前,先核对大小

大多数显存报错其实是大小问题。把模型、量化档位、上下文和你的显卡填进显存计算器:如果那里是红色,什么参数都没法让它装下。

相关指南

相关报错

核对来源

报错原文于 2026-10-26 从源码中读取核对。