[llama.cpp] 非对称 KV q8/q4 缓存:当前注意事项及 GGML 仓库中的讨论

Reddit r/LocalLLaMA 工具

摘要

讨论了在 llama.cpp 中使用非对称 KV 缓存量化时的注意事项,其中不匹配的 q8/q4 类型会导致提示处理在 CPU 而非 GPU 上进行,并提出了通过编译标志进行修复的方案。

可能大多数人都知道,在 llama.cpp 的启动选项中,使用除 `-ctk q8_0 -ctv q8_0 / -ctk q4_0 -ctv q4_0` 之外的选项会导致提示处理在 CPU 而非 GPU 上进行(至少在 CUDA 下如此)。例如,当我们使用经常被建议的混合选项 `-ctk q8_0 -ctv q4_0` 时,每秒处理 token 数(pps)会大幅下降。我曾与一个高级 LLM 讨论过这个问题,它建议对 llama.cpp 的 CUDA 源代码进行一些轻微修改,或者使用 `cmake -DGGML_CUDA_FA_ALL_QUANTS=ON ..`,但这将花费很长时间。但巧合的是,GitHub 用户 sanmai 做了一个小型评估,并建议在编译时包含 KV 缓存量化组合,即使不使用 FA_ALL_QUANTS 也可以,这将是很好的。讨论在此,值得一读,因为评估证实,与 f16/f16 相比,使用异步 8/4 位 KV 量化仅损失 1.3% 的精度,同时节省超过一半的内存:https://github.com/ggml-org/llama.cpp/discussions/23470
查看原文

相似文章

动态KV缓存量化与按需加载mmproj/MTP:我的llama.cpp愿望清单

Reddit r/LocalLLaMA

一位开发者已为llama.cpp实现了一个概念验证的PR,通过HTTP端点添加了动态KV缓存量化功能,允许用户按需重新量化其KV缓存,而无需完全重新加载模型。该帖子还概述了一个愿望清单,包括按需加载mmproj/MTP交换以及用于上下文优化的自动--fit标志。