← 返回 2026-06-02

LongAttnComp:跨家族上下文压缩用于长上下文推理 LongAttnComp: Cross-Family Context Compression for Long-Context Reasoning

Mengmeng Ji, Ravi Shanker Raju, Jonathan Lingjie Li, Chen Wu 📅 2026-05-31 👍 8 2026-07-13 08:36
上下文压缩 注意力机制 跨家族泛化 长上下文推理

通过微调轻量级交叉注意力层实现高效长上下文压缩

前置知识

上下文压缩

上下文压缩是在输入到达目标模型之前过滤或压缩输入上下文的技术,以牺牲少量前期计算成本为目标模型预填充阶段节省大量计算。主要分为抽象方法(训练辅助模型生成输入的压缩表示)和提取方法(使用令牌级困惑度或基于嵌入的语义相似性保留原始令牌子集)。压缩率通常达到 80-90%,即从 120k tokens 压缩到 16k tokens。

本文的核心技术,需要理解压缩的基本原理和评价指标(压缩率 vs 准确率),才能理解作者如何改进现有方法

Top-p 采样

Top-p(nucleus sampling)是一种从概率分布中采样的方法,保留累计概率质量达到阈值 p 的最可能令牌。在压缩场景中,它用于根据相关性分数选择令牌块:对块按分数排序,累加分数直到超过阈值 p 或达到令牌预算。原文使用 p=0.95,但作者用令牌预算 B 替代最小分数阈值 epsilon,避免过早终止导致的过度压缩。

本文的核心算法改进点,需要理解原始算法的局限性才能理解作者修改的意义和效果

交叉注意力机制

交叉注意力是注意力机制的一种变体,其中一个序列的查询向量关注另一个序列的键和值向量。在本文中,冻结的 Llama-3.1-8B 主干生成查询的隐藏状态和上下文的隐藏状态,可训练的交叉注意力层计算查询-上下文注意力权重。这些权重被聚合为每个块的标量分数,用于选择最相关的块。

本文的核心架构组件,只有约 0.5% 的参数是可训练的,理解这个机制才能明白方法的轻量级特性

NIAH (Needle in a Haystack)

NIAH 是一种合成评估任务,将关键信息嵌入长上下文中的随机位置,测试模型检索特定信息的能力。它包括单针(单个目标)、多针(多个目标)、多键(多个属性值对)、多值(同一键的多个值)和多查询(多个不同查询)等变体。needle 位置均匀分布在上下文的前、中、后各 33%。本文使用修改的 RULER 管道构建训练数据,每个样本包含 100 个候选文档、一个查询和二值相关性标签,25% 为全负样本。

本文 Stage 1 训练数据的核心形式,理解这个任务才能理解训练数据的特点和局限性

多跳推理

多跳推理需要整合多个不同位置的信息来回答问题,例如在多个文档中查找相关事实并组合它们。MuSiQue 数据集通过组合单跳问题构建多跳问题,平均每个问题需要 2.33 个支持文档。2WikiMultiHopQA 平均需要 2.39 个支持文档。与 Stage 1 的 0-1(SQuAD)和 0-2(HotpotQA)相关文档相比,这显著提高了检索复杂性。本文 Stage 2 引入这些数据来扩展压缩器处理分布式证据的能力。

本文 Stage 2 训练的核心目标,理解多跳推理的挑战才能理解作者为什么需要两阶段训练

研究动机

随着实际应用越来越需要处理 100k+ tokens 的输入,上下文长度和推理效率之间的差距已成为关键瓶颈。例如,InfiniteBench Code-Debug 基准的平均输入长度约为 115k tokens,有些样本超过 200k tokens。现有的训练无关注意力方法(如 Speculative Prefill)在要求苛刻的长上下文任务(如代码推理)上存在显著性能差距。Speculative Prefill 在 Code-Debug 上的准确率仅为 62.44%,而全上下文基线为 74.37%,差距达 11.93 个百分点。AttnComp 虽然展示了微调方法的潜力,但其评估和训练范围狭窄:仅评估约 12k tokens 的检索增强问答,仅从单一来源训练,且使用文档级评分,其作为通用长上下文压缩器的潜力未经测试。具体而言,原始 AttnComp 的最小分数阈值在长上下文任务中首先触发,导致过度压缩和显著性能下降。

