面向大语言模型的自适应多分辨率程序性知识压缩 Adaptive Multi-Resolution Procedural Knowledge Compression for Large Language Models
SKIM框架将LLM技能压缩为自适应多分辨率软token,平衡推理效率与任务性能
前置知识
程序性知识
程序性知识是指描述如何执行特定任务、何时调用能力、如何遵循工作流程或与工具交互的知识。与描述事实陈述的陈述性知识不同,程序性知识封装了可执行的逻辑依赖,包括条件判断、工具调用参数、操作序列等。在LLM应用中,程序性知识通常以自然语言技能文件(如SKILL.md)形式存在,包含具体的工作步骤、工具使用说明、约束条件等。这种知识要求模型在推理时不仅要理解语义,还要按照预定义的流程执行操作,任何逻辑链接的断裂都可能导致执行失败。
本文的核心研究对象是程序性技能压缩,理解程序性知识与陈述性知识的区别是理解本文创新点的基础。现有的文本压缩方法主要针对陈述性知识,无法有效保留技能中的逻辑依赖和执行流程,导致压缩后的技能无法正常工作。
软token压缩
软token压缩是一种将离散文本token映射到连续向量表示的技术,用于减少大语言模型的上下文开销。与硬压缩(直接删除某些token)不同,软压缩通过训练一个压缩器将原始文本编码为固定数量的连续嵌入向量(即软token),这些向量可以被目标模型直接处理。压缩过程通常采用双模型架构,包括一个压缩器模型和一个投影器,压缩器将文本编码为潜在表示,投影器将其映射到目标模型的嵌入空间。软token的优势是可以保留更丰富的语义信息,且通过训练可以学习任务特定的表示。
本文提出的SKIM框架采用软token压缩方式,因为程序性技能需要保持逻辑依赖关系,硬压缩容易破坏结构性元素。理解软token的原理有助于理解SKIM的架构设计和训练范式。
多分辨率表示
多分辨率表示是指同一个对象可以用不同粒度或精度的表示来描述的技术。在技能压缩的语境中,多分辨率表示意味着一个技能可以对应不同数量的软token(例如256、512个token),其中较少的token表示更高的压缩比(更激进),较多的token保留更多信息(更保守)。这些不同分辨率的表示共享同一个高分辨率的基础表示,低分辨率版本可以通过截取高分辨率表示的前缀获得。这种设计允许系统根据技能的复杂度和所需的性能需求灵活选择合适的压缩级别。
SKIM的核心创新之一就是自适应多分辨率设计,它能够根据不同技能的复杂度自动选择合适的压缩预算,在效率和性能之间实现最佳平衡。理解这一概念对于理解SKIM如何超越固定压缩率的现有方法至关重要。
LoRA适配器
LoRA(Low-Rank Adaptation)是一种参数高效的大语言模型微调方法,它通过在原有权重矩阵上添加低秩分解矩阵来实现模型适应。具体来说,对于每个权重矩阵W,LoRA引入两个低秩矩阵A和B,使得适配后的权重变为W + BA,其中A的维度为r×d(r通常很小),B的维度为d×r,r称为秩。这种方法大幅减少了可训练参数的数量(通常不到原模型的1%),同时保持了与全参数微调相当的性能。在推理时,LoRA适配器可以与基础模型权重合并,不会增加计算开销。
SKIM在第三训练阶段使用单个统一的LoRA适配器来对齐目标模型的行为,使其能够理解连续的技能软token。这种设计确保了参数效率,同时允许技能软token与目标模型有效协作。理解LoRA的工作原理有助于理解SKIM如何在不修改全部参数的情况下实现模型适应。
研究动机
现有方法在处理程序性技能压缩时面临三个核心问题。首先,传统文本压缩方法(如LLMLingua-2、ICAE)主要针对陈述性知识或通用提示词,重点保留关键事实或证据,但这些方法无法有效保留程序性知识中的逻辑依赖关系。例如,论文中的ToolQA咖啡数据库查询案例显示,ICAE压缩后的技能虽然能回答事实性问题(如数据库包含哪些列),但在需要执行程序性工作流程的问题(如查询特定日期的开盘价)时完全失效,因为它破坏了条件判断、工具参数等操作序列之间的逻辑链接。其次,技能的部署范式与静态文本根本不同。社区技能由用户积极分享、修改和分发,需要能够快速重新生成和易于传输。第三,不同技能的复杂度和信息密度差异显著。简单技能可能只需要少量软token表示,而多步骤程序性技能可能需要更高分辨率,固定压缩率无法同时适应所有技能。
本文的目标是本文的目标是设计一个针对程序性技能的压缩框架,能够:1)严格保留技能中的逻辑依赖和执行流程,确保压缩后的技能仍然可以正确执行;2)支持轻量级的离线压缩过程,仅依赖简单的前向传播而不需要昂贵的在线梯度反向传播,以适应技能生态系统中频繁的社区迭代;3)提供自适应的多分辨率表示能力,根据不同技能的复杂度动态选择合适的压缩预算,在推理效率和任务性能之间实现最佳平衡;4)生成的压缩产物存储高效、易于分发,且能够无缝集成到现有的LLM推理引擎中。
与已有工作不同的是,本文的独特切入角度在于明确区分了程序性知识压缩与陈述性文档压缩,并将保持可执行逻辑作为核心目标。与TokMem等需要针对每个新程序进行昂贵梯度优化的方法不同,SKIM采用离线压缩和轻量级前向传播的设计,更适合技能生态系统的快速迭代特性。与DRIFT等需要在线压缩处理检索文本的方法不同,SKIM将压缩过程完全移至离线阶段,消除了运行时延迟。更重要的是,SKIM的自适应多分辨率设计使其能够感知技能复杂度和压缩率,这是现有固定压缩率方法无法实现的能力。
核心方法
SKIM的整体思路是采用双模型软token架构,通过渐进式三阶段训练范式将程序性技能编码为连续的软token表示,并通过离线自我判断机制自适应选择合适的压缩分辨率。压缩器模型接收token化的技能内容,后跟Kmax个可学习的slot token,这些slot token在训练后保持固定。前向传播后,slot token位置的隐藏状态形成潜在表示,通过MLP投影器映射到目标模型的嵌入空间。对于较低分辨率K < Kmax,SKIM使用高分辨率表示的前缀EK(s) = EKmax(s)[1:K]。这种设计允许平台为每个技能和目标模型存储单个工件,然后无需重新计算表示即可选择更小的预算。训练过程分为三个阶段:技能重建学习一般技能表示,程序性问答预热对齐压缩表示与程序性问答,技能任务对齐将连续软token与目标模型行为对齐。部署前,SKIM对每个技能和目标模型运行离线诊断评估,记录选择的分辨率。
核心创新点在于将程序性技能压缩作为与陈述性文档压缩不同的任务来处理,其中保持可执行逻辑是中心思想。具体体现在三个技术创新:1)渐进式三阶段训练范式,从技能重建到程序性问答预热再到技能任务对齐,逐步引导模型学习保留程序性依赖的表示;2)自适应多分辨率设计,通过离线自我判断机制根据技能复杂度动态选择压缩预算,同时支持多个token预算的同步训练;3)统一的LoRA适配器设计,使得单个适配器可以与所有技能(包括未见过的技能)协作,确保了参数效率和泛化能力。与现有方法的本质区别在于,SKIM不是简单地保留关键信息,而是学习保留可执行逻辑,这意味着压缩后的表示必须能够支持条件判断、工具调用、多步骤推理等程序性操作。
方法步骤详情
SKIM的方法步骤包含四个主要部分。训练阶段包括三个步骤:第一步是技能重建,使用从网络收集的约60.9k技能文档,目标模型冻结,通过优化负对数似然Lrec = -1/|K| ΣK∈K log pM(s | EK(s), rrec)学习一般技能表示,其中rrec是简短的重建指令。第二步是程序性问答预热,使用WikiHow数据集(约214.3k处理过的QA示例),文章标题作为问题,文章正文作为程序性文本,摘要作为简洁答案,优化损失Lqa = -1/|K| ΣK∈K log pM(a | EK(d), q),目标模型仍然冻结。第三步是技能任务对齐,使用约60k从评估过的源技能生成的技能任务QA示例,目标模型通过LoRA适配(rank 16, alpha 32, dropout 0.05)进行适应,同时压缩器、slot token和投影器保持可训练。部署阶段,SKIM对每个技能s运行离线校准步骤,生成N个诊断问题,对每个问题使用完整技能文本生成参考答案,然后在每个分辨率K ∈ K下用压缩软token生成候选答案,计算保真度分数αK(s),选择达到阈值τ的最小分辨率K*(s) = min{K ∈ K : αK(s) ≥ τ}。推理时,系统获取对应的软token前缀,激活LoRA适配器,将软token与用户查询连接,运行目标LLM前向传播解码最终响应。
技术新颖性
技术新颖性体现在四个方面:1)双模型软token架构的针对性优化,虽然DRIFT也使用双模型架构,但SKIM专门针对程序性技能设计,包括三阶段渐进训练和LoRA适配器的统一设计;2)多分辨率同步训练与离线自我判断的结合,使得单个工件可以支持多个分辨率,且能够根据技能复杂度自适应选择;3)程序性知识压缩与陈述性知识压缩的明确区分,训练数据设计和损失函数都针对保持可执行逻辑进行了优化;4)技能生态系统友好的设计,包括轻量级前向传播、存储高效的工件、易于分发的格式,以及与现有推理引擎(如vLLM)的无缝集成。这些创新使得SKIM能够填补技能压缩领域的研究空白,解决现有方法无法有效处理程序性知识的根本缺陷。
实验结果
实验结果验证了SKIM的有效性。在两个目标模型(Qwen3-8B和Phi-4)和五个数据集(BigCodeBench、CHAMP、LogicBench、TheoremQA、ToolQA)上的评估显示,SKIM在保持任务性能的同时显著减少了token开销。具体来说,在Qwen3-8B上,SKIM Adaptive在BigCodeBench上达到46.93%的准确率,平均使用3172个token,相比Full Text的49.30%准确率和4676个token,仅牺牲了2.37%的准确率就减少了32.2%的token;在CHAMP上达到65.92%的准确率,使用1424个token,相比Full Text的68.16%和1941个token,减少了26.6%的token而仅损失2.24%的准确率;在LogicBench上达到83.68%的准确率,使用438个token,相比Full Text的85.26%和1089个token,减少了59.8%的token;在TheoremQA上达到67.87%的准确率,使用727个token,相比Full Text的68.81%和935个token,减少了22.2%的token;在ToolQA上达到46.92%的准确率,使用754个token,相比Full Text的47.97%和1010个token,减少了25.3%的token。与基线方法相比,通用软压缩方法(ICAE、500xCompressor)往往表现不佳,甚至低于Naive,说明事实性压缩方法在技能设置中转移效果差。LLMLingua-2在相似的token预算下,SKIM通常获得更高的准确率。消融研究表明,三个训练阶段都不可或缺,仅靠重建和程序性问答预热不足以完成下游技能任务,而保持技能任务阶段同时移除任何早期阶段也会导致性能低于完整配方。在Phi-4上的结果也验证了SKIM的跨模型泛化能力,尽管在某些数据集(如ToolQA)上Full Text低于Naive,导致Adaptive表现不佳,这反映了silver参考依赖的局限性。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| BigCodeBench | 准确率/平均技能token数 | 46.93% / 3172 tokens (Qwen3-8B), 50.35% / 1889 tokens (Phi-4) | Full Text: 49.30% / 4676 tokens (Qwen3-8B), 52.19% / 4628 tokens (Phi-4) | 减少32.2% token,损失2.37%准确率 (Qwen3-8B);减少59.2% token,损失3.5%准确率 (Phi-4) |
| CHAMP | 准确率/平均技能token数 | 65.92% / 1424 tokens (Qwen3-8B), 61.88% / 1664 tokens (Phi-4) | Full Text: 68.16% / 1941 tokens (Qwen3-8B), 61.43% / 1933 tokens (Phi-4) | 减少26.6% token,损失2.24%准确率 (Qwen3-8B);减少13.9% token,略高0.45%准确率 (Phi-4) |
| LogicBench | 准确率/平均技能token数 | 83.68% / 438 tokens (Qwen3-8B), 66.97% / 335 tokens (Phi-4) | Full Text: 85.26% / 1089 tokens (Qwen3-8B), 75.66% / 1093 tokens (Phi-4) | 减少59.8% token,损失1.58%准确率 (Qwen3-8B);减少69.4% token,损失11.46%准确率 (Phi-4) |
| TheoremQA | 准确率/平均技能token数 | 67.87% / 727 tokens (Qwen3-8B), 48.73% / 682 tokens (Phi-4) | Full Text: 68.81% / 935 tokens (Qwen3-8B), 51.14% / 921 tokens (Phi-4) | 减少22.2% token,损失0.94%准确率 (Qwen3-8B);减少25.9% token,损失2.41%准确率 (Phi-4) |
| ToolQA | 准确率/平均技能token数 | 46.92% / 754 tokens (Qwen3-8B), 17.27% / 705 tokens (Phi-4) | Full Text: 47.97% / 1010 tokens (Qwen3-8B), 9.79% / 996 tokens (Phi-4) | 减少25.3% token,损失1.05%准确率 (Qwen3-8B);增加29.2%准确率,减少29.2% token (Phi-4) |
局限与改进
作者承认的局限性包括:1)实验仅使用两个目标LLM(Qwen3-8B和Phi-4),由于训练资源约束,没有在显著更大的模型上评估SKIM,因此当目标模型更强时,准确率和token权衡如何变化仍不清楚;2)SKIM训练模型特定的投影器和LoRA适配器,这种设计提高了软token与目标LLM之间的对齐,但也意味着压缩的工件不能直接跨无关模型族移植。在技能仓库支持许多目标模型的设置中,仓库可能需要为同一技能存储多个模型特定的工件,增加了存储成本。我自己的观察包括:1)离线自我判断机制依赖于Full Text答案作为silver标准,这在大多数情况下是合理的,但如果提供的技能文本无帮助或模型未能遵循它(如Phi-4在ToolQA上Full Text低于Naive),会导致微弱的silver参考,使Adaptive低于固定SKIM变体;2)SKIM在Phi-4上的某些数据集表现不如Qwen3-8B,这可能反映了不同模型架构对软token表示的适应性差异;3)虽然SKIM支持多技能场景,但实验主要集中在单技能情况,多技能组合的评估相对有限。
独立分析的弱点
SKIM存在几个潜在的弱点,每个弱点都有相应的改进方向。首先,模型特定的工件存储成本问题:当技能仓库支持多个目标模型时,需要为同一技能存储多个压缩版本,这会增加存储开销。改进方向是研究统一的压缩器配合目标特定的投影器,可以在减少存储成本的同时保持模型对齐。其次,离线自我判断对silver标准的依赖问题:当Full Text表现不佳时,Adaptive选择会受影响。改进方向是引入更鲁棒的参考生成策略,例如使用多个模型的集成答案作为参考,或者设计不依赖于Full Text表现的校准机制。第三,跨模型泛化能力有限:投影器和LoRA适配器是模型特定的,限制了压缩工件的跨模型移植性。改进方向是探索更通用的表示学习,使得压缩的软token可以在不同模型族之间迁移。第四,多技能场景的评估不充分:虽然SKIM支持多技能压缩,但主要实验集中在单技能情况。改进方向是设计更复杂的多技能基准测试,评估技能组合和交互的情况。
未来方向
作者提出的未来工作方向包括研究统一的压缩器配合目标特定的投影器,以减少存储成本同时保持模型对齐。基于本文成果可以延伸的未来研究方向包括:1)扩展到更大的目标模型,如GPT-4、Claude等,研究准确率和token权衡如何随模型规模变化;2)探索跨模型族压缩,设计更通用的投影器或适配器,使得压缩工件可以在不同模型之间共享;3)研究动态分辨率调整机制,根据运行时上下文和任务难度在线选择分辨率,而不仅仅是离线预选;4)探索技能更新和版本管理的优化策略,如何高效地处理技能的小幅修改而无需完全重新压缩;5)研究技能检索与压缩的联合优化,将技能压缩集成到检索增强生成框架中,实现端到端的效率提升;6)探索更复杂的多技能组合场景,包括技能依赖、冲突解决、优先级调度等问题。
复现评估
论文提供了较高的复现性支持。作者已公开代码(https://github.com/bebr2/SKIM),但截至论文撰写时仓库内容可能不完整。实验使用了开放源代码的模型(Qwen3-8B、Phi-4)和数据集(BigCodeBench、CHAMP、LogicBench、TheoremQA、ToolQA),这些资源都是公开可获取的。论文在附录中提供了详细的实现细节,包括模型和压缩器对、候选分辨率预算、投影器配置、LoRA设置、离线考试参数、推理解码参数等。训练数据也进行了详细说明:Stage 1使用从GitHub收集的约60.9k技能文档,Stage 2使用约214.3k处理过的WikiHow QA示例,Stage 3使用约60k生成的技能任务QA示例。算力需求方面,使用了DeepSpeed来提高训练效率和减少内存消耗,但论文没有提供具体的硬件配置和训练时间。复现难度中等,主要挑战在于需要足够的GPU资源来运行训练和评估,以及需要处理GPT-5.2等高容量LLM的API访问问题。总体而言,论文提供了足够的信息和资源来复现实验,但需要一定的计算资源和工程能力。
论文图表
这张图展示了一个具体的ToolQA咖啡数据库查询案例,对比了事实性问题和程序性问题在压缩技能上的表现差异。左侧展示了一个技能的示例内容,描述了咖啡数据库的结构和标准查询工作流程。中间部分展示了一个事实性问题(数据库包含哪些列),以及使用ICAE压缩后的技能给出的正确答案。右侧部分展示了一个程序性问题(2001-12-06的开盘价是多少),以及使用ICAE压缩后的技能给出的错误答案,与SKIM压缩后的技能给出的正确答案。SKIM的答案显示了完整的ReAct推理过程,包括Thought、Action和Observation步骤,正确地执行了数据库加载、过滤、取值等操作序列。
这张图对理解论文至关重要,因为它直观地展示了程序性知识压缩与陈述性知识压缩的根本区别。通过一个具体的案例,图示说明了为什么现有的压缩方法(如ICAE)在处理程序性问题时会失败——它们破坏了技能中的逻辑依赖和执行流程。同时,图示也展示了SKIM的优势,它能够保留技能中的操作序列,使得模型能够正确执行程序性任务。这个例子帮助读者理解了本文要解决的核心问题以及SKIM方法的有效性。