<?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[ROCmFP4搭配DFlash2演進實測（AMD AI Max+395）]]></title><description><![CDATA[<p dir="auto">繼下午分享幾個實測包含<a href="https://lcz.me/topic/1578">SGLang</a>與<a href="https://lcz.me/topic/1576/9">Llama.cpp的ROCmFP4</a>的配置<br />
小弟繼續操這台迷你主機 能想到的方法都上<br />
前幾天搞ROCmFP4的優化框架與模型我是滿意的，但當時用的是mtp解碼，其實那個版本沒上DFlash2<br />
現在開幹給兄弟們找樂子，適用於所有RDNA3以後的架構(RDNA2的卡我手上沒有，無法告知有沒有用)</p>
<hr />
<h1>ROCmFP4 搭配 DFlash2 演進實測指南（AMD Strix Halo gfx1151）</h1>
<blockquote>
<p dir="auto"><strong>實測日期</strong>：2026-09-09<br />
<strong>測試主機</strong>：FEVM FAEX1（Ryzen AI Max+ 395 / Nobara 44 / ROCm 7.2.4）<br />
<strong>核心結論</strong>：<strong>DFlash2 全面取代 MTP</strong>。生成吞吐打平微幅領先、推測接受率更高、預填充（Prefill）長短兩端全勝、Draft 權重體積縮減 500 MB，且長文本深度無衰減。Preset 已平滑切換，可直接套用。</p>
</blockquote>
<hr />
<h2>1. 軟硬體環境與模型規格</h2>
<h3>1.1 主機硬體與系統配置</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>規格參數</th>
<th>備註與說明</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>APU</strong></td>
<td>AMD Ryzen AI Max+ 395</td>
<td><code>gfx1151</code>，32 線程</td>
</tr>
<tr>
<td><strong>統一記憶體（UMA）</strong></td>
<td>68.7 GB（實用約 58～62 GB）</td>
<td>依賴 UMA 直通，全層完全卸載至顯存</td>
</tr>
<tr>
<td><strong>系統碟</strong></td>
<td>NVMe 0 (<code>nvme0n1</code>)</td>
<td>Toshiba KXG6 1 TB，PCIe <strong>Gen3 x4</strong>（系統與 <code>/home</code>）</td>
</tr>
<tr>
<td><strong>資料碟</strong></td>
<td>NVMe 1 (<code>nvme1n1</code>)</td>
<td>Kingston Renegade 2 TB，PCIe <strong>Gen4 x4</strong>，掛載於 <code>/mnt/nvme-data</code>（權重放置處）</td>
</tr>
<tr>
<td><strong>OS / Kernel</strong></td>
<td>Nobara Linux 44（Fedora 系）</td>
<td>核心版本：<code>7.1.4-200.nobara.fc44</code></td>
</tr>
<tr>
<td><strong>ROCm 運行庫</strong></td>
<td>ROCm 7.2.4</td>
<td>必要環境變數：<code>HSA_OVERRIDE_GFX_VERSION=11.5.1</code> <code>GGML_HIP_ENABLE_UNIFIED_MEMORY=1</code></td>
</tr>
</tbody>
</table>
<hr />
<h3>1.2 推論框架：ROCmFPX 分支llama.cpp（原 charlie12345 / 官方線）</h3>
<p dir="auto">標準 Stock llama.cpp 無法識別 ROCmFP4 格式（GGML Type 100–106），必須採用專屬 Fork 分支編譯：</p>
<pre><code class="language-bash"># 取得 ROCmFPX 源碼並編譯
git clone https://github.com/ROCmFPX/ROCmFPX.git /mnt/nvme-data/ROCmFPX
cd /mnt/nvme-data/ROCmFPX
export PATH=/opt/rocm-7.2.4/bin:$PATH
export HIP_PATH=/opt/rocm-7.2.4

bash scripts/build-strix-rocmfp4-mtp.sh
# 編譯產物：build-strix-rocmfp4/bin/llama-server
# 具備 HIP + Vulkan 雙後端，32 核心耗時約 30～60 分鐘

</code></pre>
<blockquote>
<p dir="auto"><strong>分支特性解構</strong>：針對 AMD RDNA 3.5 架構深度客製。內建手寫 HIP Dequant 算子、<code>gfx1151</code> 原生 INT4（IU4）指令對齊、修復 MTP 崩潰問題、整合 TurboQuant KV 傳輸路徑，並對 Agent 任務進行敏感層（Embedding / Attention）位元保留。</p>
</blockquote>
<hr />
<h3>1.3 測試模型權重清單</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>檔案名稱</th>
<th>容量</th>
<th>來源倉庫</th>
<th>角色說明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Qwen3.8-27B-Q4_0_ROCMFP4_STRIX.gguf</code></td>
<td>13.75 GB</td>
<td><code>kingjones777/Qwen3.8-27B-ROCmFP4-STRIX-MTP-GGUF</code></td>
<td>主模型（專用 FP4 矩陣）</td>
</tr>
<tr>
<td><code>mtp-Qwen3.8-27B-Q4_0.gguf</code></td>
<td>1.60 GB</td>
<td>同上</td>
<td>原 MTP Draft Head（<strong>正式退役</strong>）</td>
</tr>
<tr>
<td><code>Qwen3.8-27B-DFlash2-Q4_K_M.gguf</code></td>
<td><strong>1.10 GB</strong></td>
<td><code>z-lab/Qwen3.8-27B-DFlash2-GGUF</code></td>
<td><strong>DFlash2 Draft（本次升級核心）</strong></td>
</tr>
<tr>
<td><code>mmproj-Qwen3.8-27B-F16.gguf</code></td>
<td>885 MB</td>
<td><code>unsloth/Qwen3.8-27B-GGUF</code>（原檔更名）</td>
<td>多模態 Vision 投影層</td>
</tr>
</tbody>
</table>
<pre><code class="language-bash"># 下載官方 DFlash2 草稿模型
hf download z-lab/Qwen3.8-27B-DFlash2-GGUF \
  --include 'Qwen3.8-27B-DFlash2-Q4_K_M.gguf' \
  --local-dir /mnt/nvme-data/models/

</code></pre>
<hr />
<h2>2. DFlash2 整合與部署</h2>
<h3>2.1 框架支援度驗證（無需重新編譯）</h3>
<p dir="auto">DFlash2 於 upstream PR #27342（2026-08-27，<code>b10f9ca58</code>）正式併入，ROCmFPX 最新 HEAD 已自動繼承。可透過以下兩步驟驗證二進位檔支援性：</p>
<pre><code class="language-bash"># 1. 驗證源碼提交紀錄
git -C /mnt/nvme-data/ROCmFPX merge-base --is-ancestor b10f9ca58 HEAD &amp;&amp; echo "IN-HEAD"

# 2. 驗證 llama-server 支援選項
export LD_LIBRARY_PATH=/mnt/nvme-data/ROCmFPX/build-strix-rocmfp4/bin:/opt/rocm-7.2.4/lib
/mnt/nvme-data/ROCmFPX/build-strix-rocmfp4/bin/llama-server --help | grep spec-type
# 輸出選單中若包含 draft-dflash 即表示完整支援

</code></pre>
<ul>
<li>8 月底建置之 Binary 已包含此功能，無須重跑編譯。</li>
<li>僅在 Fork 長期落後 upstream 或 HIP 底層 Kernel 更新時才需執行 <code>git pull</code> 重新編譯。</li>
</ul>
<hr />
<h3>2.2 機制特性：DFlash2 vs. MTP</h3>
<ul>
<li><strong>機制原理</strong>：MTP 為傳統序列推測（一次預測單一前進方向）；DFlash2 採用 <strong>Block-Diffusion Drafter</strong>，利用小型擴散結構一次預測一整組 Token 區塊。</li>
<li><strong>部署需求</strong>：需要加掛專屬 Draft 權重（1.1 GB），透過指定 <code>--spec-type draft-dflash</code> 與 <code>--model-draft</code> 即可啟用。</li>
</ul>
<hr />
<h3>2.3 啟動命令與參數配置</h3>
<pre><code class="language-bash">#!/usr/bin/env bash
export LD_LIBRARY_PATH=/mnt/nvme-data/ROCmFPX/build-strix-rocmfp4/bin:/opt/rocm-7.2.4/lib
export HSA_OVERRIDE_GFX_VERSION=11.5.1
export GGML_HIP_ENABLE_UNIFIED_MEMORY=1

/mnt/nvme-data/ROCmFPX/build-strix-rocmfp4/bin/llama-server \
  -m /mnt/nvme-data/models/Qwen3.8-27B-Q4_0_ROCMFP4_STRIX.gguf \
  --mmproj /mnt/nvme-data/models/mmproj-Qwen3.8-27B-F16.gguf \
  --spec-type draft-dflash \
  --model-draft /mnt/nvme-data/models/Qwen3.8-27B-DFlash2-Q4_K_M.gguf \
  --spec-draft-n-max 4 \
  -ngl 99 -fa on -dio --jinja -fit off --parallel 1 -dev ROCm0 \
  -c 131072 --reasoning off --image-min-tokens 1024 -b 4096 -ub 2048 \
  --temp 0.4 --top-p 0.95 --top-k 20 --min-p 0.0 \
  --host 0.0.0.0 --port 8080

</code></pre>
<blockquote>
<p dir="auto"><strong>與 MTP 啟動參數差異</strong>：</p>
<ol>
<li>調整為 <code>--spec-type draft-dflash</code>。</li>
<li><code>--model-draft</code> 指向 DFlash2 權重檔。</li>
<li>移除 <code>--spec-draft-ngl</code>、<code>--spec-draft-n-min</code>、<code>--spec-draft-p-min</code>（DFlash2 算子不相容此類 MTP 專用標籤）。</li>
</ol>
</blockquote>
<hr />
<h3>2.4 Preset 設定檔</h3>
<pre><code class="language-ini">[qwen3.8-27b-rocmfp4]
model = /mnt/nvme-data/models/Qwen3.8-27B-Q4_0_ROCMFP4_STRIX.gguf
mmproj = /mnt/nvme-data/models/mmproj-Qwen3.8-27B-F16.gguf
spec-type = draft-dflash
model-draft = /mnt/nvme-data/models/Qwen3.8-27B-DFlash2-Q4_K_M.gguf
spec-draft-n-max = 4
c = 131072
load-on-startup = false

</code></pre>
<hr />
<h3>2.5 避坑導航（實戰經驗彙整）</h3>
<ul>
<li><strong>推測長度必須固定為 4</strong>：測試驗證 <code>spec-draft-n-max=4</code> 為最佳甜蜜點。在 <code>gfx1151</code> 架構下，設為 7 反而會引發排程反轉，32K 上下文時寬度 4 的表現領先寬度 7 達 29%。</li>
<li><strong>認明官方 Draft 來源</strong>：請務必選用 <code>z-lab</code> 官方倉庫；社群部分轉檔（如 <code>incoai</code> 版本）存在上游已知張量缺陷。</li>
<li><strong>Vision 多模態相容性</strong>：DFlash2 草稿路徑僅負責純文字推測，不走多模態張量；因此舊版 mmproj 仍可正常支援主模型的多模態辨識。</li>
<li><strong>多卡分散式限制</strong>：目前 DFlash2 在多 GPU 環境下仍存在已知 Issue；單顆 Strix Halo APU（全載 UMA）運作正常。</li>
<li><strong>嚴禁改走 Vulkan 後端</strong>：DFlash2 在 Vulkan 後端存在數值無效的 Bug（PR #27805 尚在合併中），Strix Halo 請維持 <code>-dev ROCm0</code>。</li>
</ul>
<hr />
<h2>3. 測試基準與實測方法</h2>
<ul>
<li><strong>Decode 測試</strong>：固定 Prompt（Fibonacci 矩陣快速冪，輸入 53 tokens），<code>max_tokens=250</code>，<code>temp=0.4</code>。連續測試 3 次取平均，推測接受率（Draft Acceptance）取自 Server 日誌。對照組為相同 Prompt 之 MTP 配置。</li>
<li><strong>Prefill 測試</strong>：標準英文填充文本放大至目標 Token 級距（2K～128K 共七階），<code>max_tokens=3</code>，統計 Wall-clock time 並換算 <code>usage.prompt_tokens</code>。</li>
<li><strong>Agentic 實戰測試</strong>：自研 ReAct 沙盒測試集（t1–t6：檢索、連鎖呼叫、狀態恢復、複雜除錯、惡意陷阱、長日誌診斷），工具調用與推測解碼全開。</li>
</ul>
<hr />
<h2>4. 效能對決：DFlash2 vs. MTP</h2>
<h3>4.1 Decode 吞吐與推測接受率（生成 250 Tokens）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>評測指標</th>
<th>DFlash2（n-max 4）</th>
<th>MTP（n-max 4）</th>
<th>差異分析</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>第 1 次輸出</strong></td>
<td><strong>45.7 tok/s</strong></td>
<td>45.3 tok/s</td>
<td>微幅勝出</td>
</tr>
<tr>
<td><strong>第 2 次輸出</strong></td>
<td><strong>46.8 tok/s</strong></td>
<td>—</td>
<td>穩定維持在 46+</td>
</tr>
<tr>
<td><strong>第 3 次輸出</strong></td>
<td><strong>45.8 tok/s</strong></td>
<td>—</td>
<td>波動極小</td>
</tr>
<tr>
<td><strong>平均驗證接受率</strong></td>
<td><strong>0.98</strong>（198/202，均長 4.88）</td>
<td>0.95～0.97</td>
<td>區塊推測命中率更高</td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto">短序列 Decode 表現持平微勝（約 +1%～3%），與社群外部測試趨勢一致（如 RTX 3090 上 DFlash2 62.2 vs. MTP 57.8，+7.6%）。</p>
</blockquote>
<hr />
<h3>4.2 Prefill 七階梯次吞吐測試</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>上下文級距</th>
<th>DFlash2 (tok/s)</th>
<th>MTP (tok/s)</th>
<th>增益幅度</th>
<th>運行分析</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>2K</strong></td>
<td><strong>315.6</strong></td>
<td>250.5</td>
<td><strong>+26%</strong></td>
<td>起步階段開銷低，顯存佔用減小</td>
</tr>
<tr>
<td><strong>4K</strong></td>
<td>319.2</td>
<td>317.2</td>
<td>持平</td>
<td>進入 GEMM 矩陣計算常態</td>
</tr>
<tr>
<td><strong>8K</strong></td>
<td>376.1</td>
<td>371.5</td>
<td>持平</td>
<td>算力單元逐步吃滿</td>
</tr>
<tr>
<td><strong>16K</strong></td>
<td><strong>431.6</strong></td>
<td>424.9</td>
<td>持平</td>
<td><strong>算力吞吐峰值區間</strong></td>
</tr>
<tr>
<td><strong>32K</strong></td>
<td><strong>415.8</strong></td>
<td>400.7</td>
<td>+4%</td>
<td>序列拉長，記憶體搬運負擔顯現</td>
</tr>
<tr>
<td><strong>64K</strong></td>
<td><strong>308.8</strong></td>
<td>277.1</td>
<td><strong>+11%</strong></td>
<td>循環狀態與 Attention 負擔加重</td>
</tr>
<tr>
<td><strong>128K</strong></td>
<td><strong>189.6</strong></td>
<td>150.9</td>
<td><strong>+26%</strong></td>
<td>深度長文本下，VRAM 釋放效益顯著</td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto"><strong>Prefill 增益來源</strong>：中段計算密集區（4K～16K）兩者皆受限於硬體密集計算，因此表現持平；兩端（極短 2K 與極長 128K）DFlash2 提速達 26%，主要受益於 Draft 權重較輕（1.1 GB vs. 1.6 GB），降低了 UMA 記憶體頻寬與排程壓力。</p>
</blockquote>
<hr />
<h3>4.3 長序列深度衰減表現（引用外部驗證數據）</h3>
<p dir="auto">以 <code>gfx1151</code> 測試基準為例，對比不同推測方案隨 Context 深度拉長之吞吐衰減趨勢：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>上下文深度</th>
<th>Base (無推測)</th>
<th>DFlash v1</th>
<th><strong>DFlash2 (n-max 4)</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>0（極短文本）</strong></td>
<td>11.81 tok/s</td>
<td>21.09 tok/s</td>
<td><strong>26.39 tok/s</strong></td>
</tr>
<tr>
<td><strong>8K</strong></td>
<td>11.44 tok/s</td>
<td>12.87 tok/s</td>
<td><strong>21.58 tok/s</strong></td>
</tr>
<tr>
<td><strong>32K</strong></td>
<td>10.54 tok/s</td>
<td>10.75 tok/s <em>(加成歸零)</em></td>
<td><strong>21.11 tok/s (持續保持 2x 加速)</strong></td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto"><strong>技術迭代本質</strong>：DFlash v1 在序列拉長至 32K 時推測命中率會徹底衰竭，吞吐退回至基準線；<strong>DFlash2 在全序列深度下皆能保持 2 倍左右的推測解碼增益</strong>，解決了長文本推理掉速的痛點。</p>
</blockquote>
<h1>5.AMD Strix Halo（gfx1151）跨框架推論實測全景總覽</h1>
<blockquote>
<p dir="auto"><strong>測試基準</strong>：AMD Ryzen AI Max+ 395（<code>gfx1151</code>，40 CU，32 執行緒）；UMA 總計 68.7 GB（BIOS Carve 固定）；模型統一為 Qwen3.8-27B。</p>
</blockquote>
<hr />
<h2>四大推論組態橫向規格對照</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>評測維度</th>
<th>1. Stock llama.cpp*(官方非 Fork 主線)*</th>
<th>2. ROCmFPX (MTP)<em>(專用 Fork 舊版)</em></th>
<th>3. ROCmFPX (DFlash2)<em>(專用 Fork 定案版)</em></th>
<th>4. SGLang*(GPTQ + Triton)*</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>底層運行核心</strong></td>
<td>原生 HIP Kernel</td>
<td>客製 HIP Dequant 算子*(對齊 RDNA 3.5 IU4)*</td>
<td>客製 HIP Dequant 算子*(對齊 RDNA 3.5 IU4)*</td>
<td>Python 獨立 venvAOT <code>sgl_kernel</code> + Triton</td>
</tr>
<tr>
<td><strong>支援模型格式</strong></td>
<td><strong>標準 Q4_K_M</strong>(~16.5 GB)</td>
<td><strong>Q4_0_ROCMFP4</strong>(13.75 GB)</td>
<td><strong>Q4_0_ROCMFP4</strong>(13.75 GB)</td>
<td><strong>GPTQ-Int4</strong>(~19 GB)</td>
</tr>
<tr>
<td><strong>推測解碼方案</strong></td>
<td>無（純自回歸）或標準 MTP Draft</td>
<td>MTP Draft Head(<code>mtp-Q4_0</code>, 1.6 GB)</td>
<td><strong>DFlash2 Block-Diffusion</strong>(<code>DFlash2-Q4_K_M</code>, <strong>1.1 GB</strong>)</td>
<td>EAGLE / MTP(靜態 5/4/8 樹狀推測)</td>
</tr>
<tr>
<td><strong>KV Cache 精度</strong></td>
<td>FP16</td>
<td>FP16</td>
<td>FP16</td>
<td><strong>FP8 (<code>fp8_e4m3</code>)</strong></td>
</tr>
<tr>
<td><strong>Prompt Cache</strong></td>
<td>Slot 環狀序列*(分叉即失效，依賴磁碟)*</td>
<td>Slot 環狀序列*(同左)*</td>
<td>Slot 環狀序列*(同左)*</td>
<td><strong>Radix Tree (基數樹)</strong><em>(跨 Session 秒級喚醒)</em></td>
</tr>
</tbody>
</table>
<hr />
<h3>5.1 單路與併發解碼吞吐（Decode）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>運行組態</th>
<th>單路 Decode 速率</th>
<th>4 路併發 Decode 總量</th>
<th>推測驗證接受率</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Stock llama.cpp (純自回歸)</strong></td>
<td>~19.0 tok/s</td>
<td>45 ～ 50 tok/s</td>
<td>N/A</td>
</tr>
<tr>
<td><strong>Stock llama.cpp (標準 MTP)</strong></td>
<td>24.0 tok/s</td>
<td>~50.0 tok/s</td>
<td>0.60 ～ 0.70</td>
</tr>
<tr>
<td><strong>SGLang (GPTQ + MTP)</strong></td>
<td>28.9 tok/s <em>(Code)</em>~21.0 tok/s <em>(常規)</em></td>
<td><strong>63.3 tok/s</strong></td>
<td>0.41 ～ 0.55 <em>(Accept Len ~4.5)</em></td>
</tr>
<tr>
<td><strong>ROCmFPX (MTP)</strong></td>
<td>40.8 ～ 41.7 tok/s</td>
<td>62.0 tok/s</td>
<td>0.95 ～ 0.97</td>
</tr>
<tr>
<td><strong>ROCmFPX (DFlash2)</strong></td>
<td><strong>45.7 ～ 46.8 tok/s</strong>*(全場最快)*</td>
<td>62.5 tok/s</td>
<td><strong>0.98</strong> <em>(均長 4.88)</em></td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto"><strong>記憶體頻寬天花板</strong>：4 路併發解碼下，所有框架總吞吐皆受制於 Strix Halo 實體 256-bit 頻寬物理極限，上限鎖死在 <strong>62 ～ 63 tok/s</strong>。</p>
</blockquote>
<hr />
<h3>5.3 預填充吞吐階梯（Prefill Sweep）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>上下文級距</th>
<th>Stock llama.cpp</th>
<th>SGLang (GPTQ)</th>
<th>ROCmFPX (MTP)</th>
<th>ROCmFPX (DFlash2)</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>2K</strong></td>
<td>~180.0 tok/s</td>
<td>369.7 tok/s</td>
<td>250.5 tok/s</td>
<td><strong>315.6 tok/s</strong></td>
</tr>
<tr>
<td><strong>4K</strong></td>
<td>~240.0 tok/s</td>
<td><strong>504.4 tok/s</strong> <em>(峰值)</em></td>
<td>317.2 tok/s</td>
<td>319.2 tok/s</td>
</tr>
<tr>
<td><strong>8K</strong></td>
<td>~230.0 tok/s</td>
<td>390.1 tok/s</td>
<td>371.5 tok/s</td>
<td><strong>376.1 tok/s</strong></td>
</tr>
<tr>
<td><strong>16K</strong></td>
<td>~200.0 tok/s</td>
<td>266.2 tok/s</td>
<td>424.9 tok/s</td>
<td><strong>431.6 tok/s</strong> <em>(峰值)</em></td>
</tr>
<tr>
<td><strong>32K</strong></td>
<td>~160.0 tok/s</td>
<td>140.2 tok/s</td>
<td>400.7 tok/s</td>
<td><strong>415.8 tok/s</strong></td>
</tr>
<tr>
<td><strong>64K</strong></td>
<td>~110.0 tok/s</td>
<td>112.6 tok/s</td>
<td>277.1 tok/s</td>
<td><strong>308.8 tok/s</strong></td>
</tr>
<tr>
<td><strong>128K</strong></td>
<td>嚴重溢出拖累</td>
<td>需靠 Cache 攤平</td>
<td>150.9 tok/s</td>
<td><strong>189.6 tok/s</strong> <em>(領先 26%)</em></td>
</tr>
</tbody>
</table>
<hr />
<h2>5.4 推論引擎架構特點與瓶頸分析</h2>
<pre><code>Prefill 性能特徵對比
Tokens/s
  600 |         [SGLang 4K: 504.4]
  500 |                 \
  400 |                  \   [DFlash2 16K: 431.6]
  300 |                   \       \________ [DFlash2 64K: 308.8]
  200 |    [Stock 4K: 240] \               \
  100 |                     \_______________\[SGLang 64K: 112.6]
    0 +---------------------------------------------------------
      0        16K       32K       48K       64K       80K      128K

</code></pre>
<ul>
<li>
<p dir="auto"><strong>Stock llama.cpp（非 Fork 主線）</strong>：</p>
</li>
<li>
<p dir="auto">運行標準 <code>Q4_K_M</code> 需承擔非對稱解包開銷，ALU 產生指令空泡，Prefill 峰值受限於 240 tok/s。</p>
</li>
<li>
<p dir="auto">逐字生成需多搬運約 3 GB 權重，純自回歸速度僅 19 tok/s。</p>
</li>
<li>
<p dir="auto"><strong>SGLang (GPTQ + FP8 KV)</strong>：</p>
</li>
<li>
<p dir="auto">Triton GEMM Kernel 在短序列（4K）能將算力完全打滿，Prefill 峰值達 504.4 tok/s。</p>
</li>
<li>
<p dir="auto">具備 Radix Tree 快取，6K 重複 Prompt 首字延遲自 17～68 秒降至約 1 秒。</p>
</li>
<li>
<p dir="auto">序列拉長至 64K 時受 Attention $O(N^2)$ 計算拖累，Prefill 速率下滑至 112.6 tok/s。</p>
</li>
<li>
<p dir="auto"><strong>ROCmFPX + DFlash2</strong>：</p>
</li>
<li>
<p dir="auto">採用對齊 RDNA 3.5 向量暫存器的對稱 FP4 算子，權重壓縮至 13.75 GB。</p>
</li>
<li>
<p dir="auto">結合 Block-Diffusion Drafter（1.1 GB Draft 檔），單路解碼達 45.7～46.8 tok/s。</p>
</li>
<li>
<p dir="auto">64K～128K 超長文本預填充表現最佳（128K 達 189.6 tok/s），在長序列深度下保持約 2 倍推測加速。</p>
</li>
</ul>
<hr />
<h2>6. 總結</h2>
<p dir="auto">DFlash2 在保持單路 Decode 峰值吞吐（~46 tok/s）的同時，實現了<strong>更高接受率、超長序列 Prefill 提速 26%、Draft 模型減重 500 MB、以及 32K+ 深度不衰減</strong>的全面優勢。</p>
<ul>
<li><strong>單人極限吞吐 / 超長文分析（&gt;32K）</strong>：選用 <strong>ROCmFPX + DFlash2</strong>。單路輸出達 46+ tok/s，64K Prefill 速率領先其他組態 2.1～2.8 倍。</li>
<li><strong>團隊高併發 / 多輪 Agent 工具調用</strong>：選用 <strong>SGLang (GPTQ)</strong>。依賴 Radix Tree 提示詞快取降低重覆 Prefill 開銷，搭配 Chunked Prefill 排程維持多路穩定響應。</li>
<li><strong>Stock llama.cpp（非 Fork）</strong>：作為官方上游基準測試使用，不建議在 Strix Halo 產線環境作為主力推論引擎。</li>
</ul>
<p dir="auto">我用這小玩具測試是為了拋磚引玉，歡迎擁有更大SRAM的RX7900XTX 或是R9700的來試</p>
]]></description><link>https://lcz.me/topic/1590</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 22:54:25 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1590.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Sep 2026 15:09:25 GMT</pubDate><ttl>60</ttl></channel></rss>