<?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[单张 RX7900XTX跑Qwen3.8-Flash-Next（125B-A6B）：Avalon vs Strata 引擎]]></title><description><![CDATA[<p dir="auto">最近千问3.8 Flash Next很火热一下，虽然我都是用在线模型，但也准备一手本地模型以防不时之需。在做功课的时候，看到RX7900XTX有两个引擎，Avalon 和 Strata RDNA3的分支。但Avalon好像没有什么人测试，我就帮忙做一下吧。</p>
<p dir="auto">简单讲一下他们的特性，两个引擎都靠"专家放内存、显卡只装稠密权重和最热的专家"把 125B MoE 塞进一张 24 GB 消费卡。这份数据在同一台<br />
机器上、用<strong>完全相同的 prompt 原文</strong>、让两个引擎各跑自己的最佳配置测出来。</p>
<h2>测试平台</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>部件</th>
<th>具体型号</th>
</tr>
</thead>
<tbody>
<tr>
<td>主板</td>
<td>Gigabyte TRX40 AORUS PRO WIFI（BIOS F7g）</td>
</tr>
<tr>
<td>CPU</td>
<td>AMD Ryzen Threadripper 3960X，24 核 48 线程（Zen 2，最高 4.57 GHz）</td>
</tr>
<tr>
<td>内存</td>
<td>8*16GB - 128GB DDR4 3200Mhz 四通道</td>
</tr>
<tr>
<td>显卡</td>
<td>ASUS Radeon RX 7900 XTX 24 GiB（RDNA3 / gfx1100），<strong>PCIe 4.0 x16</strong>，功耗上限 315 W</td>
</tr>
<tr>
<td>系统盘</td>
<td>500 GB SSD（Ubuntu + ROCm + 两个引擎的源码与编译产物）</td>
</tr>
<tr>
<td>模型盘</td>
<td>1 TB NVMe（ADATA LEGEND 860），实测顺序读 <strong>5.2 GB/s</strong></td>
</tr>
<tr>
<td>系统</td>
<td>Ubuntu 24.04.5 LTS，内核 <strong>6.8.0-149-generic</strong>，in-tree <code>amdgpu</code> 驱动（无 DKMS）</td>
</tr>
<tr>
<td>计算栈</td>
<td><strong>ROCm 7.2.4</strong>（系统安装，gfx1100）</td>
</tr>
</tbody>
</table>
<p dir="auto">（我已经把我的VM拆出来分别给几台电脑，现在这台服务器就只是拿来跑AI而已了，之前的64GB有点勉强够用。）</p>
<h2>两套引擎</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th>Avalon</th>
<th>Strata（RDNA3 fork：<code>nicejunjie/Strata-rdna3</code>）</th>
</tr>
</thead>
<tbody>
<tr>
<td>版本</td>
<td>commit <code>88313b6</code>（llama.cpp 的分支）</td>
<td><code>iq3-1gpu</code> 配置，引擎由 <code>./setup.sh</code> 于 2026-11-09 现场编译</td>
</tr>
<tr>
<td>量化</td>
<td><strong>IQ3_KS hybrid</strong>（专家 2–4 bit 混合，89.7 GiB，33 个分片）</td>
<td><strong>IQ3_S</strong>（ISTA GSQ-RCO，79 GB 分片 + 46.84 GiB 的 <code>experts.bin</code> 打包）</td>
</tr>
<tr>
<td>投机解码</td>
<td>MTP 头，<code>--spec-draft-n-max 3</code></td>
<td>自带 MTP 头，<code>--spec-draft-vocab rdna3/draft_vocab_zh60k.bin</code></td>
</tr>
<tr>
<td>上下文</td>
<td><code>-c 262144</code>，KV 用 q8_0(K)/q4_0(V)，<strong>放显存</strong></td>
<td>262,144，KV <strong>流式放内存</strong>（<code>--kv-resident</code>）</td>
</tr>
<tr>
<td>额外内存占用</td>
<td>专家约 52 GiB 常驻进程自管内存</td>
<td>专家约 50 GB + PLE(n-gram) 表 29 GB 常驻内存</td>
</tr>
<tr>
<td>内存需求</td>
<td>~52 GiB</td>
<td>~95 GB</td>
</tr>
<tr>
<td>磁盘占用</td>
<td>90 GiB</td>
<td>134 GB</td>
</tr>
<tr>
<td>启动方式</td>
<td><code>llama-server</code> + README 原版参数</td>
<td><code>rdna3/run.py iq3-1gpu</code></td>
</tr>
</tbody>
</table>
<p dir="auto">两个引擎加载的是<strong>不同的权重文件</strong>（Avalon 的 GGUF 用了它自有的 IQ3_K/IQ3_KS 类型和打包布局，stock llama.cpp<br />
和 Strata 都打不开），所以这份对比是"引擎 + 它对应量化"的对比，不是量化对比。这一点请勿误读。</p>
<h2>测试方法</h2>
<ul>
<li>prompt 使用 Strata 自带的基准脚本（<code>rdna3/bench.py</code>）：N token 的合成仓储记录，<strong>开头、中间、结尾各埋一个密码</strong>，<br />
最后要求长回答；用模型自己的 tokenizer 和 chat template 构造，长度精确为 32,768 / 65,536 / 131,072 / 261,632 token。</li>
<li>每档跑 3 次，输出固定 <strong>256 token</strong>，温度 0，种子 42，<strong>不开 prompt 缓存</strong>，关闭思考模式。</li>
<li>每个请求必须报告精确的 prompt token 数（无缓存命中）、256 个输出 token，<strong>并且取回三个密码</strong>（检索校验，来自<br />
基准脚本本身，不是我另加的）。</li>
<li>速率取引擎自报的 <code>prompt_per_second</code> / <code>predicted_per_second</code>，每格为 3 次的<strong>中位数</strong>。</li>
<li>同一批 12 条 prompt 原文分别喂给两个引擎（Avalon 走 <code>/completion</code>，Strata 走它自带服务），保证文本完全一致。</li>
</ul>
<h2>测试结果</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>上下文</th>
<th>Avalon prefill</th>
<th>prefill 耗时</th>
<th>Avalon 解码</th>
<th>Avalon 总耗时*</th>
<th>Strata prefill</th>
<th>prefill 耗时</th>
<th>Strata 解码</th>
<th>Strata 总耗时*</th>
</tr>
</thead>
<tbody>
<tr>
<td>32k</td>
<td>1,906 tok/s</td>
<td>17.2 s</td>
<td><strong>118.3 tok/s</strong></td>
<td>19.9 s</td>
<td><strong>2,992 tok/s</strong></td>
<td>11.0 s</td>
<td>94.6 tok/s</td>
<td><strong>13.7 s</strong></td>
</tr>
<tr>
<td>64k</td>
<td>1,838</td>
<td>35.7 s</td>
<td><strong>121.0</strong></td>
<td>38.8 s</td>
<td><strong>3,010</strong></td>
<td>21.8 s</td>
<td>99.6</td>
<td><strong>24.3 s</strong></td>
</tr>
<tr>
<td>128k</td>
<td>1,789</td>
<td>73.2 s</td>
<td><strong>122.7</strong></td>
<td>77.4 s</td>
<td><strong>2,912</strong></td>
<td>45.0 s</td>
<td>104.4</td>
<td><strong>47.5 s</strong></td>
</tr>
<tr>
<td>256k</td>
<td>1,666</td>
<td>157.0 s</td>
<td><strong>111.7</strong></td>
<td>162.7 s</td>
<td><strong>2,714</strong></td>
<td>96.4 s</td>
<td>101.9</td>
<td><strong>98.9 s</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">* = prefill 时间 + 生成 256 token 的时间，也就是一个请求从发出到答完的实际耗时。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>指标</th>
<th>Avalon</th>
<th>Strata</th>
<th>胜出</th>
</tr>
</thead>
<tbody>
<tr>
<td>Prefill</td>
<td>1,666 – 1,906 tok/s</td>
<td>2,714 – 3,010 tok/s</td>
<td><strong>Strata，快 1.56–1.64 倍</strong></td>
</tr>
<tr>
<td>解码</td>
<td>111.7 – 122.7 tok/s</td>
<td>94.6 – 104.4 tok/s</td>
<td><strong>Avalon，快 1.10–1.25 倍</strong></td>
</tr>
<tr>
<td>256k 首 token 延迟</td>
<td>157 s</td>
<td>96 s</td>
<td><strong>Strata</strong></td>
</tr>
<tr>
<td>256k 检索校验</td>
<td>12/12 全过</td>
<td>12 次中仅 3 次通过（3 次运行挂 2 次）</td>
<td><strong>Avalon</strong></td>
</tr>
</tbody>
</table>
<h2>数据解读</h2>
<p dir="auto"><strong>两个引擎优化的是请求的两端。</strong> Strata 的 prefill 快 1.6 倍，而且在 256k 满上下文时仍有 2,714 tok/s —— 因为<br />
这个 RDNA3 分支是围绕"喂 prompt"设计的：K-quant 的 MMQ prefill kernel、<code>STRATA_PREFILL_CPU_SHARE</code> 把一部分<br />
prompt 计算交给 CPU、29 GB 的 n-gram 表常驻内存让新 prompt 不必等 SSD、KV 缓存放内存让整张 24 GB 卡都留给专家。<br />
Avalon 则赢在解码：GPU 专家缓存让一个 token 的大部分专家不必落到 CPU，MTP 草稿头把一个验证窗口变成约 2.5 个 token。</p>
<p dir="auto"><strong>"谁更快"完全取决于 prompt 与回答的比例。</strong> 喂一份 256k 文档、只要一段总结（agent、RAG、代码审查）：Strata<br />
端到端快 64 秒，省掉近 40% 时间。短 prompt、长回答的聊天：Avalon 每秒多 10–25% token，而聊天里 token 数才是<br />
主要成本，prefill 只占开头。</p>
<p dir="auto"><strong>满上下文只有一方可靠。</strong> 32k / 64k / 128k 两个引擎都把三个密码全部取回（各 3/3）。到 261,632 token 时，<br />
Avalon 全部请求通过；Strata 在<strong>两轮独立的基准运行</strong>里都是 3 次挂 2 次、只过 1 次。两边的速度在这个长度上<br />
差不多（解码 101.9 vs 111.7），所以如果你要用 Strata 跑 256k，请先用自己的数据验证。</p>
<p dir="auto"><strong>Strata 的"最佳配置"验证</strong>：它的 setup 会提示加 <code>--prefill auto:32768</code>（社区报告快 21–35%）。实测：<br />
2,942 / 2,976 / 2,894 / 2,700 tok/s，对比原配置 2,992 / 3,010 / 2,912 / 2,714 —— <strong>没有提升，反而低 0.5–1.7%</strong>，<br />
所以下表用的是它出厂的 <code>--prefill auto</code>。</p>
<p dir="auto"><strong>关于宿主差异的校准说明。</strong> Strata 分支的作者是在 9950X3D + DDR5 平台上测的。在这台 DDR4 + Zen 2 的机器上，<br />
Strata 只有他参考值的 <strong>0.81–0.84 倍（prefill）</strong> 和 <strong>0.88–0.93 倍（解码）</strong>。表里 Avalon 的数字是同一台机器<br />
测的，所以引擎对比本身没有被这一点污染；但请不要把我的 Strata 数字直接去对他的表。</p>
<h2>中文场景实测（出乎意料的一组）</h2>
<p dir="auto">英文是"各有胜负"，中文则是 <strong>Strata 明显更好</strong>。同一批 5 条 prompt（3 中文 + 2 英文）、300 输出 token、温度 0：</p>
<ul>
<li><strong>Avalon，MTP <code>n-max 3</code></strong> — 中文解码: 60.8 tok/s; 中文草稿接受率: 0.12; 英文解码: 106.0 tok/s; 英文草稿接受率: 0.49</li>
<li><strong>Avalon，MTP <code>n-max 2</code></strong> — 中文解码: 67.3; 中文草稿接受率: 0.17; 英文解码: 105.8; 英文草稿接受率: 0.62</li>
<li><strong>Avalon，关闭 MTP</strong> — 中文解码: <strong>71.2</strong>; 中文草稿接受率: —; 英文解码: 72.7; 英文草稿接受率: —</li>
<li><strong>Strata（出厂配置，自带 <code>draft_vocab_zh60k.bin</code>）</strong> — 中文解码: <strong>96.0</strong>; 中文草稿接受率: <strong>0.47–0.59</strong>; 英文解码: 103.6; 英文草稿接受率: 0.61–0.64</li>
</ul>
<p dir="auto">四个要点：</p>
<ol>
<li><strong>Strata 的中文比 Avalon 最好的配置还快 35%</strong>（96.0 vs 71.2），比 Avalon 默认配置快 58%（96.0 vs 60.8）。</li>
<li><strong>原因是草稿词表</strong>。Avalon 的 MTP 头是按英文词频裁剪的 65k 词表，中文草稿大量落在表外，接受率只有 0.11–0.17，<br />
验证开销变成净损失；Strata 这个分支专门做了一个面向中文的 draft 词表（<code>draft_vocab_zh60k.bin</code>，含覆盖其自身<br />
中文回答 99.5% 的汉字 token），中文接受率 0.47–0.59，基本维持在英文水平。</li>
<li><strong>语言惩罚对比</strong>：Strata 的中文只比它的英文慢 7%（96.0 / 103.6）；Avalon 开着 MTP 时中文只有英文的 57%。</li>
<li><strong>Avalon 没有可调的中文选项。</strong> 它的 draft 词表是烘进 MTP 那个 GGUF 的（<code>draft_vocab</code> / <code>draft_vocab_size</code><br />
为模型内嵌字段，文件名里的 <code>FR65k</code> 就是 65k 裁剪），<code>llama-server</code> 没有 <code>--spec-draft-vocab</code> 一类参数，<br />
所以中文接受率低是固化的，只有"关掉 MTP"能绕开，代价是英文从 106 掉到 73。上面三档在 2026-11-09<br />
<strong>复测过一次</strong>，两轮差异在 3% 以内（中文 60.7 / 65.3 / 73.1，接受率 0.12 / 0.14），不是偶发波动。</li>
</ol>
<p dir="auto">所以如果你的主要用的是中文，<strong>直接选 Strata</strong>，而且它同时还赢着 1.6 倍的 prefill。</p>
<h2>建议</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>你的场景</th>
<th>装哪个</th>
</tr>
</thead>
<tbody>
<tr>
<td>长文档、agent 循环、代码审查（大 prompt、短回答）</td>
<td><strong>Strata</strong> —— 瓶颈在 prefill，它快 1.6 倍</td>
</tr>
<tr>
<td>聊天、写作、翻译（短 prompt、长回答）</td>
<td><strong>Avalon</strong> —— 解码快 1.1–1.25 倍，且满上下文可靠</td>
</tr>
<tr>
<td>中文</td>
<td><strong>Strata</strong> —— 中文解码 96.0 tok/s，比 Avalon 最好的配置（71.2，且必须关掉 MTP）快 35%；其中文 draft 接受率 0.47–0.59，Avalon 只有 0.11–0.17</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>一句话结论：Strata 的 prefill 快 1.6 倍，Avalon 的解码快 1.2 倍，而 256k 满上下文只有 Avalon 稳定取回了检索码。综合表现还是Strata占据上风</strong></p>
<h2>复现</h2>
<p dir="auto"><strong>Avalon</strong></p>
<pre><code class="language-bash">git clone https://github.com/freriadoc/Avalon &amp;&amp; cd Avalon
cmake -B build -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1100 -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++
cmake --build build -j24 --target llama-server

llama-server -m Qwen3.8-Flash-Next-Avalon-IQ3KS-00001-of-00033.gguf \
  -c 262144 -b 9536 -ub 9536 -fa on -ctk q8_0 -ctv q4_0 --jinja --parallel 1 \
  -md MTP/mtp-Qwen3.8-Flash-Next-shared-IQ3K-IQ4NL-FR65k.gguf \
  --spec-type draft-mtp --spec-draft-n-max 3 -ubd 256 -ctkd q8_0 -ctvd q8_0
</code></pre>
<p dir="auto">（中文场景把 <code>-md ... --spec-type ... -ubd ... -ctkd ... -ctvd ...</code> 整段去掉即可，实测更快。）</p>
<p dir="auto"><strong>Strata（RDNA3 fork）</strong></p>
<pre><code class="language-bash">git clone https://github.com/nicejunjie/Strata-rdna3 &amp;&amp; cd Strata-rdna3
export XDG_CONFIG_HOME=$PWD/.config
./setup.sh --setup --build --backend hip --family qwen --model IQ3_S --vision cpu \
           --data-dir /path/to/Strata-data --no-start --yes
export STRATA_GGUF_PY=$PWD/third_party/llama.cpp/gguf-py
.venv/bin/python tools/iq_pack.py --gguf &lt;data&gt;/models/IQ3_S/...-00001-of-00002.gguf \
    --out &lt;data&gt;/packs/iq3_s --experts-bin      # 46.84 GiB，bench.py 必需
.venv/bin/python rdna3/bench.py iq3-1gpu --data &lt;data&gt; --gpus 0 \
    --lengths 32768,65536,131072,261632
</code></pre>
<h2>几点说明</h2>
<ul>
<li>单卡、单机、每个引擎一种量化；每格 3 次取中位，这台机器单次运行本身有 ±10% 波动。</li>
<li>单卡就别想多并发了，就乖乖排队吧。</li>
<li>视觉通路未测。</li>
<li>内存与显存数字是运行期间实际观测值（RSS / VRAM），不是申请值。</li>
</ul>
<p dir="auto">各位也可以测试一下，如果有什么问题，也欢迎各位指点。毕竟我只是叫AI帮我测，我也不是专业评测和调试的。</p>
]]></description><link>https://lcz.me/topic/2945</link><generator>RSS for Node</generator><lastBuildDate>Tue, 10 Nov 2026 00:19:25 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2945.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Nov 2026 14:01:32 GMT</pubDate><ttl>60</ttl></channel></rss>