本文的目标是本文的目标是开发一个鲁棒的、模块化的长上下文压缩器,在保持任务准确率的同时显著减少预填充成本。具体而言,作者希望:(1)适应更长的上下文输入(100k+ tokens),(2)在代码推理等要求苛刻的任务上匹配或超过全上下文准确率,(3)跨不同的目标模型家族泛化而无需重新训练,(4)扩展到更多样的长上下文任务(包括多文档推理)。在 Code-Debug 任务上,目标是在 16k token 预算下(约 83% 压缩率)达到或超过 74.37% 的全上下文准确率。在跨家族泛化方面,目标是在四个无关目标模型(DeepSeek-R1-0528、DeepSeek-V3.1、MiniMax-M2.5、GPT-OSS-120B)上实现一致的性能提升。

与已有工作不同的是,本文的独特切入角度是将 AttnComp 的微调压缩机制适应 Speculative Prefill 的草稿模型驱动框架,并针对长上下文推理进行四项架构创新和两阶段微调配方。与现有的训练无关方法(如 Speculative Prefill)相比,本文引入可训练的交叉注意力层来学习更精确的令牌重要性信号。与原始 AttnComp 相比,本文的创新包括:(1)从文档级到令牌级分块,适应没有自然文档边界的真实世界长上下文输入;(2)用令牌预算 B 替代最小分数阈值 epsilon,避免过早终止;(3)位置重排序以保持话语连贯性;(4)格式无关的查询解析器,适用于没有固定查询模板的输入。此外,本文提出了两阶段微调配方:Stage 1 建立通用检索基础,Stage 2 使用多跳推理数据扩展任务覆盖范围。这种数据驱动的任务敏感性分析表明,性能变化反映训练数据构成而非架构限制,这是一个未被充分探索的角度。

核心方法

LongAttnComp 的整体思路是使用一个轻量级可训练压缩器作为目标模型的前处理步骤,通过学习查询-上下文的相关性来选择最重要的令牌块。直觉上,如果压缩器能够准确识别哪些令牌块包含回答查询所需的信息,那么即使大幅压缩上下文(例如从 120k 压缩到 16k tokens),目标模型仍能保持准确率。技术路线包括:(1)使用冻结的 Llama-3.1-8B 主干(前 L=13 层)加上可训练的交叉注意力层作为压缩器;(2)将输入分割为固定大小的令牌块,每块独立评分;(3)使用修改的 top-p 算法根据分数选择块,直到达到令牌预算或累积分数阈值;(4)保持原始位置顺序,将选定的块解码为压缩提示;(5)将压缩提示发送给目标模型进行推理。整个过程包含三个阶段:评分、选择和生成。关键设计决策包括分块大小、选择模式(累积 top-p 与仅预算)、查询长度等,这些是任务相关的超参数。

核心创新点是将 AttnComp 的微调压缩机制适应于长上下文推理场景,并通过两阶段训练和架构扩展实现跨家族泛化。与已有方法的本质区别在于:(1)架构层面,采用令牌级分块而非文档级评分,更适应真实的长上下文输入(如单个长代码文件);(2)算法层面,用令牌预算 B 替代最小分数阈值 epsilon,提供对压缩长度的直接、可预测的控制;(3)训练层面,提出两阶段配方:Stage 1 在广泛的 NIAH 风格数据(SQuAD + HotpotQA)上建立通用检索能力,Stage 2 在多跳推理数据(MuSiQue + 2WikiMultiHopQA)上继续训练并混合 Stage 1 数据重放,扩展任务覆盖范围而不破坏现有能力。这种方法的关键洞察是任务敏感性反映训练数据构成而非架构限制,因此通过精心设计的训练数据扩展,同一架构可以扩展到更复杂的长上下文推理任务。

