File size: 9,622 Bytes
a1111f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
---
license: apache-2.0
language:
- en
- zh
library_name: transformers
pipeline_tag: text-generation
tags:
- ksa
- ksa-v2
- custom_code
- long-context
---



<div align="center">
  <h1>KSA V2 4B</h1>
  <p><strong>用 Summary 同时构建长程记忆与稀疏索引</strong></p>
  <p>
    <a href="https://arxiv.org/abs/2610.18654"><img alt="KSA V2 Paper" src="https://img.shields.io/badge/KSA_V2-arXiv%3A2610.18654-b31b1b?logo=arxiv" /></a>
    <a href="https://arxiv.org/abs/2604.24432"><img alt="KSA Paper" src="https://img.shields.io/badge/KSA-arXiv%3A2604.24432-b31b1b?logo=arxiv" /></a>
    <a href="https://github.com/Kuaishou-OneRec/KSA"><img alt="GitHub" src="https://img.shields.io/badge/GitHub-Kuaishou--OneRec-black?logo=github" /></a>
    <a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/License-Apache%202.0-green" /></a>
  </p>
  <p><a href="README.md">English</a> | <a href="README_zh.md">中文</a></p>
</div>

## 📖 简介

**Kwai Summary Attention(KSA)** 是我们面向长上下文建模的高效注意力机制。
KSA 在固定 chunk 边界插入可学习的 Summary Token,以压缩后的状态保留对远端历史的访问。

**KSA V2** 进一步让 Summary 承担两个角色:

- **Compressed KSA(C-KSA)**:将多份 Summary KV 聚合为 Meta KV,进一步降低长程记忆的存储开销。
- **Sparse KSA(S-KSA)**:以 Summary 聚合原文块的选路表示,用轻量 Indexer 选择相关块,直接读取这些块的原始 KV。

我们保留 Hybrid KSA 的 3:1 层间布局,将 KSA 层替换为 C-KSA、Full 层替换为 S-KSA,
分别优化长程记忆和原文读取。

<p align="center"><img src="assets/figures/ksa_v2_overview.png" width="100%" alt="从 Hybrid KSA 到 KSA V2:保持 Summary 布局,引入 C-KSA 压缩与 S-KSA 原文块选路。" /></p>
<p align="center"><em>从 Hybrid KSA 到 KSA V2:复用 Summary,在注意力层内压缩 KV,并稀疏读取原文。</em></p>

本模型基于 **Qwen3-4B 继续预训练得到的 4B Hybrid KSA 主干**进行适配,是未经过指令微调的基础模型。

## 🔥 新闻

