[ PROMPT_NODE_26032 ]
nowait-reasoning-optimizer
[ SKILL_DOCUMENTATION ]
# NOWAIT 推理优化器
实现了论文《Wait, We Don't Need to 'Wait'! Removing Thinking Tokens Improves Reasoning Efficiency》(Wang et al., 2025) 中的 NOWAIT 技术。
## 概述
NOWAIT 是一种无需训练的推理时干预技术,它在生成过程中抑制自我反思 Token(例如:“Wait”、“Hmm”、“Alternatively”),在不损害模型效用的情况下,将思维链 (CoT) 轨迹长度减少了 **27-51%**。
## 何时使用
- 部署计算资源有限的 R1 风格推理模型
- 减少生产系统的推理延迟
- 优化推理任务的 Token 成本
- 处理需要精简的冗长 CoT 输出
## 支持的模型
| 模型系列 | 类型 | Token 减少量 |
|--------------|------|-----------------|
| QwQ-32B | 基于 RL | 16-31% |
| Phi4-Reasoning-Plus | 基于 RL | 23-28% |
| Qwen3-32B | 基于 RL | 13-16% |
| Kimi-VL-A3B | 多模态 | 40-60% |
| QvQ-72B-Preview | 多模态 | 20-30% |
**重要提示**:NOWAIT 在基于 RL 的模型上效果最好。蒸馏模型 (Qwen3-4B/8B/14B) 在抑制反思 Token 时性能会下降。
## 快速开始
### 1. 基础实现
python
from scripts.nowait_processor import NOWAITLogitProcessor
# 为你的模型分词器初始化处理器
processor = NOWAITLogitProcessor(tokenizer)
# 在生成过程中使用
outputs = model.generate(
inputs,
logits_processor=[processor],
max_new_tokens=32768
)
### 2. 被抑制的关键词
完整列表请参阅 `references/keywords.md`。核心关键词:
wait, alternatively, hmm, but, however, check,
double-check, maybe, verify, again, oh, ah
## 工作原理
1. **初始化关键词**:通过实证分析识别反思关键词
2. **扩展到 Token 变体**:将关键词映射到词汇表中的所有 Token 变体(例如,“wait” → “ wait”, “Wait”, “ Wait”, ".wait”, “WAIT”)
3. **推理时抑制**:在解码过程中将反思 Token 的 Logits 设置为较大的负值
Logits (之前) Logits (之后)
Wait 0.8 → Wait -inf
First 0.6 → First 0.6
Hmm 0.5 → Hmm -inf
Let 0.4 → Let 0.4
## 关键发现
### 为什么有效
- NOWAIT 并没有完全消除自我反思——它引导模型跳过**不必要**的“等待”推理
- 模型仍然在关键决策点执行必要的验证
- 产生更线性、更直接的推理路径
### RL vs 蒸馏