方法步骤详情

方法步骤的完整描述如下:(1)输入处理:将输入(指令 + 上下文 + 查询)分割为固定大小的令牌块,块大小 S 是任务相关的超参数(Code-Debug 使用 1024,RULER 使用 256,LongBench v2 使用 32)。(2)评分阶段:使用冻结的 Llama-3.1-8B-Instruct 的前 13 层处理输入,生成查询的隐藏状态和上下文的隐藏状态。可训练的交叉注意力层计算注意力权重,然后将每块的注意力权重聚合为标量分数。(3)选择阶段:使用修改的 top-p 算法选择块。输入是指令分数、文档分数、top-p 阈值 p=0.95 和令牌预算 B=16k。输出是压缩的文档集。选择停止条件是累积分数超过 p 或保留的令牌达到 B。预算模式禁用 top-p 终止,仅使用预算条件。(4)位置重排序:选定的块恢复到原始位置顺序,保持话语连贯性。(5)解码:使用 Llama-3.1 的分词器将选定的令牌块解码为自然语言压缩提示。(6)推理:将压缩提示通过 API 发送到目标模型(DeepSeek-R1-0528、MiniMax-M2.5 或 GPT-OSS-120B),获取响应。训练使用类似流程,但使用二值相关性标签计算损失:文档级监督和指令级监督,总损失 L = L_doc + lambda L_ins,lambda=0.8。

技术新颖性

技术新颖性分析:本文在三个层面做出了新颖贡献。(1)架构层面:令牌级分块使压缩器能够处理没有自然文档边界的真实世界长上下文输入,这是对原始 AttnComp 文档级评分的重要扩展。令牌预算变体提供了对压缩长度的直接控制,解决了原始 top-p 算法最小分数阈值在长上下文任务中过早终止的问题。位置重排序和格式无关查询解析器是部署所需的实用性创新。(2)训练层面:两阶段微调配方是新颖的,特别是 Stage 2 使用多跳推理数据混合 Stage 1 数据重放的设计。这种设计避免了灾难性遗忘,同时扩展了任务覆盖范围。MuSiQue 数据集的 subq 和 nosubq 变体探索了训练时查询表示如何影响下游任务行为,这是一个未被充分探索的设计杠杆。(3)方法论层面:任务敏感性分析表明性能变化反映训练数据构成而非架构限制,这挑战了对压缩器任务依赖性的传统理解。Stage 2 在 LongBench v2 上恢复 7-12 点同时保持 Code-Debug 性能的结果,支持了这一假设。此外,跨家族泛化实验(在四个来自三个家族的目标模型上实现一致性能)展示了微调压缩器的模块化特性,这是训练无关方法难以实现的。

End-to-end workflow of the LongAttnComp compressor
Figure 2: End-to-end workflow of the LongAttnComp compressor
The two-stage fine-tuning recipe
Figure 5: The two-stage fine-tuning recipe

实验结果

