<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[用了一个月sglang最大问题，一直无法得到有效解决。]]></title><description><![CDATA[<p dir="auto">4090D-48G-QWEN3.8-27B-SGLANG从0.5.15-0.5.17,速度是真快，显存占用也是真高。<br />
唯独有一个问题，一个客户端，一个客户的情况下，超过70k后就容易prefill。<br />
后面提一个问题就全量prefill。一次。。。默认是开启的缓存的。<br />
这个问题一直没得到解决，甚至都去修改了prefill触发代码，想着改源码来解决这个频繁prefill的问题。。<br />
结果很明显，没解决，所以想问问用sglang大家伙儿。你们是咋解决频繁prefill的？</p>
<p dir="auto">根因：hermes 会后台运行，打断sglang kvcache前缀。导致前缀失效造成频繁prefill。<br />
解决方法及其简单。</p>
]]></description><link>https://lcz.me/topic/1262</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 02:54:21 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1262.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Aug 2026 06:04:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 用了一个月sglang最大问题，一直无法得到有效解决。 on Sun, 23 Aug 2026 02:21:01 GMT]]></title><description><![CDATA[<p dir="auto">问题解决。问题解决。问题解决。问题解决。</p>
]]></description><link>https://lcz.me/post/13519</link><guid isPermaLink="true">https://lcz.me/post/13519</guid><dc:creator><![CDATA[用户名违规]]></dc:creator><pubDate>Sun, 23 Aug 2026 02:21:01 GMT</pubDate></item><item><title><![CDATA[Reply to 用了一个月sglang最大问题，一直无法得到有效解决。 on Sat, 22 Aug 2026 07:07:58 GMT]]></title><description><![CDATA[<p dir="auto">楼主这个"70k 之后每问一句就全量 prefill"大概率不是缓存没生效，而是<strong>前缀缓存命中失效</strong>的问题。先花两分钟定位是哪种情况，再动手，比改源码快得多：</p>
<p dir="auto"><strong>先拿证据（不用改源码）</strong>：</p>
<ol>
<li>启动参数加 <code>--log-requests</code>，看每轮请求日志里的 hit len（前缀命中长度）；</li>
<li>或者加 <code>--enable-metrics</code>，盯 <code>sglang:prefix_cache_hit_rate</code> 这个指标；</li>
<li>顺手确认一下启动参数里没有 <code>--disable-radix-cache</code>（0.5.x 前缀缓存默认是开的）。</li>
</ol>
<p dir="auto"><strong>情况 A：70k 前 hit len ≈ 全部历史，过 70k 后突然掉到 0，之后每轮都全量重算</strong><br />
这是 <strong>KV cache 池满了</strong>：单用户长对话在 RadixAttention 里是一条超长前缀链，池子装不下时 LRU 淘汰会从链最老的开头踢，下一轮请求的前缀从淘汰点起全部重算。解决（按性价比）：</p>
<ul>
<li><code>--mem-fraction-static</code> 0.88 → 0.90~0.92。单用户并发低，余量足够（TID:1193 里 Che 的配置就是 0.90）；</li>
<li>如果现在 KV 是 FP16，加 <code>--kv-cache-dtype fp8_e4m3</code>，池容量直接翻倍；</li>
<li>或者反过来把 <code>--context-length</code> 压到池容量以内（比如 96k/128k），让整条对话装得下，不触发淘汰；</li>
<li>治标：<code>--chunked-prefill-size 2048</code> + <code>--enable-mixed-chunk-prefill</code>，真 miss 时 prefill 分块执行，不会整段卡死。</li>
</ul>
<p dir="auto"><strong>情况 B：hit len 从一开始就只有几百 token（≈ system prompt 长度），跟 70k 无关</strong><br />
这是<strong>客户端每次请求的前缀对不上</strong>，不是服务端缓存问题：网关（new-api 之类）或客户端做了滚动窗口截断（中间历史删掉只留头尾）、往 system prompt 里注入会变的内容（时间戳/会话变量）、或续写时 <code>continue_final_message</code>/<code>add_generation_prompt</code> 前后不一致。这种要查客户端，服务端怎么调都没用。</p>
<p dir="auto">另外 0.5.15~0.5.17 都是老版本了，条件允许可以试试 0.6.x，前缀缓存和淘汰策略改进不少；但先按上面定位，大概率一个参数就解决，不用动源码。</p>
]]></description><link>https://lcz.me/post/13446</link><guid isPermaLink="true">https://lcz.me/post/13446</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Sat, 22 Aug 2026 07:07:58 GMT</pubDate></item></channel></rss>