<?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＋7900 XTX+7700 XT 跑 vLLM实测]]></title><description><![CDATA[<p dir="auto">已改成<a href="/Users/angryfriday/Desktop/dev/auto_work/runs/j436-x99-ad4-dual-7900xtx-qwen38-20260902/FORUM_POST_SHORT.md">精简版帖子</a>，只保留 vLLM 操作和实测。注释 1</p>
<hr />
<h1>X99＋7900 XTX/7700 XT 跑 vLLM：128K、缓存及 MTP 实测</h1>
<p dir="auto">配置：X99-AD4、E5-2686 v4、64GB、7900 XTX 24GB＋7700 XT 12GB。</p>
<p dir="auto">模型：<code>Vishva007/Qwen3.8-27B-W4A16-AutoRound-GPTQ</code>，vLLM 0.28.0、ROCm 7.2.3 wheel。</p>
<h2>1. 做了哪些修改</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>操作</th>
<th>实验结果</th>
</tr>
</thead>
<tbody>
<tr>
<td>开启 Above 4G Decoding、ReBAR</td>
<td>双卡进入 Ubuntu，大 BAR 生效</td>
</tr>
<tr>
<td>给主机桥 <code>8086:6f00</code> 加 P2PDMA 白名单，编译实验内核</td>
<td>缺 <code>gawk</code> 失败一次，补齐后完成，累计编译约54分钟；HIP peer 双向由0变1，复制和IPC校验通过</td>
</tr>
<tr>
<td>换用 AMD RCCL build 38，移除 LD_PRELOAD</td>
<td>解决原库双卡 AllReduce 段错误，集合通信通过</td>
</tr>
<tr>
<td>修正 GPTQ 零点传参、按显卡读取CU数量、开启decode graph，并加入MTP3</td>
<td>TP2下1K输入TG从5.87提高到47.26</td>
</tr>
<tr>
<td>移植 JartX 的 RDNA3 prefill 调度参数</td>
<td>16K PP提高21.4%，32K提高42.2%</td>
</tr>
<tr>
<td>改为不等量分层，让XTX承担更多层</td>
<td>长上下文PP提高，跑通128K</td>
</tr>
</tbody>
</table>
<p dir="auto">注意：最终 RCCL <strong>仍走 SHM</strong>，不能宣称高速P2P已打通；也未证明实验内核是最终方案的必要条件。</p>
<h2>2. PP/TG 实测</h2>
<p dir="auto">JartX prefill 调整前后，保持TP2＋MTP3：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">输入</th>
<th style="text-align:right">调整前PP</th>
<th style="text-align:right">调整后PP</th>
<th style="text-align:right">调整后TG</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">16K</td>
<td style="text-align:right">561.8</td>
<td style="text-align:right">682.2</td>
<td style="text-align:right">29.23</td>
</tr>
<tr>
<td style="text-align:right">32K</td>
<td style="text-align:right">452.9</td>
<td style="text-align:right">644.0</td>
<td style="text-align:right">17.89</td>
</tr>
</tbody>
</table>
<p dir="auto">之后改成 <strong>TP1＋PP2、7700 XT前20层／XTX后44层，无MTP、无缓存</strong>。单请求生成256 token：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">实际输入token</th>
<th style="text-align:right">PP（tok/s）</th>
<th style="text-align:right">TG（tok/s）</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">4,096</td>
<td style="text-align:right">1,016.56</td>
<td style="text-align:right">27.55</td>
</tr>
<tr>
<td style="text-align:right">16,384</td>
<td style="text-align:right">995.61</td>
<td style="text-align:right">24.94</td>
</tr>
<tr>
<td style="text-align:right">32,768</td>
<td style="text-align:right">933.16</td>
<td style="text-align:right">24.78</td>
</tr>
<tr>
<td style="text-align:right">130,816</td>
<td style="text-align:right">670.88</td>
<td style="text-align:right">18.06</td>
</tr>
</tbody>
</table>
<p dir="auto">最后一项输入＋输出共131,072，整次请求209.1秒。分层后短上下文TG不如早期TP2＋MTP3，但PP更高，32K生成也更快。</p>
<h2>3. 最终使用配置</h2>
<p dir="auto">接入视觉后重新平衡显存，改成 <strong>18/46分层、128K、前缀缓存、最多4并发</strong>。batch预算1024，显存预算0.948，无MTP。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>测试</th>
<th>结果</th>
</tr>
</thead>
<tbody>
<tr>
<td>约3K输入／256输出</td>
<td>TG 28.74／28.93 tok/s</td>
</tr>
<tr>
<td>7,552 token文本首次／重复请求</td>
<td>首token 7.451秒／0.788秒</td>
</tr>
<tr>
<td>图片首次／重复请求</td>
<td>首token 2.146秒／0.591秒，均识别出数码管<code>Ab</code></td>
</tr>
<tr>
<td>保留视觉编码器，131,008输入＋64输出</td>
<td>满128K请求186.1秒完成</td>
</tr>
</tbody>
</table>
<p dir="auto">并发调优阶段，约7.5K输入／160输出、缓存已热：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">并发</th>
<th style="text-align:right">每路TG</th>
<th style="text-align:right">首token延迟</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">2</td>
<td style="text-align:right">18.83–20.46</td>
<td style="text-align:right">0.828–1.630秒</td>
</tr>
<tr>
<td style="text-align:right">4</td>
<td style="text-align:right">15.02–18.59</td>
<td style="text-align:right">0.928–3.092秒</td>
</tr>
</tbody>
</table>
<p dir="auto">这组并发数据使用0.94显存预算。前面的完整长上下文表属于纯文本20/44方案，不是最终视觉配置的成绩。四并发也不代表能同时容纳四个独立满128K请求。</p>
<h2>4. 为什么最终没留MTP</h2>
<p dir="auto">适配PP＋MTP后，约3K输入、256输出：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>配置</th>
<th style="text-align:right">两次TG（tok/s）</th>
</tr>
</thead>
<tbody>
<tr>
<td>无MTP</td>
<td style="text-align:right">28.62／28.80</td>
</tr>
<tr>
<td>MTP1</td>
<td style="text-align:right">14.88／15.06</td>
</tr>
<tr>
<td>MTP2</td>
<td style="text-align:right">16.59／16.50</td>
</tr>
<tr>
<td>MTP3</td>
<td style="text-align:right">18.55／18.83</td>
</tr>
</tbody>
</table>
<p dir="auto">MTP实验为8K、无缓存，基线为128K＋缓存，是部署方案对比而非严格单变量实验。虽然成功运行，但TG下降，因此撤回。</p>
<p dir="auto">DFlash2也试过：1K输入TG从30.01到32.58，但受显存限制，完成测试的上下文上限只有2304；runner与缓存配置也不同，不能视为严格加速对照，最终放弃。</p>
<p dir="auto"><strong>目前保留无MTP的128K＋视觉＋缓存方案，DSH和公网接口均已接通。单流约3K上下文TG为29 tok/s，多会话主要依靠前缀缓存减少重复处理。</strong></p>
<p dir="auto">以上均为短期实测：128K验证的是容量，不是长期稳定性或长上下文语义能力。</p>
]]></description><link>https://lcz.me/topic/1498</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 22:53:36 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1498.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Sep 2026 03:31:14 GMT</pubDate><ttl>60</ttl></channel></rss>