Linux - 为什么 llama.cpp ROCm 的 KV 缓存消耗比 Vulkan 多那么多显存?
摘要
一位用户报告称,在使用相同模型和设置的情况下,llama.cpp 的 ROCm 后端比 Vulkan 后端消耗的 KV 缓存显存显著更多,这引发了对其潜在原因的探究。
我有一个包含多个 AI 服务的 Docker 栈,其中 llama.cpp 服务器是核心。我有一套可用的 Vulkan yml 配置用于 llama.cpp,但出于好奇,我将其切换为 ROCm(最新版本),却没有看到任何性能提升。事实上,我注意到,对于相同的模型、相同的上下文设置以及相同的 KV 缓存量化(Q8_0),ROCm 版本消耗了 29.1GB 显存,而 Vulkan 版本只消耗了 25.3GB。我是不是漏掉了什么?这种现象是我这块 GPU 独有的,还是我设置、硬件或软件中的其他变量导致的?
相似文章
也许将KV缓存卸载到RAM并不差
一位用户分享了在llama.cpp中将KV缓存卸载到RAM的经验,在释放显存以便运行更大模型和上下文窗口的同时,实现了相近的速度,表明这种权衡通常是值得的。
RDNA3上llama.cpp的Flash Attention:比Vulkan f16 K减少47% KV VRAM,在F16 K / q4_0 V上KLD几乎无损。第一部分。
一种针对RDNA3 GPU上llama.cpp的新packed16 K技术,相比Vulkan fp16将KV缓存VRAM减少47%,使用int8打包和原生dot4指令,以最小的KLD损失保持fp16质量的K值。
寻找关于 llama.cpp 服务器及模型卸载工作原理的阅读资源
一位用户分享了他们使用 llama.cpp 服务器进行模型卸载的经验,指出了性能权衡和安静运行的优势,并询问了解该工具如何在 VRAM 和系统 RAM 之间管理内存的阅读资源。
一个 llama.cpp PR 在 GPU 上缓存“热”MoE 专家 — 8GB VRAM 下报告 33 → 56 tok/s
一个 llama.cpp PR 增加了基于热力图的“热”MoE 专家 GPU 缓存,在 8GB VRAM 下对某些模型将 tok/s 提升了约 1.7-2 倍,但对其他模型结果不一。
如何防止 llama.cpp 将数据卸载到交换空间?
用户寻求关于如何防止 llama.cpp 在 RAM 完全耗尽前将 KV 缓存卸载到交换空间的建议,并分享了他们在配备 96GB RAM 的 M2 Max 和大型 Qwen 模型上的配置。