核心发现包括:(1)在 Code-Debug 任务上,LongAttnComp Stage 1 准确率达到 75.38%,超过全上下文基线(74.37%)1.01 点,超过 Speculative Prefill(62.44%)12.94 点。Stage 2 subq 变体进一步提升到 76.90%,这是所有方法中的最高结果。这表明压缩器可以在 83% 压缩率(从 120k 到 16k tokens)下匹配或超过全上下文性能。(2)跨家族泛化实验显示,同一 Llama-3.1 训练的压缩器在四个无关目标模型上表现一致:DeepSeek-R1-0528(75.38%)、DeepSeek-V3.1(65.73%)、MiniMax-M2.5(81.22%)、GPT-OSS-120B(82.99%)。Stage 2 在三个目标上改进或匹配 Stage 1,在 GPT-OSS 上有 1-3 点回归。这些结果表明压缩器是模块化的、与目标无关的预处理步骤。(3)在 LongBench v2 上,Stage 1 在 Overall 准确率上表现不佳(41.7% vs 全上下文 56.7%),假设原因是训练数据不覆盖 LongBench v2 强调的证据聚合推理模式。Stage 2 恢复了 7-12 点(subq: 48.9%,nosubq: 49.7%),超过 Speculative Prefill(46.3%)2.6-3.4 点,接近 100k 截断全上下文基线(51.1%)。这证实了任务敏感性反映训练数据构成。(4)在 RULER 上,LongAttnComp 在截断基线因 lost-in-middle 效应损失的子任务上显著恢复准确率(niah_s_3: 57.4% 到 99.2%),但在证据分布多个位置的子任务(multiv、multiq)上表现不佳。Stage 2 的改进较小(0.8-2.9 点),符合 Stage 2 训练数据主要针对 LongBench v2 风格自然推理而非 RULER 合成多针模式的设计。(5)消融实验显示分块大小对准确率有显著影响:在 32k 检查点上,准确率从 chunk 128 的 56.85% 增加到 chunk 1024 的 76.40%。训练数据规模和调度也重要:32k 数据集和 cosine LR decay 各自优于 16k 和常数 LR。(6)效率方面,由于压缩器仅使用 Llama-3.1-8B 的前 13 层(总共 32 层),压缩开销应约为 Speculative Prefill 的三分之一,在可比或更好的准确率下实现。

DeepSeek-R1-0528 Accuracy (%) on Code-Debug of InfiniteBench
Table 1: DeepSeek-R1-0528 Accuracy (%) on Code-Debug of InfiniteBench
Target-model generalization on Code-Debug
Table 2: Target-model generalization on Code-Debug
LongBench v2 accuracy (%), broken down by difficulty and input length
Table 3: LongBench v2 accuracy (%), broken down by difficulty and input length
Per-subtask diagnostic on RULER
Table 6: Per-subtask diagnostic on RULER
LongBench v2 inference-setting ablation on DeepSeek-V3.1 (development target)
Table 7: LongBench v2 inference-setting ablation on DeepSeek-V3.1 (development target)
Accuracy (%) on InfiniteBench Code-Debug with DeepSeek-R1-0528
Table 9: Accuracy (%) on InfiniteBench Code-Debug with DeepSeek-R1-0528
Top-p threshold ablation
Table 10: Top-p threshold ablation
查看结构化数据
任务指标本文基线提升
InfiniteBench Code-Debug Accuracy (%) 76.90 (Stage 2 subq) 74.37 (Full context), 62.44 (Speculative Prefill) +2.53 vs full context, +14.46 vs Speculative Prefill
InfiniteBench Code-Debug Accuracy (%) 75.38 (Stage 1) 74.37 (Full context), 62.44 (Speculative Prefill) +1.01 vs full context, +12.94 vs Speculative Prefill
LongBench v2 Overall Accuracy (%) 49.7 (Stage 2 nosubq) 56.7 (Full context), 46.3 (Speculative Prefill) -7.0 vs full context, +3.4 vs Speculative Prefill
LongBench v2 Long inputs Accuracy (%) 53.7 (Stage 2 subq) 51.4 (Full context), 40.7 (Speculative Prefill) +2.3 vs full context, +13.0 vs Speculative Prefill
RULER niah_s_3 Accuracy (%) 99.2 (Stage 2 subq) 57.4 (Full context) +41.8

局限与改进

