Repolode
NVIDIA

NVIDIA/kvpress

NVIDIA 开源的 Python 库,基于 transformers 压缩 LLM 推理时的 KV 缓存,内置多种可插拔压缩方法。

Star
1,245
Fork
194
未关闭 Issue
12
最近提交
昨天

这是什么?

长上下文 LLM 部署成本较高,因为 KV 缓存会随 token 数量线性增长。kvpress 基于 Hugging Face transformers 实现了多种 KV 缓存压缩方法(称为 press),并提供基准测试。每个 press 在预填充阶段裁剪或变换缓存内容,通过 compression_ratio 设定保留的比例。

库中注册了名为 kv-press-text-generation 的自定义文本生成 pipeline,负责处理 chat 模板和分词。压缩可以只作用于上下文,便于对同一份压缩上下文提出不同问题。实验性的 DecodingPress 封装器可在生成过程中按目标缓存大小周期性压缩缓存。此外还支持通过 transformers 的 QuantizedCache 做缓存量化。

项目内置大量 press,既有随机与 key-norm 等基线方法,也有 SnapKV、StreamingLLM、KVzip、CriticalKV 等,并提供 AdaKVPress 等可逐头压缩的包装器。仓库还包含用于长上下文基准评测的命令行工具,以及测量显存和速度收益的 notebook。

核心功能

  • 01多种 KV 缓存压缩方法(press),共用统一的 compression_ratio 接口
  • 02自定义 transformers pipeline,只压缩上下文并自动处理 chat 模板
  • 03实验性的生成阶段压缩,按目标缓存大小进行裁剪
  • 04可组合或改进其他打分方法的包装器,例如逐头压缩的 AdaKV
  • 05提供长上下文基准评测命令行工具,以及显存与速度测量 notebook

适用场景

  • 对同一篇长文档反复提问,避免每次重新处理上下文
  • 研究或原型验证新的 KV 缓存压缩算法,并与常见基线对比
  • 降低 Llama、Qwen、Mistral 等模型在长上下文推理时的显存占用

快速上手

  1. 1

    从 PyPI 安装

    pip install kvpress
  2. 2

    加载管道并用压缩器压缩上下文

使用前须知

  • 需要 Hugging Face transformers 以及能通过它加载的模型,大模型通常需要 GPU。
  • 多数压缩方法属于研究性质,其中 BlockPress 并非真正的分块预填充实现。

标签

常见问题

kvpress 是什么?
NVIDIA 开源的 Python 库,基于 transformers 压缩 LLM 推理时的 KV 缓存,内置多种可插拔压缩方法。 长上下文 LLM 部署成本较高,因为 KV 缓存会随 token 数量线性增长。kvpress 基于 Hugging Face transformers 实现了多种 KV 缓存压缩方法(称为 press),并提供基准测试。每个 press 在预填充阶段裁剪或变换缓存内容,通过 compression_ratio 设定保留的比例。
kvpress 可以免费使用吗?用的什么许可证?
kvpress 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
kvpress 还在维护吗?
活跃维护中。kvpress 最近一次提交是在 2026年11月6日。
kvpress 适合用来做什么?
对同一篇长文档反复提问,避免每次重新处理上下文 研究或原型验证新的 KV 缓存压缩算法,并与常见基线对比 降低 Llama、Qwen、Mistral 等模型在长上下文推理时的显存占用
kvpress 怎么安装和运行?
从 PyPI 安装: pip install kvpress 加载管道并用压缩器压缩上下文
在哪里获取 kvpress?
源代码和安装说明在 GitHub 上:https://github.com/NVIDIA/kvpress

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目