寻找关于 llama.cpp 服务器及模型卸载工作原理的阅读资源

Reddit r/LocalLLaMA 工具

摘要

一位用户分享了他们使用 llama.cpp 服务器进行模型卸载的经验,指出了性能权衡和安静运行的优势,并询问了解该工具如何在 VRAM 和系统 RAM 之间管理内存的阅读资源。

**配置信息**:AMD R9700 AI PRO。使用 llama-cpp 服务器,ROCM Docker 版本。使用 --ngl 选项进行卸载。 ______________ 首先,我对 llama-cpp 服务器处理卸载的方式印象深刻。这里发生了一些神奇的事情,至少对我来说是这样。我有 32GB 的 VRAM,所以加载小模型没有问题,但现在我开始尝试那些会占用系统 RAM 的模型,测试 token/s 的差异以及不同的量化版本。我目前正在测试 Qwen3 Coder Next。在 Q4-KM 量化下,这个模型大小约为 45GB。我可以让它运行起来,但卸载的层数越多,速度就越慢(显然)。因此,我目前正在测试较小的 4-bit 量化版本 IQ4_XS(约 36GB),试图在质量下降之前找到一个平衡点。如果我卸载 36 层,VRAM 会占用 30/32GB。Token/s 大约为 25,对于一个 MoE 模型来说,这并不算好——至少我不这么认为。我尝试了 3-bit 量化版本,它完全适合内存,但多次遇到质量问题后,我放弃了。我认为对于大型模型和编码来说,3-bit 压缩太过了,至少感觉是这样。(有人也有这种印象吗?还是只有我这么觉得?) 无论如何——回到我的实际问题——llama-cpp 是如何做到这种魔法的?我在监控 RAM 使用情况和交换文件,两者都不高,但我只加载了该模型的 30GB(包括 120k 未量化的 KV 缓存上下文)……这基本上是不可能的,所以显然我遗漏了 Kubuntu 24.04 管理系统资源的方式。是我的 KDE5 RAM 小部件没有捕捉到 llama-cpp 的活动吗?我想了解一下它的工作原理,或者如果有人能给我这个笨蛋解释一下,我将不胜感激,哈哈。 ___________________ **编辑:** 卸载还有一个额外的好处:安静。对于任何有非常响亮 GPU 风扇的人来说,这是一种不错的休息。是的,速度变慢了,但我可以在它处理时切换到其他标签和窗口,并且真正听到自己的思考。我可能会更多地使用这种模式。
查看原文

相似文章

也许将KV缓存卸载到RAM并不差

Reddit r/LocalLLaMA

一位用户分享了在llama.cpp中将KV缓存卸载到RAM的经验,在释放显存以便运行更大模型和上下文窗口的同时,实现了相近的速度,表明这种权衡通常是值得的。

llama.cpp - 如何在GPU上释放更多空间

Reddit r/LocalLLaMA

一则讨论如何在llama.cpp中释放GPU内存实用技巧的帖子,例如将mmproj卸载到CPU、调整KV缓存类型,同时讨论了--cache-type-k/v和--spec-draft-n-max等参数。