Prefrontal-AI/latent-sparse-attention
机器学习实现 Latent Sparse Attention 的研究代码,作为 SGLang 插件加速超长上下文的预填充、解码与训练。
项目介绍
Latent Sparse Attention(LSA)是论文《Latent Sparse Attention: Towards Subquadratic Ultra-Long Context Attention》的实现代码。它把 key 在学习到的隐空间里分层聚类,每个 query 先对聚类中心打分,再只读取被选中的长程 key、sink 和局部窗口,而不是对全部 key 逐一打分。注意力 kernel 本身不变,LSA 只决定 kernel 读取哪些 key,因此长上下文下的预填充、解码和训练都可以变快,同时精度保持在原模型附近。
仓库实现了两种方案:**D-LSA(蒸馏版)**通过蒸馏预训练模型的 indexer 来适配已有模型,也支持不训练、直接用 PCA 映射的版本;**N-LSA(原生版)**只用 next-token loss 从头训练,在论文实验中达到与全注意力相当的精度。仓库还包含基线实现(全注意力、SWA、NSA、PISA、块稀疏)、评测框架,以及论文背后的训练与蒸馏流水线。
适合研究长上下文服务、注意力机制的科研人员和基础设施工程师,前提是已有 GPU 和集群资源;它不是一个给普通应用开发者直接调用的库。
快速使用
使用 Python 3.12 和 uv 安装:
git clone https://github.com/Prefrontal-AI/latent-sparse-attention.git
cd latent-sparse-attention
uv sync --locked --extra evaluation --extra training
uv run lsa --help
training extra 会编译 causal-conv1d,需要 CUDA toolkit;没有 nvcc 时加 --no-install-package causal-conv1d。只做评测可用 uv sync --locked --extra evaluation(source:17)。
服务端运行在项目的 SGLang fork 镜像中,该镜像提供 10M token 运行所需的上下文并行和长上下文支持;LSA 本身需要装进镜像,不在镜像内。拉取容器并挂载本仓库、蒸馏映射目录和 Hugging Face 缓存(source:18):
docker pull ghcr.io/prefrontal-ai/sglang:lsa-v0.1.0
docker run -it --rm --gpus '"device=0"' --shm-size 32g --network host -e HF_HOME=/hf \
-v $PWD:/workspace/latent-sparse-attention:ro -v <maps directory>:/maps:ro -v $HF_HOME:/hf \
ghcr.io/prefrontal-ai/sglang:lsa-v0.1.0 bash
Docker 的挂载源必须是真实目录,不能用符号链接。进入容器后安装本仓库并带 lsa 配置块启动服务(source:21):
pip install --no-deps /workspace/latent-sparse-attention
python -m sglang.launch_server --model-path Qwen/Qwen3.8-27b --tp 1 \
--attention-backend fa3 --page-size 1 --disable-prefill-cuda-graph \
--json-model-override-args '{"lsa": {"projections": "/maps/qwen38_27b.pt", "query_heads": "all"}}'
--disable-prefill-cuda-graph 是必需的:预填充阶段的 key 选择在 host 上执行,无法被 CUDA graph 捕获,不加会在启动时崩溃。等日志出现 armed 且 /health 就绪后,用请求验证:
curl -s localhost:30000/v1/completions -H 'Content-Type: application/json' \
-d '{"model": "Qwen/Qwen3.8-27b", "prompt": "The capital of France is", "max_tokens": 32}'
没有 armed 日志说明服务仍在运行 checkpoint 自带的注意力。projections 指向蒸馏映射文件,可使用 d-lsa-weights-v1 release 中的映射,或通过蒸馏流水线自行训练。多机运行沿用同一仓库,在 Slurm 上用 lsa --site <name> 提交,站点的 root、数据集和 Hugging Face 缓存写在 YAML 中(source:49)。
使用约束
- 服务端必须使用项目的 SGLang fork 和配套镜像,所有部署运行都基于
lsa-v0.1.0fork 标签(source:7);B300(Blackwell)节点需要单独标签的lsa-v0.1.0-b300镜像。 - 论文结果在 NVIDIA H200 上测得。Qwen3.8-27B 的 D-LSA 在 RULER 的 13 个任务、每任务 100 行上的平均分为 4k 0.974、32k 0.968,单张 H200 耗时 1 小时 52 分钟(source:28);这些是论文测量值,不代表其他硬件或模型上的效果。
- 蒸馏和原生 128k decay 需要准备数据:用
lsa data prepare组装 LongDocs、从traces-v1release 获取 agent traces,以及 RULER 源数据(source:37)。原生检查点 release 中的权重由论文自己的训练器产出,该训练器不在本仓库中;张量名称已映射到本仓库,重载时会严格校验(source:48)。 - 许可证为 Apache-2.0,第三方代码和数据集各保留自己的许可证(source:58)。
HotRepo 点评
该项目于 2026-11-03 出现在 HotRepo 新项目榜,记录时 133 stars,约一小时内新增 18 stars、1 个 fork,尚未进入 GitHub 全部语言日榜。观察窗口只有一个小时左右,这些数字只说明早期关注度,给不出持续采用的趋势判断。技术内容是主要看点:论文、已发布的蒸馏映射、十个原生检查点,以及 SGLang 插件路径都已给出;但整套流程依赖 H200 级 GPU 环境和 SGLang fork,主要受众会是注意力机制研究者,而不是一般应用团队。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。