我最近注意到有一些帖子在讨论QwQ模型往往会生成过多的标记(token),这常常导致它不必要地‘过度思考’。我也看到了一些通过精心制作系统提示来控制这种行为的创新尝试。为了更系统地解决这个问题,我使用自定义的logits处理器构建了一个小而简单的解决方案。这种方法动态地调整生成过程中‘思考结束’标记(< / think>
)出现的可能性。基本思路如下:1. 可以设置一个‘思考努力’参数(0.0
= 最小思考,标记< / think>
快速出现;1.0
= 正常行为,>1.0
= 需要更长时间输出< / think>
标记);2. 逻辑很简单:一旦生成了< / think>
标记,处理器就停止调整该序列的logits;3. 这允许在不进行复杂的提示工程的情况下控制模型思考(或‘过度思考’)的程度。我在简单任务中看到了减少不必要思考标记的良好结果,但还没有广泛测试这对较长的思维链(CoT)推理可能有何影响。我希望其他人尝试一下并分享你们的经验或想法!这里是包含针对llama - cpp - python(gguf模型)和Hugging Face Transformers的代码和示例的仓库(注意:代码还非常原始,未优化且没有条理,哈哈……这只是为了快速与社区分享基本思路!):https://github.com/and270/thinking_effort_processor。#快速示例(Qwen - 1.5B R1 - Distill)提示:法国的首都是哪里?常规推理:(模型在得出结论之前生成了冗长的推理序列)最后总结为我相信法国的首都是巴黎。思考努力推理(0.1):< / think>
法国的首都是巴黎。欢迎任何反馈或测试!让我知道你们的想法或经验——我特别好奇这对你们使用QwQ或类似模型的用例有何影响。
讨论总结
原帖作者发现QwQ模型存在过度产生标记(“过度思考”)的问题,并提出使用自定义Logits处理器控制模型“思考努力”的方案,还分享了代码示例。评论者们主要对原帖表示认同,有人分享了类似想法,有人补充了新的使用方式,还有人围绕该方案进行技术适配、分享相关示例成果等,整体氛围积极正面。
主要观点
- 👍 原帖的想法很棒,是很聪明的解决方案
- 支持理由:原帖提出了一种系统解决QwQ模型过度思考问题的方案,简洁有效。
- 反对声音:无
- 🔥 Qwq似乎存在预算强制的情况
- 正方观点:从模型使用“wait”“alternatively”等词推断出。
- 反方观点:无
- 💡 可以把日志处理器传入vllm serve,通过OpenAI REST API在客户端使用并可带附加参数
- 解释:这为原帖中的技术提供了新的使用途径。
- 💡 可以使用cpp服务器上的
logit_bias
将控制模型“思考努力”的方案适配到llama.cpp- 解释:为想要在llama.cpp上使用该方案的人提供了方法。
- 💡 存在自己编写的logits处理器示例,可强制模型只用e - prime语言说话
- 解释:在原帖主题基础上分享自己的相关成果。
金句与有趣评论
- “😂 我真的很喜欢在推理过程中同时处理对数(logits)和输出的想法。”
- 亮点:表达了对原帖中处理方式的喜爱。
- “🤔 Qwq 似乎 是在使用从所有“wait”,“alternatively”等词推断出的预算强制。”
- 亮点:提出了对Qwq模型的一种见解。
- “👀 One cool thing you can do is actually pass the logits processor straight into vllm serve from the cli.”
- 亮点:为使用者提供了新的技术应用方式。
情感分析
总体情感倾向是积极正面的。主要分歧点较少,大家基本都对原帖提出的方案表示认同或补充相关内容。可能的原因是原帖提出的方案具有创新性和实用性,能够解决QwQ模型存在的问题,所以得到大家的认可。
趋势与预测
- 新兴话题:将该方案适配到更多的模型或平台上进行应用。
- 潜在影响:有助于提高模型的使用效率,优化模型输出,在人工智能模型开发和使用领域可能会有一定的推广价值。
详细内容:
标题:控制 QwQ 与 R1 模型“思考努力”的新方案引发 Reddit 热议
近日,Reddit 上一篇题为“[Experimental] Control the ‘Thinking Effort’ of QwQ & R1 Models with a Custom Logits Processor”的帖子引起了广泛关注。该帖子指出,近来注意到 QwQ 模型常有生成过多令牌、“过度思考”的情况,也看到了一些通过精心设计系统提示来控制这一行为的尝试。为更系统地解决此问题,作者提出了一个借助自定义 logits 处理器的简单方案,可动态调整生成过程中“思考结束”令牌(</think>
)出现的可能性。
此方案的基本思路包括:可设置“思考努力”参数,逻辑简单,生成</think>
令牌后处理器停止调整该序列的 logits,从而无需复杂的提示工程就能控制模型的思考量。作者称在简单任务中已看到减少不必要思考令牌的良好效果,但尚未对其在更长的思维链推理中的影响进行广泛测试。同时,作者分享了相关代码和示例的 GitHub 链接。此帖获得了众多关注和评论。
在评论中,有人认为这是个很棒的想法,有人提议将此想法与其他方案结合,比如[base EOT probability function] + [Weight * number of Waits in response],以更直接地影响模型自我怀疑的次数。还有人觉得可以通过调整“探索”令牌的 logits 来优化方案,比如“wait”“hmm”等。有人表示控制思考时间反方向操作也可能有趣,比如能否通过增加思考时间来改进 Qwen 7B R1 蒸馏。有人提到应进行基准测试以观察其对整体性能的影响。有人提到可以将 logits 处理器直接传入 vllm serve 的 cli 中,然后通过 openai rest api 从任何客户端使用附加参数。有人请求帮助将其适配到 llama.cpp,有人指出可以在 cpp 服务器上使用logit_bias
,并提供了相关链接。还有人分享了自己编写的强制模型仅使用 e-prime 语言的有趣示例。
那么,这个方案究竟能在多大程度上改善模型的表现?它又将如何影响我们对 QwQ 或类似模型的使用?这有待更多的实践和探索。
感谢您的耐心阅读!来选个表情,或者留个评论吧!