kvpress

一行代码压缩 KV 缓存,让长上下文推理更快更省显存

kvpress 是一个专注于大语言模型(LLM)KV 缓存压缩的 Python 库,旨在让 KV 缓存压缩变得简单易用。它解决了长上下文推理中 KV 缓存占用大量显存、导致推理速度慢和成本高的问题。核心能力包括:提供统一的压缩接口,支持多种主流压缩方法(如 H2O、SnapKV 等),并允许用户自定义压缩策略;通过简单的 API 调用即可在现有模型上应用压缩,无需修改模型结构;同时提供了评估工具,方便用户对比不同压缩方法的效果。该项目处于成长阶段,适合研究者和工程师快速实验和部署 KV 缓存压缩技术。

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1212
维护状态 活跃
是否开源 是
定价模式 free

项目数据

分类开源模型
开发团队NVIDIA
所属国家
官网地址
定价模式free
价格说明开源项目,Apache-2.0 许可证,完全免费,可自行部署使用。
访问状态
是否开源是
开源协议Apache-2.0
主要语言Python
技术栈/模型inference,kv-cache,kv-cache-compression,large-language-models,llm,long-context,python,pytorch,transformers
GitHub 星标★ 1212
30天Star增速
HF 下载量
上线时间2024-11-06 00:00:00
最近更新2026-09-23 00:00:00
维护状态活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数4

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 6 步

环境要求

  • Python 环境(可用 pip 安装包)
  • 本地源码安装需先安装 uv(uv sync 使用)
  • 运行压缩推理需要 transformers 与 PyTorch
  • 长上下文模型推理需要足够显存(README 举例 1M tokens 的 Llama 3.1-70B float16 需 330GB)
  • 多 GPU 推理需 accelerate(README 说明通过 accelerate 支持)

安装与启动步骤

  1. 1安装 kvpress

    最简安装方式,直接用 pip 从 PyPI 安装 kvpress 包。

    pip install kvpress
  2. 2本地源码安装

    使用 uv 从 GitHub 克隆仓库并同步依赖,适合本地开发与修改源码。

    git clone https://github.com/NVIDIA/kvpress.git
    cd kvpress
    uv sync
  3. 3安装可选依赖

    需要评估工具或 flash-attn 时,用 --extra 安装可选依赖,普通使用可跳过。

    git clone https://github.com/NVIDIA/kvpress.git
    cd kvpress
    uv sync --extra eval --extra flash-attn
  4. 4运行压缩推理

    导入 kvpress 后 pipeline 自动注册为 kv-press-text-generation,用 press 对上下文做压缩。

    from transformers import pipeline
    from kvpress import ExpectedAttentionPress
    
    model = "Qwen/Qwen3-8B"
    pipe = pipeline("kv-press-text-generation", model=model, device_map="auto", dtype="auto")
    
    context = "A very long text you want to compress once and for all"
    question = "
    A question about the compressed context"
    
    press = ExpectedAttentionPress(compression_ratio=0.5)
    answer = pipe(context, question=question, press=press)["answer"]
  5. 5启用解码阶段压缩

    实验特性 DecodingPress 包装 ScorerPress,在生成过程中周期性压缩 KV 缓存。

    from transformers import pipeline
    from kvpress import KnormPress
    from kvpress import DecodingPress
  6. 6多 GPU 推理

    README 说明 kvpress 通过 accelerate 支持多 GPU,设置 device_map="auto" 即可。

    pipe = pipeline("kv-press-text-generation", model=model, device_map="auto")

关键配置

配置项必填说明示例
compression_ratio是每个 press 关联的压缩率,控制 KV 缓存压缩程度0.5
device_map否模型放置策略,设为 auto 可自动分配(含多 GPU)auto
dtype否模型权重加载精度,auto 自动选择auto
base_press否DecodingPress 使用的基础 ScorerPressKNormPress
compression_interval否DecodingPress 每隔多少步压缩一次,默认 512512
target_size否DecodingPress 压缩后的目标缓存大小,默认 20482048

如何确认成功

运行示例代码不报错并成功输出 answer;导入 kvpress 后 transformers 中可用 kv-press-text-generation 管道名。

常见问题

Q:如何在多个 GPU 上推理?

A:kvpress 通过 accelerate 支持多 GPU,构造 pipeline 时设置 device_map="auto" 即可,无需其他改动。

Q:压缩作用在哪些 token 上?

A:示例中压缩只应用于 context token,因此可以对同一份压缩后的上下文提出不同问题来评估压缩效果。

Q:解码阶段压缩和默认压缩有什么区别?

A:默认在 prefilling 阶段压缩;DecodingPress 在生成过程中周期压缩,用 target_size 而非 compression_ratio 控制缓存大小,属实验特性。

Q:压缩率如何选择?

A:创建 press 时传入 compression_ratio,例如 ExpectedAttentionPress(compression_ratio=0.5)。

Q:有没有更完整的示例?

A:README 指向 notebooks/wikipedia_demo.ipynb 的 Wikipedia notebook demo,Colab 上也有同版本可运行。

注意事项

  • 本地源码安装使用 uv(uv sync),不是 pip。
  • DecodingPress 为实验性功能,使用前注意稳定性。
  • hidden_states_buffer_size 默认 256,部分 press 不需要缓冲隐藏状态时可设为 0。
  • 只依据 README 内容,未提及的端口、路径、版本号等请勿自行添加。

核心亮点

  • 统一 API 集成多种压缩算法,切换方法只需改参数,实验效率高
  • 支持 HuggingFace 模型无缝接入,无需改动模型代码即可压缩
  • 内置评估工具,可量化压缩对困惑度和下游任务的影响

不足之处

  • 文档/社区待观察
  • 压缩方法的效果依赖模型和任务,需自行调参验证

适用场景

  • 长文本生成场景下降低显存占用,支持更大批处理或更长上下文
  • 边缘设备或资源受限环境部署 LLM,减少内存需求
  • 研究对比不同 KV 压缩算法在特定模型上的效果

替代项目

llm-kv-cache、KVQuant、Quantized KV Cache

项目介绍

kvpress 是基础设施领域的开源项目,由 NVIDIA 开发,2024 年首次发布。

在全站 13,090 个收录项目中,它的 GitHub 星标数(1,212)位列前 30%,在基础设施分类中处于中上游。

近 42 天,它的 GitHub 星标从 1,169 增加到 1,212,净增 43。

项目目前处于活跃维护状态,最近一次代码更新于 2026-09-23。Apache-2.0 许可证,完全免费,可自行部署使用。

它主要面向的使用场景是:长文本生成场景下降低显存占用,支持更大批处理或更长上下文。同类可对比的替代方案包括 llm-kv-cache、KVQuant、Quantized KV Cache。

上一篇:krasis

下一篇:LLM-TPU

同类项目推荐

freebuff-proxy 开源

聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。

Multi-account OpenAI-compatible gateway for coding models. Pooled keys, session life···

★ 213 2026-08-20
microduck 开源

用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。

A Tiny biped duck robot

★ 8684 2026-09-10
soperator 开源

用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。

Run Slurm in Kubernetes

★ 439 2026-08-10
ollama 开源

一条命令本地跑起大模型,免费、私密、不卡顿

Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···

★ 181484 2026-08-09