跳转至

五十七:大模型推理链压缩

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484742&idx=1&sn=790e869a90b909d406485cdcd7cdba43&chksm=f01eb63fc7693f297bc9b52745117484f8f3a2b3ce9ff4db22a3c4ab765363b84496088e4c4b#rd

1. 学习范围

本日主题是推理链压缩,也就是在保持推理质量的前提下减少模型生成的中间思考 token。 img

本日覆盖: - Chain-of-Thought 为什么带来显著推理成本。

  • 推理链压缩与 prompt compression、speculative decoding 的区别。

  • 推理链压缩的目标、约束和评价指标。

  • Chain of Draft 的短草稿推理范式。

  • TokenSkip 的可控推理链 token 压缩思想。

  • LightThinker 的逐步压缩思想。

  • 训练时压缩、推理时压缩和提示词压缩的差异。

  • 生产系统中如何评估压缩收益、正确性风险和用户体验。

2. 问题定义

推理链压缩关注的是模型在解题过程中生成的中间 reasoning tokens,而不是用户输入 prompt 的长度。 典型长推理输出:

Question -> long chain of thought -> final answer
压缩后的目标:

Question -> compact reasoning sketch -> final answer
它要解决的问题是:很多任务需要中间推理才能提升正确率,但长篇推理会增加延迟、费用、上下文占用和可读性负担。

3. 推理链为什么会变贵

LLM 的生成是自回归的。每多生成一个中间 token,Decode 阶段就多一次 token 级计算。 长推理链的成本包括: - 更高的输出 token 费用。

  • 更长的 end-to-end latency。

  • 更多 KV cache 占用。

  • 更低的 batch 调度效率。

  • 流式输出中更长的等待。

  • 在多轮 agent 中占用上下文窗口。

当模型使用 test-time scaling、self-consistency、tree search 或多轮反思时,reasoning token 会进一步放大。

4. 推理链压缩的核心目标

推理链压缩不是单纯让模型少说话,而是在准确性、可解释性和成本之间做可控折中。 核心目标: - 减少中间推理 token。

  • 尽量保持最终答案正确率。

  • 保留关键推理状态和约束。

  • 支持按任务难度动态调整预算。

  • 避免把必要步骤压缩掉。

一个常用指标是压缩率:

compression_ratio = compressed_reasoning_tokens / original_reasoning_tokens
token_saving = 1 - compression_ratio
如果原始推理链 1000 个 token,压缩后 250 个 token,则 compression ratio 为 0.25,节省 75% 的中间 token。

5. 与相近技术的区别

推理链压缩容易和几类技术混淆。 Prompt compression 压缩的是输入上下文,例如删减检索文档、压缩历史对话、筛选上下文 token。 推理链压缩压缩的是模型输出过程中的中间思考。 Speculative decoding 通过 draft-verify 减少目标模型调用次数,不一定减少最终输出 token 数。 推理链压缩直接减少要生成的 reasoning token,因此能同时影响费用、延迟和上下文占用。 Knowledge distillation 可能把长推理教师的能力蒸馏到学生模型中,学生在推理时可以更短地回答。它是一种可能的训练路径,但不是所有推理链压缩都必须蒸馏。

6. 方法谱系

推理链压缩可以按介入位置分类。 第一类是 prompt-level 方法。代表是 Chain of Draft,直接通过提示词要求模型用极短草稿进行推理。 第二类是 decoding-time 方法。系统在生成过程中根据预算、置信度、任务难度或 token 重要性控制推理长度。 第三类是 token/step-level compression。代表包括 TokenSkip 和 LightThinker 这类显式识别冗余 token 或压缩推理步骤的方法。 第四类是 training-time 方法。用短推理数据、蒸馏数据、长度惩罚或预算条件训练模型,使模型学会在有限 token 内完成推理。 第五类是 routing 方法。简单问题直接短答,困难问题才启用长推理或多样本推理。

7. Chain of Draft

Chain of Draft 的直觉是:人类在草稿纸上解题时,经常只写关键中间量,而不会写完整自然语言解释。

img

img

例如普通 CoT:

First, I need to compute the total price. There are 3 items and each item costs 4 dollars...
草稿式推理:

3 * 4 = 12; +2 = 14. Answer: 14
CoD 强调写得少,但不是不推理。它让模型保留必要的计算状态、约束和转移。 适合场景: - 算术题。

  • 逻辑题。

  • 规划题中的关键状态追踪。

  • 需要多步但中间解释冗余较多的任务。

不适合场景: - 用户需要完整教学解释。

  • 合规或审计需要可读推理说明。

  • 任务难点在细粒度文字辨析,过度压缩可能丢失条件。

8. TokenSkip 思想

TokenSkip 关注可控的 Chain-of-Thought token 压缩。核心问题是:推理链中哪些 token 对最终答案真正重要,哪些只是连接词、重复解释或低信息表达。

img

一种直观实现可以包含三步:

1. 为 CoT token 或 span 估计重要性。
2. 根据目标压缩率跳过低重要性 token。
3. 用压缩后的链继续推理或生成最终答案。
重要性可以来自模型置信度、梯度、注意力、teacher-student 差异、删除后答案变化或专门训练的选择器。

img

TokenSkip 的关键价值在于可控性。系统可以设置不同预算,例如保留 30%、50% 或 70% 的 reasoning token,并观察准确率下降曲线。

img

9. LightThinker 思想

LightThinker 类方法的核心是逐步压缩,而不是把完整推理链一次性硬删短。

img

常见思路是: - 先让强模型生成完整 step-by-step 推理。

  • 将每一步压缩成更短的表达。

  • 保留步骤边界和关键变量。

  • 用压缩推理训练或约束模型。

  • 在推理时生成短步骤而不是长段落。