- **2026-10-13** —— [KSA V2 技术报告](https://arxiv.org/abs/2610.18654)发布。
- **2026-05-08** —— [KSA-4B-base](https://huggingface.co/OpenOneRec/KSA-4B-base) 权重发布。
- **2026-04-28** —— [KSA 技术报告](https://arxiv.org/abs/2604.24432)与训练代码发布。

## ✨ 方法

**C-KSA:Summary → Meta KV。** 在注意力层内进行可学习的逐维聚合。
每组 Summary 生成一份更紧凑的 Meta KV;Summary Token 本身仍按原 chunk 粒度传递,
不必为增加压缩率重新训练更大 chunk 的主干。查询同时访问远程 Meta、边界 Summary
和局部原文 KV;Meta 仅在当前层内使用,不作为新 token 传递。

<p align="center"><img src="assets/figures/ksa_v2_compression.png" width="80%" alt="C-KSA:将完整的远程 Summary 分组压缩为 Meta KV,保留边界 Summary 与局部原文 KV。" /></p>
<p align="center"><em>C-KSA 两级压缩示意,图中 chunk 大小为 4,每 2 个 Summary 聚合为一个 Meta。</em></p>

**S-KSA:Summary → 块级索引。** 以 Summary 为 query 聚合原文块,再映射到低维索引空间。
主注意力读取选中块的原始 KV,并保留 sink 与局部窗口。Indexer 用按块取 max 的
dense attention teacher 监督训练。

<p align="center"><img src="assets/figures/ksa_v2_sparse.png" width="80%" alt="S-KSA:Summary 引导块内聚合,Indexer 选择远程原文块,主注意力读取其原始 KV 以及 sink 和局部窗口。" /></p>
<p align="center"><em>S-KSA 块级选路示意,图中 chunk 大小为 4、block 大小为 2;发布模型的实际配置见下表。</em></p>

**三个适配阶段。** 压缩模块 warmup → C-KSA 全参数 CPT → S-KSA 聚合模块与 Indexer warmup。
最后一阶段冻结继承参数,完成后直接导出用于稀疏推理。

## 🤖 模型配置

当前目录为 **KSA-v2-4B**。

| 配置项 | KSA-v2-1.9B | KSA-v2-4B |
| :--- | :--- | :--- |
| 层数 | 24 | 36 |
| Hidden size | 2048 | 2560 |
| Intermediate size | 6144 | 9728 |
| Attention heads(Q / KV) | 16 / 16(MHA) | 32 / 8(GQA) |
| Head dimension | 128 | 128 |
| Hybrid 比例(C-KSA : S-KSA) | 3 : 1 | 3 : 1 |
| 最大上下文(原文 token) | 131072 | 131072 |
| Summary chunk size | 8 | 8 |
| C-KSA sliding chunk number | 128 | 128 |
| C-KSA group size | 128 | 32 |
| S-KSA block size | 4 | 4 |
| S-KSA 远程 token 预算 | 4096 | 4096 |
| Sink tokens | 8 | 8 |
| S-KSA 局部窗口(原文 token) | 1024 | 1024 |
| Indexer heads × head dimension | 8 × 128 | 8 × 128 |
| Indexer query rank | 512 | 512 |
| Indexer RoPE dimension | 64 | 64 |
| Indexer Q/K RMSNorm | False | True |
| Teacher 聚合 | max | max |
| Tied embeddings | False | True |

远程预算包含 8 个 sink token,局部窗口另计。

权重以 FP32 保存,推理时以 BF16 加载。

## 📈 实验结果

<p align="center"><img src="assets/figures/ksa_v2_results.png" width="85%" alt="技术报告第一页的 1.9B 主结果图:长上下文检索与通用能力,以及单 token 推理 FLOPs 和 KV cache 大小的理论值。" /></p>
<p align="center"><em>1.9B 主结果:长上下文与通用能力(左),单 token 推理 FLOPs 与 KV cache 大小的理论值(右)。</em></p>

我们在两种 Hybrid KSA 主干上验证 KSA V2:从零训练的 1.9B,以及基于 Qwen3-4B
继续预训练的 4B。两者均经过三阶段适配,原始 baseline 结果沿用 KSA V1。

### 1.9B:长上下文检索

C-KSA 使用 group128,S-KSA 使用 block4;Hybrid KSA 是适配前的父模型。

| 模型 | 4K | 8K | 16K | 32K | 64K | 128K | Mean |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| Full | 76.08 | 72.85 | 73.24 | 69.06 | 65.32 | 48.75 | 67.55 |
| Hybrid SWA | 74.54 | 71.69 | 69.54 | 67.86 | 63.03 | 56.64 | 67.22 |
| Hybrid SCA | 77.72 | 75.22 | 72.55 | 67.74 | 63.54 | 58.01 | 69.13 |
| Hybrid GDN | 79.83 | 76.01 | 74.04 | 70.41 | 69.39 | 59.87 | 71.59 |
| Pure KSA | 70.44 | 65.91 | 66.74 | 62.54 | 57.13 | 39.29 | 60.34 |
| Hybrid KSA | 80.65 | 73.35 | 74.07 | 72.30 | 69.95 | 65.35 | 72.61 |
| C-KSA + Full | 81.52 | 72.24 | 74.44 | 71.93 | 69.61 | 66.31 | 72.68 |
| **C-KSA + S-KSA** | 81.48 | 72.42 | 75.67 | 70.78 | 68.99 | 65.01 | 72.39 |

### 4B:扩展到 GQA 主干

C-KSA 使用 group32,S-KSA 使用 block4,保留主干的 GQA 结构。

| 模型 | 4K | 8K | 16K | 32K | 64K | 128K | Mean |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| Full | 92.88 | 91.38 | 89.12 | 84.74 | 78.16 | 65.86 | 83.69 |
| Hybrid SWA | 91.30 | 88.03 | 82.87 | 78.94 | 73.88 | 66.27 | 80.22 |
| Hybrid SCA | 86.02 | 84.28 | 80.67 | 76.89 | 68.88 | 60.94 | 76.28 |
| Hybrid Linear | 86.39 | 83.86 | 78.06 | 76.48 | 73.50 | 67.98 | 77.71 |
| Pure KSA | 91.55 | 86.78 | 84.78 | 80.30 | 76.09 | 66.81 | 81.05 |
| Hybrid KSA | 92.97 | 90.53 | 88.86 | 86.65 | 76.04 | 71.67 | 84.45 |
| Hybrid KSA + CPT | 92.22 | 89.85 | 87.20 | 83.09 | 74.74 | 72.03 | 83.19 |
| C-KSA + Full | 92.77 | 88.12 | 86.27 | 82.68 | 78.58 | 73.92 | 83.72 |
| **C-KSA + S-KSA** | 93.38 | 87.78 | 85.45 | 83.60 | 80.28 | 74.41 | 84.15 |

Hybrid KSA + CPT 是不改模型结构的续训对照。

更多消融实验和推理效率分析见技术报告。

## 快速开始

Linux、Python 3.12、H100/H800。下载**完整模型目录**(包含 `kernel/`),并在该目录下执行:

```bash
python -m pip install torch==2.6.0 --index-url https://download.pytorch.org/whl/cu126
python -m pip install -r requirements.txt

CUDA_VISIBLE_DEVICES=0 python generate.py \
    --prompt "The main advantage of long-context language models is" \
    --max-new-tokens 128
```

省略 `--prompt` 可进行交互式文本续写。`--apply-chat-template` 只应用 tokenizer 中的对话模板,不代表模型经过指令微调。

使用 Transformers 5.0.0 和随包提供的 `ksa_attn`/FlashAttention CuTe 源码,无需训练仓库、单独编译内核或安装 FlashAttention 2 CUDA 扩展。

### Transformers 用法

导入 Transformers 前设置随包内核路径:

```bash
export PYTHONPATH="$PWD/kernel:$PWD/kernel/deps${PYTHONPATH:+:$PYTHONPATH}"
```

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(".", local_files_only=True)
model = AutoModelForCausalLM.from_pretrained(
    ".",
    trust_remote_code=True,
    local_files_only=True,
    dtype=torch.bfloat16,
    device_map={"": "cuda:0"},
    attn_implementation="sdpa",
).eval()

inputs = tokenizer("The main advantage of long-context models is", return_tensors="pt")
inputs = inputs.to(model.device)
with torch.inference_mode():
    output = model.generate(
        **inputs,
        max_new_tokens=128,
        do_sample=False,
        pad_token_id=tokenizer.eos_token_id,
    )
print(tokenizer.decode(output[0, inputs.input_ids.shape[1]:], skip_special_tokens=True))
```

## 许可证与引用

模型权重及我们的推理代码采用 [Apache-2.0](LICENSE)。基于 Qwen 的文件保留原版权声明。
随包的 FlashAttention CuTe 保留其 [BSD-3-Clause 许可证](kernel/deps/flash_attn/LICENSE)
与 [AUTHORS](kernel/deps/flash_attn/AUTHORS);入口仅加载 CuTe,不依赖单独的 FlashAttention 2 扩展。

```bibtex
@techreport{kwai2026ksav2,
  title       = {Kwai Summary Attention V2 Technical Report},
  author      = {OneRec Team},
  year        = {2026},
  institution = {Kuaishou Technology},
  url         = {https://arxiv.org/abs/2610.18654}
}
```