
RedKnot
长文本推理省显存提吞吐,按头复用 KV
RedKnot 是一个面向长上下文大语言模型推理的服务框架,核心解决长文本场景下 KV Cache 显存占用大、推理吞吐低的问题。它提出 Head-Aware KV Reuse(按注意力头粒度复用 KV)和 SegPagedAttention(分段分页注意力)两项技术:前者识别不同注意力头对历史信息的依赖差异,只对真正需要的头保留或复用 KV,减少冗余计算与显存;后者把长序列切分成段并分页管理,提升显存利用率和批处理效率。项目用 Python 实现,适合部署在需要处理超长输入(如长文档问答、代码库分析、多轮长对话)的推理服务中,在保持生成质量的同时降低显存开销、提高并发吞吐。
项目数据
使用教程
环境要求
- 8×NVIDIA H200(单卡143,771 MiB)或8×B300 节点,TP8 配置
- CPython 3.11.13、PyTorch 2.9.1 + CUDA 12.8、Triton 3.5.1
- GPU 驱动 570.148.08(H200 认证 Hopper 配置)
- 可访问 GitHub 的 git(README 使用 SSH 地址)
- DeepSeek-V4-Flash 权重,可用本地 checkpoint 或允许自动下载
安装与启动步骤
-
1克隆仓库
README 提供的是 SSH 地址,需本机已配置 GitHub SSH key;也可改用 HTTPS 地址克隆。
git clone git@github.com:rednote-machine-learning/RedKnot.git -
2进入测试目录
所有复现脚本都位于 test/srt/redknot 下,后续命令均在该目录执行。
cd RedKnot/test/srt/redknot -
3校验固定环境
setup_deepseek_v4_flash_env.sh 用于创建或校验固定版本环境,--check-only 只做检查不安装。
./setup_deepseek_v4_flash_env.sh --check-only -
4加载环境变量
source 该 env 文件后,新 shell 中即可直接使用锁定好的 Python 与依赖环境。
source ./environment-deepseek_v4-flash.env -
5指定模型路径
默认使用本地 DeepSeek-V4-Flash checkpoint;换路径时设置 REDKNOT_MODEL_PATH 或给脚本传 --model-path。
export REDKNOT_MODEL_PATH=/your/path/to/DeepSeek-V4-Flash -
6运行复现脚本
一键创建/校验环境并顺序跑完 64K、128K、256K、440K 四个套件,耗时较长且占用全部八张 GPU。
./run_deepseek_v4_flash_reproduction.sh -
7直接跑基准入口
在已准备好的机器上,也可跳过 wrapper,直接用 Python 入口脚本执行基准测试。
python benchmark_RedKnot_DeepSeekV4Flash.py
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
REDKNOT_MODEL_PATH | 否 | 指定 DeepSeek-V4-Flash checkpoint 的本地路径 | /your/path/to/DeepSeek-V4-Flash |
--model-path | 否 | 命令行方式指定另一个 checkpoint 路径 | --model-path /your/path/to/DeepSeek-V4-Flash |
--no-download-model | 否 | 禁用自动下载模型,仅使用本地 checkpoint | --no-download-model |
如何确认成功
脚本顺序跑完 64K/128K/256K/440K 四个套件并输出 TTFT 结果,结果布局见 test/srt/redknot/README_DEEPSEEK_V4_FLASH.md。
常见问题
Q:本地没有 checkpoint 怎么办?
A:README 说明:若 checkpoint 不可用,Python 入口脚本可以下载已发布的模型,除非显式设置了 --no-download-model。
Q:可以用 B300 跑吗?
A:可以。B300 使用单独的 SM103 硬件配置,需要先重新编译适配硬件的 FlashMLA、DeepGEMM 与 SGL kernels,再跑同一套冻结测试。
Q:能同时跑两个 TP8 服务吗?
A:不能。默认运行是顺序执行的,每个套件都需要同样那八张 GPU,不会并发运行两个 TP8 服务。
Q:怎么换成别的 checkpoint?
A:设置环境变量 REDKNOT_MODEL_PATH,或在调用时传 --model-path,wrapper 默认使用本地 DeepSeek-V4-Flash checkpoint。
注意事项
- 官方测量与验证均在 8×H200 或 8×B300 的 TP8 节点上完成,未提供 L20X/L20Y 的结果。
- 默认运行被设计为完整且顺序执行,耗时长,请预留整机八卡独占时间。
- 套件顺序、SHA256 校验、TTFT 协议与结果布局详见 test/srt/redknot/README_DEEPSEEK_V4_FLASH.md。
核心亮点
- 按注意力头粒度复用 KV,比整层/整序列复用更精细,能实打实降低长上下文显存占用
- SegPagedAttention 对长序列分段分页管理,提升显存利用率和批处理并发能力
- 聚焦长上下文 LLM 服务这一真实痛点,与 vLLM 等主流框架思路互补,有工程落地价值
不足之处
- 项目较新、星标 2567,生产环境验证和长期维护稳定性待观察
- 依赖具体模型注意力结构做头级分析,跨模型架构的通用性和调参成本待验证
适用场景
- 长文档问答与摘要服务,输入动辄数万 token,需要控制显存成本
- 代码库/日志分析类应用,超长上下文推理要求高吞吐低延迟
- 多轮长对话 Agent 后端,历史上下文不断增长,需高效 KV 管理
替代项目
vLLM、SGLang
项目介绍
同类项目推荐
freebuff-proxy
开源
聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。
OpenAI-compatible gateway for FreeBuff coding models. Token pool, session lifecycle,···
microduck
开源
用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。
A Tiny biped duck robot
soperator
开源
用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。
Run Slurm in Kubernetes
ollama
开源
一条命令本地跑起大模型,免费、私密、不卡顿
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···