<?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[7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘]]></title><description><![CDATA[<blockquote>
<p dir="auto"><strong>日期:</strong> 2026-06-19（续前篇） | <strong>硬件:</strong> X99-6PLUS (Xeon E5-2682v4 × 2) + Sapphire RX 7900 XTX 24GB + XFX MERC 7900 XTX 24GB<br />
<strong>模型:</strong> Qwen3.6-27B-Uncensored-HauhauCS-Balanced-MTP-Q4_K_P (16.7GB, 65层) / IQ4_XS (14GB, 64层)<br />
<strong>引擎:</strong> upstream llama.cpp v9672 Vulkan (build-vulkan-new)<br />
<strong>前篇:</strong> <a href="https://lcz.me/topic/593/7900-xtx-%E5%8D%95%E5%8D%A1-llama.cpp-mtp-%E4%BC%98%E5%8C%96%E5%B0%8F%E8%AE%B0-%E4%BB%8E-47-%E5%88%B0-51-tok-s">7900 XTX ROCm KV Cache 量化交叉对比</a></p>
</blockquote>
<hr />
<p dir="auto">上篇文章发出来后，有坛友回复说"试试 Vulkan 后端，50+ 稳定"。之前我们觉得 Vulkan 在 RDNA3 上应该比 ROCm 慢，一直没认真试——结果完全错了。<br />
（手动补充：之前不用Vulkan是因为之前vulkan因为不明情况导致无法隔离3080ti，这次又可以了）<br />
<img src="https://upload.lcz.me/uploads/77736d55-c648-46a9-8f2c-c82f3a22f590.jpeg" alt="9c357f40-64ae-4e89-bb3d-a120af3116d8-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><strong>Vulkan 虽然 prefill 慢 26-72%，但 decode 快 27-63%，且 q5 系 kernel 没有 ROCm 上的致命惩罚。</strong> 这意味着很多之前在 ROCm 上被否决的方案——Anbeeld 的 q5_0/q4_1 甜点、IQ4_XS 加速、双卡 decode——在 Vulkan 上全部有效。</p>
<p dir="auto">本篇文章记录系统性的 Vulkan 回归测试结果。</p>
<hr />
<h2>TL;DR</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:left">原来被否定的方案</th>
<th style="text-align:left">之前结论</th>
<th style="text-align:left">Vulkan 新结论</th>
<th style="text-align:center">变化</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">Anbeeld q5_0/q4_1 KV</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> ROCm pp-62%</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> pp~690 tg~37</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /> 大翻盘</td>
</tr>
<tr>
<td style="text-align:left">IQ4_XS 模型</td>
<td style="text-align:left">~30 t/s</td>
<td style="text-align:left"><strong>37.7 t/s</strong></td>
<td style="text-align:center">+24%</td>
</tr>
<tr>
<td style="text-align:left">双卡 layer split</td>
<td style="text-align:left">22.5 t/s (ROCm)</td>
<td style="text-align:left"><strong>36.6 t/s</strong></td>
<td style="text-align:center"><strong>+63%</strong></td>
</tr>
<tr>
<td style="text-align:left">Vulkan 后端</td>
<td style="text-align:left">以为比 ROCm 慢</td>
<td style="text-align:left">decode 快 27-63%</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4ca.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--bar_chart" style="height:23px;width:auto;vertical-align:middle" title="📊" alt="📊" /> 各有所长</td>
</tr>
<tr>
<td style="text-align:left">128K 上下文</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> OOM</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> 同样不可行</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/27a1.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--arrow_right" style="height:23px;width:auto;vertical-align:middle" title="➡" alt="➡" />️</td>
</tr>
<tr>
<td style="text-align:left">iq4_nl/iq4_nl</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> ROCm 巨慢</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> Vulkan 也不支持</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/27a1.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--arrow_right" style="height:23px;width:auto;vertical-align:middle" title="➡" alt="➡" />️</td>
</tr>
</tbody>
</table>
<hr />
<h2>Vulkan 编译</h2>
<pre><code class="language-bash">cd ~/llama.cpp &amp;&amp; mkdir build-vulkan-new &amp;&amp; cd build-vulkan-new
cmake .. -DGGML_VULKAN=ON -DGGML_HIP=OFF -DCMAKE_BUILD_TYPE=Release
make -j$(nproc) llama-bench llama-server
</code></pre>
<p dir="auto">注意：<strong>之前的 <code>build-vulkan</code> 编译时 <code>GGML_VULKAN=OFF</code></strong>，导致所有测试都在 CPU 上跑。必须用新编译的版本。</p>
<p dir="auto">使用隔离：</p>
<pre><code class="language-bash">export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.json
</code></pre>
<p dir="auto"><strong>关键区别：ROCm 的编译需要 20-30 分钟（HIP kernel），Vulkan 只需 5 分钟。</strong></p>
<hr />
<h2>发现 1：q5 系 KV 在 Vulkan 上完美运行 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3af.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--dart" style="height:23px;width:auto;vertical-align:middle" title="🎯" alt="🎯" /></h2>
<h3>IQ4_XS 模型</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:left">后端</th>
<th style="text-align:left">KV</th>
<th style="text-align:center">pp512</th>
<th style="text-align:center">tg128</th>
<th style="text-align:center">vs ROCm pp</th>
<th style="text-align:center">vs ROCm tg</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">ROCm</td>
<td style="text-align:left">q8_0/q8_0</td>
<td style="text-align:center">370</td>
<td style="text-align:center">30.3</td>
<td style="text-align:center">—</td>
<td style="text-align:center">—</td>
</tr>
<tr>
<td style="text-align:left"><strong>Vulkan</strong></td>
<td style="text-align:left"><strong>q4_0/q4_0</strong></td>
<td style="text-align:center"><strong>697</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></td>
<td style="text-align:center"><strong>37.7</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></td>
<td style="text-align:center"><strong>+88%</strong></td>
<td style="text-align:center"><strong>+24%</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Vulkan</strong></td>
<td style="text-align:left"><strong>q5_0/q4_1</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3c6.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--trophy" style="height:23px;width:auto;vertical-align:middle" title="🏆" alt="🏆" /></td>
<td style="text-align:center"><strong>693</strong></td>
<td style="text-align:center"><strong>37.2</strong></td>
<td style="text-align:center"><strong>+87%</strong></td>
<td style="text-align:center"><strong>+23%</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">IQ4_XS 模型在 Vulkan 上 prefill 几乎翻倍、decode 快 24%。<strong>这是本次测试的最大意外惊喜。</strong></p>
<h3>MTP Q4_K_P 模型（单卡 AR）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:left">KV 配置</th>
<th style="text-align:center">ROCm pp</th>
<th style="text-align:center">Vulkan pp</th>
<th style="text-align:center">ROCm tg</th>
<th style="text-align:center"><strong>Vulkan tg</strong></th>
<th style="text-align:center">tg 变化</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">q8_0/q8_0</td>
<td style="text-align:center"><strong>956</strong></td>
<td style="text-align:center">—</td>
<td style="text-align:center">30.07</td>
<td style="text-align:center">—</td>
<td style="text-align:center">—</td>
</tr>
<tr>
<td style="text-align:left">q4_0/q4_0</td>
<td style="text-align:center"><strong>946</strong></td>
<td style="text-align:center">685</td>
<td style="text-align:center">29.65</td>
<td style="text-align:center"><strong>36.6</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></td>
<td style="text-align:center"><strong>+23%</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>q5_0/q4_1</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3c6.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--trophy" style="height:23px;width:auto;vertical-align:middle" title="🏆" alt="🏆" /></td>
<td style="text-align:center">360 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td style="text-align:center"><strong>690</strong></td>
<td style="text-align:center">26.69 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td style="text-align:center"><strong>36.6</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></td>
<td style="text-align:center"><strong>+37%</strong></td>
</tr>
<tr>
<td style="text-align:left">q5_0/q5_0</td>
<td style="text-align:center">227 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td style="text-align:center">—</td>
<td style="text-align:center">25.84 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td style="text-align:center">—</td>
<td style="text-align:center">—</td>
</tr>
</tbody>
</table>
<p dir="auto">Vulkan 上所有 KV 类型的 decode 速度几乎一致（~36.6 t/s）。<strong>Anbeeld 的 q5_0/q4_1 甜点在 Vulkan 上完美可用。</strong></p>
<hr />
<h2>发现 2：Batch/Ubatch 扫描 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4ca.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--bar_chart" style="height:23px;width:auto;vertical-align:middle" title="📊" alt="📊" /></h2>
<p dir="auto">Vulkan 的 decode 速度几乎不受 batch/ubatch 影响：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>b</th>
<th style="text-align:center">ub</th>
<th style="text-align:center">pp512</th>
<th style="text-align:center">tg128</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>512</strong></td>
<td style="text-align:center"><strong>512</strong></td>
<td style="text-align:center"><strong>685</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3c6.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--trophy" style="height:23px;width:auto;vertical-align:middle" title="🏆" alt="🏆" /></td>
<td style="text-align:center">36.6</td>
</tr>
<tr>
<td><strong>1024</strong></td>
<td style="text-align:center"><strong>512</strong></td>
<td style="text-align:center"><strong>681</strong></td>
<td style="text-align:center">36.7</td>
</tr>
<tr>
<td>2048</td>
<td style="text-align:center">512</td>
<td style="text-align:center">681</td>
<td style="text-align:center">36.7</td>
</tr>
<tr>
<td>512</td>
<td style="text-align:center">128</td>
<td style="text-align:center">575</td>
<td style="text-align:center">36.6</td>
</tr>
<tr>
<td>1024</td>
<td style="text-align:center">1024</td>
<td style="text-align:center">681</td>
<td style="text-align:center">36.5</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>结论：Vulkan decode 恒定 ~36.6 t/s，推荐 <code>-b 512 -ub 512</code> 或 <code>-b 1024 -ub 512</code> 以优化 prefill。</strong></p>
<p dir="auto">这与 ROCm 截然不同——ROCm 上 batch/ubatch 可影响 10-15% 的 decode 速度。</p>
<hr />
<h2>发现 3：双卡 Layer Split 翻盘 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:left">后端</th>
<th style="text-align:left">KV</th>
<th style="text-align:center">pp512</th>
<th style="text-align:center">tg128</th>
<th style="text-align:center">vs ROCm tg</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">ROCm</td>
<td style="text-align:left">q4_0/q4_0</td>
<td style="text-align:center"><strong>888</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></td>
<td style="text-align:center">22.5</td>
<td style="text-align:center">—</td>
</tr>
<tr>
<td style="text-align:left"><strong>Vulkan</strong></td>
<td style="text-align:left"><strong>q4_0/q4_0</strong></td>
<td style="text-align:center">285</td>
<td style="text-align:center"><strong>36.6</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></td>
<td style="text-align:center"><strong>+63%</strong></td>
</tr>
<tr>
<td style="text-align:left"><strong>Vulkan</strong></td>
<td style="text-align:left"><strong>q5_0/q4_1</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3c6.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--trophy" style="height:23px;width:auto;vertical-align:middle" title="🏆" alt="🏆" /></td>
<td style="text-align:center"><strong>689</strong></td>
<td style="text-align:center"><strong>36.6</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /></td>
<td style="text-align:center"><strong>+63%</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">双卡 Vulkan decode 比 ROCm 快 <strong>63%</strong>。虽然 prefill 慢（285 vs 888），但对于<strong>短 prompt 长生成的聊天场景</strong>，这是完胜。</p>
<hr />
<h2>发现 4：Vulkan Flash Attention 不存在 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️</h2>
<p dir="auto"><code>-fa 1</code> 在 Vulkan 上会导致模型加载到 CPU。Vulkan 后端没有 Flash Attention kernel 实现。</p>
<p dir="auto">之前所有的 Vulkan 测试因为用 <code>-fa 1</code> 全部跑在 CPU 上（包括上一篇文章的部分数据）。<strong>这解释了为什么之前的 Vulkan prefill 只有 198-310 t/s——修正后（无 FA）Vulkan prefill 可达 685-697 t/s。</strong></p>
<hr />
<h2>其他否决项验证</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:left">测试项</th>
<th style="text-align:left">ROCm 结论</th>
<th style="text-align:left">Vulkan 结论</th>
<th style="text-align:left">变化</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">iq4_nl/iq4_nl KV</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> pp=232 tg=25</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> fallback CPU</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/27a1.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--arrow_right" style="height:23px;width:auto;vertical-align:middle" title="➡" alt="➡" />️</td>
</tr>
<tr>
<td style="text-align:left">128K 上下文 (单卡)</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> OOM</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /> 加载超时</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/27a1.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--arrow_right" style="height:23px;width:auto;vertical-align:middle" title="➡" alt="➡" />️</td>
</tr>
<tr>
<td style="text-align:left">DFlash</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> 84 t/s</td>
<td style="text-align:left">不适用（独立引擎）</td>
<td style="text-align:left"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/27a1.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--arrow_right" style="height:23px;width:auto;vertical-align:middle" title="➡" alt="➡" />️</td>
</tr>
</tbody>
</table>
<hr />
<h2>更新后端选择指南</h2>
<pre><code>┌─────────────┬────────────────┬────────────────┬──────────────────┐
│ 使用场景     │ 推荐后端       │ 速度           │ KV 推荐           │
├─────────────┼────────────────┼────────────────┼──────────────────┤
│ 聊天/写作    │ Vulkan 🆕      │ tg ~37 t/s    │ q4_0/q4_0 或 q5_0│
│ (短 prompt)  │                │                │                    │
│ 长文档处理    │ ROCm           │ pp ~946 t/s   │ q4_0/q4_0         │
│ (长 prompt)  │                │                │                    │
│ MTP 推测解码  │ ROCm           │ gen ~40 t/s   │ q4_0/q4_0         │
│ 双卡聊天      │ Vulkan 🆕      │ tg ~36.6 t/s  │ q5_0/q4_1 🏆      │
│ 双卡 tensor   │ ROCm (CainSay) │ ~43 t/s       │ q8_0/q8_0         │
└─────────────┴────────────────┴────────────────┴──────────────────┘
</code></pre>
<hr />
<h2>修正之前结论</h2>
<ol>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> <strong>"q5_0/q4_1 在 AMD 卡上崩"</strong> → <strong>仅在 ROCm 上崩。Vulkan 完美运行。</strong> 这是 kernel 优化问题，不是硬件问题。</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> <strong>"Vulkan 比 ROCm 慢"</strong> → <strong>decode 快 27-63%，prefill 慢 26-72%。</strong> 各有所长，互补关系。</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> <strong>"双卡 Vulkan 灾难性崩溃"</strong> → 那是旧 build（<code>GGML_VULKAN=OFF</code>）的 CPU 结果。<strong>正确编译后双卡 Vulkan decode +63%。</strong></li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> <strong>"IQ4_XS 慢"</strong> → ROCm 上确实一般，但 <strong>Vulkan 上 prefill 翻倍，decode 37.7 t/s。</strong></li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=9a87c0a6150" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> <strong>"Vulkan 编译麻烦"</strong> → 5 分钟，比 ROCm（20-30 分钟）快得多。</li>
</ol>
<hr />
<h2>经验教训</h2>
<ol>
<li><strong>不要凭"直觉"否定一个后端。</strong> 我们之前认为 Vulkan 在 AMD 上一定比 ROCm 慢，所以连试都没试。一个群友回复就改变了整条优化路线。</li>
<li><strong>两套后端是互补关系。</strong> ROCm 擅长大批量 prefill 和 MTP 推测，Vulkan 擅长单步 decode 和多卡协同。</li>
<li><strong>编译错了全白干。</strong> 第一次 Vulkan build 没开 <code>GGML_VULKAN=ON</code>，所有"Vulkan 测试"实际是 CPU 结果，浪费了大量时间。</li>
<li><strong>Anbeeld 的数据是有价值的——只是需要在正确的后端上跑。</strong> 他的 q5_0/q4_1 推荐在 CUDA 和 Vulkan 上都成立，唯独 ROCm 不行。</li>
</ol>
<hr />
<p dir="auto">有什么问题欢迎回复讨论。你们在 Vulkan 上试过双卡 tensor split 或者 MTP 吗？</p>
<p dir="auto"><strong>更新脚本（241 上）：</strong></p>
<ul>
<li><code>~/start-qwen-b-vk.sh</code> — 模式 B Vulkan（IQ4_XS，tg ~37.7 t/s）</li>
<li><code>~/start-qwen-modeD-layer-vk.sh</code> — 双卡 layer Vulkan（tg ~36.6 t/s）<br />
<img src="https://upload.lcz.me/uploads/0e7a63e5-2332-46c8-9967-b48b455ccaa4.jpeg" alt="59d996fb-b0d6-4e28-abe5-0e6ce8656fd0-image.jpeg" class=" img-fluid img-markdown" /><br />
<img src="https://upload.lcz.me/uploads/d0cf1724-915c-456f-80e2-8ac67da3424a.jpeg" alt="4e08239c-94e6-4b56-9f0c-a91d42463558-image.jpeg" class=" img-fluid img-markdown" /></li>
</ul>
]]></description><link>https://lcz.me/topic/629/7900-xtx-vulkan-回归测试补充-之前被否定的方案大翻盘</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 13:20:54 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/629.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Jun 2026 14:58:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘 on Sat, 20 Jun 2026 14:33:35 GMT]]></title><description><![CDATA[<p dir="auto">感谢分享，关注下。刚买了张单卡</p>
]]></description><link>https://lcz.me/post/7617</link><guid isPermaLink="true">https://lcz.me/post/7617</guid><dc:creator><![CDATA[tom23]]></dc:creator><pubDate>Sat, 20 Jun 2026 14:33:35 GMT</pubDate></item><item><title><![CDATA[Reply to 7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘 on Fri, 19 Jun 2026 16:37:46 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/stxpnet" aria-label="Profile: stxpnet">@<bdi>stxpnet</bdi></a> 很好，可以列入后续的测试列表！，生命不息折腾不止！</p>
]]></description><link>https://lcz.me/post/7540</link><guid isPermaLink="true">https://lcz.me/post/7540</guid><dc:creator><![CDATA[abaalei]]></dc:creator><pubDate>Fri, 19 Jun 2026 16:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to 7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘 on Fri, 19 Jun 2026 16:37:07 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/terry" aria-label="Profile: terry">@<bdi>terry</bdi></a> 哈哈哈，现在我自己都还没有定稿，现在还处于连载、折腾阶段，后天吧，出一份完整的当前单卡3个模式，双卡3个模式的具体参数，以及性能及适用范围</p>
]]></description><link>https://lcz.me/post/7539</link><guid isPermaLink="true">https://lcz.me/post/7539</guid><dc:creator><![CDATA[abaalei]]></dc:creator><pubDate>Fri, 19 Jun 2026 16:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to 7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘 on Fri, 19 Jun 2026 16:21:42 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/stxpnet" aria-label="Profile: stxpnet">@<bdi>stxpnet</bdi></a> 90K 之后急剧减速是 3090（24GB）上很常见的现象，原因是 KV cache 的内存压力到了临界点。</p>
<p dir="auto">具体来说：</p>
<ol>
<li>
<p dir="auto"><strong>KV cache 占用的增长是非线性的</strong>：Qwen 3.6 27b Q4_K_M 大约占 16-17GB 显存，留给 KV cache 的空间只剩 6-7GB。到了 80-90K 上下文长度时，KV cache 本身就会把这 6-7GB 吃满。一旦超出，llama.cpp 会把部分 KV cache 卸载到系统内存（CPU offloading），内存带宽从 GPU 的 ~900GB/s 暴跌到 DDR4 的 ~30GB/s，速度直接断崖式下跌。</p>
</li>
<li>
<p dir="auto"><strong>可以试试这几个优化</strong>：</p>
<ul>
<li><strong>KV cache 量化</strong>：用 <code>--cache-type-k q4_0 --cache-type-v q4_0</code> 可以把 KV cache 压缩到原来的一半，能把速度崩溃的阈值往后推 30-50%。</li>
<li><strong>Flash Attention</strong>：确认你用的 llama.cpp 版本支持 FA2（2025 年 7 月后的版本都默认开了），能减少 KV cache 访问的显存带宽压力。</li>
<li><strong>降低层数</strong>：如果模型支持，用 <code>--no-kv-offload</code> 配合 <code>--tensor-split</code> 强行把部分层留在 GPU 上，让 CPU 只承担实在装不下的 KV cache。</li>
<li><strong>GGUF 的 I-Quant</strong>：试试 IQ4_XS 甚至 IQ3_M，模型本身缩到 14GB 以下，给 KV cache 腾更多空间。</li>
</ul>
</li>
<li>
<p dir="auto"><strong>换模型的捷径</strong>：如果你主要跑长上下文，Gemma 3 27b 的 KV cache 比 Qwen 3.6 同尺寸小约 15-20%，在 3090 上能多撑 1.5-2 万 token 才掉速。</p>
</li>
</ol>
<p dir="auto">总的来说，80-90K 掉速不是 bug，是 24GB 显存跑 27B 模型长上下文的物理天花板。上面几个优化能帮你把临界点往后推到 100-120K 左右。</p>
]]></description><link>https://lcz.me/post/7535</link><guid isPermaLink="true">https://lcz.me/post/7535</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Fri, 19 Jun 2026 16:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to 7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘 on Fri, 19 Jun 2026 16:08:33 GMT]]></title><description><![CDATA[<p dir="auto">楼主有没有测试过单卡 超过90k上下文之后的推理速度？我的是3090，几乎每个模型都会在80K之后急剧减速。 目前尚不清楚原因。</p>
]]></description><link>https://lcz.me/post/7529</link><guid isPermaLink="true">https://lcz.me/post/7529</guid><dc:creator><![CDATA[stxpnet]]></dc:creator><pubDate>Fri, 19 Jun 2026 16:08:33 GMT</pubDate></item><item><title><![CDATA[Reply to 7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘 on Fri, 19 Jun 2026 15:13:35 GMT]]></title><description><![CDATA[<p dir="auto">很好，图文并茂，以后可以先给个最简短的总结，就是这一大段中，最精华的配置是什么。</p>
]]></description><link>https://lcz.me/post/7520</link><guid isPermaLink="true">https://lcz.me/post/7520</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Fri, 19 Jun 2026 15:13:35 GMT</pubDate></item><item><title><![CDATA[Reply to 7900 XTX Vulkan 回归测试补充：之前被否定的方案大翻盘 on Fri, 19 Jun 2026 15:09:22 GMT]]></title><description><![CDATA[<p dir="auto">模型用q5的，加载多模态模型后，上下文依旧能到128K。这个kv量化的确不错。</p>
<p dir="auto">用那篇文章作者自己的llama.cpp，kv可以用kvarn4-kvarn4，进一步节省显存，且精度损失比q5/q4_1更小，不过我没有测试。</p>
]]></description><link>https://lcz.me/post/7519</link><guid isPermaLink="true">https://lcz.me/post/7519</guid><dc:creator><![CDATA[AGI]]></dc:creator><pubDate>Fri, 19 Jun 2026 15:09:22 GMT</pubDate></item></channel></rss>