[GH-ISSUE #1129] [Bug] 可生成的新token数量不足时,Deepseek-R1有概率拒绝输出思考过程 #788

Open
opened 2026-10-29 14:44:31 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @vibe-Chen on GitHub (Apr 13, 2025).
Original GitHub issue: https://github.com/kvcache-ai/ktransformers/issues/1129

Originally assigned to: @qiyuxinlin on GitHub.

检查清单

  • 1. 我已经搜索过相关问题,但未能获得预期的帮助
  • 2. 该问题在最新版本中尚未修复
  • 3. 请注意,如果您提交的BUG相关 issue 缺少对应环境信息和最小可复现示例,我们将难以复现和定位问题,降低获得反馈的可能性
  • 4. 如果您提出的不是bug而是问题,请在讨论区发起讨论 https://github.com/kvcache-ai/ktransformers/discussions 。否则该 issue 将被关闭
  • 5. 为方便社区交流,我将使用中文/英文或附上中文/英文翻译(如使用其他语言)。未附带翻译的非中文/英语内容可能会被关闭

问题描述

如题。该问题在前端可能有两种表现形式:

  • 输出<think>,正常思考,但未能成功输出</think>;
  • 输出<think>后,直接输出思考后的回复。

第一种表现形式在同一会话中最多出现一次;且一旦出现任意一种,后续所有输出均表现为第二种表现形式。
查看后端输出后发现,在seq_length和args.max_new_tokens的和逼近cache_lens时,即有概率触发。
触发后,若要求重新生成输出,后端总是指示有长度为1 token的新输入,且max__new_tokens的值会额外减少1。 这个是--force_think的效果

Image

推测该问题由两个bug组成:

  • 可生成的新token数量受限,导致在某次输出时未成功输出</think>。
  • 一旦未能成功输出</think>,模型在处理前端传入的上下文时会假定后续输入均为思考内容,导致不再思考。

复现步骤

在seq_length和args.max_new_tokens的和逼近cache_lens时,即有概率触发。
无法以常规方式较为稳定地复现,但增加seq_length的值(输入长上下文)、减少--max_new_tokens的值、减少--cache_lens的值(限制可用的总存储空间)和提供尽可能复杂的最新输入可能对复现有帮助。
也可以尝试传入不带</think>的上下文检验。

环境信息

硬件部分:
参考 https://www.bilibili.com/video/BV1Q29JYDELP 的配置单:
CPU:E5 2686
内存条:拆机64G 2400内存*8
GPU:NVIDIA RTX3080 20G版

软件部分:
git sha: github.com/kvcache-ai/ktransformers@6cbe044aae
参考 https://docs.qq.com/doc/DSkNobWtEZ2tRRk10 、 https://github.com/kvcache-ai/ktransformers/issues/1017#issuecomment-2778734503 和 https://github.com/kvcache-ai/ktransformers/issues/1023#issuecomment-2774736156 ,因而运行在默认的ktransformer后端下(亦即 --backend_type ktransformers);
系统为(新安装的)Windows10 专业版 19045.5737,另外CUDA选用了12.6版本
安装ktransformers时的系统版本为19045.5608,不过更新前后均出现同一问题,可以排除
所使用前端为Chatbox v1.11.8,前后端通过本地回环地址连接。

模型部分:
配置文件选用Deepseek附带的7个配置文件;
模型本身选用Deepseek-R1 671B-Q4的9个gguf文件

启动脚本:
conda activate .\python
python .\ktransformers\ktransformers\server\main.py --model_path .\config --gguf_path .\Model --cpu_infer 32 --max_new_tokens 2048 --port 10086 --force_think

额外信息

临时修复方案:

  • 截断上下文
  • 为模型输出手动补充所有缺失的</think>后再继续出现问题的会话

存在问题:

  • 手动补充后,可能出现在思考阶段直接输出回复,并在思考阶段结束后一字不差地重复回复;或在思考阶段和回复阶段输出两种不同回复的新问题。推测该问题与可生成的新token数量受限有较大关系。
Originally created by @vibe-Chen on GitHub (Apr 13, 2025). Original GitHub issue: https://github.com/kvcache-ai/ktransformers/issues/1129 Originally assigned to: @qiyuxinlin on GitHub. ### 检查清单 - [x] 1. 我已经搜索过相关问题,但未能获得预期的帮助 - [ ] 2. 该问题在最新版本中尚未修复 - [x] 3. 请注意,如果您提交的BUG相关 issue 缺少对应环境信息和最小可复现示例,我们将难以复现和定位问题,降低获得反馈的可能性 - [x] 4. 如果您提出的不是bug而是问题,请在讨论区发起讨论 https://github.com/kvcache-ai/ktransformers/discussions 。否则该 issue 将被关闭 - [x] 5. 为方便社区交流,我将使用中文/英文或附上中文/英文翻译(如使用其他语言)。未附带翻译的非中文/英语内容可能会被关闭 ### 问题描述 如题。该问题在前端可能有两种表现形式: - 输出\<think>,正常思考,但未能成功输出\</think>; - 输出\<think>后,直接输出思考后的回复。 第一种表现形式在同一会话中最多出现一次;且一旦出现任意一种,后续所有输出均表现为第二种表现形式。 查看后端输出后发现,在`seq_length`和`args.max_new_tokens`的和逼近`cache_lens`时,即有概率触发。 ~~触发后,若要求重新生成输出,后端总是指示有长度为1 token的新输入,且`max__new_tokens`的值会额外减少1。~~ 这个是`--force_think`的效果 ![Image](https://github.com/user-attachments/assets/86f6faa2-449e-4151-a39e-139d7f159472) 推测该问题由两个bug组成: - 可生成的新token数量受限,导致在某次输出时未成功输出\</think>。 - 一旦未能成功输出\</think>,模型在处理前端传入的上下文时会假定后续输入均为思考内容,导致不再思考。 ### 复现步骤 在`seq_length`和`args.max_new_tokens`的和逼近`cache_lens`时,即有概率触发。 无法以常规方式较为稳定地复现,但增加`seq_length`的值(输入长上下文)、减少`--max_new_tokens`的值、减少`--cache_lens`的值(限制可用的总存储空间)和提供尽可能复杂的最新输入可能对复现有帮助。 也可以尝试传入不带\</think>的上下文检验。 ### 环境信息 硬件部分: 参考 https://www.bilibili.com/video/BV1Q29JYDELP 的配置单: CPU:E5 2686 内存条:拆机64G 2400内存*8 GPU:NVIDIA RTX3080 20G版 软件部分: git sha: https://github.com/kvcache-ai/ktransformers/commit/6cbe044aae0398cf2a27ae68b8a54390b4ad6bdd 参考 https://docs.qq.com/doc/DSkNobWtEZ2tRRk10 、 https://github.com/kvcache-ai/ktransformers/issues/1017#issuecomment-2778734503 和 https://github.com/kvcache-ai/ktransformers/issues/1023#issuecomment-2774736156 ,因而运行在默认的ktransformer后端下(亦即 --backend_type ktransformers); 系统为(新安装的)Windows10 专业版 19045.5737,另外CUDA选用了12.6版本 安装ktransformers时的系统版本为19045.5608,不过更新前后均出现同一问题,可以排除 所使用前端为Chatbox v1.11.8,前后端通过本地回环地址连接。 模型部分: 配置文件选用[Deepseek](https://huggingface.co/deepseek-ai/DeepSeek-R1/)附带的7个配置文件; 模型本身选用[Deepseek-R1 671B-Q4](https://huggingface.co/unsloth/DeepSeek-R1-GGUF/tree/main/DeepSeek-R1-Q4_K_M)的9个gguf文件 启动脚本: `conda activate .\python` `python .\ktransformers\ktransformers\server\main.py --model_path .\config --gguf_path .\Model --cpu_infer 32 --max_new_tokens 2048 --port 10086 --force_think` ### 额外信息 临时修复方案: - 截断上下文 - 为模型输出手动补充**所有缺失的**\</think>后再继续出现问题的会话 存在问题: - 手动补充后,可能出现在思考阶段直接输出回复,并在思考阶段结束后**一字不差地**重复回复;或在思考阶段和回复阶段输出两种不同回复的新问题。推测该问题与可生成的新token数量受限有较大关系。
Author
Owner

@vibe-Chen commented on GitHub (Apr 13, 2025):

情况更新:极端情况下,模型连“你好!”都拒绝思考。
Image
(后端已长时间运行,因此无法确认缓存中是否存在“你好”的请求。)

<!-- gh-comment-id:2799949145 --> @vibe-Chen commented on GitHub (Apr 13, 2025): 情况更新:极端情况下,模型连“你好!”都拒绝思考。 ![Image](https://github.com/user-attachments/assets/cba4167b-5d28-46f0-9c7c-864cc0c6ca93) (后端已长时间运行,因此无法确认缓存中是否存在“你好”的请求。)
Author
Owner

@qiyuxinlin commented on GitHub (Apr 13, 2025):

收到您的反馈

<!-- gh-comment-id:2799969892 --> @qiyuxinlin commented on GitHub (Apr 13, 2025): 收到您的反馈
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/ktransformers#788
No description provided.