<?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[Unraid 闲置双卡跑 Qwen3.8-27B：RTX 3060 12GB＋3070 8GB、KVMem、实测 256K 长上下文]]></title><description><![CDATA[<p dir="auto">看了论坛的 <a href="https://lcz.me/topic/1960">7900 XTX 单卡 Full-KV 测试</a> 和 <a href="https://lcz.me/topic/1961">KVMem 512K 测试</a>，我也把家里主要用作 Plex/media server 的空闲显卡利用起来。这台机器是 <strong>RTX 3060 12GB＋RTX 3070 8GB、64GB 内存</strong>。目标是在不额外买 24GB 卡的情况下，让 27B 模型处理较长的代码库和持续编程任务。</p>
<p dir="auto">先说结果：DavidAU 的 Qwen3.8-27B LOW-MTP-IQ4_XS 配合 KVMem CUDA 双卡源码构建，已经实际处理并回答 <strong>240,056-token</strong> 的请求；后来保存的启动配置设为 <strong>262,144-token 逻辑上下文</strong>。一次接近满窗的 20 点远距离检索，实际输入 <strong>241,838 token</strong>，答对 <strong>15/20</strong>。所以“能塞进 256K”和“能精确找回 256K 中每个细节”是两回事。现在 27B 容器暂时停着，腾出 GPU 给另一项 150B 实验；下面都是此前实测，不是当前实时跑分。</p>
<p dir="auto"><strong>大家关心的出字速度：早期纯文本测试中，生成约 31.0–34.0 tok/s；94K 输入时为 31.0 tok/s，240K 输入时为 34.0 tok/s。</strong> 相应 prefill 约 452–461 tok/s。这些数字来自 16K KVMem budget、4K 生成预留、关闭思考的配置。后来保存的 32K budget＋开启 low 思考配置没有同条件重测，不能直接沿用这个生成速度。</p>
<h2>硬件、模型和部署</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>项目</th>
<th>配置</th>
</tr>
</thead>
<tbody>
<tr>
<td>系统</td>
<td>Unraid、64GB RAM；原本以 Plex/media server 为主</td>
</tr>
<tr>
<td>GPU</td>
<td>RTX 3060 12GB＋RTX 3070 8GB；不是两张同容量卡</td>
</tr>
<tr>
<td>模型</td>
<td><a href="https://huggingface.co/DavidAU/Qwen3.8-27B-TURBO-Fable-Cold-Fusion-735-882-Heretic-Uncensored-NEO-CODER-MAX-MTP-GGUF" rel="nofollow ugc">DavidAU Qwen3.8-27B TURBO NEO-CODER-MAX MTP GGUF</a> 的 <strong>LOW-MTP-IQ4_XS</strong>，约 14.26 GiB</td>
</tr>
<tr>
<td>引擎</td>
<td><a href="https://github.com/kvmem/kvmem-llama.cpp" rel="nofollow ugc">KVMem llama.cpp</a> CUDA 双卡源码构建；单容器、单并发</td>
</tr>
<tr>
<td>存储</td>
<td>模型、程序和配置放 SSD appdata，避免机械盘加载</td>
</tr>
</tbody>
</table>
<p dir="auto">最后保存的配置关键参数如下，供同类硬件参考；显卡型号、驱动和空余显存不同，不能直接照抄：</p>
<pre><code class="language-text">--device CUDA0,CUDA1 --split-mode layer --tensor-split 1,2 --gpu-layers all
--ctx-size 262144 --parallel 1 --flash-attn on
--cache-type-k q4_0 --cache-type-v q4_0
--batch-size 1024 --ubatch-size 128
--kvmem-budget 32768 --kvmem-gen-reserve 32768
--kvmem-mtp-state replay --spec-type draft-mtp --spec-draft-n-max 2
--enable-thinking --reasoning-effort low
</code></pre>
<p dir="auto">KVMem 进程里 CUDA0 是 3070 8GB、CUDA1 是 3060 12GB；1,2 让更多层落在 3060，给 3070 留出空间。它不是显存精确的 1:2 切分，因为 KV、计算缓冲和 MTP 也占显存。262144 是逻辑窗口；32768 GPU budget 是历史 KV 的工作预算，超出的历史需要主机内存和检索机制。后来的 32768 generation reserve 也限定<strong>单次回复</strong>最多约 32K token，思考 token 算在里面。</p>
<p dir="auto">这个模型也是视觉语言模型。我后来加了同仓库的 F16 mmproj 和 image-min-tokens 1024，图片内容识别已验证。以下长上下文基准主要来自更早的<strong>纯文本、16K budget、4K 生成预留、思考关闭</strong>配置；不要把它们当成上面最终 32K budget＋思考开启配置的跑分。</p>
<h2>长上下文与速度：输入确实跑完了</h2>
<p dir="auto">在 1:2 分配、16K budget 的纯文本配置上，我用服务器返回的实际 token 数核对：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>任务</th>
<th style="text-align:right">实际输入</th>
<th style="text-align:right">结果</th>
<th style="text-align:right">Prefill</th>
<th style="text-align:right">生成</th>
<th style="text-align:right">整轮</th>
</tr>
</thead>
<tbody>
<tr>
<td>Requests 源码 10 道事实题</td>
<td style="text-align:right">94,309 token</td>
<td style="text-align:right">10/10</td>
<td style="text-align:right">460.6 tok/s</td>
<td style="text-align:right">31.0 tok/s</td>
<td style="text-align:right">209.3 秒</td>
</tr>
<tr>
<td>合成代码长输入，开头/中间/末尾标记及跨段引用</td>
<td style="text-align:right">240,056 token</td>
<td style="text-align:right">5/5</td>
<td style="text-align:right">452.4 tok/s</td>
<td style="text-align:right">34.0 tok/s</td>
<td style="text-align:right">533.1 秒</td>
</tr>
</tbody>
</table>
<p dir="auto">请求完成后显存快照约为 3060 已用 <strong>10,407 MiB</strong>、3070 已用 <strong>4,903 MiB</strong>；分别还剩约 <strong>1.55 GiB</strong> 和 <strong>2.99 GiB</strong>。这是快照，不是带 Plex 转码时的峰值保证。KVMem 把更长的历史放到主机内存，GPU 显存不随逻辑上下文线性增长。</p>
<p dir="auto">为了像第二篇帖子那样区分“容量”和“召回”，我又用固定 2:3 分配、同一份输入、20 个只出现一次的随机标记做对照；这个测试刻意让事实缺少语义线索，比较苛刻：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">输入长度</th>
<th style="text-align:right">LOW-MTP-IQ4_XS</th>
<th style="text-align:right">更大的 MTP-Q4_K_S</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">124,584 token</td>
<td style="text-align:right">18/20；471 tok/s prefill</td>
<td style="text-align:right">18/20；448 tok/s prefill</td>
</tr>
<tr>
<td style="text-align:right">241,838 token</td>
<td style="text-align:right">15/20；466 tok/s prefill</td>
<td style="text-align:right">15/20；444 tok/s prefill</td>
</tr>
</tbody>
</table>
<p dir="auto">两种量化在每档<strong>错的是同几个位置</strong>。单次实验不能证明原因，但提醒我不要把更大的量化当成 KVMem 远距检索的万能补丁。Q4_K_S 在偏向 3060 的 1:2 分配下甚至无法为每张卡建起 KV 工作块；改成 2:3 才能加载，近 256K 请求后 3060 只剩约 <strong>750 MiB</strong>。因此我保留 LOW 量化，获得更大的资源余量。这个 20 点实验只能评估孤立事实召回，不能直接当作编程质量排名。</p>
<h2>从两篇帖学到、以及这台机器不同的地方</h2>
<p dir="auto">第一篇的 q8_0 KV 跑分来自 <strong>AMD 7900 XTX 24GB、Full-KV、HIP build</strong>；作者也补测了同一 build 的 q4/q8，prefill 几乎一样。我们这里是 <strong>NVIDIA 12GB＋8GB、KVMem、q4_0 K/V</strong>，不能把 607 tok/s 的数字或 q8 配置直接迁过来。我在本机曾只把 K 从 q4_0 改 q8_0、V 仍 q4_0：约 94K 的 10 题都为 10/10，没测到收益，资源还更紧。</p>
<p dir="auto">第二篇最有价值的提示是：<strong>实际填满输入、量显存/主机内存、测远距离召回，并分开看 TTFT、decode 和 E2E</strong>。我们的 256K 测试也确实暴露了 5 题没看出的检索漏失。我试过把 KVMem budget 从 16K 提到 32K；早期 240K 单项测得 prefill 从约 467 降到 400 tok/s，5 题仍都是 5/5。后续视觉/编程用途仍采用 32K 工作预算，但这并不等于已经证明它能改善极端 needle 召回。</p>
<p dir="auto">真实长编程任务还踩了两个客户端坑。约 145K 上下文的冷 prefill 曾接近 <strong>500 秒</strong>；客户端原来的 300 秒流式空闲超时会取消请求，缓存没暖起来，重试又从头开始。把这个本地模型连接的超时改为 900 秒后才稳定。另一个是生成预留：低于任务所需时会在长代码输出中途截断。提高到 32K 是保险，实际更有效的办法仍是让 agent <strong>分块写文件</strong>。后续同一编程任务的重复测试还显示，关闭思考明显比低强度思考差；low 与 medium 的微小分数差异没有稳定复现，所以最后保存的配置默认开启 low。这些设置变化后的速度仍需与上面的基准分开看。</p>
<p dir="auto">对我而言，这套方案的价值是把 media server 闲置时的 3060＋3070 变成可用的本地长上下文编程服务，同时保留对显存余量、检索错误和客户端超时的清醒认识。欢迎同样用小显存双卡的朋友交流：尤其想看大家在相同输入长度下对 <strong>KVMem budget、needle recall、真实跨文件编程任务和 Plex 并发</strong>的复测。</p>
]]></description><link>https://lcz.me/topic/1998</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 17:41:43 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1998.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Sep 2026 20:57:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unraid 闲置双卡跑 Qwen3.8-27B：RTX 3060 12GB＋3070 8GB、KVMem、实测 256K 长上下文 on Wed, 30 Sep 2026 00:56:17 GMT]]></title><description><![CDATA[<p dir="auto">还是需要一些大神专门为某一代硬件去研发新引擎，就像那个ninfer，好像是用gpt astra 6做出来的。</p>
]]></description><link>https://lcz.me/post/21473</link><guid isPermaLink="true">https://lcz.me/post/21473</guid><dc:creator><![CDATA[stxpnet]]></dc:creator><pubDate>Wed, 30 Sep 2026 00:56:17 GMT</pubDate></item><item><title><![CDATA[Reply to Unraid 闲置双卡跑 Qwen3.8-27B：RTX 3060 12GB＋3070 8GB、KVMem、实测 256K 长上下文 on Tue, 29 Sep 2026 23:55:28 GMT]]></title><description><![CDATA[<p dir="auto">llama.cpp prefill还是太慢，sglang又保守，新技术支持很慢，KVMem值得尝试，不过等prefill估计等到蛋疼。</p>
]]></description><link>https://lcz.me/post/21448</link><guid isPermaLink="true">https://lcz.me/post/21448</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Tue, 29 Sep 2026 23:55:28 GMT</pubDate></item></channel></rss>