TokenSkip
让大语言模型学会「跳过废话」,在思维链推理中剪掉60%冗余token,精度仅降0.4%
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让大语言模型学会「跳过废话」,在思维链推理中剪掉60%冗余token,精度仅降0.4%
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一位数学竞赛教练,团队里有位天才学生(相当于大语言模型),解题能力极强,但有个坏习惯——每道题都要把完整的推理过程事无巨细地写出来,包括大量过渡性的废话。有些题的推理链长达上百个「思考步骤」,而真正关键的结论可能只有开头和结尾的 5 个。
这位天才学生浪费了多少时间?超过 60% 的推理 token 其实可以被压缩掉。 EMNLP 2025 收录的 TokenSkip 研究正是要解决这个问题。
Chain-of-Thought(链式思考,简称 CoT)自 2022 年兴起以来,已成为大语言模型解决复杂推理问题的核心技术。CoT 允许模型分步思考,将「鸡兔同笼」这样的多步应用题拆解成多个子步骤逐一攻克。然而,随着推理任务规模扩大,CoT 的 token 消耗急剧上升——在 GSM8K(小学数学)和 MATH(高中竞赛数学)基准测试中,一次完整推理往往生成 150-300 个 token,其中大量属于冗余过渡词、重复表述和中间填充句。
TokenSkip 的核心洞察是:并非所有推理 token 都同等重要。 研究团队(Xia et al., EMNLP 2025)发现,LLM 的 CoT 输出中存在大量「低语义重要性」token,它们对最终答案的贡献几乎为零,却白白消耗了 40%-60% 的推理预算。
项目的技术实现分为三个阶段:
第一阶段:原始 CoT 输出采集。 使用目标 LLM(如 Qwen2.5-7B-Instruct)对训练数据进行推理,收集完整的 CoT 轨迹。代码中通过 evaluation.py 调用 vLLM 批量推理,利用 data_processing/ 下的工具将 GSM8K 和 MATH 数据集转化为模型可输入的格式。
第二阶段:重要性剪枝。 调用 LLMLingua-2(微软开源的 prompt 压缩工具)分析每个 token 的语义重要性得分,将低于阈值的 token 标记为可跳过,生成不同压缩比(0.9/0.8/0.7/0.6/0.5)的压缩 CoT 数据。LLMLingua.py 负责加载压缩模型并批量处理推理结果,get_llamafactory_input.py 则将压缩后的数据转换为 LLaMA-Factory 可用的 SFT 格式。
第三阶段:LoRA 微调。 用压缩后的 CoT 数据对目标模型进行监督微调(SFT),只更新 LoRA 适配器参数。eval.sh 脚本整合了完整的评测流程:指定模型路径、LoRA 适配器路径和压缩比,即可评测任意配置组合。
图1:TokenSkip 与原始 CoT 的对比。 原始 CoT 逐 token 生成完整推理链;TokenSkip 学会在低重要性 token 处「跳跃」,只生成关键推理节点,从而实现可控压缩。
TokenSkip 在 Qwen2.5 系列模型上的评测结果极具冲击力:
这些数据说明一个重要趋势:模型规模越大,对压缩的容忍度越高。 更大的 LLM 更擅长从压缩后的稀疏推理链中「脑补」出正确答案,意味着 TokenSkip 的方法在Scaling Law 背景下具有更强的实用价值。
图2:TokenSkip 在 GSM8K 和 MATH 基准上的性能对比。 同一压缩比下,TokenSkip 显著优于直接截断(Truncation)和 LLMLingua-2 基线方法。
TokenSkip 的代码库结构清晰,分为三大模块:
LLMLingua.py:使用 LLMLingua-2 对原始 CoT 轨迹进行批量压缩,核心是 PromptCompressor 类,支持指定压缩比,输出压缩后的推理链 jsonl 文件。
evaluation.py:推理评测主脚本,支持两种推理模式——原始模型推理(用于采集 CoT)和 LoRA 适配器推理(用于评测 TokenSkip)。通过 --use_adapter 和 --compression_ratio 参数切换模式。模型加载使用 vLLM 引擎,支持高吞吐量的批量推理。
data_processing/:数据预处理工具,将 GSM8K 和 MATH 的原始 JSON 转换为模型微调所需的 messages 格式,并从 LaTeX 推理过程中提取标准答案用于评测。
get_llamafactory_input.py:将原始 CoT 与多档压缩 CoT 数据合并,生成 LLaMA-Factory 的 SFT 训练数据集,支持一键生成不同压缩比的训练样本。
TokenSkip 的上手门槛中等偏高,适合有 NLP/LLM 微调经验的开发者。核心挑战在于三点:
第一,环境依赖复杂。 requirements.txt 明确要求 torch==2.5.1、vllm==0.6.4、transformers==4.47.0 等一系列版本兼容的依赖,且需要 CUDA 支持。推荐使用 conda 或 venv 创建独立环境,避免依赖冲突。
第二,硬件要求不低。 评测 14B 模型需要双卡(每卡至少 24GB显存),训练同样需要双卡 3090。纯 CPU 或单卡用户无法完整体验。
第三,缺少开箱即用的推理 API。 代码库提供的是研究级评测脚本,不是生产级推理服务。如果要做服务化部署,需要额外编写 Flask/FastAPI 包装代码,并将 LoRA 适配器加载逻辑集成到 vLLM 的 LoRA 支持中。
优点是:代码注释清晰,每个脚本职责单一,eval.sh 提供了端到端的完整评测命令示例,README 也提供了从数据采集到模型微调的分步骤说明。对于想复现论文结果的研究者来说,这已经是相当友好的实现。
TokenSkip 并非银弹,存在几个值得关注的局限:
通用性问题:当前实验集中在数学推理任务(GSM8K、MATH),尚未验证在代码生成(HumanEval)、常识推理(CommonsenseQA)等其他 CoT 适用场景的效果。推理链的结构在不同任务类型间差异显著,TokenSkip 的压缩策略能否泛化尚需更多实验。
压缩比与任务难度的耦合:论文主要在 0.5-0.9 压缩比范围内评估,0.5 压缩比意味着裁掉一半 token,此时性能下降约 2%。对于高精度要求的场景(如金融计算、医疗推理),2% 的精度损失可能是不可接受的。需要根据实际任务对精度和效率的权衡来选择合适的压缩比。
模型覆盖率有限:目前只开源了 Qwen2.5-Instruct 系列的 LoRA 权重,其他主流模型(如 Llama-3.1、GLM-4)的适配需要用户自行训练。
TokenSkip 代表的不仅是单一技术突破,更是 LLM 推理范式演进的一个缩影。2024-2025 年间,Speculative Decoding、Medusa、Eagle 等系列工作都在探索如何在不损失质量的前提下加速 LLM 推理。TokenSkip 从另一个角度切入——不是让模型「猜得快」,而是让模型「想得少」。
从应用角度看,TokenSkip 的价值在于:在推理成本敏感的部署场景中(如 API 服务、边缘设备),压缩后的模型可以用更少的 token 达到接近原始模型的准确率,从而直接降低延迟和费用。 例如,40% token 压缩意味着每次推理时间理论上可减少 40%,在高频调用场景下经济效益显著。
综合来看,TokenSkip 是一个工程实现扎实、论文复现性高的研究项目,非常适合以下用户:想深入理解 CoT 压缩机制的研究者、需要为特定推理任务定制高效 LLM 的开发者,以及对大模型效率优化感兴趣的学习者。
图3:TokenSkip 项目 Logo。 EMNLP 2025 录用研究,GitHub 225★,arxiv 引用 273 次。