现象
加载较多知识库时,模型输出常中途截断。当知识库仅包含1~2本书时,模型输出完整;知识库内容较多时,输出到一半即停止。使用硬件为4090*2,max-model-len设为18048,总token配置为18000,索引字数4000多,未触发总token限制。
可能原因
存在两类潜在诱因。其一为总token超限,部分场景下配置未满足输入输出的总token需求;其二为流式输出相关的系统bug,表现为请求实际完成但输出分批返回,间隔数秒后中断,刷新页面可显示完整内容,前后端无报错日志。
排查步骤
- 核对模型总token配置,确认输入加输出的token上限是否匹配实际业务需求。
- 检查前后端日志,排查是否存在未上报的请求中断或超时类错误。
- 验证刷新页面后是否可显示完整输出内容,辅助判断是否为流式输出异常。
解决与验证
针对流式输出相关的系统bug,可通过优化输出速率控制函数修复。统一限制输出速率,例如每20ms输出一个字,修改streamResponse函数,在逐字输出时添加延迟控制。具体修改可参考提供的代码逻辑,在流式响应循环中加入延迟处理,避免输出过快导致中断。验证方式为部署修改后的代码,重新加载较多知识库的场景,确认模型输出完整无截断。