<?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[Qwen3.8-27B 长上下文实测：5060 Ti NInfer 对比 7900 XTX Vulkan / ROCm]]></title><description><![CDATA[<h1>Qwen3.8-27B 长上下文实测：5060 Ti NInfer 对比 7900 XTX Vulkan / ROCm</h1>
<p dir="auto">最近跑 Qwen3.8-27B，总觉得 5060 Ti 上的 NInfer 比 7900 XTX 上的 llama.cpp 更利索，尤其是一次塞入很长的上下文时。另一边，长对话又经常卡在输入阶段，最后报 300 秒超时。</p>
<p dir="auto">于是拿同一份输入，把三套能在手头机器上运行的方案测了一遍，从 512 token 逐渐加到 32K、64K，再往 128K、160K、192K 走。</p>
<p dir="auto">结果比较明确：<strong>这套 5060 Ti NInfer 在已测的 32K～160K 各档，冷输入都比 XTX Vulkan 快；160K 的等待从 506.2 秒缩短到 306.5 秒，减少约 39.4%。</strong> 不过短输入的生成速度，XTX Vulkan 仍然更高。AMD 的 NInfer 社区移植版在长输入下掉速很明显，64K 冷输入已经要 638.6 秒，后面就停了。</p>
<p dir="auto">测试日期：2026-10-21。</p>
<h2>测的三套配置</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>方案</th>
<th>权重</th>
<th>KV 缓存</th>
<th style="text-align:right">输入分块</th>
</tr>
</thead>
<tbody>
<tr>
<td>7900 XTX 24GB + llama.cpp Vulkan</td>
<td>UD-Q4_K_S GGUF</td>
<td>K/V 均为 q4_0</td>
<td style="text-align:right">512</td>
</tr>
<tr>
<td>RTX 5060 Ti 16GB + NInfer v1.5</td>
<td>Q3/Q4/Q5 混合，约 3.953 BPW</td>
<td>Q4 group64</td>
<td style="text-align:right">1792</td>
</tr>
<tr>
<td>7900 XTX 24GB + NInfer ROCm 社区版</td>
<td>旧版 v2 Q4/Q5/Q6 混合，embedding/head 为 W8</td>
<td>INT8</td>
<td style="text-align:right">1024</td>
</tr>
</tbody>
</table>
<p dir="auto">这里有个需要提前说明的差别：<strong>AMD 的社区移植版源自较旧的 NInfer v0.6.1，和 NVIDIA 上的 v1.5 不是同一版本。</strong> 三套权重和 KV 格式也不同，回答质量没有做对齐测试。因此这些结果比较的是手头实际能用的推理方案，不能把所有差距都算到显卡芯片头上，也不能据此认定同等回答质量下谁更快。</p>
<p dir="auto">5060 Ti 测试时功耗上限为 180W，负载时 PCIe 链路为 3.0 ×4，使用 host embedding。三组测速统一使用 MTP-3。</p>
<h2>怎么测的</h2>
<p dir="auto">三组喂入完全相同的整数 token ID，避免同样字数经过不同模板后变成不同 token 数。使用同一份 workflow 语料；超过原始 118001 token 的部分，将完整原序列重复后截取。这适合观察性能和容量，不用于证明长文本理解能力。</p>
<p dir="auto">全部是单槽、单请求、greedy，关闭跨请求的前缀复用。这里的“冷输入”是指<strong>模型已加载，但这次输入没有命中前缀缓存</strong>，不包含模型从硬盘加载的时间。</p>
<p dir="auto">基础档每档两轮，取算术均值。128K 起，NVIDIA 每档两轮，Vulkan 为节省长测时间每档一轮。基础的 512、32K、64K 档在输入处理后继续生成 512 token；118001 及以上继续生成 2048 token。首个输出统一计入输入处理阶段。</p>
<p dir="auto">基础档统一总容量为 131072。128K 起按“输入 + 2049 个输出 token”向上取整到 4096 的倍数，作为当档总容量；同一档两套后端使用相同容量。文中的 <strong>1K = 1024 token</strong>；118001 单独列原始数值，约为 115.2K。</p>
<p dir="auto">下表的冷输入时间是引擎 prefill 耗时。llama.cpp 另测了 HTTP 首字延迟，NInfer 用的是 bench 内部计时，所以不把两者说成完全相同口径的网络首字时间。</p>
<h2>冷输入处理耗时</h2>
<p dir="auto">单位：秒，越低越好。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>输入 token</th>
<th style="text-align:right">XTX Vulkan</th>
<th style="text-align:right">5060 Ti NInfer</th>
<th style="text-align:right">XTX NInfer ROCm</th>
</tr>
</thead>
<tbody>
<tr>
<td>512</td>
<td style="text-align:right">0.80</td>
<td style="text-align:right">0.50</td>
<td style="text-align:right">1.26</td>
</tr>
<tr>
<td>32K</td>
<td style="text-align:right">48.99</td>
<td style="text-align:right">36.12</td>
<td style="text-align:right">202.52</td>
</tr>
<tr>
<td>64K</td>
<td style="text-align:right">123.70</td>
<td style="text-align:right">84.35</td>
<td style="text-align:right">638.60</td>
</tr>
<tr>
<td>118001</td>
<td style="text-align:right">299.01</td>
<td style="text-align:right">187.75</td>
<td style="text-align:right">停止测试</td>
</tr>
<tr>
<td>128K</td>
<td style="text-align:right">351.43</td>
<td style="text-align:right">219.57</td>
<td style="text-align:right">停止测试</td>
</tr>
<tr>
<td>160K</td>
<td style="text-align:right">506.15</td>
<td style="text-align:right">306.49</td>
<td style="text-align:right">停止测试</td>
</tr>
<tr>
<td>192K</td>
<td style="text-align:right">684.48</td>
<td style="text-align:right">显存预留不足</td>
<td style="text-align:right">停止测试</td>
</tr>
</tbody>
</table>
<p dir="auto"><img src="%5B%5Berror:parse-error%5D%5D" alt="01_冷输入耗时.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto">32K 时，5060 Ti NInfer 比 XTX Vulkan 少等约 26%；64K 少等约 32%；118001 token 时少等约 37%；160K 时少等约 39%。长输入下的差距，和我实际使用时的感觉基本一致。</p>
<p dir="auto">AMD NInfer 的 64K 两轮分别是 632.4 秒、644.8 秒，平均 638.6 秒，已经超过十分钟。对我的交互用途来说，这个等待时间不合适，118001 及后面的档位就取消了。表里的“停止测试”不代表显存不足。</p>
<h2>输入处理后的生成速度</h2>
<p dir="auto">单位：token/s，越高越好。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>输入 token</th>
<th style="text-align:right">XTX Vulkan</th>
<th style="text-align:right">5060 Ti NInfer</th>
<th style="text-align:right">XTX NInfer ROCm</th>
</tr>
</thead>
<tbody>
<tr>
<td>512</td>
<td style="text-align:right">67.54</td>
<td style="text-align:right">55.95</td>
<td style="text-align:right">49.63</td>
</tr>
<tr>
<td>32K</td>
<td style="text-align:right">63.70</td>
<td style="text-align:right">60.70</td>
<td style="text-align:right">17.85</td>
</tr>
<tr>
<td>64K</td>
<td style="text-align:right">57.10</td>
<td style="text-align:right">62.55</td>
<td style="text-align:right">11.70</td>
</tr>
<tr>
<td>118001</td>
<td style="text-align:right">39.67</td>
<td style="text-align:right">47.45</td>
<td style="text-align:right">停止测试</td>
</tr>
<tr>
<td>128K</td>
<td style="text-align:right">43.23</td>
<td style="text-align:right">50.01</td>
<td style="text-align:right">停止测试</td>
</tr>
<tr>
<td>160K</td>
<td style="text-align:right">34.98</td>
<td style="text-align:right">41.17</td>
<td style="text-align:right">停止测试</td>
</tr>
<tr>
<td>192K</td>
<td style="text-align:right">34.24</td>
<td style="text-align:right">显存预留不足</td>
<td style="text-align:right">停止测试</td>
</tr>
</tbody>
</table>
<p dir="auto"><img src="https://upload.lcz.me/uploads/d148b061-c5a4-4d56-b7d4-08aef9650218.jpeg" alt="02_生成速度.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto">512 token 短输入时，XTX Vulkan 约 67.5 token/s，5060 Ti NInfer 约 56.0 token/s，XTX 更快。到 64K 及以上的已测共同档位，5060 Ti NInfer 的生成速度开始占优，160K 时约为 41.2 对 35.0 token/s。</p>
<p dir="auto">所以只看短输入的生成 token/s，很容易忽略长上下文真正让人难受的那段等待：模型要先把整段输入处理完，才能开始正常输出。</p>
<h2>192K 和 300 秒超时</h2>
<p dir="auto">5060 Ti NInfer 成功完成了 160K；192K 在运行时显存预留阶段失败，所需预留比可用空间多约 462 MiB。<strong>160K 是本次最大已验证档位，精确边界没有继续细分</strong>，不能把它当成所有配置下的硬上限。</p>
<p dir="auto">XTX Vulkan 完整跑通了 192K，但冷输入用了 684.5 秒，约 11.4 分钟。后续扫描按冷输入达到 600 秒就不再加长的规则收口，这轮完成后便停止了，224K 没测。这里碰到的是我设定的实用性截止，并没有测到它的显存极限。</p>
<p dir="auto">这也解释了之前调用端的 300 秒超时：XTX Vulkan 在 118001 token 时，两轮 HTTP 首字延迟已经达到 <strong>298.83 秒、299.23 秒</strong>。稍微增加输入、排队或其他开销，就可能超过 300 秒。5060 Ti 虽然更快，160K 冷输入也用了约 306.5 秒，同样跨过了这个等待上限。</p>
<h2>我现在怎么用</h2>
<p dir="auto">XTX 上继续用 Vulkan，服务配置改为总容量 256K、双槽各 128K。每槽预留 8K 输出后，输入上限大约是 120K。这个数字表示装得下多少，不表示塞满后还能很快返回。</p>
<p dir="auto">按这次冷输入成绩，XTX 的 64K 大约要两分钟，118001 token 接近五分钟。如果希望交互时少等一些，我会优先把冷输入控制在 64K 左右；日常对话如果命中前缀缓存，后续等待可能明显缩短，本次没有把缓存收益算进去。</p>
<p dir="auto">双槽方便同时跑两个会话，不会自动加速同一条长请求；两会话同时繁忙时的速度，本次没有测。至于再加一张 7900 XTX 能提升多少，这轮也没有双卡实测，暂时不给翻倍之类的估计。</p>
<p dir="auto">对我当前的用途，5060 Ti 上这套 NInfer 更适合长输入；XTX Vulkan 则保留了较好的短输入生成速度和更大的已验证输入容量。AMD 的这个旧版 NInfer 移植分支，现阶段我先不拿来跑长上下文。</p>
<h2>复现信息和测试范围</h2>
<ul>
<li>llama.cpp：<code>a8d9a7e1e55f5b613f297504d9e159807ec3a99b</code>。</li>
<li>NVIDIA NInfer：<a href="https://github.com/toddballinger/ninfer-5080" rel="nofollow ugc">toddballinger/ninfer-5080</a>，commit <code>e4edd6d5c5f9f7996de0f3d9f6c311e883452580</code>。</li>
<li>AMD NInfer：<a href="https://github.com/Jerry-Lee661/NInfer-AMD-ROCm" rel="nofollow ugc">Jerry-Lee661/NInfer-AMD-ROCm</a>，commit <code>bab0b0d3fa1034b63cc2171eb1cb0310315663ec</code>，gfx1100，HIP 7.15 / clang 23。</li>
<li>AMD 编译时补了测速目标需要的 profiler 兼容头和 HIP 链接设置；两种 NInfer 加了计时区间外的逐轮结果保存，计算内核均未修改。</li>
<li>原始语料 SHA256：<code>5b08da2c7b7ea5cafad2fab5699dccbcbce86040d8a37219b8c21f094d1d1eb7</code>。</li>
<li>每档仅一到两轮；基础测试期间后台有受限 CPU 编译和模型下载，没有同一 GPU 的并行推理。结果用于本机方案选择，保留一定主机侧波动。</li>
<li>未测回答质量、双会话吞吐、双卡扩展，也未推断其他 ROCm 后端的表现。附件 CSV 为本次完成的 29 轮测量；图中连线用于阅读，不代表中间所有长度均已测试。</li>
</ul>
]]></description><link>https://lcz.me/topic/2481</link><generator>RSS for Node</generator><lastBuildDate>Thu, 22 Oct 2026 23:34:51 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2481.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Oct 2026 08:02:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Qwen3.8-27B 长上下文实测：5060 Ti NInfer 对比 7900 XTX Vulkan / ROCm on Thu, 22 Oct 2026 00:58:51 GMT]]></title><description><![CDATA[<p dir="auto">我就是这个 ROCm 项目的移植者，这个移植基本上要放弃了。涉及内核层的地方 AMD 水太深，不如试试 hipfire。<br />
这个构筑跑 Bonsai2 NInfer v2 的无投机解码也不到 60-70 token/s。</p>
<p dir="auto">补充一下你测到的长上下文掉速：这版移植的 attention 是 SIMT 逐 key 环，没有 flash-attention 分块，长上下文下 prefill 和生成会随 key 数近似线性退化。这是结构短板，项目已经暂停，不会再修了。</p>
<p dir="auto">口径说明：上面 60-70 是 Bonsai2 PQ2 工件（2.13 bit）的无投机数字；你测的 AMD 列是官方 v2 工件（Q4/Q5/Q6，20 GB），权重和量化不同，不能直接对表。官方 v2 工件在这版移植上我们只做过短测，nospec 约 34 token/s，长上下文同样受 attention 结构限制。</p>
<p dir="auto">最新单卡实测（greedy、int8 KV；NInfer 数字取 10 对交错或 3 跑中位，PQ2 工件）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>口径(单卡)</th>
<th>t/s</th>
<th>相对主门 103.8</th>
</tr>
</thead>
<tbody>
<tr>
<td>3080Ti 契约(主门来源, serve MTP d2 中文)</td>
<td>103.8</td>
<td>100%</td>
</tr>
<tr>
<td>7900XTX 已知最强: PrismML serve ngram</td>
<td>60.69</td>
<td>58.5%</td>
</tr>
<tr>
<td>7900XTX llama.cpp 本传(27B 级)</td>
<td>41.7</td>
<td>40.2%</td>
</tr>
<tr>
<td>NInfer@7900XTX CLI nospec (int8 KV)</td>
<td>65.2</td>
<td>62.8%</td>
</tr>
<tr>
<td>NInfer@7900XTX CLI MTP d2 (验收 1.81)</td>
<td>45.6</td>
<td>43.9%</td>
</tr>
<tr>
<td>NInfer@7900XTX serve nospec</td>
<td>57.9</td>
<td>55.8%</td>
</tr>
<tr>
<td>NInfer@7900XTX serve MTP d2 (验收约 1.77)</td>
<td>40.2</td>
<td>38.7%</td>
</tr>
</tbody>
</table>
<p dir="auto">几点口径说明：</p>
<ul>
<li>主门 103.8 来自 3080Ti 的 serve MTP d2 中文，跨卡跨工件，只当标尺用。</li>
<li>同为 7900XTX，hipfire 官方数据 AR 51.63 / MTP 87.52 / DFlash 131.69，但它是 4.458 bpw 工件，我们这套是 2.13 bit 的 PQ2，不是同质量口径，仅供参考。</li>
<li>你测的 64K 638.6 秒、生成 11.7 t/s，和上面的长上下文短板描述一致。</li>
</ul>
]]></description><link>https://lcz.me/post/26620</link><guid isPermaLink="true">https://lcz.me/post/26620</guid><dc:creator><![CDATA[Jerry-Lee661]]></dc:creator><pubDate>Thu, 22 Oct 2026 00:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-27B 长上下文实测：5060 Ti NInfer 对比 7900 XTX Vulkan / ROCm on Thu, 22 Oct 2026 00:03:00 GMT]]></title><description><![CDATA[<p dir="auto">这组数据的价值在「同一输入、同一容量」控制得比较干净，但结论要限定在「手头这三套方案」，不是 5060 Ti 对 7900 XTX 的芯片对比：NInfer v1.5 和 AMD 社区版 v0.6.1 差了一代，权重与 KV 格式也不同（3.953 BPW vs Q4_K_S，KV q4_0 vs Q4 group64），预填差距里多少来自内核、多少来自量化，这份测试分不开。</p>
<p dir="auto">长上下文真正卡的是 prefill 的算力与带宽，不是 tg。5060 Ti 在 32K 以上反超，主要是 NInfer 的 chunked prefill 和 attention 内核更适配长序列；XTX Vulkan 到 160K 已经 506 秒，按 600 秒收口是合理的。</p>
<p dir="auto">几个可落地的调整：</p>
<ul>
<li>300 秒是调用端超时，不是模型上限。把客户端读超时提到 600 秒，或先返回任务号再轮询，比换卡便宜。</li>
<li>XTX 上先调大 ubatch/batch，并确认 flash attention 已开；Vulkan 后端对长 prefill 的 kernel 选择比 CUDA 粗，ubatch 太小会把 prefill 拆得过碎。</li>
<li>192K 差 462 MiB 是 KV 预留，不是权重；把单槽容量从 256K 降到 224K 或 192K，或把 KV 换 q8_0/q5_1，能把这部分让出来。</li>
<li>前缀缓存对 agent 和多轮场景的收益，通常比 prefill 再快 10% 更大；建议把缓存命中率也记进表里。</li>
</ul>
<p dir="auto">你现在 XTX 256K 双槽、每槽 128K、输入上限 120K 是容量优先的配置；交互场景把冷输入压在 64K 左右，和你的体感一致。</p>
]]></description><link>https://lcz.me/post/26605</link><guid isPermaLink="true">https://lcz.me/post/26605</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Thu, 22 Oct 2026 00:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-27B 长上下文实测：5060 Ti NInfer 对比 7900 XTX Vulkan / ROCm on Wed, 21 Oct 2026 21:09:23 GMT]]></title><description><![CDATA[<p dir="auto">第一张图片无效，我已删除，警告一次。发帖后一定要检查。</p>
]]></description><link>https://lcz.me/post/26599</link><guid isPermaLink="true">https://lcz.me/post/26599</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Wed, 21 Oct 2026 21:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-27B 长上下文实测：5060 Ti NInfer 对比 7900 XTX Vulkan / ROCm on Wed, 21 Oct 2026 15:08:59 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/cennac" aria-label="Profile: Cennac">@<bdi>Cennac</bdi></a> 感谢分享！</p>
]]></description><link>https://lcz.me/post/26551</link><guid isPermaLink="true">https://lcz.me/post/26551</guid><dc:creator><![CDATA[Ben Lee]]></dc:creator><pubDate>Wed, 21 Oct 2026 15:08:59 GMT</pubDate></item></channel></rss>