LCLM: End-to-End Context Compression at Scale
📄 论文:End-to-End Context Compression at Scale
🔗 链接:https://arxiv.org/abs/2606.09659
🏢 作者:Ang Li, Sean McLeish, Haozhe Chen, Nimit Kalra 等(NYU, Modal, UMD, Princeton, Columbia, Harvard, LLNL, FAIR at Meta)
💻 代码:github.com/LeonLixyz/LCLM
🤗 模型:huggingface.co/latent-context
一、核心问题:KV 缓存压缩为什么总是不够好?
长上下文推理有两个瓶颈:
- KV 缓存随序列长度线性增长 → 显存爆炸
- 模型长程注意力衰退 → 丢信息
现有解决方案分三类:
| 类型 | 代表方法 | 问题 |
|---|---|---|
| KV 缓存压缩 | SnapKV, KVzip, H2O | 要么严重掉精度,要么需要先完整 prefill 再压缩,耗时耗内存;非均匀淘汰难适配 vLLM/SGLang |
| 软 token 压缩 | E2LLM, LLoCO, ICE | 理论上更好,但现有方法要么严重退化模型能力,要么依赖领域特定微调,不通用 |
| 硬 token 压缩 | 摘要、截断 | 信息丢失严重,性能差 |
KV 缓存压缩的共性死穴:
- 很多方法需要先完整预填充整个上下文,然后才压缩 → 内存峰值没降
- Query-dependent 方法(如 SnapKV)每轮产生 query-specific cache,多轮对话无法复用
- 非均匀淘汰(head/layer 粒度不同)与分页注意力引擎不兼容
二、LCLM 的核心思路:软 token + 端到端 + 大规模
2.1 架构:Encoder + Pooling + Adapter + Decoder
LCLM 是一个编码器-解码器系统:
原始文本 (T tokens)
↓
[Encoder] 处理窗口 W=1024 的块
↓
[Pooling] 每 N 个 token 压缩为 1 个 latent token
↓
[Adapter] 投影到 decoder 维度
↓
[Decoder] 消费压缩后的 latent sequence
关键参数:
- Encoder:Qwen3-Embedding-0.6B(远小于 decoder)
- Decoder:Qwen3-4B-Instruct-2507
- 压缩比:1:4, 1:8, 1:16(每 4/8/16 个原始 token → 1 个 latent token)
- Encoder 窗口 W:1024(最佳,通过架构搜索确定)
- Pooling:Mean pooling(16x 时最佳)/ Concatenation(4x 时略优)
- Mask:Causal attention(优于 bidirectional)
- Adapter:轻量 MLP(优于 attention-based adapter)
2.2 并行压缩: encoder batching
核心优化:
- Encoder 窗口 W=1024,batch size=128
- 每轮 encoder 前向处理 131,072 个原始 token
- 远小于 decoder 的完整 prefill 内存
- 压缩后可标准接入 vLLM/SGLang(保留标准 KV cache 结构)
三、四阶段训练配方:避免灾难性遗忘
直接端到端训练会导致模型退化。LCLM 采用渐进解冻:
| Stage | 训练内容 | 学习率 | 目标 |
|---|---|---|---|
| Stage 0 | Adapter Warmup | 固定 | 让 adapter 先学会对齐编码器/解码器维度 |
| Stage 1 | Encoder 训练 | 中等 | 训练编码器压缩能力,decoder 冻住 |
| Stage 2 | 端到端持续预训练 | 小 | 解冻 decoder,让全系统协同优化 |
| Stage 3 | SFT | 较大 | 恢复指令遵循能力,增强长上下文理解 |
3.1 三类训练数据
-
持续预训练数据:交错压缩/未压缩块
- 不是简单的"前半压缩后半训练",而是压缩段和未压缩段交替穿插
- 模型学会在任意位置依赖 latent context,而非只在开头
-
SFT 数据:推理 + 长上下文指令 + 通用对话
- 部分数据用 Qwen3-30B/235B 重新标注(淘汰旧模型生成的低质回复)
-
辅助重建数据:从压缩表示重建原始文本
- 100 个 prompt 模板库防止 overfitting
- 保留细粒度信息,提升精确检索能力
3.2 关键发现:为什么分阶段更好
直接端到端训练时:
- Decoder 不习惯接收 encoder 输出 → 梯度爆炸 → 模型退化
- 分阶段让训练稳定,防止灾难性遗忘
- 实验验证了:全参数训练 >> LoRA / 冻结 decoder
四、架构搜索:从 0 预训练找出最优设计
论文用 Qwen3-0.6B 同时做 encoder + decoder,从头预训练 38B token,控制变量搜索:
4.1 Pooling 算子
| 方法 | 原理 | 效果 |
|---|---|---|
| Token-based | 用 EOS/CLS token 的 hidden state | 最差 |
| Mean pooling | 平均 N 个 token 的 hidden states | 最佳(16x) |
| Concatenation | 拼接 N 个 hidden states,adapter 再投影 | 4x 时略优于 mean |
结论:16x 压缩用 mean pooling,4x 用 concatenation。
4.2 Encoder 窗口大小 W
| W | 含义 | 效果 |
|---|---|---|
| N=16 | 单块压缩,无跨块注意力 | 基线 |
| 256 | 中等窗口 | 大幅提升 |
| 1024 | 大窗口 | 进一步提升,最优 |
W=1024 让 encoder 看到更多局部上下文,生成更丰富的压缩表示。
边界重叠实验(overlap)不提升性能,反而增加计算,弃用。
4.3 Attention Mask
- Bidirectional(BERT 风格):encoder 可看全部 token
- Causal(GPT 风格):只能看前面
结果:Causal masking 表现更好!
原因:预训练 encoder 本就是 causal LM,用 bidirectional 反而违背预训练分布。
4.4 Adapter 设计
- Attention-based adapter(加一层 self-attention):计算量大,效果差
- MLP-only adapter:更简单,效果更好
4.5 模型缩放:Decoder > Encoder
实验对比:
- 0.6B encoder + 4B decoder(主配置)
- 4B encoder + 4B decoder
- 0.6B encoder + 8B decoder
发现:
- 增大 decoder 对预训练 loss 的提升远大于增大 encoder
- 但 8B decoder(hybrid-thinking 模型)未达预期,因为训练配方是为 4B instruct 优化的
- 0.6B encoder 在 RULER 任务上反而优于 4B encoder(可能大 encoder 过拟合)
五、实验结果:新 Pareto 前沿
5.1 主实验:H200 上的速度-精度-内存
| 指标 | LCLM 16x | 基线方法 |
|---|---|---|
| 压缩时间(TTFT) | 随压缩比线性降低 | 几乎不变(先完整 prefill 再 eviction) |
| 峰值内存 | 128K-512K 几乎持平 | 线性增长,512K/1M OOM |
| RULER 精度 | 新 Pareto 前沿 | 要么低要么慢 |
| LongBench 精度 | 新 Pareto 前沿 | 同上 |
| LongHealth | 新 Pareto 前沿 | 同上 |
关键可视化:
- KV 缓存压缩基线在 Pareto 图上呈垂直线(压缩比变化不影响时间,因为先完整 prefill)
- LCLM 呈斜线(更高压缩比 = 更少 decoder 计算 = 更快)
- 在 1M token 上下文时,其他方法全部 OOM,LCLM 仍能运行
5.2 细粒度压缩:GSM8K
压缩整个 prompt + context 测试:
- LCLM 在所有压缩比上准确率最高
- 高压缩比下优势更大(16x 时碾压基线)
5.3 内存平坦区
- 16x 模型:128K→512K token,峰值内存几乎持平
- 8x 模型:128K→256K token,峰值内存持平
- 原因:encoder 每轮最多处理 128K token,内存由 encoder 主导;超长后 decoder prefill 才占主导
六、Agent 扩展:按需解压
6.1 问题:大海捞针(NIAH)需要精确检索
压缩会丢失 token-level 细节,纯 latent context 在精确匹配任务上弱。
6.2 方案:Agent 自主解压
设计:
- 输入分块:512 token/块,压缩后每块一个标识符
- Agent 接收全部压缩上下文 + 一个 EXPAND(i) 工具
- Agent 可调用
EXPAND(3)把第 3 块解压为原始文本加入工作上下文
6.3 结果
在 RULER 的 NIAH 任务上:
- 16x 压缩原始:精度较低
-
- Agent 扩展:在某些设置下匹配未压缩原始模型的精度
- 核心洞察:压缩提供全局概览,Agent 按需深入细节
七、与 FlashMemory 的对比
| 维度 | LCLM(本论文) | FlashMemory(上午论文) |
|---|---|---|
| 压缩时机 | 一次性编码,offline/online | 每 64 步触发 Indexer,online |
| 压缩对象 | 原始 token → latent token | KV 缓存块选择加载 |
| 架构 | Encoder-decoder,软 token | 双编码器索引 + 稀疏注意力 |
| 训练成本 | 350B token,四阶段 | 1 小时单 H20,解耦训练 |
| 压缩比 | 4x/8x/16x | 约 7.4x(13.5% 显存) |
| 兼容性 | 兼容 vLLM/SGLang(标准 KV) | 需修改推理引擎 |
| Agent 扩展 | 支持按需解压 | 无 Agent 机制 |
| 长度上限 | 1M+(encoder 窗口固定) | 2x 训练长度(512K 训练→1M 推理) |
| 核心优势 | 速度-精度-内存 Pareto 最优 | 训练成本极低,精度反涨 |
| 核心短板 | 训练成本高(350B token) | MRCR 失败,长度泛化受限,项目暂停 |
八、一句话总结
LCLM 用"端到端大规模训练"把软 token 压缩从概念变成了实用工具:通过四阶段渐进训练 350B token,配合架构搜索确定的 causal mean-pooling encoder,在 H200 上实现了速度-精度-内存的新 Pareto 前沿。Agent 按需解压机制进一步补齐了精确检索的短板。这是软 token 压缩第一次真正媲美甚至超越 KV 缓存压缩。
九、关键术语速查
| 术语 | 含义 |
|---|---|
| KV Cache | 注意力 Key-Value 矩阵,随序列线性增长 |
| Soft token | 连续向量表示,替代离散 token |
| Latent token | 压缩后的软 token 表示 |
| TTFT | Time-To-First-Token,首 token 延迟 |
| Pareto frontier | 多目标最优边界 |
| Causal masking | 只能看前面 token 的注意力掩码 |
| Mean pooling | 对 N 个 hidden state 取平均 |
| NIAH | Needle-In-A-Haystack,大海捞针测试 |
| RULER | 长上下文基准测试套件 |
| LongBench | 中英文长上下文基准 |
分析完成时间:2026-06-10(草稿)
论文发布时间:2026-06-08
项目状态:开源,模型+代码已发布
讨论回复
1 条回复推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。