局限性分析:作者承认的局限性包括:(1)训练数据范围:两个阶段都在合成构建的 NIAH 风格数据上训练压缩器(Stage 1 来自 SQuAD 和 HotpotQA,Stage 2 添加 MuSiQue 和 2WikiMultiHopQA)。尽管有扩展,所有训练样本都由相同的合成管道生成,将查询相关内容放置在否则不相关的上下文中。像 LongBench v2 这样的自然长上下文任务包含这种合成分布不完全捕获的推理模式,即使 Stage 2 后仍与未截断全上下文基线存在残差差距。混合自然策划的长上下文数据与合成管道是必要的下一步。(2)任务依赖超参数:LongAttnComp 的最佳推理设置在三个旋钮上随任务变化:分块大小、解析查询长度和累积 top-p + 预算与仅预算选择模式之间的选择。最佳分块大小和查询长度在 Code-Debug、RULER 和 LongBench v2 之间不同,最大化准确率的选择模式取决于输入中相关证据的分布方式。在任务类型未知的高级设置中,部署单一固定配置会损失性能。(3)查询解析假设:LongAttnComp 需要识别输入中的查询跨度。作者全程使用任意最后 N 令牌解析,在 Code-Debug 上仅损失约 1 点。这个启发式引入两个限制:最佳 N 随任务变化(Code-Debug 为 128,RULER 为 256,LongBench v2 为 512),并且不保证足以满足查询结构嵌入在提示其他位置的输入。学习任务无关的解析器将解决两者。(4)经验效率测量:作者报告基于层计数比例与草稿模型基线的压缩开销粗略估计,未提供控制硬件下的端到端 TTFT、吞吐量或内存测量。经验效率表征留给后续工作。(5)部署侧约束:所有目标模型评估使用 SambaNova 云 API。可用上下文预算、分词和推理输出分配由服务堆栈决定,而非压缩器;这些约束偶尔与评估协议交互(如 RULER 跨分词器设置中使用的中间截断基线)。(6)单一压缩器主干:所有实验使用 Llama-3.1-8B-Instruct 作为压缩器主干。相同训练配方是否转移到其他主干家族或规模(更小草稿模型以实现更紧凑部署,更大模型以获得更高余量)未经测试。我自己的观察:(1)训练数据合成 pipeline 限制:尽管 Stage 2 添加了多跳数据,但所有数据仍通过 NIAH 风格合成管道生成,可能无法捕获真实世界中更复杂的信息流动模式,如交叉引用、隐式依赖和语义关联。这可能是 LongBench v2 仍存在差距的原因。(2)chunk size 的启发式选择:作者通过实验发现最佳 chunk size 随任务变化,但没有提供自动选择机制。在实际部署中,如果任务类型未知,这种启发式选择可能导致次优性能。(3)budget-only vs cumulative-p 模式的权衡:budget-only 模式在 LongBench v2 上恢复性能,但在 RULER niah_s_1 上可能导致过度压缩。这种权衡表明需要自适应选择机制,但作者未提供。(4)subq vs nosubq 变体的混合结果:在 Code-Debug 上,subq 和 nosubq 在不同目标上各赢两个,没有清晰模式。在 LongBench v2 上,V3.1 在所有子任务上偏好 subq,但 R1 在极端上偏好 subq,在中间范围偏好 nosubq。这种混合信号表明显式子问题分解的作用尚未完全理解,需要更多实验。

独立分析的弱点

独立分析的弱点包括:(1)训练数据合成限制:当前训练数据都通过 NIAH 风格合成管道生成,可能无法捕获真实世界长上下文任务中的复杂信息流动模式。改进方向是引入自然策划的长上下文数据,如真实代码库、长对话历史、多文档报告等。可以通过收集和标注真实数据,或开发更复杂的合成数据生成管道来模拟真实世界的复杂性。(2)任务依赖超参数:当前最佳推理设置(chunk size、query length、selection mode)随任务变化,需要任务知识或手动调整。改进方向是开发自适应选择机制,可以根据输入特征(如长度、分布、结构)自动选择最佳设置。可能的实现包括学习预测器或基于规则的方法。(3)查询解析的启发式性质:当前使用任意最后 N 令牌解析,虽然简单但可能不足。改进方向是学习任务无关的查询解析器,可以从输入中自动识别查询跨度。可能的实现包括训练序列标注模型或使用规则和机器学习的混合方法。(4)效率测量不足:当前仅提供粗略估计,缺乏经验测量。改进方向是在控制硬件下测量端到端 TTFT、吞吐量和内存使用,以全面评估实际部署的效率。这需要标准化评估协议和基准。(5)单一主干的限制:当前仅使用 Llama-3.1-8B-Instruct,未探索其他主干。改进方向是系统评估不同主干家族(如 Qwen、Mistral)和规模(更小模型如 3B 用于紧凑部署,更大模型如 70B 用于更高性能)的转移能力,以理解训练配方的泛化性。

