spiritbuun/buun-llama-cpp
Experimental llama.cpp fork for inference research and development
buun‑llama‑cpp – 实验性的 Llama.cpp 分支
它是什么 – 广受欢迎的 llama.cpp 推理引擎的研究导向型分支。它添加了一套新的 KV 缓存量化技术,在保持模型注意力记忆质量的同时,大幅减少 GPU 内存使用。该项目面向已经在单 GPU(或多 GPU 服务器)上运行 LLM 推理,并希望在不牺牲过多精度的情况下最大化上下文长度或适配更大模型的人群。
核心创新
| 功能 | 功能说明 | 重要性 |
|---|---|---|
| VBR – 可变比特率 KV 缓存 | 随着提示词增长,逐层动态压缩键值缓存。从 FP16 开始,逐渐降级到自定义编解码器阶梯(turbo8 → turbo4 → turbo3_tcq → … → turbo1_tcq)。 | 在现有 VRAM 下提供尽可能长的上下文,同时为提示词早期部分保持最高质量的表示。 |
| Turbo 量化编解码器 | 快速低比特量化器(turbo8、turbo4、turbo3、turbo2、turbo1)以及网格编码变体(*_tcq)的家族。 |
每个值仅用 1-4 比特即可减少 KV 内存,困惑度损失极小;网格编码版本与标量量化相比,KL 散度降低约 40%。 |
| TCQ – 网格编码量化 | 使用 512 状态网格和维特比编码,在相同比特率下获得更大的有效码本。 | 在极低比特率(例如 3.25 bpv)下提高质量,同时在现代 GPU 上保持接近 FP16 的解码速度。 |
原生 .safetensors 和 EXL3 支持 |
直接加载存储为 .safetensors 的模型(包括 EXL3 量化权重),无需转换为 GGUF。 |
简化使用新型量化格式的用户的工作流程。 |
投机解码 + 视觉交换 (--mmproj-gpu-swap) |
在真正需要图像之前,将视觉编码器 (mmproj) 移到 CPU,然后加载到 GPU 进行快速编码。 | 使多模态模型能够在原本会内存不足的 GPU 上运行。 |
| MoE 缓存处理 | 自动在 GPU 和系统 RAM 之间放置混合专家 (MoE) 模型的专家权重,并具有自适应“自动”模式。 | 使非常大的 MoE 模型(例如 DeepSeek‑V4‑Flash)在消费级硬件上可用。 |
使用方法
此分支的工作方式与上游 llama.cpp 二进制文件类似。在专用 GPU 上的典型启动方式如下:
llama-server -m model.gguf # VBR 默认开启
- 要强制使用完整的编解码器阶梯(允许缓存降至最低层),请添加
-ct vbr。 - 要限制上下文长度并让 VBR 将所有 VRAM 用于该窗口:
-c 30000。 - 要手动设置 VRAM 预算:
--vbr-vram 8G。 - 要从较低质量的入口层开始(在内寸非常紧张时有用):
--vbr-entry t8。 - 对于多模态工作,启用交换:
--mmproj-gpu-swap。 - 对于 MoE 模型,推荐标志是
--fit on --moe-cache auto。
所有旋钮都是可选的 – 默认设置会自动追求最佳的质量与内存权衡。
性能亮点(来自 README)
| 编解码器 | 比特/值 | 困惑度 (PPL) | 预填充速度(令牌/秒) | 解码速度(令牌/秒) |
|---|---|---|---|---|
| f16(参考) | 16.0 | 5.683 | 1104 | 30.7 |
| turbo3_tcq(网格) | 3.25 | 5.668 | 818 | 26.6 |
| turbo3(标量) | 3.5 | 5.730 | 1015 | 28.1 |
| turbo1_tcq(1.25 bpv) | 1.25 | 6.012 | 991 | 28.5 |
网格编码编解码器在使用一小部分内存的情况下实现接近 FP16 的质量,并且在 RTX 3090 上,解码速度保持在 FP16 基线的每秒几令牌以内。
谁应该关注?
- 希望在单 GPU 上试验更长上下文(20k-30k 令牌)的研究人员和爱好者。
- 部署超出消费级显卡 VRAM 的多模态或 MoE 模型的人员。
- 任何对 KV 缓存量化感兴趣的人 – 该仓库包含网格编解码器的码本和训练脚本。
限制 / 注意事项
- 该分支被标记为 高度实验性 – 请预期偶尔崩溃或与新版 llama.cpp 不兼容的问题。
- 需要启用 flash-attention 的 CUDA 或 ROCm 构建;Turbo 编解码器不支持仅 CPU 推理。
- 某些高级功能(例如,层级感知的保存恢复、投机解码检查点)仍在开发中。
快速入门检查清单
- 使用 CUDA/ROCm 和 flash-attention 构建(
make LLAMA_CUDA=1)。 - 将 GGUF 或受支持的
.safetensors模型放置在工作目录中。 - 运行
llama-server -m model.gguf。 - 添加
-v以观察 VBR 降级步骤,或使用-ct vbr/--vbr-floor t4进行微调。 - 对于视觉,添加
--mmproj-gpu-swap并提供mmproj.gguf文件。
结论 – buun‑llama‑cpp 是一个严肃、专注研究的 llama.cpp 扩展,通过可变比特率量化和网格编码编解码器,突破了 KV 缓存内存效率的极限。如果您已经熟悉 llama.cpp,并且需要更多上下文或在有限的 GPU 内存上运行大型 MoE/视觉模型,这个分支为您提供了一套具体、文档完善的工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目