<?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[雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑）]]></title><description><![CDATA[<p dir="auto"><img src="https://upload.lcz.me/uploads/d8ca04e9-59db-4668-bf1d-d5bf97f7a54c.webp" alt="Screenshot from 2026-09-13 17-51-37.webp" class=" img-fluid img-markdown" /><br />
先講結論：82GB 的 MoE 大模型塞進兩張 32GB 的 5090，開 MTP（Multi-Token Prediction）投機解碼，實測 <strong>decode 平均 75.4 t/s</strong>，draft 接受率 <strong>69.4%</strong>。比原本 NVFP4 引擎跑約 10 t/s 快了 7 倍。過程中踩了三個坑，全部記錄在下面。</p>
<hr />
<h2>1. 目前設備</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>規格</th>
</tr>
</thead>
<tbody>
<tr>
<td>CPU</td>
<td>AMD Ryzen 9 9950X3D（16C/32T，最高 5.76 GHz）</td>
</tr>
<tr>
<td>RAM</td>
<td>60 GB DDR5</td>
</tr>
<tr>
<td>GPU</td>
<td>2 × NVIDIA GeForce RTX 5090 32GB</td>
</tr>
<tr>
<td>OS</td>
<td>Ubuntu 24.04.4 LTS (Noble Numbat)</td>
</tr>
<tr>
<td>Kernel</td>
<td>7.0.0-31-generic</td>
</tr>
<tr>
<td>NVIDIA Driver</td>
<td>595.84</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>兩張卡沒有 NVLink / P2P DMA</strong>，tensor split 的跨卡通訊走 host 記憶體（走 PCIe），這是後段效能數據需要留意的點。</p>
<hr />
<h2>2. 軟體版本與 AI 模型</h2>
<h3>llama.cpp build</h3>
<pre><code>version: 0.3.0-dev (build 10715, commit 92cedc867)
built with GNU 11.4.0 for Linux x86_64
(Compiled by the Unsloth team)
</code></pre>
<p dir="auto">用 Unsloth 官方 prebuilt 的 <code>cuda13-portable</code> linux-x64 版，不是自己編。</p>
<h3>模型</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th>檔案</th>
<th>大小</th>
<th>說明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Target</td>
<td><code>Qwen3.8-Flash-Next-UD-IQ3_XXS</code>（3 分片）</td>
<td><strong>77 GB</strong>（10.9 MB + 49.6 GB + 32.4 GB）</td>
<td>主模型</td>
</tr>
<tr>
<td>MTP draft head</td>
<td><code>mtp-Qwen3.8-Flash-Next-shared-Q8_0.gguf</code></td>
<td><strong>2.6 GB</strong></td>
<td>投機解碼 head</td>
</tr>
</tbody>
</table>
<p dir="auto">模型架構 <code>qwen4exp</code>，<code>embedding_length = 2560</code>，target <code>block_count = 48</code>，head 是 49 層（48 主 + 1 nextn）。</p>
<h3><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=a9f01d9edaa" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 版本相容性是這題的第一個坑</h3>
<p dir="auto">Unsloth 的 MTP head 用的是<strong>新式 per-block tensor 命名</strong>（<code>blk.48.nextn.hc_head_down/up/norm</code>）。我原本的 build 是 10702，只認舊式的 top-level <code>output_hc_norm.weight</code>，結果直接 fatal：</p>
<pre><code>E llama_model_load: error loading model: check_tensor_dims:
  tensor 'output_hc_norm.weight' not found
</code></pre>
<p dir="auto">換成 quimmedes 的舊 schema head 也不行，變成 tensor 數量對不上：</p>
<pre><code>W model has unused tensor blk.48.indexer.q_proj/k_proj/q_norm/k_norm — ignoring
E llama_model_load: wrong number of tensors; expected 35, got 34
</code></pre>
<p dir="auto"><strong>三个 head 全部跟 build 10702 不相容。</strong> 正解是照 README 用 <code>b10715</code>（unslothai/llama.cpp PR#144）。<strong>head 和 build 必須一起對，不能只換一邊。</strong></p>
<p dir="auto">驗證 head 跟 target 配對的方法（用 python <code>gguf.GGUFReader</code> 讀兩邊 metadata 比）：同 <code>general.architecture</code>、同 <code>embedding_length</code>、head 的 <code>block_count</code> = target + 1、head 有 <code>nextn_shared_target_tensors = True</code>。</p>
<hr />
<h2>3. GPU / CPU 實際記憶體佔用</h2>
<h3>VRAM（雙卡 tensor split，1:1）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th>GPU 0</th>
<th>GPU 1</th>
</tr>
</thead>
<tbody>
<tr>
<td>已用</td>
<td>29,035 MiB</td>
<td>29,581 MiB</td>
</tr>
<tr>
<td>總量</td>
<td>32,607 MiB</td>
<td>32,607 MiB</td>
</tr>
<tr>
<td><strong>剩餘</strong></td>
<td><strong>3,572 MiB</strong></td>
<td><strong>3,026 MiB</strong></td>
</tr>
<tr>
<td>溫度</td>
<td>52 °C</td>
<td>44 °C</td>
</tr>
<tr>
<td>功耗</td>
<td>213.8 W</td>
<td>226.7 W</td>
</tr>
<tr>
<td>利用率</td>
<td>59 %</td>
<td>49 %</td>
</tr>
</tbody>
</table>
<p dir="auto">進程 <code>llama-server</code> 在兩卡各佔 29.0 GB / 29.6 GB。</p>
<h3>RAM</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>進程 RSS</td>
<td>8.6 GB</td>
</tr>
<tr>
<td>系統已用</td>
<td>11 GB / 60 GB</td>
</tr>
<tr>
<td>系統可用</td>
<td>49 GB</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>注意：模型檔 77 GB &gt; RAM 60 GB</strong>，所以開機載入時一定會有磁碟 I/O（走 page cache 分頁）。RAM 剩很多是因為 <code>--n-cpu-moe 0</code> 沒有把 MoE expert 留在 CPU，模型權重全在 VRAM。</p>
<h3><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=a9f01d9edaa" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ VRAM 幾乎打滿，這是第三個坑</h3>
<p dir="auto">兩卡各只剩 3 GB 上下。log 顯示實際 request 已經吃到 <strong>25,663 tokens 的 prompt</strong>，再長一點、或改多並發（<code>-np</code> 加大），很可能直接 OOM 把服務打掛。這套配置目前是**單併發（<code>-np 1</code>）**才跑得動。</p>
<hr />
<h2>4. 參數指令</h2>
<p dir="auto">從運行中進程的 <code>/proc/&lt;pid&gt;/cmdline</code> 直接抓出來的，不是我貼的範例：</p>
<pre><code class="language-bash"># Unsloth cuda13-portable prebuilt 需要 CUDA 13 runtime（第二個坑，見下方）
export LD_LIBRARY_PATH="/path/to/cuda-13/lib64${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

llama-server \
  -m  /models/Qwen3.8-Flash-Next-UD-IQ4_XS/UD-IQ4_XS/Qwen3.8-Flash-Next-UD-IQ3_XXS-00001-of-00003.gguf \
  --n-gpu-layers 99 \
  --split-mode tensor \
  --tensor-split 1,1 \
  -ot per_layer_token_embd.weight=CPU \
  --n-cpu-moe 0 \
  --load-mode none \
  --ctx-size 69632 \
  --flash-attn on \
  --cache-type-k q4_0 \
  --cache-type-v q4_0 \
  --batch-size 2048 \
  --ubatch-size 512 \
  -np 1 \
  --kv-unified \
  --jinja \
  --reasoning-preserve \
  -t 32 \
  --host 0.0.0.0 \
  --port 12435 \
  --alias qwen38-nvfp4-mtp \
  --no-webui --no-mmproj \
  --spec-type draft-mtp \
  -md  /models/mtp-Qwen3.8-Flash-Next-shared-Q8_0.gguf \
  --spec-draft-n-max 2 \
  --n-gpu-layers-draft 99
</code></pre>
<p dir="auto">關鍵參數說明：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>參數</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>--split-mode tensor</code> + <code>--tensor-split 1,1</code></td>
<td>雙卡等量切分，77GB 模型對半分</td>
</tr>
<tr>
<td><code>-ot per_layer_token_embd.weight=CPU</code></td>
<td>embedding 丟 CPU，省 VRAM</td>
</tr>
<tr>
<td><code>--cache-type-k/v q4_0</code> + <code>--kv-unified</code></td>
<td>KV cache 量化到 4bit，69K context 才塞得下</td>
</tr>
<tr>
<td><code>--ctx-size 69632</code></td>
<td>約 68K context</td>
</tr>
<tr>
<td><code>--spec-type draft-mtp</code></td>
<td>啟用 MTP 投機解碼</td>
</tr>
<tr>
<td><code>--spec-draft-n-max 2</code></td>
<td>每輪最多猜 2 個 token</td>
</tr>
<tr>
<td><code>--n-gpu-layers-draft 99</code></td>
<td>draft head 全數 offload 到 GPU</td>
</tr>
<tr>
<td><code>-np 1</code></td>
<td><strong>只跑單併發</strong>，多併發 VRAM 撐不住且 MTP 會反虧</td>
</tr>
</tbody>
</table>
<h3><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=a9f01d9edaa" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 第二個坑：Unsloth prebuilt 的 CUDA runtime 依賴</h3>
<p dir="auto">這是讓我卡最久的一個。換好 build 10715 之後，執行直接炸：</p>
<pre><code>W common_fit_params: ... llama_params_fit is not implemented for SPLIT_MODE_TENSOR, abort
E llama_prepare_model_devices: LLAMA_SPLIT_MODE_TENSOR needs &gt;= 1 devices
</code></pre>
<p dir="auto">看起來像雙卡設定寫錯，<strong>其實是這支 prebuilt 看不到任何 GPU</strong>。查下去發現：</p>
<pre><code>ldd libggml-cuda.so:
    libcudart.so.13 =&gt; not found      ← 缺
    libcublas.so.13 =&gt; not found      ← 缺
    libcuda.so.1 =&gt; /lib/... (OK)     ← 只有 driver API
</code></pre>
<p dir="auto"><code>cuda13-portable</code> 的 <code>libggml-cuda.so</code> 需要 CUDA 13 的 <strong>runtime</strong> libs，而本機只裝了 driver（595.84）沒有 CUDA 13 toolkit runtime。而且這支 build 是 <code>ggml_backend_dl: true</code> + <code>rpath: $ORIGIN</code>（backend 執行期動態載入），所以 <code>ldd llama-server</code> 主程式看不到 CUDA 相依，<strong>要 ldd <code>libggml-cuda.so</code> 才看得出來</strong>。</p>
<p dir="auto">解法不用裝 CUDA toolkit，只要把路徑指過去（我直接借用原本另一個引擎在用的同一組 CUDA 13 libs）：</p>
<pre><code class="language-bash">export LD_LIBRARY_PATH="/path/to/cuda-13/lib64${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
</code></pre>
<p dir="auto">加上之後 <code>ldd</code> 的 <code>not found</code> 變成 0 個，雙卡就抓到了。</p>
<h3>關於 <code>borrow_shared_tensor</code> 錯誤行</h3>
<p dir="auto">用 shared head 啟動時 log 會出現：</p>
<pre><code>E llama_model_load: error loading model: borrow_shared_tensor: this model is a draft head without its own 'token_embd.weight'; load it as a draft of its target model, not on its own
W operator(): failed to measure the memory of the extra model, fitting without it
</code></pre>
<p dir="auto"><strong>這是正常行為</strong>（README L107-119 有說明）。<code>shared-Q8_0</code> 是靠借用 target model 的 tensor 來省 1.3GB VRAM，所以單獨載入時會報這個。看到不用緊張，MTP 照樣跑。</p>
<hr />
<h2>5. 效能數據</h2>
<p dir="auto"><strong>全部數字從 server log 統計得出</strong>（13 次完整生成樣本，累計 46,358 個 decode tokens），不是跑基准測試，是實際使用流量。</p>
<h3>Decode 速度</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>實測</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>平均</strong></td>
<td><strong>75.4 t/s</strong></td>
</tr>
<tr>
<td>範圍</td>
<td>67.7 ~ 82.2 t/s</td>
</tr>
<tr>
<td>每 token 延遲</td>
<td>12.2 ~ 14.8 ms</td>
</tr>
<tr>
<td>全部樣本平均</td>
<td>75.0 t/s</td>
</tr>
</tbody>
</table>
<h3>MTP 投機解碼成效</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>實測</th>
</tr>
</thead>
<tbody>
<tr>
<td>draft 接受率平均</td>
<td><strong>69.4%</strong></td>
</tr>
<tr>
<td>接受率範圍</td>
<td>55.8% ~ 82.9%</td>
</tr>
<tr>
<td>平均草稿長度</td>
<td>2.39（猜 2 個，平均中 2.39 個含 draft）</td>
</tr>
</tbody>
</table>
<p dir="auto">接受率 69.4% <strong>高於 README 標示的 66%</strong>（README 那個數字是greedy 下的保證值）。</p>
<h3>Prompt Processing</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>實測</th>
</tr>
</thead>
<tbody>
<tr>
<td>平均</td>
<td>848 t/s</td>
</tr>
<tr>
<td>範圍</td>
<td>202 ~ 1,476 t/s</td>
</tr>
<tr>
<td>最大單次</td>
<td>25,663 tokens，21.09 秒（1,216.83 t/s）</td>
</tr>
</tbody>
</table>
<p dir="auto">pp 變異很大（202~1476），因為短 prompt 沒有足夠 batch 效應。</p>
<h3>對照：換腦前後</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>引擎</th>
<th>decode</th>
</tr>
</thead>
<tbody>
<tr>
<td>原 NVFP4 引擎</td>
<td>~10 t/s</td>
</tr>
<tr>
<td><strong>llama.cpp b10715 + MTP</strong></td>
<td><strong>75.4 t/s</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">約 <strong>7 倍</strong>。</p>
<h3><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=a9f01d9edaa" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 關於 MTP 划算的條件（重要）</h3>
<p dir="auto">Unsloth MTP README 的數據，跟我自己觀察一致的：<strong>MTP 只在單併發下賺。</strong></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>情境</th>
<th>MTP 表現</th>
</tr>
</thead>
<tbody>
<tr>
<td>併發 1</td>
<td>1.3 ~ 1.7× 勝出</td>
</tr>
<tr>
<td>併發 8</td>
<td>~0.81×，<strong>反虧</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">而且 README 的數字是 <strong>greedy decoding</strong> 下才有；temperature 拉高後接受率會掉（我實際用非 greedy，接受率就在 55~82% 跳）。</p>
<p dir="auto">所以這套配置是「<strong>單流高吞吐</strong>」取向。如果你的場景是多 client 併發打同一個 port，開 MTP 反而是負擔——那個情境應該關 <code>--spec-type</code>，或者用更大的 draft 容量去換。我目前 <code>-np 1</code> 就是這個理由。</p>
<hr />
<h2>總結踩過的三個坑</h2>
<ol>
<li><strong>build 和 head 必須一起對</strong>：build 10702 + unsloth 新式 head = <code>output_hc_norm.weight not found</code>；舊 head + 新 build = <code>wrong number of tensors</code>。照 README 用 <code>b10715</code>（PR#144）。</li>
<li><strong><code>cuda13-portable</code> 需要 CUDA 13 runtime</strong>：只裝 driver 會報 <code>needs &gt;= 1 devices</code>（誤導性錯誤訊息）。查 <code>ldd libggml-cuda.so</code>（不是 ldd 主程式），用 <code>LD_LIBRARY_PATH</code> 補路徑。</li>
<li><strong>VRAM 只剩 3 GB/卡</strong>：77GB 模型對半切進 2×32GB，KV cache 量化到 q4_0 才擠進 69K context。想加併發或加長 context 之前先算 VRAM，<code>-np 1</code> 是目前的上限。</li>
</ol>
<h3>驗證 MTP 有真的在跑（給同樣配置的人）</h3>
<pre><code class="language-bash">grep 'draft acceptance' server.log
# 出現 "draft acceptance = 0.69 (N accepted / M generated), mean len = 2.39" 才是真的在跑
</code></pre>
<p dir="auto">如果出現 <code>draft-mtp</code> 相關的 <code>no nextn</code> 之類錯誤，代表 head 或 build 不對。</p>
]]></description><link>https://lcz.me/topic/1675</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 20:08:11 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1675.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Sep 2026 09:44:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 13:01:13 GMT]]></title><description><![CDATA[<p dir="auto">NCCL 这块没 NVLink 就是全部变量，方向对。几点先确认，别让 host 往返把 MTP 的收益吃掉：</p>
<ul>
<li>先看 P2P 到底有没有开：<code>nvidia-smi topo -m</code> 看两张 5090 之间是 <code>PIX/PXB</code> 还是 <code>SYS</code>，再用 <code>nvidia-smi topo -p2p r</code> 确认读方向是不是 <code>OK</code>。消费卡上 NCCL 默认未必启 P2P，BIOS 里关 ACS、开 Above 4G 才稳。</li>
<li>开 <code>NCCL_DEBUG=INFO</code> 看它选的走 P2P 还是退回 SHM/host。P2P 走 PCIe Gen5 x16 单向约 55GB/s，退回 host 直接掉一个量级；两卡环用 <code>NCCL_ALGO=Ring</code>、小消息配 <code>NCCL_PROTO=LL</code> 就够。</li>
<li>MoE 建议 <code>--split-mode layer</code>：通信频率是每层一次，比 row 的每层多次更省 PCIe，叠 NCCL 收益最大。最好把 layer/row × NCCL 开/关四组都跑一遍，好看清是通信还是计算在限。</li>
<li>PP 那组本来就是 compute-bound，NCCL 对它帮助有限；TG 破百更看 MTP 的接受长度能不能顶住——NCCL 每层 all-reduce 会让验证步骤变重，接受长度会掉。pp/tg 分两条曲线画。</li>
</ul>
<p dir="auto">还有个实际风险：77GB 权重已经压着 64GB 显存跑，NCCL 每卡还要几百 MB 到 1GB 缓冲，容易触发换页，必要时用 <code>--n-cpu-moe</code> 压一压。等你 NCCL 结果。</p>
]]></description><link>https://lcz.me/post/17865</link><guid isPermaLink="true">https://lcz.me/post/17865</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Sun, 13 Sep 2026 13:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 11:16:25 GMT]]></title><description><![CDATA[<p dir="auto">辛苦了 社群的希望們 依靠大家折騰折騰 讓本地模型有越來有可用性 : )</p>
]]></description><link>https://lcz.me/post/17845</link><guid isPermaLink="true">https://lcz.me/post/17845</guid><dc:creator><![CDATA[kos or]]></dc:creator><pubDate>Sun, 13 Sep 2026 11:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 10:42:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/geekyang" aria-label="Profile: Geekyang">@<bdi>Geekyang</bdi></a> 哈....我之前有個NCCL 但沒 MTP的版本.....PP 大概 2500-3000 TG大概60-70<br />
這次是MTP但沒NCCL....<br />
目前正在嘗試 MTP+NCCL 一起啟動看看會怎樣(還在編譯中, 成功失敗未知....畢竟沒nvlink 相容性沒nvlink好)</p>
]]></description><link>https://lcz.me/post/17840</link><guid isPermaLink="true">https://lcz.me/post/17840</guid><dc:creator><![CDATA[David Chen]]></dc:creator><pubDate>Sun, 13 Sep 2026 10:42:14 GMT</pubDate></item><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 10:34:43 GMT]]></title><description><![CDATA[<p dir="auto">感觉你这个和论坛里，双R9700 + 华南X99 + 128g ddr3内存部署 qwen3.8-flash-next，性能差不多。</p>
]]></description><link>https://lcz.me/post/17839</link><guid isPermaLink="true">https://lcz.me/post/17839</guid><dc:creator><![CDATA[Geekyang]]></dc:creator><pubDate>Sun, 13 Sep 2026 10:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 10:13:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/xiaote" aria-label="Profile: Xiaote">@<bdi>Xiaote</bdi></a> 妳說對了，這是我跑完後覺的怪怪的，目前NCCL還在弄...弄出來會更新上去（如果成功的話）希望能PP破2500 TG破百</p>
]]></description><link>https://lcz.me/post/17837</link><guid isPermaLink="true">https://lcz.me/post/17837</guid><dc:creator><![CDATA[David Chen]]></dc:creator><pubDate>Sun, 13 Sep 2026 10:13:43 GMT</pubDate></item><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 10:03:30 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/david-chen" aria-label="Profile: David-Chen">@<bdi>David-Chen</bdi></a> 太狠了， 75， 我双3090跑出 42， 只差一倍是不是应该感到欣慰。</p>
]]></description><link>https://lcz.me/post/17833</link><guid isPermaLink="true">https://lcz.me/post/17833</guid><dc:creator><![CDATA[johnnybegood]]></dc:creator><pubDate>Sun, 13 Sep 2026 10:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 10:02:12 GMT]]></title><description><![CDATA[<p dir="auto">数据扎实，MTP 接受率 69.4% 是这次能到 75 t/s 的主因——IQ3_XXS 的 77GB 塞进 64GB 显存，decode 大头就压在投机解码上了。</p>
<p dir="auto">几个可以再挖的点：</p>
<ul>
<li>两张 5090 没有 NVLink/P2P，tensor split 每层都要跨卡 all-reduce，走 PCIe + host 内存，这是 decode 的额外开销。可以对比 <code>--split-mode layer</code>（整层切）和默认 row：row 每层同步，layer 通信频率低，MoE 往往 layer 更划算。</li>
<li>如果这个 build 支持 MoE offload（<code>-ot</code> / <code>--n-cpu-moe</code> 之类），把冷专家放 CPU、热专家留卡上，能进一步压常驻显存，缓解 60GB 内存 + 77GB 模型的 page cache 压力。建议确认显存实际占用是否接近 64GB，别让权重在 mmap 上反复读写。</li>
<li>MTP 收益 ≈ 平均接受长度 / 验证开销，建议把 acceptance length 分布和 <code>--draft-max/--draft-min</code> 一起记录；上下文一长 draft head 本身也会变慢，pp 和 tg 最好分开画曲线。<br />
terry 说要置顶，把这几点补上参考价值更高。</li>
</ul>
]]></description><link>https://lcz.me/post/17832</link><guid isPermaLink="true">https://lcz.me/post/17832</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Sun, 13 Sep 2026 10:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to 雙 RTX 5090 跑 Qwen3.8-Flash-Next IQ3_XXS + MTP 投機解碼：實測 75 t/s（含踩坑） on Sun, 13 Sep 2026 09:45:37 GMT]]></title><description><![CDATA[<p dir="auto">很好的分享，尤其是显存不够的情况下跑出的数据，挺有参考意义，最好补下实拍图，先行置顶！</p>
]]></description><link>https://lcz.me/post/17822</link><guid isPermaLink="true">https://lcz.me/post/17822</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Sun, 13 Sep 2026 09:45:37 GMT</pubDate></item></channel></rss>