未来方向

未来研究方向:作者提出和可延伸的方向包括:(1)扩展训练数据:超越 Stage 2 的 MuSiQue 和 2WikiMultiHopQA 混合,特别是朝向更自然和推理重的长上下文任务,将进一步部分解决 Stage 2 已解决的 LongBench v2 差距。可能的来源包括真实代码审查、长文档摘要、多步问题解决等。(2)自适应推理设置选择:自适应选择推理设置(分块大小和选择模式)的机制将简化部署到任务类型未知的输入。可能的实现包括学习预测器、基于规则的方法或混合方法。(3)鲁棒的任务无关查询解析器:这将完成部署故事,移除任务依赖查询长度选择和任意最后 N 解析的小精度成本(在 Code-Debug 上约 1 点)。可能的实现包括训练序列标注模型或使用规则和机器学习的混合方法。(4)微调草稿模型本身:这是作者考虑但未追求的自然方向,更好地与目标模型行为对齐。挑战是高质量长上下文训练数据仍然稀缺,此类数据的生成管道并未公开可用。(5)扩展到其他主干家族和规模:系统评估不同主干家族(如 Qwen、Mistral)和规模(3B、70B)的转移能力,以理解训练配方的泛化性。这可能揭示训练效率、压缩质量和跨家族泛化之间的权衡。(6)处理更复杂的推理模式:当前方法在证据分布多个位置的任务上表现不佳(如 RULER multiv、multiq)。未来工作可以探索更复杂的注意力模式、层次化压缩或迭代选择机制来处理这些情况。(7)端到端联合优化:当前压缩器和目标模型是分离的。未来工作可以探索端到端联合优化,其中压缩器针对特定目标模型的偏好进行微调,这可能进一步提升性能但牺牲跨家族泛化。

复现评估

复现评估:论文声明计划发布代码和数据以促进长上下文压缩的进一步研究,但截至论文撰写时尚未公开。训练数据使用修改的 RULER 管道构建,每个样本包含 100 个候选文档、一个查询和二值相关性标签,25% 为全负样本。Stage 1 训练数据包含 32000 个样本(16000 SQuAD,0-1 个相关文档;16000 HotpotQA,0-2 个相关文档),序列跨越 8k-48k tokens。Stage 2 训练数据包含 20000 个样本:8000 MuSiQue(subq 和 nosubq 变体),4000 2WikiMultiHopQA,4000 SQuAD 重放,4000 HotpotQA 重放。训练使用 AdamW 优化器(权重衰减 0.01),批量大小 8,梯度累积 1,dropout 0.1,梯度裁剪 1.0,15 个 epoch,cosine decay 调度和线性 warmup,在 8 乘以 H200 GPU 上进行。Stage 1 学习率为 2 乘以 10 的负 4 次方,Stage 2 使用更低学习率 5 乘以 10 的负 5 次方。评估使用三个通过 SambaNova Cloud API 访问的无关目标模型:DeepSeek-R1-0528、MiniMax-M2.5 和 GPT-OSS-120B。这些模型的 API 使用、分词和上下文预算可能影响结果复现。基准包括 InfiniteBench Code-Debug(平均约 115k tokens,有些超过 200k)、LongBench v2(多文档推理任务)和 RULER(合成套件测量长上下文利用率)。推理设置随基准变化:Code-Debug 使用 chunk size 1024 和查询长度 128,RULER 使用 chunk size 256 和查询长度 256,LongBench v2 使用 chunk size 32 和查询长度 512。所有实验使用 top-p=0.95 和 16k 输出令牌预算。复现难度中等偏高,主要原因包括:(1)需要访问特定云 API(SambaNova)以复现目标模型评估;(2)训练数据构建需要实现修改的 RULER 管道;(3)训练需要 8 乘以 H200 GPU 的计算资源;(4)推理设置有多个任务依赖超参数,需要仔细调整。如果作者发布代码和数据,复现难度将显著降低。