<?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[X99 + DDR3 也追平新平台：单卡 7900 XTX 跑 Strata RDNA3 fork，prefill 3,526 tok/s，是原版 2.8 倍]]></title><description><![CDATA[<p dir="auto"><strong>X99 + 128G DDR3 + 单张 7900 XTX：Strata RDNA3 fork 对比原版，prefill 2.8 倍、decode 1.27 倍，附 69 道客观质量题</strong></p>
<p dir="auto"><strong>机器</strong>：ubox（X99-TF）｜ <strong>日期</strong>：2026-11-02 ｜ <strong>引擎</strong>：原版 <code>0.1.52-linux-x86_64-hip-rx7900</code>（预编译） vs <code>nicejunjie/Strata-rdna3</code> @ <code>81cbfdb</code>（含 PR #1），engine 0.1.43<br />
<strong>模型</strong>：Qwen3.8-Flash-Next <strong>IQ3_S</strong>（同一份 GGUF，两套引擎共用），256K 上下文，int8 KV，MTP 草稿头<br />
<strong>GPU</strong>：单张 RX 7900 XTX 24 GiB（gfx1100，PCIe 3.0 x16）｜ <strong>CPU</strong>：Xeon E5-2678 v3，12 核 24 线程，Haswell，<strong>无 AVX-512</strong></p>
<hr />
<h2>0. 摘要</h2>
<p dir="auto">同一台机器、同一个模型文件，只换引擎：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>实测输入</th>
<th>原版 prefill</th>
<th>fork prefill</th>
<th>倍数</th>
<th>原版 decode</th>
<th>fork decode</th>
<th>倍数</th>
<th>墙钟</th>
</tr>
</thead>
<tbody>
<tr>
<td>5,572 tok</td>
<td>1,121 tok/s</td>
<td><strong>1,743 tok/s</strong></td>
<td><strong>1.55×</strong></td>
<td>67.4 tok/s</td>
<td><strong>85.8 tok/s</strong></td>
<td>1.27×</td>
<td>8.8 s → 6.4 s</td>
</tr>
<tr>
<td>22,112 tok</td>
<td>1,236 tok/s</td>
<td><strong>3,276 tok/s</strong></td>
<td><strong>2.65×</strong></td>
<td>68.9 tok/s</td>
<td><strong>82.4 tok/s</strong></td>
<td>1.20×</td>
<td>21.7 s → 9.9 s</td>
</tr>
<tr>
<td>88,259 tok</td>
<td>1,262 tok/s</td>
<td><strong>3,526 tok/s</strong></td>
<td><strong>2.79×</strong></td>
<td>63.4 tok/s</td>
<td><strong>79.7 tok/s</strong></td>
<td>1.26×</td>
<td>74 s → 28.3 s</td>
</tr>
<tr>
<td>168,284 tok</td>
<td>1,201 tok/s</td>
<td><strong>3,357 tok/s</strong></td>
<td><strong>2.80×</strong></td>
<td>61.9 tok/s</td>
<td><strong>82.5 tok/s</strong></td>
<td>1.33×</td>
<td>144 s → 53.5 s</td>
</tr>
<tr>
<td>238,940 tok</td>
<td>1,148 tok/s</td>
<td><strong>3,280 tok/s</strong></td>
<td><strong>2.86×</strong></td>
<td>58.6 tok/s</td>
<td><strong>74.6 tok/s</strong></td>
<td>1.27×</td>
<td><strong>212 s → 76.5 s</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">※ 全部为 3 次中位数，温度 0、seed 42、每次唯一 salt 保证 <code>cache_n = 0</code>（无前缀复用）。数据为引擎自带 <code>timings</code> 字段，非客户端计时。</p>
<p dir="auto"><strong>一句话</strong>：读满 24 万 token 从 3 分半缩到 1 分 16 秒，出字快约 27%；Agent 多轮里冷启动轮从 18.8 秒降到 8.9 秒，有缓存的轮次从 3.3 秒降到 2.5 秒。质量侧 69 道客观判卷题两边打平（各 65/69，错的是同一批题）。</p>
<hr />
<h2>1. 测试环境</h2>
<h3>硬件</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>项</th>
<th>值</th>
</tr>
</thead>
<tbody>
<tr>
<td>CPU</td>
<td>Intel Xeon E5-2678 v3，12 核 24 线程，Haswell；指令集 AVX2 / FMA / F16C，<strong>无 AVX-512</strong>（这一条决定了必须用 PR #1，见 §2.2）</td>
</tr>
<tr>
<td>内存</td>
<td>125 GiB DDR3 四通道（4×32 GB，DMI 报 1866 MT/s）</td>
</tr>
<tr>
<td>GPU</td>
<td>AMD Radeon RX 7900 XTX，24 GiB，gfx1100；主机链路 <strong>PCIe 3.0 x16</strong>（实测 H2D 13.43 GB/s）</td>
</tr>
<tr>
<td>存储</td>
<td>NVMe 468 GB（模型 53 GB + fork 包 1.5 GB + ROCm 11 GB）</td>
</tr>
<tr>
<td>系统</td>
<td>Ubuntu 24.04.5，内核 6.8.0-147-generic，内核自带 amdgpu</td>
</tr>
</tbody>
</table>
<h3>软件</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>项</th>
<th>原版</th>
<th>fork</th>
</tr>
</thead>
<tbody>
<tr>
<td>引擎</td>
<td><code>0.1.52-linux-x86_64-hip-rx7900</code>（预编译，Strata Terminal 组件）</td>
<td>0.1.43，源码编译（<code>build-hip</code>，<code>-DCMAKE_HIP_ARCHITECTURES=gfx1100</code>）</td>
</tr>
<tr>
<td>ROCm</td>
<td>随组件捆绑</td>
<td>TheRock 轮子 <code>7.10.0a20251120</code>，装进 <code>.venv</code>（不污染系统）</td>
</tr>
<tr>
<td>安装方式</td>
<td>Terminal 应用一键装</td>
<td>源码 <code>./setup.sh --build</code></td>
</tr>
<tr>
<td>模型</td>
<td>IQ3_S abliterated（2 shard，53 GB）</td>
<td>同一份文件（硬链接，零额外占用）</td>
</tr>
</tbody>
</table>
<hr />
<h2>2. 安装（fork 特有的三个坑）</h2>
<h3>2.1 源码</h3>
<p dir="auto"><code>git clone</code> 从国内直连会断流（<code>early EOF / invalid index-pack</code>），改用 tarball 一次成功：</p>
<pre><code class="language-bash">aria2c -x8 -s8 -o strata.tar.gz \
  "https://codeload.github.com/nicejunjie/Strata-rdna3/tar.gz/refs/heads/rdna3"
tar xzf strata.tar.gz -C Strata-rdna3 --strip-components=1
</code></pre>
<h3>2.2 必须用 PR #1（AVX-512 的坑）</h3>
<p dir="auto">分支头（2026-11-01 之前）编译出来能过，但<strong>一启动就 SIGILL</strong>：</p>
<pre><code class="language-text">$ ./engine/strata --version
Illegal instruction (core dumped)
</code></pre>
<p dir="auto">定位：<code>src/kernels/cpu/iq_avx512.cpp</code> 用 <code>-mavx512f -mavx512bw -mavx512vl -mavx512dq -mavx512vnni -mavx512vbmi</code> 单独编译，且其查表初始化在<strong>静态初始化阶段</strong>执行，早于 ISA 派发。<code>STRATA_FORCE_ISA=avx2</code>、<code>STRATA_FORCE_AVX2=1</code> 都救不回来。</p>
<p dir="auto">作者已于 <strong>2026-11-02 02:13</strong> 合并 PR #1（把查表初始化推迟到函数内、探测代码按非 AVX-512 编译）。用 <code>81cbfdb</code> 及之后的版本即可：</p>
<pre><code class="language-text">$ ./engine/strata --version
strata 0.1.43
</code></pre>
<blockquote>
<p dir="auto"><strong>注意</strong>：如果你在 11-02 之前下过源码，重新拉一次；只改编译参数没用。</p>
</blockquote>
<h3>2.3 ROCm 下载：单连接 50 KB/s，必须多线程</h3>
<p dir="auto"><code>setup.sh</code> 会用 pip 从 <code>rocm.nightlies.amd.com</code> 拉三个轮子，共 2.1 GB。实测<strong>单连接被限速到约 50 KB/s</strong>（2.1 GB 要十几小时），pip 直接 <code>Read timed out</code>。</p>
<p dir="auto">解法：先用 aria2 16 线程下好，再本地装（实测总带宽 13.8 MB/s，3.5 分钟下完）：</p>
<pre><code class="language-bash">aria2c -q -x16 -s16 --file-allocation=none -o rocm_sdk_core-7.10.0a20251120-py3-none-linux_x86_64.whl \
  https://rocm.nightlies.amd.com/v2/gfx110X-dgpu/rocm_sdk_core-7.10.0a20251120-py3-none-linux_x86_64.whl
# devel 与 libraries 两个轮子同理，共三个
</code></pre>
<h3>2.4 元包缺失时要手动解压</h3>
<p dir="auto"><code>rocm</code> 元包（提供 <code>rocm-sdk</code> 命令）在部分时间点不可用，导致 <code>setup.py</code> 卡在校验。手动补齐：</p>
<pre><code class="language-bash">S=.venv/lib/python3.12/site-packages
tar xf $S/rocm_sdk_devel/_devel.tar -C $S          # 8.1 GB，解出 _rocm_sdk_devel/
printf '#!/bin/sh\necho "%s/_rocm_sdk_devel"\n' "$PWD/$S" &gt; .venv/bin/rocm-sdk
chmod +x .venv/bin/rocm-sdk
</code></pre>
<p dir="auto"><code>setup.py</code> 只调用 <code>rocm-sdk path --root</code>，这个 shim 足够。</p>
<blockquote>
<p dir="auto">其余步骤（pip 依赖、模型包生成）按 <code>./setup.sh --build --backend hip --model IQ3_S --no-start</code> 走即可，pip 记得挂国内镜像。</p>
</blockquote>
<hr />
<h2>3. 四组对照：提升到底来自哪里</h2>
<p dir="auto">只跑 A/B 两组会得出错误结论——那 2.8 倍里有参数、有环境开关、有引擎代码。所以做了四组：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>组</th>
<th>引擎</th>
<th>参数</th>
<th>用途</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>A</strong></td>
<td>原版 0.1.52</td>
<td>原版调优参数（<code>--pcie-frac 0.35 --ple-io ram --spec 3 --adapt-every 1</code>）</td>
<td>基准线</td>
</tr>
<tr>
<td><strong>B</strong></td>
<td>fork 0.1.43</td>
<td>fork 全套（<code>--pcie-frac 0 --ple-io direct --spec 4</code> + 42 个 <code>STRATA_*</code> 开关）</td>
<td>实际换过去能得到什么</td>
</tr>
<tr>
<td><strong>C</strong></td>
<td>fork 0.1.43</td>
<td><strong>原版参数</strong>，不加任何 <code>STRATA_*</code></td>
<td>只换引擎会怎样</td>
</tr>
<tr>
<td><strong>D</strong></td>
<td>原版 0.1.52</td>
<td><strong>fork 的命令行参数</strong>，不加 <code>STRATA_*</code></td>
<td>只抄参数会怎样</td>
</tr>
</tbody>
</table>
<p dir="auto">结果（prefill / decode，tok/s）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>输入</th>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
</tr>
</thead>
<tbody>
<tr>
<td>5,572</td>
<td>1,121 / 67.4</td>
<td><strong>1,743 / 85.8</strong></td>
<td>770 / 64.5</td>
<td>—</td>
</tr>
<tr>
<td>22,112</td>
<td>1,236 / 68.9</td>
<td><strong>3,276 / 82.4</strong></td>
<td>826 / 67.3</td>
<td>1,265 / 72.6</td>
</tr>
<tr>
<td>88,259</td>
<td>1,262 / 63.4</td>
<td><strong>3,526 / 79.7</strong></td>
<td>828 / 64.9</td>
<td>1,281 / 65.5</td>
</tr>
<tr>
<td>168,284</td>
<td>1,201 / 61.9</td>
<td><strong>3,357 / 82.5</strong></td>
<td>800 / 60.4</td>
<td>—</td>
</tr>
<tr>
<td>238,940</td>
<td>1,148 / 58.6</td>
<td><strong>3,280 / 74.6</strong></td>
<td>未完成</td>
<td>1,139 / 63.7</td>
</tr>
</tbody>
</table>
<p dir="auto">读表：</p>
<ul>
<li><strong>C 比 A 慢 31–34%</strong>：fork 的代码本身不但没更快，配原版参数还更慢。</li>
<li><strong>D 和 A 基本持平</strong>（prefill ±2%，decode +3~9%）：光抄命令行参数没用。</li>
<li><strong>B 才是唯一有效的组合</strong>。</li>
</ul>
<blockquote>
<p dir="auto"><strong>一句话</strong>：这不是"换个引擎"或"抄个参数"，是<strong>引擎 + 命令行参数 + 42 个环境开关三者绑定</strong>，缺一个就失效。想只抄参数省事，数据说不行。</p>
</blockquote>
<hr />
<h2>4. 性能测试</h2>
<h3>4.1 方法</h3>
<ul>
<li>每次请求带唯一 salt，保证 <code>cache_n = 0</code>（不复用前缀）；读 <code>timings.prompt_per_second</code> / <code>predicted_per_second</code></li>
<li>温度 0、seed 42、输出 256 token、每档 3 次取中位数</li>
<li>每组开测前先发一个丢弃的预热请求（首轮明显偏低，8K 档第一次 1,492、第二次 1,726）</li>
<li>显存/内存每档记录，两套引擎都是单实例独占</li>
</ul>
<h3>4.2 结果（fork 实测）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>输入</th>
<th>prompt tokens</th>
<th>prefill</th>
<th>decode</th>
<th>墙钟</th>
</tr>
</thead>
<tbody>
<tr>
<td>5.6K</td>
<td>5,572</td>
<td>1,743 tok/s</td>
<td>85.8 tok/s</td>
<td>6.4 s</td>
</tr>
<tr>
<td>22K</td>
<td>22,112</td>
<td>3,276 tok/s</td>
<td>82.4 tok/s</td>
<td>9.9 s</td>
</tr>
<tr>
<td>88K</td>
<td>88,259</td>
<td>3,526 tok/s</td>
<td>79.7 tok/s</td>
<td>28.3 s</td>
</tr>
<tr>
<td>168K</td>
<td>168,284</td>
<td>3,357 tok/s</td>
<td>82.5 tok/s</td>
<td>53.5 s</td>
</tr>
<tr>
<td>239K</td>
<td>238,940</td>
<td>3,280 tok/s</td>
<td>74.6 tok/s</td>
<td>76.5 s</td>
</tr>
</tbody>
</table>
<h3>4.3 Agent 多轮（模拟 8 轮对话，首轮读 2 万 token）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>轮次</th>
<th>A 原版</th>
<th>B fork</th>
</tr>
</thead>
<tbody>
<tr>
<td>第 1 轮（冷启动）</td>
<td>18.8 s</td>
<td><strong>8.9 s</strong></td>
</tr>
<tr>
<td>第 2–7 轮（缓存命中）</td>
<td>3.2–3.7 s</td>
<td><strong>1.8–3.0 s</strong></td>
</tr>
<tr>
<td>第 8 轮（压缩后重读）</td>
<td>18.3 s</td>
<td><strong>7.9 s</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">有缓存的轮次也快了约 25%——那些轮次主要耗时在出字，而出字也快了。</p>
<h3>4.4 数据怎么读</h3>
<ul>
<li><strong>2.6–2.9 倍只出现在 22K 以上</strong>。5.6K 档只有 1.55 倍，因为短 prompt 的 prefill 时间本来就小，固定开销占比高。</li>
<li><strong>墙钟差距比 tok/s 差距更大</strong>：239K 档 212 s → 76.5 s，是 2.77 倍。</li>
<li>这台机器的 PCIe 只有 3.0 x16（H2D 13.43 GB/s），能跑到 3,280 tok/s 说明 fork 的 prefill 主要不是靠总线搬数据。</li>
</ul>
<hr />
<h2>5. 质量测试（69 道客观判卷题）</h2>
<p dir="auto">不跟原版比"像不像"，而是每题配独立判卷器：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>题型</th>
<th>判卷方式</th>
<th>题数</th>
</tr>
</thead>
<tbody>
<tr>
<td>改代码</td>
<td>把输出代码跑单元测试，跑通才算过</td>
<td>22</td>
</tr>
<tr>
<td>数学 / 逻辑</td>
<td>精确匹配唯一答案</td>
<td>26</td>
</tr>
<tr>
<td>结构化输出</td>
<td>JSON 解析校验、SQL 真跑比结果、正则测样例、CSV/表格解析</td>
<td>10</td>
</tr>
<tr>
<td>指令遵循</td>
<td>程序校验格式约束（行数、字数、分隔符、递增）</td>
<td>8</td>
</tr>
<tr>
<td>长文取码</td>
<td>3 万–15 万字文档中间埋码，问出来</td>
<td>3</td>
</tr>
</tbody>
</table>
<p dir="auto">结果：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>题集</th>
<th>原版</th>
<th>fork</th>
</tr>
</thead>
<tbody>
<tr>
<td>40 题集（关思考）</td>
<td><strong>36/39</strong></td>
<td><strong>36/39</strong></td>
</tr>
<tr>
<td>30 题新集（关思考）</td>
<td><strong>29/30</strong></td>
<td><strong>29/30</strong></td>
</tr>
<tr>
<td>合计</td>
<td><strong>65/69</strong></td>
<td><strong>65/69</strong></td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>两边错的是同一批题</strong>：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>题目</th>
<th>两边都答成</th>
<th>正确</th>
</tr>
</thead>
<tbody>
<tr>
<td>实现 LRU 缓存</td>
<td><code>import OrderedDict</code>（语法就错）</td>
<td><code>from collections import ...</code></td>
</tr>
<tr>
<td>词频 Top-K</td>
<td><code>import Counter</code>（同样错）</td>
<td>同上</td>
</tr>
<tr>
<td>鸡兔同笼（头 35 脚 94）</td>
<td>12 只兔</td>
<td>23 只</td>
</tr>
<tr>
<td>3:15 时针分针夹角</td>
<td>82.5 度</td>
<td>7.5 度（问小夹角）</td>
</tr>
</tbody>
</table>
<p dir="auto">同一批题、同一个错法 → 这是模型短板，不是引擎差异。</p>
<blockquote>
<p dir="auto"><strong>注意</strong>：开思考时 fork 有一道题把 1200 token 输出预算全花在推理上、没写出代码（<code>finish_reason=length</code>）。关掉思考后该题通过。<strong>用 fork 写代码时把 <code>max_tokens</code> 设大一点。</strong></p>
</blockquote>
<hr />
<h2>6. 思考开关：端到端差 3–4 倍</h2>
<p dir="auto">出字速度（tok/s）不能当体感——思考过程也算时间。同一批题、同一引擎，只切 <code>chat_template_kwargs: {enable_thinking: false}</code>：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>题型</th>
<th>原版·开思考</th>
<th>原版·关思考</th>
<th>fork·开思考</th>
<th>fork·关思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>改代码</td>
<td>8.9 s</td>
<td><strong>2.4 s</strong></td>
<td>8.2 s</td>
<td><strong>2.1 s</strong></td>
</tr>
<tr>
<td>数学逻辑</td>
<td>2.7 s</td>
<td><strong>0.7 s</strong></td>
<td>2.1 s</td>
<td><strong>0.6 s</strong></td>
</tr>
<tr>
<td>指令遵循</td>
<td>2.8 s</td>
<td><strong>0.8 s</strong></td>
<td>2.3 s</td>
<td><strong>0.6 s</strong></td>
</tr>
<tr>
<td>结构化输出</td>
<td>3.1 s</td>
<td><strong>1.1 s</strong></td>
<td>2.4 s</td>
<td><strong>0.9 s</strong></td>
</tr>
<tr>
<td>长文取码</td>
<td>63.3 s</td>
<td>63.7 s</td>
<td>23.4 s</td>
<td>24.4 s</td>
</tr>
</tbody>
</table>
<ul>
<li>短题关思考快 <strong>2.8–4.0 倍</strong></li>
<li>长文题没差别（时间全在读入，输出只有几个字）</li>
<li>同一批题，开/关思考的判定结果几乎完全一致（13/14、4/4、6/6 相同）</li>
</ul>
<blockquote>
<p dir="auto"><strong>反常识</strong>：引擎的 decode tok/s 在开思考时反而更高（结构化推理文本的投机接受率高）。但用户等的是最终答案，所以体感上关思考快得多。<strong>想要体感快，关思考；想要 tok/s 好看，开思考。</strong></p>
</blockquote>
<hr />
<h2>7. spec 扫描：3 或 4 都行，2 偏慢</h2>
<p dir="auto"><code>--spec</code>（每步草稿数）不是越大越好。Agent 多轮 8 轮总计：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>spec</th>
<th>8 轮总计</th>
<th>缓存轮均值</th>
<th>草稿接受率（写代码）</th>
<th>接受率（写说明）</th>
</tr>
</thead>
<tbody>
<tr>
<td>2</td>
<td><strong>35.8 s</strong></td>
<td>3.0 s</td>
<td>88.3%</td>
<td>81.5%</td>
</tr>
<tr>
<td>3</td>
<td>33.2 s</td>
<td>2.7 s</td>
<td>84.4%</td>
<td>72.0%</td>
</tr>
<tr>
<td>4</td>
<td><strong>32.8 s</strong></td>
<td>2.7 s</td>
<td>76.7%</td>
<td>71.7%</td>
</tr>
<tr>
<td>6</td>
<td>32.4 s</td>
<td>2.6 s</td>
<td>70.0%</td>
<td>55.7%</td>
</tr>
</tbody>
</table>
<p dir="auto">接受率随草稿数单调下降，收益在 3–4 封顶：</p>
<pre><code>每步平均产出 = (1 - α^(k+1)) / (1 - α)
每步代价     ≈ 1 + c·k
</code></pre>
<p dir="auto">α 掉得比 k 涨得快，k 过了 4 就白跑验证。<strong>spec 2 在 fork 上慢 8%，spec 6 只是持平。</strong></p>
<blockquote>
<p dir="auto">每个 spec 只跑 1 轮，误差 ±5%，所以 3/4/6 之间 0.4–0.8 秒的差别不能当真。结论只有一句：<strong>2 明显差，3 以上打平，选 3 或 4。</strong></p>
</blockquote>
<hr />
<h2>8. 已知限制与注意事项</h2>
<ol>
<li><strong>必须整套换</strong>：引擎、命令行参数、42 个 <code>STRATA_*</code> 环境开关三者绑定。只换引擎慢 31–34%（C 组），只抄参数等于没换（D 组）。</li>
<li><strong>AVX-512 修复很新</strong>：PR #1 于 2026-11-02 02:13 合并。此前版本在无 AVX-512 的 CPU 上必然 SIGILL，且 <code>STRATA_FORCE_ISA</code> 无效。</li>
<li><strong>分支单人维护</strong>：<code>nicejunjie/Strata-rdna3</code>，上游更新要手动合并；作者验证机是 9950X3D2，本机（Haswell + DDR3）不是他的目标平台。</li>
<li><strong>安装链路长</strong>：ROCm 2.1 GB 需手动多线程下载，元包缺失要自己解压 + 写 shim，全程约 40 分钟（不含编译）。</li>
<li><strong>写代码要把 <code>max_tokens</code> 放大</strong>：开思考时容易把预算全花在推理上，<code>finish_reason=length</code> 导致代码截断。</li>
<li><strong>本组数据都是单次运行</strong>：每档 3 次取中位，但每组只跑一轮，跨组比较误差约 ±5%。</li>
<li><strong>质量测试是自建判卷器</strong>：69 题、客观判分，但不是权威 benchmark，只能说明"两边没差别"，不能说明"绝对水平如何"。</li>
<li><strong>内存占用高</strong>：fork 的专家 arena 约 46.8 GiB（<code>arena_mib=47962</code>），加 KV 后整机占用 50 GB 上下。这台 125 GiB 机器跑单实例没问题，但同机不能再跑第二个。</li>
</ol>
<hr />
<h2>9. 复现命令清单</h2>
<pre><code class="language-bash"># 1) 源码（必须 81cbfdb 或之后，含 PR #1）
aria2c -x8 -s8 -o strata.tar.gz "https://codeload.github.com/nicejunjie/Strata-rdna3/tar.gz/refs/heads/rdna3"
tar xzf strata.tar.gz -C Strata-rdna3 --strip-components=1

# 2) 系统依赖
sudo apt install -y build-essential cmake ninja-build python3-venv aria2

# 3) ROCm 轮子（多线程下，单连接会被限速到 50 KB/s）
aria2c -q -x16 -s16 -o rocm_sdk_core-7.10.0a20251120-py3-none-linux_x86_64.whl \
  https://rocm.nightlies.amd.com/v2/gfx110X-dgpu/rocm_sdk_core-7.10.0a20251120-py3-none-linux_x86_64.whl
# devel / libraries 同理

# 4) 编译 + 生成模型包（约 20 分钟）
cd Strata-rdna3
export XDG_CONFIG_HOME=$PWD/.config PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
./setup.sh --setup --build --backend hip --family qwen --model IQ3_S \
  --context 262144 --kv int8 --vision no --gpu 0 \
  --data-dir /path/Strata-data-rdna3 --no-start --yes

# 5) 起服务（fork 自带 serve/server.py，不要用 0.2.x 的）
./.venv/bin/python serve/server.py --engine strata \
  --config /path/strata-iq3_s.json --port 8080

# 6) 自检
curl -s http://127.0.0.1:8080/health
</code></pre>
<pre><code class="language-text"># 预期健康返回
{"status": "ok", "max_context": 262144, "model": "qwen3.8-flash-next-iq3_s", "loaded": true}
</code></pre>
<p dir="auto">测速脚本读引擎自己的 <code>timings</code> 字段即可，不需要客户端计时：</p>
<pre><code class="language-python"># 关键：每次请求带唯一 salt，确保 cache_n == 0
r = post("/v1/chat/completions", {"model": m, "messages": [{"role": "user", "content": salt + doc}],
                                  "max_tokens": 256, "temperature": 0, "seed": 42})
t = r["timings"]          # prompt_per_second / predicted_per_second / draft_n_accepted
</code></pre>
<hr />
]]></description><link>https://lcz.me/topic/2795</link><generator>RSS for Node</generator><lastBuildDate>Mon, 09 Nov 2026 07:43:33 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2795.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Nov 2026 11:53:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to X99 + DDR3 也追平新平台：单卡 7900 XTX 跑 Strata RDNA3 fork，prefill 3,526 tok/s，是原版 2.8 倍 on Tue, 03 Nov 2026 16:31:37 GMT]]></title><description><![CDATA[<p dir="auto">只对RDNA3调优，没有RDNA4。。</p>
]]></description><link>https://lcz.me/post/30834</link><guid isPermaLink="true">https://lcz.me/post/30834</guid><dc:creator><![CDATA[xiaopbro]]></dc:creator><pubDate>Tue, 03 Nov 2026 16:31:37 GMT</pubDate></item><item><title><![CDATA[Reply to X99 + DDR3 也追平新平台：单卡 7900 XTX 跑 Strata RDNA3 fork，prefill 3,526 tok/s，是原版 2.8 倍 on Mon, 02 Nov 2026 14:31:11 GMT]]></title><description><![CDATA[<p dir="auto">感谢，四组对照（尤其 C/D 两组）很有用。补一个实测坑：</p>
<p dir="auto"><strong><code>GPU_MAX_HW_QUEUES=8</code> 会让引擎空闲时占满 GPU。</strong></p>
<p dir="auto">照 README 的 IQ3_S 配置（含该变量）启动后，<code>/v1/telemetry</code> 显示 <code>active=0</code>，但 <code>gpu_busy_percent=100</code>、进程 CPU 50–130%；停服务立刻归 0，重启又满。二分 48 个 <code>STRATA_*</code> 后，<strong>仅这一个变量可独立复现</strong>，其余 47 个单独测都干净。</p>
<p dir="auto">同机实测（3 次中位数）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>GPU_MAX_HW_QUEUES</th>
<th>空闲 GPU</th>
<th>3.2K decode</th>
<th>59K prefill</th>
</tr>
</thead>
<tbody>
<tr>
<td>8</td>
<td><strong>100%</strong></td>
<td>71.7</td>
<td>3,352</td>
</tr>
<tr>
<td><strong>4</strong></td>
<td><strong>0%</strong></td>
<td>75.6</td>
<td>3,293</td>
</tr>
<tr>
<td>不设</td>
<td>0%</td>
<td>67.0</td>
<td>3,137</td>
</tr>
</tbody>
</table>
<p dir="auto">短 prompt 4 反而略快（队列太多互相争抢），长上下文 8 仍最好。建议默认 4，或在 <code>docs/RDNA3_SETTINGS.md</code> 里注明 8 的功耗代价。</p>
<p dir="auto">另外两处和文档不一致：</p>
<ol>
<li><code>refs/heads/rdna3</code> 已 404，现在是 <code>main</code>（PR #1 的 <code>no-avx512f,...</code> 修复在）。</li>
<li>系统 ROCm 7.2 的 device lib 在 <code>$R/amdgcn/bitcode</code>，不是文档写的 <code>$R/lib/llvm/amdgcn/bitcode</code>，照抄会报 <code>cannot find ROCm device library</code>。</li>
</ol>
<p dir="auto">最后一点观察：我这台<strong>原版 0.1.50 的 prefill 本身就有 3,021 tok/s</strong>（59K 输入），换 fork 后 3,293、decode 68.3→81。所以 2.8× 可能主要来自 0.1.52 预编译版与 <code>rx7900</code> 视觉版的差异；摘要里标一下原版的构建 variant 会更准确。</p>
]]></description><link>https://lcz.me/post/30594</link><guid isPermaLink="true">https://lcz.me/post/30594</guid><dc:creator><![CDATA[天知道]]></dc:creator><pubDate>Mon, 02 Nov 2026 14:31:11 GMT</pubDate></item><item><title><![CDATA[Reply to X99 + DDR3 也追平新平台：单卡 7900 XTX 跑 Strata RDNA3 fork，prefill 3,526 tok/s，是原版 2.8 倍 on Mon, 02 Nov 2026 12:04:01 GMT]]></title><description><![CDATA[<p dir="auto">实在没找到标签怎么加。小特如果看到帖子帮忙加一下标签</p>
]]></description><link>https://lcz.me/post/30570</link><guid isPermaLink="true">https://lcz.me/post/30570</guid><dc:creator><![CDATA[李明阳]]></dc:creator><pubDate>Mon, 02 Nov 2026 12:04:01 GMT</pubDate></item></channel></rss>