ICYM: llama.cpp b9455 --SM Tensor KV 缓存修复已合并
摘要
llama.cpp 版本 b9455 合并了一个针对多 GPU 设置中 `-sm tensor` KV 缓存量化的修复,解决了展平张量时形状信息丢失的问题。
他们真是厨艺精湛,一个接一个的重大修复!如果你在多 GPU 上运行 `--sm tensor`,这个 KV 缓存量化修复就是为你准备的。[https://github.com/ggml-org/llama.cpp/releases/tag/b9455](https://github.com/ggml-org/llama.cpp/releases/tag/b9455) > [**JohannesGaessler**](https://github.com/JohannesGaessler) 在 [5 天前](https://github.com/ggml-org/llama.cpp/pull/23792#issue-4535454876) 评论道:此 PR 实现了对 `-sm tensor` 与量化 KV 缓存组合的支持。在 master 上无法工作的原因是,为了 KV 缓存旋转而对张量进行展平会导致形状信息丢失,而 meta 后端无法处理这种情况。之前的 PR 通过改变 KV 缓存旋转的形状来解决这个问题,但这不是一个理想的方案,因为 ggml 后端对批处理矩阵乘法的支持可能不如对单个大矩阵乘法那样好。此外,扩展 meta 后端使其具备处理计算图的能力,通常比要求计算图符合 meta 后端的要求更好。本 PR 的方法是为 `ggml_backend_meta_split_state` 规范增加一个值,用于指定某个段重复的次数。当张量被展平时,meta 后端使用段来指定展平维度内的数据布局,以便在进一步重塑时能够恢复正确的数据布局。无需对 llama.cpp 的计算图进行任何更改。
相似文章
[llama.cpp] 非对称 KV q8/q4 缓存:当前注意事项及 GGML 仓库中的讨论
讨论了在 llama.cpp 中使用非对称 KV 缓存量化时的注意事项,其中不匹配的 q8/q4 类型会导致提示处理在 CPU 而非 GPU 上进行,并提出了通过编译标志进行修复的方案。
Llama.cpp:拆分模式张量修复即将到来?
Llama.cpp 预计将获得针对多 GPU 配置下拆分模式张量崩溃问题的修复,该问题目前每 90-120 分钟导致 VRAM 耗尽。据称,该修复还能带来约 35% 的吞吐量提升,优于分层模式。
双GPU llama.cpp加速
llama.cpp的一个分支修复了量化KV缓存中的--split-mode tensor问题,在双GPU配置上实现高达40%的速度提升,且无质量损失。
SYCL: 从 CUDA 后端移植多列 MMVQ(在 Intel Arc 上获得约 45% 的推测解码加速)by masonmilby · Pull Request #21845 · ggml-org/llama.cpp
一个针对 llama.cpp 的拉取请求,将多列 MMVQ 从 CUDA 移植到 SYCL,在 Intel Arc GPU 上实现了约 45% 的推测解码加速。
ggml-webgpu: 提升k-quants的预填充速度并重构Q4/Q5/Q8及k-quants的矩阵乘法 by yomaytk · Pull Request #24225 · ggml-org/llama.cpp
提升了k-quants的预填充速度,并重构了llama.cpp WebGPU后端中Q4/Q5/Q8及k-quants的矩阵乘法。