img

它比单纯提示“be concise”更结构化,因为压缩对象是 reasoning step,而不是整段文本长度。 逐步压缩的优势是可诊断。如果某一类步骤被压缩后错误率上升,可以回到对应步骤分析是条件丢失、变量丢失还是中间结论错误。

10. 训练时压缩

训练时压缩的目标是让模型内化短推理风格。 常见路径: - 用长 CoT 作为教师,生成短 CoT 作为学生监督数据。

  • 对答案正确且推理更短的样本进行 SFT。

  • 在 RL 阶段加入长度惩罚。

  • 用预算 token 作为条件,让模型按预算输出。

  • 混合长推理和短推理数据,避免模型在难题上过度省略。

一个简化目标可以写成:

maximize   reward(answer correctness) - lambda * reasoning_length
其中 lambda 控制长度惩罚强度。lambda 太小,模型不会变短;lambda 太大,模型会跳步骤甚至胡猜。

11. 推理时压缩

推理时压缩不一定改变模型参数。 常见做法: - 在 system prompt 中要求使用草稿式推理。

  • 给出短推理示例。

  • 设置 reasoning token budget。

  • 根据任务类型选择短推理、长推理或直接回答。

  • 生成一段短草稿后立刻输出答案。

  • 当模型置信度低时自动升级为长推理。

推理时方法部署简单,但稳定性依赖模型本身是否听从压缩指令。

12. 关键评价指标

推理链压缩不能只看 token 减少。 应同时评估: - Accuracy:最终答案正确率。

  • Token saving:reasoning token 节省比例。

  • Latency:首 token、总时延和 TPOT。

  • Cost:输出 token 计费和推理资源消耗。

  • Robustness:不同题型、长度、语言下是否稳定。

  • Faithfulness:短推理是否仍能反映真实解题路径。

  • Readability:人是否能快速检查关键步骤。

  • Escalation rate:有多少请求需要回退到长推理。

理想曲线不是单点,而是准确率随压缩率变化的 Pareto frontier。

13. 正确性风险

过度压缩会带来几类错误。 第一类是条件丢失。例如题目中有“至少”“不超过”“除非”等约束,短草稿可能漏掉。 第二类是变量混淆。长题中有多个实体、时间或数值,压缩后变量名不清。 第三类是中间状态断裂。多步推理中某一步结论没有保留,后续生成只能猜。 第四类是看似合理的短解释掩盖错误答案。 第五类是模型学会用短格式输出,但没有真正学会短推理。

14. 任务难度与动态预算

不同任务不应该使用同一个压缩强度。 简单事实问答可以直接短答。 中等算术和逻辑题适合 CoD。 复杂证明、代码推理、长上下文合成可能需要较长中间状态。 一种实用策略:

1. 轻量分类器估计难度。
2. 简单任务用 short reasoning。
3. 中等任务用 compressed CoT。
4. 困难任务用 full CoT 或多样本推理。
5. 如果校验失败,再回退到长推理。
动态预算比固定压缩率更适合生产环境。

15. 与 test-time scaling 的关系

Test-time scaling 通常通过更多推理 token、更多采样、搜索或反思提升正确率。 推理链压缩看起来与它相反,但二者可以结合: - 对每条样本使用短草稿,节省单样本成本。

  • 用省下的 token 预算生成更多候选。

  • 对简单题压缩,对难题扩展。

  • 在 verifier 之前压缩候选推理,降低排序成本。

核心不是永远变短,而是在固定计算预算下分配更有效。

16. 系统实现注意事项

上线推理链压缩时,需要同时改动模型调用策略和监控指标。 关键实现点: - 区分 final answer token 和 reasoning token。

  • 记录不同任务类型的 token saving。

  • 为高风险任务设置 fallback。

  • 对短推理输出做格式约束。

  • 保留可复现实验日志。

  • 避免把压缩提示泄漏给用户或污染业务语气。

  • 对多语言任务单独评估。

如果模型提供独立的 reasoning budget 参数,优先使用模型原生参数;否则使用 prompt、路由和输出格式约束组合实现。

17. 实验设计

一个基本实验应包含:

Baseline: normal CoT
Variant A: direct concise prompt
Variant B: Chain of Draft prompt
Variant C: compressed CoT training or TokenSkip
Variant D: dynamic budget routing
每个 variant 至少记录: - 准确率。

  • 平均 reasoning token。

  • 平均输出 token。

  • P50/P95 latency。

  • 单题成本。

  • 按题型分桶的错误样例。

需要注意,整体准确率可能掩盖长难题退化。应按难度、题型和上下文长度分桶。

18. 面试中的高频考点

面试中经常考察以下问题: - 推理链压缩和 prompt compression 的区别。

  • 为什么 CoT 可以提升准确率但增加成本。

  • Chain of Draft 的本质是不是“不解释”。

  • TokenSkip 如何做到可控压缩。

  • 如何评价压缩后的正确性。

  • 如何设计动态 reasoning budget。

  • 如果压缩后准确率下降,如何定位问题。

  • 生产系统中如何做 fallback 和监控。

回答时要强调:推理链压缩是成本-正确性-可解释性的三方权衡,不是简单删 token。

19. 紧凑总结

推理链压缩的核心是减少模型中间思考 token,同时尽量保留解决问题所需的关键状态。 Chain of Draft 使用草稿式短推理,适合低冗余表达。 TokenSkip 强调可控跳过低价值 CoT token。 LightThinker 强调逐步压缩和短步骤学习。 训练时方法更稳定,但成本更高;推理时方法上线快,但依赖模型遵循指令。 好的工程方案通常是动态预算:简单题短答,中等题压缩推理,困难题保留长推理,并用校验和回退控制风险。

            预览时标签不可点




































<div class="