llama.cpp显存不足
unable to allocate CUDA0 buffer 报错
报错原文
unable to allocate CUDA0 buffer
是什么意思
llama.cpp 加载模型时,没能在这块设备上为权重分配到空间。设备名随后端不同而变化:CUDA0、ROCm0、Vulkan0 或 Metal。
为什么会出现
- 仅权重本身就超过了这块设备的空闲显存 —— 还没算上下文。
- 用
-ngl强制放到显卡上的层太多。 - 其他进程已经占用了显卡的一部分。
怎么解决
- 在显存计算器里把文件大小和你的显卡对比;权重大约是
参数量 × 比特数 ÷ 8。 - 下载同一模型更小的量化档位,或者不传
-ngl,让 llama.cpp 自己决定放多少层到显卡。 - 腾出显卡:停掉其他服务(NVIDIA 用
nvidia-smi,AMD 用rocm-smi查看谁在占用)。
改参数之前,先核对大小
大多数显存报错其实是大小问题。把模型、量化档位、上下文和你的显卡填进显存计算器:如果那里是红色,什么参数都没法让它装下。
相关指南
相关报错
核对来源
报错原文于 2026-10-26 从源码中读取核对。