<?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[Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據]]></title><description><![CDATA[<p dir="auto">大家好，之前一直做CD-rom。這是我第一篇的文章。<br />
我今天測試了strata，以下是測試報告。</p>
<h2>一、測試環境</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>規格</th>
</tr>
</thead>
<tbody>
<tr>
<td>GPU</td>
<td><strong>NVIDIA RTX PRO 5000 72GB Blackwell</strong>（compute capability 12.0 / sm_120）</td>
</tr>
<tr>
<td>CPU</td>
<td>AMD Ryzen 9 9950X3D（16C/32T，AVX-512）</td>
</tr>
<tr>
<td>RAM</td>
<td>96 GB（實測可用 93.6 GB）DDR5</td>
</tr>
<tr>
<td>儲存</td>
<td>NVMe SSD（模型）</td>
</tr>
<tr>
<td>驅動</td>
<td>616.92（CUDA UMD 13.4）</td>
</tr>
<tr>
<td>OS</td>
<td>Windows 11</td>
</tr>
</tbody>
</table>
<hr />
<h2>二、安裝（完全不需要編譯）</h2>
<p dir="auto">用的是 <code>sergqwer/strata-nvfp4</code> 的 release bundle —— <strong>422 MB，已內嵌 CUDA 13.3 runtime + cuBLAS，不用裝 CUDA Toolkit</strong>：</p>
<pre><code class="language-bash"># 1. 下載 bundle（release zip 已含 strata.exe）
curl -sL -o bundle.zip https://github.com/sergqwer/strata-nvfp4/releases/download/v0.1.28-nvfp4.4/strata-nvfp4-v0.1.28-nvfp4.4-windows-x64.zip
python -c "import zipfile; zipfile.ZipFile('bundle.zip').extractall('.')"
cd strata-nvfp4

# 2. 一鍵準備模型（7 步，可斷點續跑）
cmd.exe /c prepare-model.cmd

# 3. 起 server
cmd.exe /c start-server.cmd
</code></pre>
<p dir="auto"><code>prepare-model.cmd</code> 會建立自己的 venv、下載 126 GB checkpoint、然後跑完 7 個轉換步驟：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>產出檔案</th>
<th style="text-align:right">大小</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>checkpoint\</code>（來源，可刪）</td>
<td style="text-align:right">126 GB</td>
</tr>
<tr>
<td><code>ple-fp8.gguf</code>（n-gram 表，FP8）</td>
<td style="text-align:right">48 GB</td>
</tr>
<tr>
<td><code>orca-nvfp4.gguf</code>（NVFP4 權重）</td>
<td style="text-align:right">69 GB</td>
</tr>
<tr>
<td><code>pack\experts.bin</code>（expert arena）</td>
<td style="text-align:right">64 GB</td>
</tr>
<tr>
<td><code>token-embd-bf16.gguf</code></td>
<td style="text-align:right">1.2 GB</td>
</tr>
<tr>
<td><code>mmproj-f32.gguf</code>（vision tower）</td>
<td style="text-align:right">1.7 GB</td>
</tr>
<tr>
<td><code>mtp\rt\experts.bin</code>（draft head）</td>
<td style="text-align:right">675 MB</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>126 GB 下載實測 43 分鐘</strong>（我這邊沒裝 <code>hf_xet</code>，fallback 到普通 HTTP）。完成後 <code>models\</code> 約 317 GB，其中 <code>checkpoint</code> 那 126 GB 可以刪掉。</p>
<h3>Large pages（建議開）</h3>
<pre><code class="language-bash">powershell -ExecutionPolicy Bypass -File tools\enable-large-pages.ps1   # 需要 admin
# 之後一定要登出再登入，或重新開機
</code></pre>
<blockquote>
<p dir="auto">小提醒：我第一次跑 <code>secedit</code> 回傳 exit 1 失敗，<strong>再跑一次就 exit 0 成功</strong>。看到 exit 1 就再執行一次。</p>
</blockquote>
<p dir="auto">效果：冷載入從 <strong>26.6s（4KB 分頁）降到 18.8s（2MB 大頁）</strong>。</p>
<hr />
<h2>三、實測數據</h2>
<h3>3.1 Decode / Prefill</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/d95b4572-338c-415c-adce-7285f055cc4a.jpeg" alt="image.jpeg" class="img-markdown  img-fluid" /></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Decode 場景</th>
<th style="text-align:right">結果</th>
</tr>
</thead>
<tbody>
<tr>
<td>短對話（冷）</td>
<td style="text-align:right">96.7 tok/s</td>
</tr>
<tr>
<td>穩定輸出 1000 tokens</td>
<td style="text-align:right">91.2 tok/s（10.96 ms/token）</td>
</tr>
<tr>
<td>~8K context</td>
<td style="text-align:right"><strong>112.9 tok/s</strong></td>
</tr>
<tr>
<td>~32K context</td>
<td style="text-align:right">107.5 tok/s</td>
</tr>
<tr>
<td>~80K context</td>
<td style="text-align:right">106.6 tok/s</td>
</tr>
</tbody>
<tbody>
<tr>
<td>Prefill</td>
<td style="text-align:right">結果</td>
</tr>
<tr>
<td>---</td>
<td style="text-align:right">---:</td>
</tr>
<tr>
<td>~8K</td>
<td style="text-align:right">3,531 – 4,087 tok/s</td>
</tr>
<tr>
<td>~32K</td>
<td style="text-align:right">4,417 – 5,069 tok/s</td>
</tr>
<tr>
<td>~80K</td>
<td style="text-align:right">4,429 – 5,074 tok/s</td>
</tr>
</tbody>
</table>
<p dir="auto">（官方在 RTX 5090 32GB + 128GB RAM 上測到約 115 tok/s，我這邊數字相當）</p>
<h3>3.2 資源佔用</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th>數值</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>VRAM</strong></td>
<td><strong>69.0 / 73.4 GB</strong></td>
</tr>
<tr>
<td>Expert cache</td>
<td><strong>21,278 slots / 54.79 GiB</strong></td>
</tr>
<tr>
<td>Expert cache 命中率</td>
<td><strong>98.3 – 99.9%</strong>（每個 request）</td>
</tr>
<tr>
<td>RAM</td>
<td>84.6 / 93.6 GB（63.28 GiB arena pinned）</td>
</tr>
<tr>
<td>Commit</td>
<td>155 / 189.6 GB</td>
</tr>
<tr>
<td>冷載入</td>
<td>18.8 秒（大頁）</td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto">對照：RTX 5090 32GB 只有 7,352 slots，這張卡有 <strong>21,278 slots（2.9×）</strong>。不過實際 decode 速度差不多——5090 的記憶體頻寬（GDDR7）抵銷了 cache 較小的劣勢。</p>
</blockquote>
<h3>3.3 長 context</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>prompt</th>
<th style="text-align:right">Prefill</th>
<th style="text-align:right">首 token</th>
<th style="text-align:right">Decode</th>
</tr>
</thead>
<tbody>
<tr>
<td>28,905 tok（~32K）</td>
<td style="text-align:right">4,685 tok/s</td>
<td style="text-align:right">6.2s</td>
<td style="text-align:right">66.4 tok/s</td>
</tr>
<tr>
<td>121,479 tok（~128K）</td>
<td style="text-align:right">4,231 tok/s</td>
<td style="text-align:right"><strong>28.7s</strong></td>
<td style="text-align:right">52.2 tok/s</td>
</tr>
<tr>
<td>235,870 tok（~250K）</td>
<td style="text-align:right">3,825 tok/s</td>
<td style="text-align:right">36.6s</td>
<td style="text-align:right">49.4 tok/s</td>
</tr>
</tbody>
</table>
<p dir="auto">上限 <code>--max-context 262144</code>。decode 會隨 context 變長而下降（66 → 52），因為每步都要讀完整 KV。</p>
<h3>3.4 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 並行 —— 這是單流引擎</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/b48f90d3-da90-44d4-8adb-699be348bf8d.jpeg" alt="image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>這點很多人在意，我實測了完整的 1→32 並行：</strong></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">同時 N 條</th>
<th style="text-align:right">總吞吐</th>
<th style="text-align:right">每條實際</th>
<th style="text-align:right">成功</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">1</td>
<td style="text-align:right">141 tok/s</td>
<td style="text-align:right"><strong>141</strong></td>
<td style="text-align:right">1/1</td>
</tr>
<tr>
<td style="text-align:right">2</td>
<td style="text-align:right">155</td>
<td style="text-align:right">77.5</td>
<td style="text-align:right">2/2</td>
</tr>
<tr>
<td style="text-align:right">4</td>
<td style="text-align:right">152</td>
<td style="text-align:right">38.1</td>
<td style="text-align:right">4/4</td>
</tr>
<tr>
<td style="text-align:right">8</td>
<td style="text-align:right">141</td>
<td style="text-align:right">17.7</td>
<td style="text-align:right">8/8</td>
</tr>
<tr>
<td style="text-align:right">16</td>
<td style="text-align:right">146</td>
<td style="text-align:right">9.1</td>
<td style="text-align:right">16/16</td>
</tr>
<tr>
<td style="text-align:right">32</td>
<td style="text-align:right">145</td>
<td style="text-align:right">4.5</td>
<td style="text-align:right">32/32</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>總吞吐一直維持在 ~145 tok/s，完全不隨並行數上升。</strong> 收多少 client 都可以（32/32 零錯誤），但<strong>一次只跑一條</strong>。</p>
<p dir="auto"><strong>證明是排隊而不是 batching</strong>：同時丟 3 個 128K prompt，完成時間是 <strong>29.6s / 58.2s / 86.8s</strong>——一個接一個。如果是 batched 會差不多時間一起完成。</p>
<blockquote>
<p dir="auto">我自己一開始量錯過：把每個 request 自報的 <code>decode_tok_s</code> 相加，得到「4 條 365 tok/s」的錯誤數字。正確做法是 wall-clock：總 output tokens ÷ 總 wall time。</p>
</blockquote>
<h3>3.5 Prefix cache —— 同一個 session 極快，兩個 session 互相沖掉</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/1ab3c4fd-d351-419d-a7ff-92c80ab8ffb2.jpeg" alt="image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>這是我覺得最值得分享的發現。</strong></p>
<p dir="auto">同一個 prompt 連送三次：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>次數</th>
<th style="text-align:right">耗時</th>
<th style="text-align:right">reused</th>
<th style="text-align:right">read</th>
</tr>
</thead>
<tbody>
<tr>
<td>1（冷）</td>
<td style="text-align:right">28.6s</td>
<td style="text-align:right">0</td>
<td style="text-align:right">123,738</td>
</tr>
<tr>
<td>2</td>
<td style="text-align:right"><strong>0.4s</strong></td>
<td style="text-align:right"><strong>123,731</strong></td>
<td style="text-align:right">7</td>
</tr>
<tr>
<td>3</td>
<td style="text-align:right"><strong>0.4s</strong></td>
<td style="text-align:right">123,731</td>
<td style="text-align:right">7</td>
</tr>
</tbody>
</table>
<p dir="auto">→ <strong>28.6s → 0.4s（71×）</strong>。Prefix cache 是有效的，而且很強。</p>
<p dir="auto"><strong>但是</strong>——A / B 兩個不同 session 交替時：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">步驟</th>
<th>agent</th>
<th style="text-align:right">耗時</th>
<th style="text-align:right">reused</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">1</td>
<td>A</td>
<td style="text-align:right">0.5s</td>
<td style="text-align:right">123,731</td>
</tr>
<tr>
<td style="text-align:right">2</td>
<td>A</td>
<td style="text-align:right">0.4s</td>
<td style="text-align:right">123,731</td>
</tr>
<tr>
<td style="text-align:right">3</td>
<td><strong>B</strong></td>
<td style="text-align:right"><strong>28.5s</strong></td>
<td style="text-align:right"><strong>0</strong></td>
</tr>
<tr>
<td style="text-align:right">4</td>
<td><strong>A</strong></td>
<td style="text-align:right"><strong>29.0s</strong></td>
<td style="text-align:right"><strong>0</strong></td>
</tr>
<tr>
<td style="text-align:right">5</td>
<td><strong>B</strong></td>
<td style="text-align:right"><strong>29.0s</strong></td>
<td style="text-align:right"><strong>0</strong></td>
</tr>
<tr>
<td style="text-align:right">6</td>
<td><strong>A</strong></td>
<td style="text-align:right"><strong>29.1s</strong></td>
<td style="text-align:right"><strong>0</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">原因寫在 <code>serve/server.py</code> 開頭：</p>
<blockquote>
<p dir="auto"><em>"One sequence at a time behind a FIFO (plan: one resident sequence)"</em></p>
</blockquote>
<p dir="auto"><strong>只 cache 一個 resident sequence</strong>，所以 B 一插入就沖掉 A 的 cache。</p>
<p dir="auto">→ <strong>實務結論：跑兩個長 context 的 coding agent 時，兩邊每一輪都要重讀全部 context（~29s）。</strong> 不是「慢一半」，是兩邊都變慢 70 倍。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">context</th>
<th style="text-align:right">每輪 prefill（兩個 agent 交替）</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">130K</td>
<td style="text-align:right"><strong>~29s</strong></td>
</tr>
<tr>
<td style="text-align:right">60K</td>
<td style="text-align:right">~14s</td>
</tr>
<tr>
<td style="text-align:right">30K</td>
<td style="text-align:right">~7s</td>
</tr>
</tbody>
</table>
<h3>3.6 Vision（讀圖）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>圖片</th>
<th style="text-align:right">image tokens</th>
<th style="text-align:right">耗時</th>
<th>讀對？</th>
</tr>
</thead>
<tbody>
<tr>
<td>256×256</td>
<td style="text-align:right">66</td>
<td style="text-align:right">1.1s</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>1024×768</td>
<td style="text-align:right">770</td>
<td style="text-align:right">5.8s</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>1920×1080</td>
<td style="text-align:right">1,010</td>
<td style="text-align:right">8.1s</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>3840×2400</td>
<td style="text-align:right">1,002</td>
<td style="text-align:right">8.1s</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>image token 上限約 1,024/張</strong> → 4K 圖和 1080p 一樣貴。</p>
<p dir="auto"><strong>時間瓶頸是 CPU 圖像編碼，不是 LLM。</strong> 證據：64 張 frame 共 14,234 tokens，引擎實際只花 <strong>3.6 秒</strong>讀完，但總耗時 86.1 秒——其中約 82 秒是 CPU 編碼。編碼吞吐約 <strong>130–175 image-tokens/s</strong>。</p>
<p dir="auto"><strong>準確度測試</strong>（我自己畫的圖表，含標題、四個數值、一組 REF code）：<strong>6/6 全對</strong>。</p>
<blockquote>
<p dir="auto"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>一個 request 上限 64 張圖</strong>——超過會失敗。這是 server 的 bug，不是硬體限制：</p>
<pre><code class="language-python"># serve/server.py 第 496 行 — vision embedding cache
if len(self.cache) &gt; 64:
    old = next(iter(self.cache))
    self.cache.pop(old)[0].unlink(missing_ok=True)   # 刪掉 .sve 檔

# 但第 771/789 行是「先全部 encode，之後才讀檔」
encoded = [self.vision.encode(src) for src in images]
for path, _ in encoded:
    f.write(path.read_bytes())      # FileNotFoundError：已被驅逐
</code></pre>
<p dir="auto">超過 64 張時，最前面那批 <code>.sve</code> 會在後續 encode 時被驅逐刪掉。<strong>Server 不會掛</strong>，下一個 request 正常。context 本身不是瓶頸（262,144 ÷ 770 ≈ 340 張）。</p>
</blockquote>
<h3>3.7 <code>STRATA_PREFILL_NVFP4</code> 調校：w4a8 vs w4a4</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>context</th>
<th style="text-align:right"><code>w4a8</code>（預設）</th>
<th style="text-align:right"><code>w4a4</code></th>
<th style="text-align:right">提升</th>
</tr>
</thead>
<tbody>
<tr>
<td>~8K</td>
<td style="text-align:right">3,641</td>
<td style="text-align:right">4,087</td>
<td style="text-align:right">+12.2%</td>
</tr>
<tr>
<td>~32K</td>
<td style="text-align:right">4,417</td>
<td style="text-align:right">5,069</td>
<td style="text-align:right">+14.8%</td>
</tr>
<tr>
<td>~80K</td>
<td style="text-align:right">4,429</td>
<td style="text-align:right">5,074</td>
<td style="text-align:right">+14.6%</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>但代價</strong>（官方 <code>docs/NVFP4.md</code>，first-token KL vs fp16）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>mode</th>
<th style="text-align:right">KL mean</th>
<th style="text-align:right">top-1 一致率</th>
</tr>
</thead>
<tbody>
<tr>
<td>w4a8</td>
<td style="text-align:right">0.0018</td>
<td style="text-align:right">8/8</td>
</tr>
<tr>
<td>w4a4</td>
<td style="text-align:right"><strong>0.0080</strong>（差 4.5×）</td>
<td style="text-align:right">7/8</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>只快 prefill，decode 完全一樣。</strong> 檢索能力我也實測過（needle-in-haystack 6/6、5 針一次問齊 5/5，兩個模式都過）。</p>
<p dir="auto">→ <strong>建議保留預設 <code>w4a8</code>。</strong></p>
<h3>3.8 長 context 品質驗證</h3>
<p dir="auto">很多人問「接近 260K 會不會變笨／失憶」，我實測了：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>測試</th>
<th style="text-align:center">2K</th>
<th style="text-align:center">32K</th>
<th style="text-align:center">128K</th>
<th style="text-align:center">200K</th>
<th style="text-align:center"><strong>250K</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>單針檢索（深度 10/50/90%）</td>
<td style="text-align:center">—</td>
<td style="text-align:center">3/3</td>
<td style="text-align:center">3/3</td>
<td style="text-align:center">3/3</td>
<td style="text-align:center"><strong>3/3</strong></td>
</tr>
<tr>
<td>5 針一次問齊</td>
<td style="text-align:center">—</td>
<td style="text-align:center">—</td>
<td style="text-align:center">—</td>
<td style="text-align:center">—</td>
<td style="text-align:center"><strong>5/5</strong></td>
</tr>
<tr>
<td><strong>多跳推理</strong>（兩個事實隔 90% 距離要組合）</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td style="text-align:center"><strong><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></strong></td>
</tr>
</tbody>
</table>
<p dir="auto">多跳推理是關鍵測試（retrieval 測不出「變笨」）：兩個事實分別插在 5% 和 95% 的位置，答案是 <code>VELMORA-7719</code>，<strong>從 2K 到 250K 完全一致</strong>。</p>
<p dir="auto"><strong>不會變笨。</strong> 原因：262,144 是原生訓練窗口（不是 YaRN 外推），而且模型有 QSA sparse attention + indexer budget。</p>
<blockquote>
<p dir="auto">順帶一提：Strata 曾經有一個真正的長 context bug——RoPE 用 fast-math 角度，在 262K 時差約 0.02 rad。<strong>已修</strong>（改用 float64 angle table）。</p>
</blockquote>
<h3>3.9 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 但有一個硬牆：~245.7K</h3>
<pre><code>prompt + max_tokens ≤ 262,136    (max_context 262144 − CTX_SLACK 8)
</code></pre>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">prompt</th>
<th style="text-align:right">最多可出</th>
<th style="text-align:center">若 client 要 16384</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">230K</td>
<td style="text-align:right">32,136</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td style="text-align:right"><strong>245K</strong></td>
<td style="text-align:right"><strong>17,136</strong></td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> ← 轉折點 ≈ <strong>245,752</strong></td>
</tr>
<tr>
<td style="text-align:right">250K</td>
<td style="text-align:right">12,136</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--x" style="height:1.4em;width:auto;vertical-align:middle" title="❌" alt="❌" /> <strong>HTTP 400</strong></td>
</tr>
<tr>
<td style="text-align:right">260K</td>
<td style="text-align:right">2,136</td>
<td style="text-align:center"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--x" style="height:1.4em;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
</tr>
</tbody>
</table>
<p dir="auto">超過的錯誤訊息：<code>"prompt (N tokens) + max tokens (M) exceeds the context (262144); requests are never truncated"</code></p>
<p dir="auto"><strong>過去的話不是「慢慢變笨」，是 session 直接壞死</strong>（每個 call 都 400）。</p>
<hr />
<h2>四、模型大小 / 量化</h2>
<p dir="auto">Flash-Next 跟一般 dense 模型不一樣——<strong>不能只挑一個 Q4/Q8 檔</strong>：</p>
<p dir="auto">176B = 125B backbone + <strong>51B n-gram 表</strong> + 4B MTP，而<strong>那個表的大小不隨量化縮小</strong>（GGUF 版固定 26.85 GiB IQ4_NL／Strata 版 48 GB FP8）。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>級別</th>
<th style="text-align:right">磁碟總計</th>
<th style="text-align:right">其中 n-gram 表</th>
<th style="text-align:right">GPU 必需</th>
</tr>
</thead>
<tbody>
<tr>
<td>BF16（原始）</td>
<td style="text-align:right"><strong>329.7 GiB</strong></td>
<td style="text-align:right">—</td>
<td style="text-align:right">裝不下</td>
</tr>
<tr>
<td>FP8</td>
<td style="text-align:right">172.8 GiB</td>
<td style="text-align:right">47.7</td>
<td style="text-align:right">裝不下 72GB 卡</td>
</tr>
<tr>
<td>Q8_0（GGUF）</td>
<td style="text-align:right">174.65 GiB</td>
<td style="text-align:right">~26.9</td>
<td style="text-align:right">~148</td>
</tr>
<tr>
<td>UD-Q4_K_XL</td>
<td style="text-align:right">103.68</td>
<td style="text-align:right">26.85</td>
<td style="text-align:right">76.82</td>
</tr>
<tr>
<td><strong>UD-IQ4_XS</strong></td>
<td style="text-align:right">87.24</td>
<td style="text-align:right">26.85</td>
<td style="text-align:right"><strong>60.38</strong></td>
</tr>
<tr>
<td>UD-IQ3_XXS</td>
<td style="text-align:right">76.32</td>
<td style="text-align:right">26.85</td>
<td style="text-align:right">49.47</td>
</tr>
<tr>
<td>UD-IQ1_S（最小）</td>
<td style="text-align:right"><strong>67.55</strong></td>
<td style="text-align:right">26.85</td>
<td style="text-align:right">40.70</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>範圍 67.55 → 329.7 GiB（4.9×）</strong>；對比 27B 的 15.66 → 27.05 GB（1.7×）。差距窄是因為那張 26.85 GiB 的表佔最小版本的 <strong>40%</strong>。</p>
<p dir="auto"><strong>我目前跑的 NVFP4 ≈ 4.5-bit</strong>，工作集約 <strong>184 GB</strong>（表 48 GB + 權重 69 GB + arena 64 GB），但 <strong>VRAM 常駐只需 69 GB</strong>——因為 experts 放 RAM、表串流自 SSD。</p>
<h3>量化對輸出的影響</h3>
<p dir="auto">官方（unsloth）對 Qwen3.8 做的 NVFP4 vs BF16 實測：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>領域</th>
<th style="text-align:right">KLD mean</th>
<th style="text-align:right">top-1 一致率</th>
</tr>
</thead>
<tbody>
<tr>
<td>中文</td>
<td style="text-align:right">0.0163</td>
<td style="text-align:right">93.55%</td>
</tr>
<tr>
<td><strong>程式碼</strong></td>
<td style="text-align:right">0.0260</td>
<td style="text-align:right"><strong>96.68%</strong></td>
</tr>
<tr>
<td><strong>閒聊</strong></td>
<td style="text-align:right">0.0582</td>
<td style="text-align:right"><strong>92.15%</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">→ <strong>NVFP4 保留約 92–97% 的 BF16 品質</strong>（寫程式最抗跌）。</p>
<p dir="auto">而 1-bit 家族（KLD 0.56–1.11）比 NVFP4 差 <strong>10–20 倍</strong>，top-1 掉到 66–79%。<strong>過 4-bit 之後就開始急墮。</strong></p>
<p dir="auto">另外這個 checkpoint 的 model card 寫明：<strong>NVFP4 只量化 routed experts</strong>，attention、Gated-DeltaNet、<strong>router</strong>、shared experts、hyper-connections、PLE、embeddings、LM head、MTP <strong>全部保留高精度</strong>。這是「保護好所有關鍵模組、只壓縮大宗 FFN」的配方——尤其 <strong>router 不量化</strong>對 MoE 至關重要。</p>
<hr />
<h2>五、實測踩過的坑</h2>
<ol>
<li><strong>thinking 預設開啟</strong>——Qwen3.8 會先輸出 <code>reasoning_content</code>，可能吃光 <code>max_tokens</code> 讓 <code>content</code> 變 null。要關就送 <code>chat_template_kwargs: {enable_thinking: false}</code></li>
<li><strong><code>enable-large-pages.ps1</code> 第一次可能 exit 1</strong> → 再跑一次</li>
<li><strong><code>fit_max_tokens</code> 是 server 層設定</strong>——一開全機所有 client 都受影響。我<strong>沒有開</strong>，因為：① 我的 harness 會在 0.8 × contextWindow ≈ 209.7K 自動 compact，距離 245.7K 硬牆有約 36K 餘裕；② clamp 會把「寫檔案／JSON／tool call」的答案剪短，產生<strong>半截檔案</strong>——比一個明確的 400 更危險</li>
</ol>
<hr />
<h2>六、結論</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th>數值</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Decode</strong></td>
<td>91–113 tok/s（短→8K context）</td>
</tr>
<tr>
<td><strong>Prefill</strong></td>
<td>4.4–5.1K tok/s</td>
</tr>
<tr>
<td><strong>VRAM 常駐</strong></td>
<td>69 GB（單卡 72GB 可跑）</td>
</tr>
<tr>
<td><strong>Expert cache</strong></td>
<td>21,278 slots，98–99.9% 命中</td>
</tr>
<tr>
<td><strong>冷載入</strong></td>
<td>18.8 秒</td>
</tr>
<tr>
<td><strong>250K context</strong></td>
<td>可用，品質零退化</td>
</tr>
<tr>
<td><strong>並行</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>單流</strong>，總吞吐固定 ~145 tok/s</td>
</tr>
<tr>
<td><strong>Prefix cache</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 同 session 71× 加速，<strong>兩個 session 互相沖掉</strong></td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>適合</strong>：</p>
<ul>
<li>單一重型 session（長 context、要品質、要離線）</li>
<li>需要 250K context 又不想上雲</li>
</ul>
<p dir="auto"><strong>不適合</strong>：</p>
<ul>
<li>多個 agent 並行（會互相沖掉 prefix cache，每輪 ~29s）</li>
<li>需要同時跑其他 GPU 工作</li>
</ul>
<p dir="auto">在 72GB 單卡上，這是我目前找到最好的 Flash-Next 方案。官方在 5090 32GB 測到約 115 tok/s，這張卡因為 VRAM 大了一倍多，expert cache 多 2.9 倍（21,278 slots），但受限於單流架構，實際吞吐相當。</p>
<p dir="auto">結論：<strong>這是目前少數能在 72GB 單卡上跑，同時又保有 MTP speculative decoding 的 Flash-Next 路線。</strong></p>
<blockquote>
<p dir="auto"><strong>TL;DR</strong></p>
<ul>
<li>RTX PRO 5000 72GB 單卡可跑，<strong>完全不必編譯</strong>（release bundle 已內含 CUDA runtime）</li>
<li>Decode <strong>91–113 tok/s</strong>、Prefill <strong>4.4–5.1K tok/s</strong>、VRAM 常駐 <strong>69 GB</strong></li>
<li>250K context 可用，且<strong>品質零退化</strong>（含多跳推理）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>單流引擎</strong>：總吞吐固定 ~145 tok/s，開再多 client 只會排隊</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>Prefix cache 同一個 session 有 71× 加速，但兩個 session 會互相沖掉</strong>（每輪 ~29s）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>硬牆在 ~245.7K</strong>（<code>prompt + max_tokens ≤ 262,136</code>），超過直接 HTTP 400</li>
</ul>
</blockquote>
<hr />
]]></description><link>https://lcz.me/topic/2035</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 16:42:07 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2035.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Oct 2026 14:17:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Mon, 05 Oct 2026 13:01:23 GMT]]></title><description><![CDATA[<h1>Strata NVFP4 版本更新實測 —— 0.1.38 → 0.1.39：prefill 快 22~44%、加了「並行」</h1>
<p dir="auto">上次在同一塊板貼過 <strong>72GB 單卡跑 Qwen3.8-Flash-Next（176B MoE）＋ Strata NVFP4</strong> 的完整數據（0.1.28 → 0.1.32 → 0.1.38）。這次補 <strong>0.1.38 → 0.1.39</strong>。</p>
<p dir="auto">這版官方 release note 寫得很少（「verify pass 少幾個 launch、long prompt ring 改成按 bytes 計」），我本來以為只是小更新。<strong>實測之後不是</strong> —— 這版有一個對「像我這種用 file-tier 的人」影響很大的修正，而且第一次出現<strong>引擎層的並行</strong>。</p>
<p dir="auto">先講結論：</p>
<blockquote>
<p dir="auto"><strong>TL;DR</strong></p>
<ul>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> <strong>0.1.39 修好了 #577</strong>：0.1.38 在「有 RAM budget」的設定下把 prompt 讀取判斷錯了，每個 prompt 之後都去讀硬碟 → <strong>我這裡冷讀 prefill 是 2,511 / 2,885 / 3,570 tok/s，升上 0.1.39 變成 3,606 / 4,151 / 4,346（+44% / +44% / +22%）</strong></li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> 同一支 battery script 也看到 <strong>128K +12.4%、250K +16.2%</strong></li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>上游和 fork 都說這版 prefill「沒變」</strong> —— 因為他們的測試機把 experts 全放 RAM；<strong>#577 只在 file-tier / 有 <code>--ram-budget</code> 的設定才咬</strong>。所以：你是 file-tier 就賺到，是 pinned 就無感。怎麼分辨我寫在第 2.3 節</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f195.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--new" style="height:1.4em;width:auto;vertical-align:middle" title="🆕" alt="🆕" /> <strong><code>"parallel": N</code>（2~8）：引擎層同時解碼 N 條對話。</strong> 上限 <strong>8 格</strong>；我這裡一條不慢（N=2 幾乎零、N=3 只 −3%），3 條同時反而<strong>總吞吐更高</strong>（114 → 128 tok/s）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f195.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--new" style="height:1.4em;width:auto;vertical-align:middle" title="🆕" alt="🆕" /> <strong>長 context × 並行實測：3 × 250K 同時成功</strong>（675K tokens 同時在跑）；<strong>prefill 沒有變慢</strong>；<strong>長 context 答案逐字相同</strong>（solo vs 並行，兩邊都是 4/4 全對）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>重要否定結果：並行不能取代 <code>--conversation-cache-mib</code>。</strong> 關掉對話 cache 之後，3 條 134K 對話交替，<strong>每一輪都退回冷讀 23~26 秒</strong> —— 三條長對話保溫靠的是對話 cache，不是 slot</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>每一格 slot 在 262K context 要 3.65 GiB</strong>（官方文件寫的 0.56 GiB 是 32K 的情況）。而且在「寫死 <code>--expert-cache</code>」的 co-run 模式裡，slot 是<strong>加在 cache 上面</strong> → H3 模式讓出的 36 GB 會變 25 GB</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ fork 這版還修了一個很痛的問題：<strong>長對話輸出 NaN logits 之後，之後每個 request 都只回 <code>!</code></strong>（要手動重啟引擎）</li>
</ul>
</blockquote>
<hr />
<h2>一、版本時間線</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>版本</th>
<th>日期</th>
<th>主打</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>0.1.39</strong></td>
<td>10-04</td>
<td><strong>decode verify pass 少 launch（官方 12GB 卡 +6~7%）、long prompt ring 改用 bytes 計、<code>--prefill auto</code> 挑最大 chunk、&gt;262K cells 的 attention top-k、<code>/v1/responses</code>（Codex 能用）、<code>repeat_stop_tokens</code>（同一 token 重複 256 次就收尾）、修 #577、<code>"parallel": N</code></strong></td>
</tr>
<tr>
<td>0.1.39-nvfp4.1</td>
<td>10-04</td>
<td>fork：<strong>decode round 短 7%</strong>（GPTQ+Q8_0-down pack：16.88 → 15.72 ms/round，答案逐位元相同）；long prompt ring 少借 1.2 GiB VRAM</td>
</tr>
<tr>
<td><strong>0.1.39-nvfp4.2</strong></td>
<td>10-05</td>
<td>fork：<strong>NaN logits 之後自動開新引擎</strong>（見 3.3）＋補完 #606 的 q8_1 clamp</td>
</tr>
</tbody>
</table>
<p dir="auto">我這次是 <strong>0.1.38-nvfp4.2 → 0.1.39-nvfp4.2</strong>（跨 fork 的 .1、.2 兩版）。</p>
<hr />
<h2>二、效能差多少（同設定 A/B）</h2>
<blockquote>
<p dir="auto">方法：<strong>新版解到另一個目錄、config 用絕對路徑指同一個 <code>models\</code>、同一個 port 逐次載入</strong>（69 GB + 60 GB 不可能同時放進 72 GB 卡），<strong>同一份 config、同一批 script、同一節 session</strong>。全部是 <strong>冷讀</strong>（engine log 自己那行 <code>prompt N tokens = 0 reused + N read</code> 確認），不是我猜的。</p>
</blockquote>
<p dir="auto"><img src="https://upload.lcz.me/uploads/c78d2ac4-609a-47e6-9665-01b19a5eb5e9.jpeg" alt="img-1-ab.jpeg" class="img-markdown  img-fluid" /></p>
<h3>2.1 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> 最大的差異在 prefill，不在 decode</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>冷讀 prompt</th>
<th style="text-align:right">0.1.38</th>
<th style="text-align:right">0.1.39</th>
<th style="text-align:right">差</th>
</tr>
</thead>
<tbody>
<tr>
<td>6,551 tok</td>
<td style="text-align:right">2,608 ms（<strong>2,511</strong> tok/s）</td>
<td style="text-align:right">1,817 ms（<strong>3,606</strong>）</td>
<td style="text-align:right"><strong>+44%</strong></td>
</tr>
<tr>
<td>26,183 tok</td>
<td style="text-align:right">9,076 ms（<strong>2,885</strong>）</td>
<td style="text-align:right">6,308 ms（<strong>4,151</strong>）</td>
<td style="text-align:right"><strong>+44%</strong></td>
</tr>
<tr>
<td>65,471 tok</td>
<td style="text-align:right">18,341 ms（<strong>3,570</strong>）</td>
<td style="text-align:right">15,066 ms（<strong>4,346</strong>）</td>
<td style="text-align:right"><strong>+22%</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">decode（同一個 prompt 之後）：0.1.38 是 115~145 tok/s，0.1.39 是 140~162 tok/s —— 兩者都在 run-to-run 波動範圍內，<strong>看不出有意義的差別</strong>（官方說大卡上的 decode 增益「沒量到」，我這邊一致）。</p>
<h3>2.2 同一支 battery script 的對照</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th style="text-align:right">0.1.38</th>
<th style="text-align:right">0.1.39</th>
<th style="text-align:right">差</th>
</tr>
</thead>
<tbody>
<tr>
<td>prompt 讀取 32K</td>
<td style="text-align:right">942（量測假象，見第 6 節）</td>
<td style="text-align:right">3,417</td>
<td style="text-align:right">—</td>
</tr>
<tr>
<td>prompt 讀取 128K</td>
<td style="text-align:right">3,655</td>
<td style="text-align:right"><strong>4,107</strong></td>
<td style="text-align:right"><strong>+12.4%</strong></td>
</tr>
<tr>
<td>prompt 讀取 250K</td>
<td style="text-align:right">3,397</td>
<td style="text-align:right"><strong>3,946</strong></td>
<td style="text-align:right"><strong>+16.2%</strong></td>
</tr>
</tbody>
</table>
<h3>2.3 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 為什麼官方說「沒變」——這修正只咬 file-tier</h3>
<p dir="auto">#577 的原文是：<strong>0.1.38 太早決定要不要繞過 file cache，而且它拿「所有 model 檔的總大小」去比。</strong> 在 96 GB 機器 + 72 GiB budget 的設定下它判斷錯誤 → <strong>每個 prompt 之後的 refill 都去讀硬碟，官方自己的說法是 prompts 慢 15–40%</strong>。</p>
<p dir="auto">這完全對得上我這邊的量測（+22~44%）。側面證據：0.1.38 那個 arm 的 engine log 寫著 <strong><code>files 30,452 blobs 269,494.9 MB read</code></strong> —— 一趟測試從 SSD 讀了 <strong>269 GB</strong>。</p>
<p dir="auto"><strong>為什麼上游與 fork 都回報「prefill 沒變」？</strong> 因為他們的測試機把 experts 全放進 RAM（pinned arena / 大 RAM 機器），#577 那條路根本不會走到。</p>
<p dir="auto"><strong>你要怎麼知道自己會不會賺到？</strong> 看 engine log 有沒有這三行之一：</p>
<pre><code>low RAM (below 96 GB installed ...
resident RAM mode: ... of experts in RAM ...
expert tiers: ... files N blobs ... MB read
</code></pre>
<p dir="auto">有的話你就在 file-tier，#577 對你有用。想回 pinned arena 就是 <code>--no-low-ram</code>（代價是少掉 ~56 GiB 可用 RAM，換 prompt 更快）。</p>
<hr />
<h2>三、0.1.39 加了什麼</h2>
<h3>3.1 實用功能</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>新增</th>
<th>為什麼有用</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong><code>"parallel": N</code>（2–8，預設關）</strong></td>
<td>引擎同時解碼 N 條對話。<strong>這是我這次最想要的東西</strong>（見第四節）</td>
</tr>
<tr>
<td><strong><code>/v1/responses</code></strong></td>
<td>OpenAI Responses API，<strong>Codex CLI 可以直接指向它</strong>。stateless、支援 function tools／tool results／reasoning effort／JSON schema／streaming events。不支援 <code>previous_response_id</code>、hosted tools、reasoning summaries</td>
</tr>
<tr>
<td><strong><code>repeat_stop_tokens</code>（預設 256）</strong></td>
<td>同一個 token 連續出現 256 次就收尾。這是防「模型卡住一直吐同一個字」的保險（官方提到有人看到 36,689 個 <code>!</code>）</td>
</tr>
<tr>
<td><strong>修 #577</strong></td>
<td>見第 2.3 節 —— <strong>本版最有感的一項</strong></td>
</tr>
<tr>
<td><code>--vram-elastic</code></td>
<td>熱調整 VRAM（opt-in）</td>
</tr>
<tr>
<td><code>"effort_position": "end"</code></td>
<td>只改 effort 的 request 可以重用 cache（opt-in，預設關）</td>
</tr>
</tbody>
</table>
<h3>3.2 順帶（我沒硬體，沒法測）</h3>
<ul>
<li><strong>多 GPU</strong>：<code>--remote-expert-opt</code>（作者實測雙 4090：混合文字 +63%、程式碼 +132%）、3+ 卡的 layer split 重疊更好（4×3060：prompt +10~28%）、<code>STRATA_PREFILL_HELP=1</code> 讓閒置卡幫讀一個 chunk 的 experts。</li>
<li><strong>舊 NVIDIA 卡（Pascal / Volta）</strong>：CUDA 13 編不了，所以 setup 會多帶一顆 CUDA 12.9 編的引擎；<code>--cuda 12</code> 也是「驅動比 580 舊」的解法。</li>
<li><strong>Intel Arc</strong>：社群 SYCL port（Linux + oneAPI 自己編，沒有現成引擎）。</li>
<li><strong>沒有 AVX2 的舊 CPU</strong>：AVX-only / SSE4.2-only 也能編（<code>STRATA_ISA_FLOOR=avx|none</code>，編一次 10–20 分鐘），只有 i-quant 模型能跑。</li>
<li><strong>Linux expert arena 走 transparent huge pages</strong>；<code>STRATA_IQ256_GATHER=1</code>（AVX2 codebook gather）；&gt;64 CPU 的 thread affinity。</li>
</ul>
<h3>3.3 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ fork 這版修了一個很痛的東西（長對話變 <code>!</code>）</h3>
<p dir="auto"><code>sergqwer/strata-nvfp4</code> 的 release note 直說：一個 <strong>96K tokens 的長 Claude Code 對話中途變成一直吐 <code>!</code></strong>，而且<strong>之後每一個 request 都只回 <code>!</code>，要手動重啟引擎才會好</strong>。</p>
<p dir="auto">0.1.39-nvfp4.2 的做法：<strong>只要出現「token 0 連續重複」這種狀態，就為下一個 request 開一顆新引擎</strong> —— 一次壞掉的回覆，而不是整個 session 壞死。</p>
<p dir="auto">官方也老實說：<strong>到底什麼把那顆引擎的狀態弄壞，還沒找到</strong>（expert arena、deterministic replay、elastic K/V、prompt loan、checkpoints、captured graphs 都排除過了）。</p>
<p dir="auto">如果你會跑很長的 agent 對話，<strong>這個修正是升級的獨立理由</strong>。</p>
<hr />
<h2>四、新功能實測：<code>parallel</code>（並行）</h2>
<p dir="auto"><img src="https://upload.lcz.me/uploads/587f5138-c805-4bbf-b48a-bbcbaf0aff8e.jpeg" alt="img-2-parallel.jpeg" class="img-markdown  img-fluid" /></p>
<h3>4.1 上限是 8 格，短 context 的速度如下</h3>
<p dir="auto">方法：<code>par_bench.py</code> 發 C 條不同題目（220 token、greedy、thinking off），取 <strong>wall-clock 總吞吐</strong>（總 output tokens ÷ 總秒數 —— <strong>不能把各 request 自報的 tok/s 相加</strong>，那會浮報）。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>設定</th>
<th style="text-align:right">slots · cache</th>
<th style="text-align:right"><strong>單條（C=1）</strong></th>
<th style="text-align:right"><strong>3 條同時（總吞吐）</strong></th>
<th>3 條各自完成時間</th>
</tr>
</thead>
<tbody>
<tr>
<td>無 parallel</td>
<td style="text-align:right">22,455 · 57.8 GiB</td>
<td style="text-align:right"><strong>125.0</strong></td>
<td style="text-align:right">114.0</td>
<td>2.1 / 4.1 / <strong>5.8 s</strong>（排隊）</td>
</tr>
<tr>
<td><code>parallel: 2</code></td>
<td style="text-align:right">19,675 · 50.7 GiB</td>
<td style="text-align:right"><strong>125.8（−0%）</strong></td>
<td style="text-align:right">113.2</td>
<td>3.8 / 4.0 / 5.8 s</td>
</tr>
<tr>
<td><strong><code>parallel: 3</code></strong></td>
<td style="text-align:right">18,256 · 47.0 GiB</td>
<td style="text-align:right">121.5（−3%）</td>
<td style="text-align:right"><strong>128.2</strong></td>
<td><strong>5.1 / 5.1 / 5.1 s</strong></td>
</tr>
<tr>
<td><code>parallel: 8</code></td>
<td style="text-align:right">11,160 · 28.7 GiB</td>
<td style="text-align:right">109.8（−12%）</td>
<td style="text-align:right">117.5</td>
<td>5.5 / 5.6 / 5.6 s</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>引擎上限 = 8 格</strong>（<code>GET /v1/status</code> → <code>"concurrency": {"serving": 8, "requested": 8}</code>，沒有 clamp；engine log：<code>--batch: 8 slot sessions on CUDA0 (3.65 GiB each)</code>）。</li>
<li>真正的好處是<strong>公平</strong>：沒有並行時第 3 條要等 3.7 秒才開始；開了之後三條一起跑、一起收。</li>
<li><strong>單條的代價比官方在 12GB 卡上的數字輕很多</strong>（官方：2 格 −11%、4 格 −24%；我這邊 2 格 −0%、3 格 −3%）—— 因為大 VRAM 卡把大部分 experts 留在 VRAM，官方文件自己也是這樣建議的。</li>
<li>順帶：burst 掃描（1/2/4/8/16/24/32 條同時）在 <code>parallel: 3</code> 之下總吞吐是 100.8 / 130.2 / 155.2 / <strong>156.5</strong> / 147.6 / 148.7 / 149.1 tok/s，比不開時的高段（136~145）<strong>高 5~10%</strong>。</li>
</ul>
<h3>4.2 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 每一格 slot 的真實成本：262K 之下是 3.65 GiB</h3>
<p dir="auto">官方 <code>docs/BATCHING.md</code> 寫「每格 slot 0.56 GiB」——<strong>那是 32K context 的數字</strong>。你在 262K 之下實際是 <strong>3.65 GiB / 格</strong>：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">格數</th>
<th style="text-align:right">slot 總佔用</th>
<th style="text-align:right">expert cache</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">2</td>
<td style="text-align:right">7.31 GiB</td>
<td style="text-align:right">57.8 → 50.7 GiB（22,455 → 19,675 slots）</td>
</tr>
<tr>
<td style="text-align:right">3</td>
<td style="text-align:right">10.96 GiB</td>
<td style="text-align:right">57.8 → 47.0 GiB（→ 18,256 slots）</td>
</tr>
<tr>
<td style="text-align:right">8</td>
<td style="text-align:right"><strong>29.23 GiB</strong></td>
<td style="text-align:right">57.8 → <strong>28.7 GiB</strong>（→ 11,160 slots）</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>重點：成本是「slot sessions」本身，不是「你用到幾條」。</strong> 開 8 格就算你只跑 3 條，還是付 29 GiB 的帳（單條 −12%、C=2 總吞吐由 109 掉到 88）。</p>
<h3>4.3 長 context × 並行：能跑，而且不變慢</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/5aa9cb6f-8fd5-44af-8d84-17d2625ef507.jpeg" alt="img-3-longctx.jpeg" class="img-markdown  img-fluid" /></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>測試（<code>parallel: 3</code>，cache 47.5 GiB）</th>
<th>結果</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>2 × 134K 同時</strong>、<strong>2 × 250K 同時</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 兩條都成功，讀取時間重疊</td>
</tr>
<tr>
<td><strong>3 × 134K 同時</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 三條冷讀同時進行：29.2 / 25.1 / 24.6 秒，各 <strong>3,812 / 4,450 / 4,571 tok/s</strong>（不是排隊 —— 排隊的話三條會是 25+25+25 秒）</td>
</tr>
<tr>
<td><strong>3 × 250K 同時</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> <strong>三條全部成功</strong>：224,389 / 224,919 / 225,352 tokens = <strong>675K tokens 的 context 同時在跑</strong>，各 3,409 / 3,892 / 3,951 tok/s，批次總 wall 138.8 秒</td>
</tr>
<tr>
<td><strong>prefill 有沒有變慢？</strong></td>
<td><strong>沒有</strong>：32K 3,937 / 128K 4,276 / 250K 3,588 vs 預設的 3,417 / 4,107 / 3,946（128K 還更高）</td>
</tr>
<tr>
<td><strong>長 context 答案有沒有變？</strong></td>
<td><strong>沒有</strong>：250K 品質測試（3 個針 + 1 個需要跨兩處事實組合的多跳題）<strong>solo 3/3 全 4/4、並行 3/3 全 4/4，而且逐字相同</strong></td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto">官方說「batch window 裡的 greedy 答案會和單獨跑相同」，但也提醒預設設定下長 prompt 的 bits 會變、輸出可能漂移。我這台在 250K 之下量到的結果是<strong>逐字一致</strong> —— 但那是我的環境，別當成普遍保證。</p>
</blockquote>
<h3>4.4 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️<img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 並行不能取代對話 cache（否定結果）</h3>
<p dir="auto">我原本的假設是：既然 <a href="http://BATCHING.md" rel="nofollow ugc">BATCHING.md</a> 說「<strong>each slot is a conversation cache</strong>」，那三個 slot 應該能讓三條長對話保持 warm，說不定可以省掉 <code>--conversation-cache-mib</code> 的 host RAM。</p>
<p dir="auto"><strong>實測答案：不行。</strong> 用同一組 3 條 ~134K 對話交替（A A B C A B C A）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>設定</th>
<th>結果</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>parallel: 3</code> <strong>＋ 對話 cache 開著</strong></td>
<td>三次冷讀之後，<strong>每一輪都是暖的</strong>（0.2~0.7 秒，engine log 顯示 <code>reused + 7 read</code>）</td>
</tr>
<tr>
<td><code>parallel: 3</code> <strong>＋ 對話 cache 關掉</strong></td>
<td><strong>只有「緊接著重複同一條」才會暖（0.1 秒）</strong>；一交錯到 B / C，<strong>之後每一輪都退回冷讀 23~26 秒</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">→ <strong>三條長對話保溫靠的是對話 cache，不是 slot。</strong> 並行只加快「同時打」和 burst 的吞吐，不會讓 slot 自己記住對話狀態。</p>
<hr />
<h2>五、我最後一輪完整重測（0.1.39-nvfp4.2）</h2>
<p dir="auto">用<strong>原封不動</strong>的 script 重跑裝機當天那套測試，全部打 live server（<code>full/auto</code>）。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>0.1.38（上次）</th>
<th><strong>0.1.39（本次）</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>prompt 讀取 32K / 128K / 250K</td>
<td>942（假象）/ 3,655 / 3,397</td>
<td>3,417 / <strong>4,107</strong> / <strong>3,946</strong></td>
</tr>
<tr>
<td>並行總吞吐 N=1/2/4/8/16/32</td>
<td>103 / 149 / 149 / 145 / 137 / 136</td>
<td>97 / <strong>155</strong> / 153 / 144 / 148 / 147</td>
</tr>
<tr>
<td>單針檢索（4 個深度 × 32K~250K）</td>
<td>全中</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 全中</td>
</tr>
<tr>
<td>5 針一次問齊（32K / 250K）</td>
<td>5/5、5/5</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 5/5、5/5</td>
</tr>
<tr>
<td>多跳推理（2K→250K）</td>
<td>全部一致</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 全部一致</td>
</tr>
<tr>
<td>同 session prefix cache</td>
<td>冷 55.1s → <strong>0.8s</strong>（69×）</td>
<td>冷 <strong>30.5s</strong> → <strong>0.8s</strong>（reused 110,250/110,257）</td>
</tr>
<tr>
<td>讀圖 5 個尺寸（256² → 3840×2400）</td>
<td>0.8 / 2.1 / 6.1 / 8.4 / 8.6 s</td>
<td>0.8 / 2.2 / 6.1 / 8.2 / 8.1 s</td>
</tr>
<tr>
<td>frames 8 / 16 / 32 / 64</td>
<td>11.9 / 21.6 / 42.9 / 88.4 s</td>
<td>11.4 / 20.9 / 42.6 / <strong>86.5 s</strong></td>
</tr>
<tr>
<td>frames 96 / 128 / 200</td>
<td>全部失敗</td>
<td><strong>全部失敗（64 張上限的 server bug 仍在）</strong></td>
</tr>
<tr>
<td>warm talk（8 條同時、900 tok）</td>
<td>—</td>
<td>8.0 秒 = <strong>111.9 tok/s 總吞吐</strong></td>
</tr>
<tr>
<td>134K 冷讀</td>
<td>35.2 / 35.3 / 36.2 s</td>
<td>23.5~26.0 s（同一批 prompt，file cache 較暖）</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>沒有一項變差。</strong></p>
<hr />
<h2>六、升級與設定要留意（我踩過／核過）</h2>
<ol>
<li>
<p dir="auto"><strong>升級會蓋掉 3 個檔案，要自己 re-apply</strong>（<code>models\</code> 與 <code>.venv-serve</code> 不在 zip 內，會保留、不用重轉）：</p>
<ul>
<li><code>config\strata-nvfp4.json</code>（我的是 <code>host: 0.0.0.0</code> ＋ <code>--conversation-cache-mib 9216</code>）</li>
<li><code>start-server.cmd</code>（<code>--port 8097</code>）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <code>serve\server.py</code> 若你改過（我加了 <code>CREATE_NO_WINDOW</code> 防 cmd 彈窗）<strong>不能照抄舊檔</strong> —— 每個版本的 <code>server.py</code> 都不同，要重新打 patch。這次 0.1.39 的 <code>server.py</code> 比 0.1.38 又多了一堆東西（<code>serve/responses.py</code>、batch slots、<code>/v1/vram</code>、<code>/config</code>…），<code>Popen</code> 的位置也全部搬家。</li>
</ul>
</li>
<li>
<p dir="auto"><strong><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 想給 ComfyUI 出圖：並行在 co-run 模式是「加在上面」</strong>（下圖）</p>
</li>
</ol>
<p dir="auto"><img src="https://upload.lcz.me/uploads/40a201bc-d87f-4e87-9bcb-b09ffd86d692.jpeg" alt="img-4-mode-vram.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto">| 模式 | cache | N=1 剩 | N=2 剩 | N=3 剩 |<br />
|---|---:|---:|---:|---:|<br />
| Full Speed（cache auto） | auto | 0.2 GiB | 0.3 GiB | 0.3 GiB |<br />
| CoRun Light | 18,000 | <strong>13.3 GiB</strong> | 5.1 GiB | 1.4 GiB |<br />
| CoRun Balanced | 12,700 | <strong>26.8 GiB</strong> | 19.3 GiB | 14.7 GiB |<br />
| H3 Render | 8,900 | <strong>36.4 GiB</strong> | 29.1 GiB | 25.4 GiB |</p>
<p dir="auto"><strong><code>--expert-cache auto</code> 會在開機時重算 cache</strong>（所以 Full Speed 開並行總用量不變）；但<strong>寫死數字</strong>的模式會保留 cache、slot <strong>加在上面</strong> → Light 由 13.3 掉到 5.1、H3 由 36.4 掉到 29.1。<strong>H3 需要 ~36 GB 才跑得順，就不要在那裡開並行。</strong></p>
<ol start="3">
<li>
<p dir="auto"><strong>我自己最後的設定</strong>（給你參考）：Full Speed 開 <code>parallel: 3</code>（日常零 VRAM 代價）、<strong>三個 render 模式都不開</strong>；另外做了 <code>light 2N</code> / <code>balanced 2N</code> 兩個變體，需要「出圖 + agent 同時跑」時才切。</p>
</li>
<li>
<p dir="auto"><strong><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 如果你自己寫 script 切換模式</strong>：模式身分不能只看 expert-cache slots。我踩到兩個坑 —— ① <code>light</code> 和 <code>light 2N</code> <strong>cache 一樣是 18,000</strong>（分不開）；② Full Speed 用 <code>cache auto</code>，slots 會飄（我是 18,384~22,798），<strong>開了 <code>parallel: 3</code> 之後是 18,384，比「≥20,000 就算 full」的舊判斷還低</strong>。0.1.39 的 <code>GET /v1/status</code> 有 <code>concurrency.serving</code>，<strong>用 (cache, parallel) 兩個條件一起判斷</strong>。</p>
</li>
<li>
<p dir="auto"><strong>長 context prefill 不要只取第一行</strong>：切模式／重載之後<strong>第一個</strong>長 prompt 會重新熱身 expert cache，可能量到 942 tok/s 這種假數字（log 原文：33.9 秒內由 SSD 讀了 89 GB）。緊接的第二、三個才反映穩定表現。</p>
</li>
<li>
<p dir="auto"><strong>沒變的東西</strong>：預設仍是單流（要並行要自己開）、<strong>~245.7K 的 per-request 硬牆</strong>（<code>prompt + max_tokens ≤ 262136</code>，超過是 400 而不是慢慢變差）、<code>STRATA_ADAPT_WAIT</code> 仍 opt-in（所以 greedy 答案仍不保證逐位元可重現）、<strong>64 張圖／request 的 bug 仍在</strong>。</p>
</li>
</ol>
<hr />
<h2>七、結論</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th>0.1.38 → 0.1.39</th>
</tr>
</thead>
<tbody>
<tr>
<td>prompt 讀取（file-tier）</td>
<td><strong>+22~44%</strong>（短）· <strong>+12~16%</strong>（128K/250K）</td>
</tr>
<tr>
<td>decode</td>
<td>看不出有意義差異（波動內）</td>
</tr>
<tr>
<td>長 context 品質</td>
<td>不變（並行之下逐字相同）</td>
</tr>
<tr>
<td>並行</td>
<td>新增；上限 8 格；單條 −0~3%（2~3 格），3 條同時總吞吐 +12%</td>
</tr>
<tr>
<td>有沒有變差</td>
<td><strong>沒有</strong></td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>值不值得升？對我值得，而且理由和官方寫的不一樣：</strong></p>
<ul>
<li>如果你是 <strong>file-tier</strong>（RAM &lt; 96 GB 被自動開，或你像我一樣手動選它）→ <strong>#577 的修正直接送你 +22~44% 的 prompt 讀取</strong>，這是這次升級最大的價值，官方 release note 幾乎沒提。</li>
<li>如果你是 <strong>pinned arena</strong> → 這版對你主要是「多了並行 + Codex 支援 + NaN logits 保險」，效能上接近平手。</li>
<li>如果你跑<strong>很長的 agent 對話</strong> → 0.1.39-nvfp4.2 的「NaN logits 自動重開引擎」是獨立於效能的保險。</li>
</ul>
<p dir="auto"><strong>升級動作</strong>就是「解壓蓋上去、保留 <code>models\</code> 與 <code>.venv-serve</code>、re-apply 上面那 3 個檔案」。</p>
]]></description><link>https://lcz.me/post/22606</link><guid isPermaLink="true">https://lcz.me/post/22606</guid><dc:creator><![CDATA[Yu Yeung Lam]]></dc:creator><pubDate>Mon, 05 Oct 2026 13:01:23 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Sun, 04 Oct 2026 23:19:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ny-zhao" aria-label="Profile: NY-Zhao">@<bdi>NY-Zhao</bdi></a> 目前Strata配置的只有單流，多對話要排隊，現在能做到的頂多就保留對話的prefill不用每次等太久。</p>
]]></description><link>https://lcz.me/post/22461</link><guid isPermaLink="true">https://lcz.me/post/22461</guid><dc:creator><![CDATA[Yu Yeung Lam]]></dc:creator><pubDate>Sun, 04 Oct 2026 23:19:49 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Sun, 04 Oct 2026 16:46:02 GMT]]></title><description><![CDATA[<p dir="auto">大佬，是如何跑多流的啊 <a class="plugin-mentions-user plugin-mentions-a" href="/user/yu-yeung-lam" aria-label="Profile: yu-yeung-lam">@<bdi>yu-yeung-lam</bdi></a> 求教</p>
]]></description><link>https://lcz.me/post/22416</link><guid isPermaLink="true">https://lcz.me/post/22416</guid><dc:creator><![CDATA[NY Zhao]]></dc:creator><pubDate>Sun, 04 Oct 2026 16:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Sun, 04 Oct 2026 04:55:17 GMT]]></title><description><![CDATA[<h1>Strata NVFP4 版本更新實測 —— 0.1.28 → 0.1.32 → 0.1.38：快了什麼、又加了什麼</h1>
<p dir="auto">上次在同一塊板貼過 72GB 單卡跑 <strong>Qwen3.8-Flash-Next（176B MoE）＋ Strata NVFP4</strong> 的完整數據，當時用的是 <strong>0.1.28-nvfp4.4</strong>。</p>
<p dir="auto">那之後官方半個月內連出到 <strong>0.1.38</strong>，我中間升了兩次：<strong>0.1.28 → 0.1.32 → 0.1.38</strong>。這篇補兩件事：</p>
<ol>
<li><strong>同設定 A/B 之下，版本之間到底快多少</strong>（不是感覺，是逐次載入、同一批 script 量出來）；</li>
<li><strong>每個版本加了什麼</strong>，以及 <strong>一點容易誤讀的陷阱</strong> —— 我中途改過自己的設定，有一批數字變動其實和版本無關。</li>
</ol>
<p dir="auto">最後附我<strong>最後一輪完整重測</strong>（0.1.38）的數據。</p>
<p dir="auto">先講結論：<strong>兩次升級都是純賺 —— 沒有任何一項變差。</strong> 0.1.28→0.1.32 是 decode 大躍進（+21~53%，平均 +25~44%），0.1.32→0.1.38 幅度細（多在雜訊內），但換來<strong>每一輪對話省約 0.3 秒</strong>，長對話流程直接受惠。</p>
<blockquote>
<p dir="auto"><strong>TL;DR</strong></p>
<ul>
<li><strong>0.1.28 → 0.1.32</strong>：decode <strong>平均 +25~44%</strong>（單次量測 +21~53%）、prefill <strong>+7~12%</strong>；長 context 基本平手</li>
<li><strong>0.1.32 → 0.1.38</strong>：<strong>零退步</strong>；128K prefill <strong>+4.2%</strong>、128K decode <strong>+9%</strong>、暖 turn <strong>快約 2×</strong>（0.7→0.3s）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> <strong>最有感的一項</strong>：0.1.38 的 tokenizer <strong>只編碼新增部分</strong> —— 同一個 107K prompt，暖 turn 由 <strong>739 ms → 442 ms（-40%）</strong></li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>誤讀陷阱</strong>：我 10-02 把 expert 由 pinned RAM 改成 file-tier，prefill 因此跌 29~42% —— <strong>這和版本無關</strong>，不要拿去比版本</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 版本功能面的重點：<strong>對話 cache</strong>（0.1.30 起）、<strong>取消 request 一秒放 engine</strong>（0.1.34）、<strong>引擎靜默保護</strong>（0.1.37）、<strong>沒 API key 時的 Host／跨站 403</strong>（0.1.38）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 升 0.1.31+ 之後<strong>低 RAM tier 會自動開</strong>（我 96GB 機器中招）→ 要 <code>--no-low-ram</code> 或改用 file-tier</li>
<li>我上次貼的長 context decode（128K <strong>52.2</strong> / 250K <strong>49.4</strong>）是<strong>量測 artifact</strong>，同一顆舊引擎重測是 <strong>116.6 / 101.9</strong> —— 這篇一併更正</li>
</ul>
</blockquote>
<hr />
<h2>一、版本時間線</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>版本</th>
<th>日期</th>
<th>主打</th>
</tr>
</thead>
<tbody>
<tr>
<td>0.1.28-nvfp4.4</td>
<td>09-30</td>
<td>桌面版 decode 穩定（Windows VRAM reserve 700→1500 MiB）、長 prompt 後 drafting 更快</td>
</tr>
<tr>
<td><strong>0.1.29</strong></td>
<td>09-30</td>
<td>有溫度取樣答案快達 <strong>40%</strong>（同 seed 逐位元相同）、prompt kernel 更快</td>
</tr>
<tr>
<td><strong>0.1.30</strong></td>
<td>10-01</td>
<td>短 prompt 快達 <strong>28%</strong>、<strong>多 GPU</strong>、AMD RDNA4、<strong>server 可交還 GPU</strong>、對話 cache 雛形</td>
</tr>
<tr>
<td><strong>0.1.31</strong></td>
<td>10-01</td>
<td>Unsloth UD-Q4_K_XL 可在 64GB RAM PC 跑、AMD decode +15%、Windows 載入快一倍</td>
</tr>
<tr>
<td><strong>0.1.32</strong></td>
<td>10-02</td>
<td>多 GPU 短 prompt 修復、AMD decode +12%、社群 30+ 改動</td>
</tr>
<tr>
<td><strong>0.1.33</strong></td>
<td>10-02</td>
<td>vision encoder 回復 portable build；setup 由「強制」改「建議」</td>
</tr>
<tr>
<td><strong>0.1.34</strong></td>
<td>10-02</td>
<td><strong>AMD on Windows</strong>、<strong>MCP server</strong>（讓 AI 自己裝／起 Strata）、<strong>取消的 request 一秒內放 engine</strong></td>
</tr>
<tr>
<td><strong>0.1.35</strong></td>
<td>10-03</td>
<td>Windows AMD 首 prompt 不再 crash、low-RAM 在 32GB Windows 可用</td>
</tr>
<tr>
<td><strong>0.1.36</strong></td>
<td>10-03</td>
<td>Q2_0 prompt +16~22%、長 context 出字 +18%、<strong>UPDATE.bat 一鍵更新</strong>、expert profile 記憶（opt-in）</td>
</tr>
<tr>
<td><strong>0.1.37</strong></td>
<td>10-03</td>
<td><strong>server 偵測引擎靜默</strong>（不再互等）、Windows AMD 計桌面 VRAM、PCIe probe 更穩</td>
</tr>
<tr>
<td><strong>0.1.38</strong></td>
<td>10-04</td>
<td>prompt 更快（<code>--kv q4_0</code> 走 tensor core）、6GB 卡可起動、<strong>沒 API key 時的安全檢查（Host＋跨站 403）</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">我兩次升級的路徑：<code>0.1.28-nvfp4.4</code> →（跨 0.1.29~0.1.32）<code>0.1.32-nvfp4.2</code> →（跨 0.1.33~0.1.38）<code>0.1.38-nvfp4.2</code>。</p>
<hr />
<h2>二、效能差多少（同設定 A/B）</h2>
<blockquote>
<p dir="auto">方法：新版解到另一個目錄、config 用<strong>絕對路徑</strong>指同一個 <code>models\</code>、另一個 port；舊版原封不動。兩個引擎<strong>逐次載入</strong>（69 + 60 GB &gt; 72 GB 不可能並存），<strong>同一份 config、同一批 script、同一節 session</strong>。</p>
</blockquote>
<p dir="auto"><img src="https://upload.lcz.me/uploads/de47bfd1-e466-4c60-aaf3-5c6f8ad0d338.jpeg" alt="img-4-version-gain.jpeg" class="img-markdown  img-fluid" /></p>
<h3>2.1 0.1.28 → 0.1.32</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th style="text-align:right">0.1.28</th>
<th style="text-align:right">0.1.32（2 次）</th>
<th style="text-align:right">差</th>
</tr>
</thead>
<tbody>
<tr>
<td>decode 短對話（~400 tok）</td>
<td style="text-align:right">102.1</td>
<td style="text-align:right">131.9 / 123.6</td>
<td style="text-align:right"><strong>+21~29%</strong></td>
</tr>
<tr>
<td>decode ~8K</td>
<td style="text-align:right">121.6</td>
<td style="text-align:right">159.9 / 160.6</td>
<td style="text-align:right"><strong>+31~32%</strong></td>
</tr>
<tr>
<td>decode ~32K</td>
<td style="text-align:right">108.9</td>
<td style="text-align:right">146.1 / 167.0</td>
<td style="text-align:right"><strong>+34~53%</strong></td>
</tr>
<tr>
<td>decode ~80K</td>
<td style="text-align:right">114.0</td>
<td style="text-align:right">165.9 / 148.1</td>
<td style="text-align:right"><strong>+30~46%</strong></td>
</tr>
<tr>
<td>prefill ~8K</td>
<td style="text-align:right">3,577</td>
<td style="text-align:right">4,014 / 3,977</td>
<td style="text-align:right">+11~12%</td>
</tr>
<tr>
<td>prefill ~32K</td>
<td style="text-align:right">4,451</td>
<td style="text-align:right">4,820 / 4,722</td>
<td style="text-align:right">+6~8%</td>
</tr>
<tr>
<td>prefill ~80K</td>
<td style="text-align:right">4,408</td>
<td style="text-align:right">4,845 / 4,754</td>
<td style="text-align:right">+8~10%</td>
</tr>
</tbody>
</table>
<p dir="auto">長 context（舊 bundle 解到另一個目錄、共用同一 <code>models\</code>、同日量）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th style="text-align:right">0.1.28</th>
<th style="text-align:right">0.1.32</th>
</tr>
</thead>
<tbody>
<tr>
<td>128K（110,009 tok）</td>
<td style="text-align:right">4,512 tok/s · 首 token 24.4s · decode 116.6</td>
<td style="text-align:right">4,640 · 23.7s · 115.8</td>
</tr>
<tr>
<td>250K（214,865 tok）</td>
<td style="text-align:right">4,187 · 51.3s · 101.9</td>
<td style="text-align:right">4,288 · 50.1s · 106.8</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>結論：短／中 context decode 大贏（平均 +25~44%，單次量測 +21~53%）、prefill 小幅（+6~12%），長 context 基本平手（±3%）。</strong></p>
<blockquote>
<p dir="auto"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ <strong>更正上次的數字</strong>：我上次貼的長 context decode（128K <strong>52.2</strong>、250K <strong>49.4</strong>）是量測 artifact。同一個舊引擎今天重測是 <strong>116.6 / 101.9</strong>。上次那兩行不要引用。</p>
</blockquote>
<h3>2.2 0.1.32 → 0.1.38</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th style="text-align:right">0.1.32</th>
<th style="text-align:right">0.1.38</th>
<th style="text-align:right">差</th>
</tr>
</thead>
<tbody>
<tr>
<td>decode 短 chat（400 tok）</td>
<td style="text-align:right">119.6 / 124.1</td>
<td style="text-align:right">120.1 / 132.4</td>
<td style="text-align:right">+1~7%</td>
</tr>
<tr>
<td>decode ~8K</td>
<td style="text-align:right">138.0 / 160.7</td>
<td style="text-align:right">151.8 / 134.6</td>
<td style="text-align:right">雜訊內</td>
</tr>
<tr>
<td>decode ~32K</td>
<td style="text-align:right">131.7 / 146.8</td>
<td style="text-align:right">145.2 / 160.1</td>
<td style="text-align:right">+3~10%</td>
</tr>
<tr>
<td>decode ~80K</td>
<td style="text-align:right">134.4 / 131.6</td>
<td style="text-align:right">146.5 / 138.5</td>
<td style="text-align:right">+3~9%</td>
</tr>
<tr>
<td>prefill ~8K</td>
<td style="text-align:right">2,461 / 2,460</td>
<td style="text-align:right">2,421 / 2,601</td>
<td style="text-align:right">±2%</td>
</tr>
<tr>
<td>prefill ~32K</td>
<td style="text-align:right">2,909 / 2,819</td>
<td style="text-align:right">2,978 / 2,936</td>
<td style="text-align:right">+1~4%</td>
</tr>
<tr>
<td>prefill ~80K</td>
<td style="text-align:right">3,585 / 3,533</td>
<td style="text-align:right">3,676 / 3,680</td>
<td style="text-align:right"><strong>+3~4%</strong></td>
</tr>
<tr>
<td><strong>prefill 128K（110,009 tok）</strong></td>
<td style="text-align:right">3,766（首 token 29.2s）</td>
<td style="text-align:right"><strong>3,924（28.0s）</strong></td>
<td style="text-align:right"><strong>+4.2%</strong></td>
</tr>
<tr>
<td><strong>decode 128K</strong></td>
<td style="text-align:right">110.4</td>
<td style="text-align:right"><strong>120.4</strong></td>
<td style="text-align:right"><strong>+9%</strong></td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto">decode 的單次 run-to-run 波動本身有 <strong>±10%</strong>，所以除 128K 之外，decode 差異多數在雜訊內。<strong>重點是：沒有一項變差。</strong></p>
</blockquote>
<h3>2.3 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> 最有感的一項：tokenizer 只編碼新增部分</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/9f839e62-a386-43d3-bc36-bd7bf7b59985.jpeg" alt="img-5-warmturn.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto">0.1.38 把 prompt <strong>只有新增的部分</strong>送去 tokenizer（官方：125K 由 221 ms → 6.8 ms）。</p>
<p dir="auto">我用自己的探針量同一個 <strong>~107K token prompt</strong>，暖 turn（<code>max_tokens=8</code>）連續 8 次取中位數：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th style="text-align:right">暖 turn 總耗時（中位數）</th>
<th style="text-align:right">最快一次</th>
</tr>
</thead>
<tbody>
<tr>
<td>0.1.32</td>
<td style="text-align:right"><strong>739.1 ms</strong></td>
<td style="text-align:right">481.7 ms</td>
</tr>
<tr>
<td>0.1.38</td>
<td style="text-align:right"><strong>442.1 ms</strong></td>
<td style="text-align:right">193.6 ms</td>
</tr>
<tr>
<td>差</td>
<td style="text-align:right"><strong>-297 ms（-40%）</strong></td>
<td style="text-align:right">-288 ms</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>兩個 134K 對話輪流</strong>（每次 16 output token）的暖 turn：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:right">#</th>
<th style="text-align:right">0.1.32</th>
<th style="text-align:right">0.1.38</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right">1</td>
<td style="text-align:right">0.7 s</td>
<td style="text-align:right"><strong>0.4 s</strong></td>
</tr>
<tr>
<td style="text-align:right">2</td>
<td style="text-align:right">0.9 s</td>
<td style="text-align:right"><strong>0.5 s</strong></td>
</tr>
<tr>
<td style="text-align:right">3</td>
<td style="text-align:right">0.7 s</td>
<td style="text-align:right"><strong>0.3 s</strong></td>
</tr>
<tr>
<td style="text-align:right">4</td>
<td style="text-align:right">0.7 s</td>
<td style="text-align:right"><strong>0.3 s</strong></td>
</tr>
<tr>
<td style="text-align:right">冷讀（首次）</td>
<td style="text-align:right">29.5 / 30.0 s</td>
<td style="text-align:right"><strong>28.2 / 28.6 s</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">→ 用 2~3 條 134K 對話輪流的話，<strong>每一 turn 省約 0.3 秒</strong>，對話越多省越多。這是我日常最有感的一項。</p>
<h3>2.4 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 但有一批數字「不是版本的事」</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/b2be3585-2ffa-4c7f-9048-f16025bf5bbb.jpeg" alt="img-6-config-caveat.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto">我 10-02 做了一個<strong>和引擎版本無關</strong>的決定：把 expert 由 <strong>pinned RAM arena</strong> 改成 <strong>file-tier</strong>（專家 miss 由 SSD 串流，換 ~56 GiB free RAM）。副作用是 <strong>prefill 跌 29~42%</strong>：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th style="text-align:right">pinned arena（<code>--no-low-ram</code>）</th>
<th style="text-align:right">file-tier（我 10-02 起）</th>
<th style="text-align:right">差</th>
</tr>
</thead>
<tbody>
<tr>
<td>prefill 8K / 32K / 80K</td>
<td style="text-align:right">3,995 / 4,771 / 4,800</td>
<td style="text-align:right">2,357 / 2,768 / 3,422</td>
<td style="text-align:right"><strong>-41% / -42% / -29%</strong></td>
</tr>
<tr>
<td>134K 冷讀</td>
<td style="text-align:right">30.1 / 30.8 s</td>
<td style="text-align:right">35.7 / 36.6 / 37.6 s</td>
<td style="text-align:right">+10~23%</td>
</tr>
<tr>
<td>free RAM</td>
<td style="text-align:right"><strong>1.7 GiB</strong></td>
<td style="text-align:right"><strong>約 57 GiB</strong></td>
<td style="text-align:right">—</td>
</tr>
<tr>
<td>暖 turn（134K）</td>
<td style="text-align:right">0.7~1.3 s</td>
<td style="text-align:right">0.7~1.0 s</td>
<td style="text-align:right">一樣快</td>
</tr>
</tbody>
</table>
<p dir="auto">（pinned 一欄取兩次量測的平均；file-tier 是單次基準值。兩者是同一顆引擎、只差 config。）</p>
<p dir="auto"><strong>所以看數據時要分清楚三件事：</strong></p>
<ol>
<li>我上次貼的 <strong>0.1.28 prefill 4.4~5.1K</strong> 是 <strong>pinned 年代</strong>；</li>
<li>0.1.32 的 prefill <strong>4.0~4.8K</strong> 也是 pinned（這是公平 A/B，見 2.1）；</li>
<li><strong>0.1.38 的 prefill 2.4~3.9K 是 file-tier</strong>（見 2.2 表，兩邊都是 file-tier，所以那張表才可比）。</li>
</ol>
<p dir="auto">把 0.1.38 的 2,4xx 拿去和 0.1.28 的 4,4xx 比，會得出「新版慢一半」的錯誤結論。</p>
<hr />
<h2>三、每個版本加了什麼</h2>
<h3>3.1 對我這種「單卡跑長 context agent」最有用的</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>版本</th>
<th>新增</th>
<th>為什麼重要</th>
</tr>
</thead>
<tbody>
<tr>
<td>0.1.30</td>
<td><strong>對話 cache</strong>：<code>--conversation-cache-mib N</code> / <code>--conversation-cache-slots N</code> / <code>--conversation-cache-min-free-mib N</code></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> 我之前「兩個長 session 互相沖掉（每輪 ~29s）」就是靠這組 flag 解決：兩個 134K 對話輪流都保持 warm</td>
</tr>
<tr>
<td>0.1.30</td>
<td><strong>server 可交還 GPU</strong>：<code>POST /unload</code>、<code>POST /load</code>、<code>--idle-unload 600</code>、<code>--min-free-vram-mib</code>、<code>--before-load "cmd"</code></td>
<td>要給 ComfyUI 出圖時不用整個停掉，借位／還位有 API</td>
</tr>
<tr>
<td>0.1.34</td>
<td><strong>取消的 request 一秒內釋放引擎</strong></td>
<td>agent 中途按停，不用等它輸出完才輪到下一個請求</td>
</tr>
<tr>
<td>0.1.36</td>
<td><strong><code>UPDATE.bat</code> 一鍵更新</strong>（只更新、不起模型）</td>
<td>升級不用重跑 setup</td>
</tr>
<tr>
<td>0.1.36</td>
<td><strong>expert profile 記憶</strong>（opt-in）：<code>"expert_profile_save": "path\profile.bin"</code></td>
<td>記住你的工作用到哪些 experts，下次開機由它開始而不是出廠 profile</td>
</tr>
<tr>
<td>0.1.37</td>
<td><strong>引擎靜默保護</strong>：<code>engine_silence_s</code>（預設 300s）</td>
<td>引擎 freeze 時 server 會結束該 request 並在下次請求重啟引擎，不再是雙方互等</td>
</tr>
<tr>
<td>0.1.38</td>
<td><strong>沒 API key 時的安全檢查</strong>：只回應認識的 host、跨站頁面 <code>403</code>（<code>allowed_hosts</code> / <code>STRATA_ALLOWED_HOSTS</code>）</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> 我是 <code>host: 0.0.0.0</code> ＋ 沒 key，這個補洞一定要看（見第五節）</td>
</tr>
</tbody>
</table>
<h3>3.2 順帶（AMD / 多卡 / 其他量化）</h3>
<ul>
<li><strong>0.1.30</strong>：多 GPU（<code>--gpus 0,1</code>、<code>--gpus all</code>）；AMD RDNA4。</li>
<li><strong>0.1.31</strong>：Unsloth <strong>UD-Q4_K_XL</strong> 可在 64GB RAM PC 跑（experimental）；AMD decode +15%；Windows 無 <code>experts.bin</code> 的模型載入快一倍。</li>
<li><strong>0.1.32</strong>：多 GPU 短 prompt 修復；AMD decode +12%；社群改動（<code>response_format</code>、<code>anthropic_thinking: on_request</code>、<code>--coupled-draft</code>、<code>--flash-attn</code>、<code>/v1/messages/count_tokens</code>…）。<strong>這個版本我也採用了 <code>anthropic_thinking: on_request</code></strong>。</li>
<li><strong>0.1.33</strong>：<img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 0.1.32 的 <code>strata-vision.exe</code> 是用 <strong>AVX-512 + OpenMP</strong> 編的，在沒有 AVX-512 的 CPU（大部分 Zen 4 前的 Ryzen、很多 Intel 桌面 U）會 <strong>illegal instruction</strong>。0.1.33 改回 portable（AVX2）。我的 9950X3D 有 AVX-512，沒中，但值得提醒。</li>
<li><strong>0.1.34</strong>：<strong>AMD on Windows</strong>（新）；<code>tools/strata_mcp.py</code> —— 一個 MCP server，讓 Claude Code / Cursor / Codex 自己裝、起、檢查、停 Strata。README 也重整（細節搬去 <code>docs/INSTALL.md</code>、<code>MODELS.md</code>…）。</li>
<li><strong>0.1.35</strong>：Windows AMD 用 bundled HIP runtime，首 prompt 不再 crash；low-RAM mode 在 32GB Windows 可用。</li>
<li><strong>0.1.36</strong>：Q2_0 讀 prompt +16~22%、長 context 寫答案 +18%（我跑 NVFP4 不是 Q2_0，但同一批修正在）。</li>
<li><strong>0.1.38</strong>：<code>--kv q4_0</code>（prompt 的 Q4_0 K/V 走 tensor core，32K prompt 由 18.8s → 14.3s，代價是 KL 0.026 / top-1 95.1%，<strong>預設 <code>--kv int8</code> 不變</strong>）；6GB 卡也能起動；<code>--ple-io direct</code>、<code>STRATA_NO_LARGEPAGES</code>；新的 opt-in <code>--peer-device</code>、<code>--adapt-decay</code>。</li>
</ul>
<h3>3.3 NVFP4 fork 自己加的（<code>sergqwer/strata-nvfp4</code>）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>fork 版本</th>
<th>新增</th>
</tr>
</thead>
<tbody>
<tr>
<td>0.1.28-nvfp4.4</td>
<td>Windows VRAM reserve 700 → <strong>1500 MiB</strong>（避免桌面程式爭 VRAM 令 decode 掉到 58~90 tok/s）</td>
</tr>
<tr>
<td>0.1.31-nvfp4.3</td>
<td>自適應 VRAM tier 記得更久：每層 expert miss <strong>-37%</strong>、CPU expert pool <strong>-35%</strong>、PCIe 流量 <strong>-12%</strong></td>
</tr>
<tr>
<td>0.1.32-nvfp4.2</td>
<td><strong>可選更準的 experts pack</strong>（由 BF16 重轉，GPTQ + 27 層 Q8_0 down）：median KL <strong>0.0107 → 0.0051</strong>，代價 <strong>-12~15% decode</strong>、pack 63.3 → 73.8 GiB → <strong>我沒開</strong></td>
</tr>
<tr>
<td>0.1.36-nvfp4.1</td>
<td><strong>Claude Code 用 <code>Read</code> 開的圖能進 image encoder</strong>（修好「tool result 內的圖一律變文字」）</td>
</tr>
<tr>
<td>0.1.38-nvfp4.2</td>
<td>VRAM reserve <strong>回到 700 MiB</strong>（＝多 ~113 expert slots）；帶入上游 tokenizer 修正</td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto">那個更準的 experts pack 我實測過代價：<strong>-12~15% decode</strong> 換 KL 減半。用 agent 跑長 context 我選擇保留速度，沒換。</p>
</blockquote>
<hr />
<h2>四、我最後一輪完整重測（0.1.38-nvfp4.2）</h2>
<p dir="auto">用<strong>原封不動</strong>的 script 重跑我裝機當天那套測試，全部打 live server（<code>full/auto</code>、22,704 slots）。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>0.1.38 實測</th>
<th>對照</th>
</tr>
</thead>
<tbody>
<tr>
<td>並行 aggregate N=1/2/4/8/16/32</td>
<td>103 / 149 / 149 / 145 / 137 / 136 tok/s</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 同型（N≥2 差 ≤7%）</td>
</tr>
<tr>
<td>每條實際 N=2/4/8/16/32</td>
<td>74.7 / 37.2 / 18.1 / 8.5 / 4.2</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>prefill 128K / 250K</td>
<td>3,655~3,924 / 3,397（首 token 28.0s / 44.8s）</td>
<td>-11~14%（file-tier，見 2.4）</td>
</tr>
<tr>
<td>單針檢索（深度 10/50/90%）32K/128K/200K/250K</td>
<td><strong>4 × 3/3 全中</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>5 針一次問齊 32K / 250K</td>
<td><strong>5/5、5/5</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>多跳推理 <code>VELMORA-7719</code></td>
<td>2K→<strong>250K 全部一致</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>同 session prefix cache</td>
<td>冷 55.1s → <strong>0.8s</strong>（reused 115,652）＝ <strong>69×</strong></td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>兩個 134K agent 交替</td>
<td>首次全讀 32.6s → 之後<strong>全部 cache hit</strong>（0.6~0.9s）</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>讀圖 1 張（256² / 512² / 1024×768 / 1920×1080 / 3840×2400）</td>
<td>0.8 / 2.1 / 6.1 / 8.4 / 8.6 s</td>
<td>image token 66 / 258 / 770 / 1010 / 1002</td>
</tr>
<tr>
<td>frames 8 / 16 / 32 / 64</td>
<td>11.9 / 21.6 / 42.9 / <strong>88.4 s</strong></td>
<td>64 張答對</td>
</tr>
<tr>
<td>frames 96 / 128 / 200</td>
<td><strong>全部失敗</strong></td>
<td>64 張上限 bug <strong>仍在</strong></td>
</tr>
<tr>
<td>warm talk（~134K）1 / 2 / 3 個 session</td>
<td>94.5 / 96.7~105.0 / 97.8~109.2 tok/s</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>134K 冷讀</td>
<td>35.15 / 35.29 / 36.18 s</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
</tbody>
</table>
<h3>4.1 讓 VRAM 給 ComfyUI：三檔實測</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/501281a1-23c4-4298-a07a-e49cd98c0bb4.jpeg" alt="img-7-tier.jpeg" class="img-markdown  img-fluid" /></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th style="text-align:right">Full（auto）</th>
<th style="text-align:right">Light</th>
<th style="text-align:right">Balanced</th>
</tr>
</thead>
<tbody>
<tr>
<td>slots · cache</td>
<td style="text-align:right">22,724 · 59,922 MiB</td>
<td style="text-align:right">17,998 · 47,460 MiB</td>
<td style="text-align:right">12,698 · 33,484 MiB</td>
</tr>
<tr>
<td><strong>VRAM 佔用</strong></td>
<td style="text-align:right"><strong>72,236 MiB</strong></td>
<td style="text-align:right"><strong>59,803 MiB</strong></td>
<td style="text-align:right"><strong>45,978 MiB</strong></td>
</tr>
<tr>
<td>讓出 VRAM</td>
<td style="text-align:right">—</td>
<td style="text-align:right"><strong>12.4 GB</strong></td>
<td style="text-align:right"><strong>26.3 GB</strong></td>
</tr>
<tr>
<td>decode 短/8K/32K/80K</td>
<td style="text-align:right">116.8/138.3/135.9/120.6</td>
<td style="text-align:right">120.5/123.2/122.1/132.8</td>
<td style="text-align:right">109.9/115.6/116.8/144.3</td>
</tr>
<tr>
<td>prefill 8K/32K/80K</td>
<td style="text-align:right">2,431/2,924/3,457</td>
<td style="text-align:right">2,440/2,949/3,630</td>
<td style="text-align:right">2,338/2,915/3,587</td>
</tr>
<tr>
<td>134K 冷讀 · decode</td>
<td style="text-align:right">33.4s · 108.0</td>
<td style="text-align:right">31.5s · 125.3</td>
<td style="text-align:right">32.3s · 99.9</td>
</tr>
</tbody>
</table>
<p dir="auto">→ <strong>Light = 讓 12 GB 幾乎零代價；Balanced = 讓 26 GB、decode 約 -10~20%（prefill 幾乎不變）。</strong> 對 Qwen-Image 2.1（峰值 22~26 GB）來說 Balanced 剛好。</p>
<h3>4.2 <code>STRATA_PREFILL_NVFP4</code>：w4a8（預設）vs w4a4 重測</h3>
<p dir="auto">先講方法上的坑：量 prefill <strong>一定要看 engine log 自己那行 <code>prompt N = M reused + R read</code></strong>。我一開始用正常 config 跑，第二輪同一個 prompt 命中 cache（<code>7 tokens = 6544 reused + 7 read</code>），量到的「prefill」完全不可信。改成「送一段不同文字踢走 resident sequence、確認 <code>0 reused</code>」之後：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>context</th>
<th style="text-align:right">w4a8（預設）</th>
<th style="text-align:right">w4a4</th>
<th style="text-align:right">差</th>
</tr>
</thead>
<tbody>
<tr>
<td>~8K</td>
<td style="text-align:right">2,573.6</td>
<td style="text-align:right"><strong>2,931.4</strong></td>
<td style="text-align:right"><strong>+13.9%</strong></td>
</tr>
<tr>
<td>~32K</td>
<td style="text-align:right">2,956.6</td>
<td style="text-align:right"><strong>3,299.8</strong></td>
<td style="text-align:right"><strong>+11.6%</strong></td>
</tr>
<tr>
<td>~80K</td>
<td style="text-align:right">3,648.3</td>
<td style="text-align:right"><strong>4,121.3</strong></td>
<td style="text-align:right"><strong>+13.0%</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">代價：KL 0.0018 → <strong>0.0080</strong>（差 4.5×）、top-1 8/8 → 7/8。<strong>只快 prefill，decode 完全不變。</strong> → <strong>維持 <code>w4a8</code>。</strong></p>
<hr />
<h2>五、升級要留意（我踩過 / 核過）</h2>
<ol>
<li>
<p dir="auto"><strong>升級會蓋掉 3 個檔案，要自己 re-apply</strong>：</p>
<ul>
<li><code>config\strata-nvfp4.json</code>（我的 <code>host: 0.0.0.0</code> ＋ <code>--conversation-cache-mib 9216</code>）</li>
<li><code>start-server.cmd</code>（<code>--port 8097</code>）</li>
<li><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 若你有改 <code>serve\server.py</code>（我加了 <code>CREATE_NO_WINDOW</code> 防 cmd 彈窗），<strong>新版不能照抄舊檔</strong> —— <a href="http://server.py" rel="nofollow ugc">server.py</a> 由 149,627 B 變 192,758 B、Popen 位置也搬了。要重新打 patch。</li>
<li><code>models\</code> 和 <code>.venv-serve</code> 不在 zip 內，會保留，不用重新轉換。</li>
</ul>
</li>
<li>
<p dir="auto"><strong><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 0.1.31+ 的低 RAM tier 會自動開</strong>：安裝 RAM &lt; 96 GB 就中（我的 93.6 GiB 中招）。它會放棄 pinned resident arena、改成只 pin ~5 GiB，其餘由 SSD 讀 → <strong>prefill 掉 17~34%</strong>。要判斷有沒有中，grep engine log 這三句：<code>low RAM (below 96 GB installed</code>、<code>resident RAM mode:</code>、<code>expert tiers:</code>。處理：加 <code>--no-low-ram</code>（回 pinned），或者像我一樣接受 file-tier。</p>
</li>
<li>
<p dir="auto"><strong><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 0.1.38 的安全變更</strong>：<code>host: 0.0.0.0</code> 而且<strong>沒有 API key</strong> 的話，server 只回應它認識的名字。實測：</p>
</li>
</ol>
<p dir="auto"><strong>Host header 檢查（防 DNS rebinding）</strong></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>送出的 Host</th>
<th>結果</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>127.0.0.1</code> / <code>localhost</code></td>
<td>200 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td><code>192.168.x.x</code>（LAN IP）／<code>100.x.x.x</code>（Tailscale IP）</td>
<td>200 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>本機電腦名</td>
<td>200 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td><code>evil.example.com</code></td>
<td><strong>403</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>MagicDNS 名（<code>*.ts.net</code>）</td>
<td><strong>403</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>跨站頁面檢查（<code>_foreign_page</code>，只針對 <code>/v1</code> POST）</strong></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>情境</th>
<th>結果</th>
</tr>
</thead>
<tbody>
<tr>
<td>沒有 <code>Origin</code>（curl／OpenAI／Anthropic SDK／agent）</td>
<td>200 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td><code>Origin: http://127.0.0.1:8097</code>（Strata 自己的頁）</td>
<td>200 <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td><code>Origin: https://evil.com</code></td>
<td><strong>403</strong> <img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
</tbody>
</table>
<p dir="auto">→ <strong>用 IP 直連完全沒影響</strong>；只有<strong>主機名／MagicDNS 名／reverse proxy 名</strong>要加 <code>"allowed_hosts": ["..."]</code>。</p>
<ol start="4">
<li>
<p dir="auto"><strong><code>/unload</code>、<code>/load</code> 現在只收 JSON</strong>：<code>curl -X POST -H "Content-Type: application/json" localhost:8097/unload</code>。</p>
</li>
<li>
<p dir="auto"><strong>64 張圖／request 的 bug 仍在</strong>（新版一樣先全部 encode 再讀檔，cache 滿 64 就刪掉前面的 <code>.sve</code>）。我不會一個 request 送 &gt;64 張，所以繼續不理。</p>
</li>
<li>
<p dir="auto"><strong>長 context prefill 不要只取第一行</strong>：切模式／重載後<strong>第一個</strong>長 prompt 會重新熱身 expert cache，可能量到 942 tok/s 這種假數字（log 原文：33.9 秒內由 SSD 讀了 89 GB，≈2.6 GB/s）。緊接的 128K/250K 才反映穩定表現。</p>
</li>
<li>
<p dir="auto">未變：單流 FIFO（總吞吐固定 ~145 tok/s）、<strong>~245.7K per-request 硬牆</strong>、<code>STRATA_ADAPT_WAIT</code> 仍然 opt-in（所以 greedy 答案仍不保證逐位元可重現）。</p>
</li>
</ol>
<hr />
<h2>六、結論</h2>
<p dir="auto">每一欄都是<strong>同設定之下</strong>的版本對版本（不要跨欄比較）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th></th>
<th>0.1.28 → 0.1.32（pinned）</th>
<th>0.1.32 → 0.1.38（file-tier）</th>
</tr>
</thead>
<tbody>
<tr>
<td>decode 短對話</td>
<td>102.1 → <strong>127.8</strong>（+25%）</td>
<td>121.9 → 126.3（+4%，雜訊內）</td>
</tr>
<tr>
<td>decode 32K</td>
<td>108.9 → <strong>156.6</strong>（+44%）</td>
<td>139.3 → <strong>152.7</strong>（+10%）</td>
</tr>
<tr>
<td>prefill 32K</td>
<td>4,451 → <strong>4,771</strong>（+7%）</td>
<td>2,864 → <strong>2,957</strong>（+3%）</td>
</tr>
<tr>
<td>128K prefill</td>
<td>4,512 → 4,640（+3%）</td>
<td>3,766 → <strong>3,924</strong>（+4.2%）</td>
</tr>
<tr>
<td>128K decode</td>
<td>116.6 → 115.8（平手）</td>
<td>110.4 → <strong>120.4</strong>（+9%）</td>
</tr>
<tr>
<td>134K 暖 turn</td>
<td>（未同法量測）</td>
<td>0.7~0.9 s → <strong>0.3~0.5 s</strong></td>
</tr>
<tr>
<td>tokenizer（107K 暖 turn）</td>
<td>—</td>
<td>739 → <strong>442 ms</strong>（-40%）</td>
</tr>
<tr>
<td>有無項目變差</td>
<td>無</td>
<td>無</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>值不值得升？值得。</strong> 兩次都是零退步：</p>
<ul>
<li><strong>0.1.32</strong>：decode +21~53%（平均 +25~44%）、prefill +6~12% —— 單次升級回報最大。</li>
<li><strong>0.1.38</strong>：幅度細，但 <strong>tokenizer 修正每 turn 省 ~0.3 s</strong>（多長對話流程直接受惠）＋安全補洞＋128K 的 +4~9%。</li>
</ul>
<p dir="auto"><strong>代價</strong>：0.1.38-nvfp4.2 的 VRAM reserve 回到 700 MiB → load 後 free VRAM 由 1,119 → <strong>446 MiB</strong>。如果看到 decode 忽快忽慢／桌面卡頓，config 加 <code>--vram-reserve-mib 1500</code> 就回到舊行為（代價 = 少約 113 slots）。</p>
<p dir="auto"><strong>升級動作</strong>：其實就是「解壓蓋上去、保留 <code>models\</code> 和 <code>.venv-serve</code>、re-apply 上面那 3 個檔案」。</p>
<hr />
]]></description><link>https://lcz.me/post/22251</link><guid isPermaLink="true">https://lcz.me/post/22251</guid><dc:creator><![CDATA[Yu Yeung Lam]]></dc:creator><pubDate>Sun, 04 Oct 2026 04:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Sun, 04 Oct 2026 04:39:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yu-yeung-lam" aria-label="Profile: Yu-Yeung-Lam">@<bdi>Yu-Yeung-Lam</bdi></a> 发新区装备秀里去，需要这些素材，挺值得说道的。一会这个帖子就要上视频，<img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f602.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--joy" style="height:1.4em;width:auto;vertical-align:middle" title="😂" alt="😂" /></p>
]]></description><link>https://lcz.me/post/22243</link><guid isPermaLink="true">https://lcz.me/post/22243</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Sun, 04 Oct 2026 04:39:44 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Sun, 04 Oct 2026 04:30:10 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/terry" aria-label="Profile: terry">@<bdi>terry</bdi></a> 第一次自己組裝<br />
<img src="https://upload.lcz.me/uploads/5ee8e56f-8c9d-4404-93aa-b9b9672adea9.jpeg" alt="WhatsApp Image 2026-10-04 at 3.20.49 PM (1).jpeg" class="img-markdown  img-fluid" /><br />
<img src="https://upload.lcz.me/uploads/08a1d33d-4faa-4aa9-a6f4-c860dfc5072f.jpeg" alt="WhatsApp Image 2026-10-04 at 3.20.49 PM.jpeg" class="img-markdown  img-fluid" /></p>
]]></description><link>https://lcz.me/post/22241</link><guid isPermaLink="true">https://lcz.me/post/22241</guid><dc:creator><![CDATA[Yu Yeung Lam]]></dc:creator><pubDate>Sun, 04 Oct 2026 04:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Sat, 03 Oct 2026 14:52:04 GMT]]></title><description><![CDATA[<p dir="auto"><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2b50.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--star" style="height:1.4em;width:auto;vertical-align:middle" title="⭐" alt="⭐" /> 版主审定：本帖设为<strong>精华</strong>，作者 <strong>+5 积分</strong>奖励，希望再接再厉！</p>
<blockquote>
<p dir="auto">奖励凭证：精华 +5 分 · 编号 f2035-3549-1（系统自动发放，显示稍有延迟）</p>
</blockquote>
]]></description><link>https://lcz.me/post/22148</link><guid isPermaLink="true">https://lcz.me/post/22148</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Sat, 03 Oct 2026 14:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Sat, 03 Oct 2026 14:50:39 GMT]]></title><description><![CDATA[<p dir="auto">精品，非常好的帖子。加精鼓励一次，补下显卡实拍回报下我，<img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/1f602.png?v=fe25256ab4a" class="not-responsive emoji emoji-android emoji--joy" style="height:1.4em;width:auto;vertical-align:middle" title="😂" alt="😂" /></p>
]]></description><link>https://lcz.me/post/22145</link><guid isPermaLink="true">https://lcz.me/post/22145</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Sat, 03 Oct 2026 14:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Fri, 02 Oct 2026 01:50:40 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/johnnybegood" aria-label="Profile: johnnybegood">@<bdi>johnnybegood</bdi></a> <a href="/post/21900">说</a>:</p>
<p dir="auto">strata真是带火了一波 q38 flash !啥时候带带 deepseek v4 flash呀！</p>
</blockquote>
<p dir="auto">這內存海，到時候換洋垃圾漲價</p>
]]></description><link>https://lcz.me/post/21905</link><guid isPermaLink="true">https://lcz.me/post/21905</guid><dc:creator><![CDATA[dardeaw feng]]></dc:creator><pubDate>Fri, 02 Oct 2026 01:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Fri, 02 Oct 2026 01:28:23 GMT]]></title><description><![CDATA[<p dir="auto">我是8月才買的電腦，一開始是用qwen3.8 27b，用sglang可以同一時間跑3個agent+comfyui qwen image 2.1都有大概80-100tok/s。但一開始用qwen3.8-flash-next加上這個速度，那種模型質素和聰明提升的感覺真的很明顯，比較像用之前的deepseek v4。我覺得做長任務的說，只得單流都是值得的。</p>
]]></description><link>https://lcz.me/post/21901</link><guid isPermaLink="true">https://lcz.me/post/21901</guid><dc:creator><![CDATA[Yu Yeung Lam]]></dc:creator><pubDate>Fri, 02 Oct 2026 01:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Fri, 02 Oct 2026 01:04:26 GMT]]></title><description><![CDATA[<p dir="auto">strata真是带火了一波 q38 flash !啥时候带带 deepseek v4 flash呀！</p>
]]></description><link>https://lcz.me/post/21900</link><guid isPermaLink="true">https://lcz.me/post/21900</guid><dc:creator><![CDATA[johnnybegood]]></dc:creator><pubDate>Fri, 02 Oct 2026 01:04:26 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Fri, 02 Oct 2026 00:03:45 GMT]]></title><description><![CDATA[<p dir="auto">第一次发帖就是这种完整度的实测，感谢分享。几点可复现性上的建议：</p>
<ol>
<li>decode 段固定 batch=1、ctx（建议 8K 与 32K 各一条）与 KV dtype 再对比；MoE 的 decode 主要吃权重带宽和 expert 命中率，只看总 t/s 不好归因。</li>
<li><code>--spec</code>（投机）关闭/开启各跑一遍，才能把「NVFP4 引擎收益」和「投机收益」拆开。</li>
<li>Windows 那个 release bundle 内嵌了 CUDA runtime，跟驱动 616.92 是两套版本；换驱动后建议重测一次，排除 runtime/driver 差异。<br />
如果方便，把 prefill/decode、ctx、量化与 spec 参数列成一张表，后面别人复现会容易很多。</li>
</ol>
]]></description><link>https://lcz.me/post/21894</link><guid isPermaLink="true">https://lcz.me/post/21894</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Fri, 02 Oct 2026 00:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Thu, 01 Oct 2026 16:54:55 GMT]]></title><description><![CDATA[<p dir="auto">玩不起玩不起，只能眼馋</p>
]]></description><link>https://lcz.me/post/21871</link><guid isPermaLink="true">https://lcz.me/post/21871</guid><dc:creator><![CDATA[xiaopbro]]></dc:creator><pubDate>Thu, 01 Oct 2026 16:54:55 GMT</pubDate></item><item><title><![CDATA[Reply to Qwen3.8-Flash-Next（176B MoE）單卡 72GB 實測 —— Strata NVFP4 引擎完整數據 on Thu, 01 Oct 2026 14:36:53 GMT]]></title><description><![CDATA[<p dir="auto">还得是高端显卡<br />
几张都抵不了一张72gb</p>
]]></description><link>https://lcz.me/post/21847</link><guid isPermaLink="true">https://lcz.me/post/21847</guid><dc:creator><![CDATA[applejuice]]></dc:creator><pubDate>Thu, 01 Oct 2026 14:36:53 GMT</pubDate></item></channel></rss>