SAS:端到端优化上下文排名的稀疏注意力机制 · 干货攻略
- 链接: https://x.com/_akhaliq/status/2099511334987522298
- 分类: x-tips
- 来源: X @_akhaliq
- 作者: Jay
- 更新: 2026-10-01
- 仓库: Tencent-Hunyuan/Simple-Attention-Sparsification
这是什么
SAS(Simple Attention Sparsification via End-to-End Optimization of Context Ranking) 是腾讯混元(Hunyuan)团队提出的一种后训练稀疏注意力机制,核心贡献是让选择器(selector)能够直接被语言建模损失端到端反向更新,从而在固定注意力预算下学会最有效地排列和选择上下文块。
解决的问题: 长上下文 LLM 的自回归生成在每个新 token 生成时都要对全部历史 token 做密集注意力,累积成本随上下文长度平方增长。现有可训练的稀疏化方法(如 SeerAttention-R)在 Top-K 硬选择处梯度被阻断,只能靠蒸馏原始模型的逐层密集注意力分布来训练选择器——这造成"排名不对齐":选择器学到的是"原始模型关注哪里",而不是"在固定预算下对最终预测最有价值的上下文是哪些"。
SAS 的核心思路: 在训练时将选择器的连续分数以对数形式注入注意力 logits,保留离散 Top-K 用于高效推理,同时附加连续软门控让梯度从语言建模损失流回选择器,实现端到端优化。
⚠️ 雷达笔记中原帖链接指向 arXiv ID 2609.13942,经核验应为 2609.13141(2026 年 9 月 11 日提交)。
为什么值得关注
@_akhaliq 在 X 上指出这条论文解决了一个长期痛点:稀疏注意力方法之前只能模仿 dense attention 的行为,无法在预算约束下自主学习有效选择。SAS 的端到端训练路线让稀疏选择真正对齐下游任务,是稀疏注意力领域的重要进展。
适用场景: - 长上下文推理(>8K token)需要控制注意力成本的场景 - 已有 Qwen3 系列模型(4B/8B/14B),想在推理阶段减少 KV-cache 计算量 - Agent 场景中需要在大量历史上下文里快速定位关键块
不适用的边界: - 需要从零预训练的新架构——SAS 是后训练方法,需要先有密集预训练模型 - 非 Qwen3 基础模型需自行适配
核验过程
官方来源
-
arXiv abstract(https://arxiv.org/abs/2609.13141):确认论文标题、作者(Zhiwei Li 等 9 人)、隶属 Tencent Hunyuan + HKUST,摘要关键说法与 GitHub README 完全一致。
-
GitHub README(Tencent-Hunyuan/Simple-Attention-Sparsification,release 分支):确认训练配方基于 Qwen3 系列,资源需求 8×NVIDIA H20,训练数据集 OpenR1-Math-220k,推理基于 SGLang-blocksparse fork。
-
HuggingFace 模型页(tencent/Simple-Attention-Sparsification):确认发布 3 个 gate 检查点(Qwen3-4B/8B 各 33.0M 参数/64 MiB,Qwen3-14B 42.0M/81 MiB),SGLang 兼容格式。
-
arXiv 正文(https://arxiv.org/html/2609.13141v1):确认全部关键数字。
交叉验证结论
| 说法(原帖/摘要) | 官方来源 | 核验结果 |
|---|---|---|
| 训练资源 8×NVIDIA H20 | GitHub README | ✅ 确认 |
| Qwen3-4B/8B gate 33M,14B gate 42M | HuggingFace | ✅ 确认 |
| MATH500 @budget 1024 提升 +6.0–7.7 | arXiv 正文 | ✅ 确认 |
| GPQA-Diamond @budget 1024 提升 +10.6–15.5 | arXiv 正文 | ✅ 确认 |
| LongBench 8K+ Qwen3-14B @2048 达 53.9 vs 51.5 | arXiv 正文 | ✅ 确认 |
| @budget 4096 几乎追上全注意力(56.2 vs 56.6) | arXiv 正文 | ✅ 确认 |
| BFCL 提升最高 +3.5 | arXiv 正文 | ✅ 确认 |
| Triton kernel + FlashAttention 集成 | arXiv 正文 | ✅ 确认 |
上手步骤
环境准备
SAS 用 pixi(Rust 版 conda 替代品)管理环境,已有的可以跳过安装:
# 安装 pixi(已有则跳过)
curl -fsSL https://pixi.sh/install.sh | bash
# 克隆仓库
git clone https://github.com/Tencent-Hunyuan/Simple-Attention-Sparsification.git
cd Simple-Attention-Sparsification
git checkout release
# 安装依赖 + 子模块
pixi install && git submodule update --init --recursive
下载模型与数据集
# 下载 Qwen3 基础模型(以 4B 为例,可选 8B 或 14B)
# pip install huggingface_hub && huggingface-cli download Qwen/Qwen3-4B --local-dir /path/to/Qwen3-4B
# 下载训练数据集
# huggingface-cli download open-r1/OpenR1-Math-220k --local-dir /path/to/OpenR1-Math-220k
训练选择器门控
export MODEL_PATH=/path/to/Qwen3-4B
export DATA_PATH=/path/to/OpenR1-Math-220k/data
# 选择对应模型大小的脚本
bash scripts/train/simple_sparse_attention_Qwen3-4B.sh
训练在数学数据上进行,选择器学会为每个 query 排列和选择最重要的上下文块。训练完成后产出 AttnGates 目录。
资源:至少 8×NVIDIA H20。GitHub README 明确标注了此资源需求。
推理评测(SGLang 后端)
推理不需要重新训练,只需用 gate 检查点引导稀疏注意力:
# 先构建 sglang-blocksparse 环境(推理用)
cd third_party/sglang-blocksparse && pixi install && cd -
# 数学推理 benchmark
export GATES=/path/to/AttnGates
export BUDGET=2048 # 注意力预算(token 数)
export TP=1 DP=8 # TP=1 横向并行,DP=8 数据并行
export TASK=math,gpqa,aime24,aime25
bash scripts/eval/run_reasoning.sh
# LongBench 长上下文 benchmark
export GATES=/path/to/AttnGates
export BUDGET=2048
export TP=1 DP=8
bash scripts/eval/run_longbench.sh
# BFCL 函数调用 benchmark(需先初始化 submodule 和 venv)
git submodule update --init third_party/gorilla
BFCL=third_party/gorilla/berkeley-function-call-leaderboard
python -m venv $BFCL/.venv && $BFCL/.venv/bin/pip install -e $BFCL soundfile
git -C third_party/gorilla apply "$PWD/scripts/eval/patches/bfcl.patch"
export GATES=/path/to/AttnGates
export BUDGET=2048
export TP=1 DP=8
export CATEGORIES=multi_turn
bash scripts/eval/run_bfcl.sh
使用已发布的 Gate 检查点
不想从零训练?直接用 HuggingFace 上已发布的 gate:
from huggingface_hub import snapshot_download
# 下载 gate 检查点(以 Qwen3-8B 为例)
gate_path = snapshot_download("tencent/Simple-Attention-Sparsification", allow_patterns=["Qwen3-8B-AttnGates/*"])
print(f"Gate checkpoints at: {gate_path}")
# 使用 SGLang 加载方式见仓库文档
坑与适用边界
1. 资源门槛
训练至少需要 8×H20 GPU。评测脚本默认 DP=8,如果 GPU 数量不够需要调整 DP 参数或参考脚本内的单卡模式。
2. 模型范围 当前开源配方仅支持 Qwen3-4B/8B/14B。迁移到其他架构需要自行适配 gate 结构和训练数据。
3. 注意力预算不是 KV-cache 限制
BUDGET 控制的是每个 query 参与计算的 token 数上限,而非 KV-cache 的总量。理解这个区别对调参很重要。
4. 训练数据分布 选择器在 OpenR1-Math-220k(数学)上训练,在 LongBench(长上下文)和 BFCL(函数调用)上评测存在分布迁移。论文结果显示 SAS 在跨分布上泛化良好,但特定领域可能需要领域适配训练。
5. SeerAttention-R 的门控架构 SAS 保留了 SeerAttention-R 的门控架构和评分逻辑(README 致谢部分),区别在于训练目标:不再蒸馏密集注意力,而是端到端语言建模损失。
一句话结论
SAS 通过在对数空间将选择器分数注入注意力 logits,让稀疏选择器能直接被 LM 损失端到端训练,在 Qwen3 系列上以仅 33–42M gate 参数实现比 SeerAttention-R 更高的注意力效率,尤其在低预算场景下提升显著——是长上下文推理压缩的实用后训练方案。