<?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[4卡Tesla V100 32G 跑 GLM-5.3-Flash, Project Maya 跑 Maya-L以及Q4 GGUF, 過程與結果]]></title><description><![CDATA[<p dir="auto">看了網上與版上出現了Project Maya - 基於Strata 跑GLM 5.3 flash的分支. 忍不住手癢把本來4卡V100 32G跑SGLang Qwen 3.8 flash next拿來試看看.<br />
剛開始裝好速度有點感人, 大概1x tok/s吧. 只好請出GPT Astra/Sol 來救援. Astra有點貴,額度不太夠, 於是用Astra做計畫, Sol實作的方式. 中間除非忍不住, 大多沒有介入, 搞了幾天, 終於弄到還能用, 最後先拿Maya-L來當主選, 如果遇到品質問題再叫Q4 GGUF起來比較看看, 是不是品質有差, 結果與過程整理如下:</p>
<h1>主機配置與 Maya-L／Q4 比較</h1>
<p dir="auto">2026-10-15｜Maya-L 已上線，並完成三 slot prompt cache 修復；Q4 為備選。兩模型效能比較沿用 Task33 已封存的 CLOCK 開啟版本，快取修復實測另列。C1＝單請求；C3＝三請求並行。</p>
<h2>1. 電腦主機配置</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>配置</th>
</tr>
</thead>
<tbody>
<tr>
<td>主機板</td>
<td>HUANANZHI H12D-8D</td>
</tr>
<tr>
<td>CPU</td>
<td>AMD EPYC 7K62，48核心／96執行緒，單socket、單NUMA</td>
</tr>
<tr>
<td>RAM</td>
<td>128 GB DDR4（8×16 GB），2133 MT/s；系統可見123.375 GiB</td>
</tr>
<tr>
<td>儲存</td>
<td>Crucial P310 NVMe 1 TB（系統／模型）；另有ADATA SX8200 512 GB、WD HDD 4 TB</td>
</tr>
<tr>
<td>OS</td>
<td>Ubuntu 26.04 LTS，Linux 7.0.0-31-generic</td>
</tr>
<tr>
<td>Driver／編譯器</td>
<td>NVIDIA 580.178.04／CUDA 12.4.131，sm70</td>
</tr>
</tbody>
</table>
<h2>2. V100 配置情況</h2>
<p dir="auto">4×Tesla V100-SXM2-32GB，共128 GiB VRAM；每卡power limit 300W。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>GPU</th>
<th>Trunk layers（0起算）</th>
<th>Expert pool預算 GiB</th>
<th>連線</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0–10</td>
<td>25.5</td>
<td>與GPU1為NV5</td>
</tr>
<tr>
<td>1</td>
<td>11–22</td>
<td>26.5</td>
<td>與GPU0為NV5；其餘PCIe</td>
</tr>
<tr>
<td>2</td>
<td>23–33</td>
<td>26.5</td>
<td>PCIe</td>
</tr>
<tr>
<td>3</td>
<td>34–44</td>
<td>25.4</td>
<td>PCIe</td>
</tr>
</tbody>
</table>
<p dir="auto">Layer split＝11／23／34；只有GPU0<img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2194.png?v=a055419e292" class="not-responsive emoji emoji-android emoji--left_right_arrow" style="height:1.4em;width:auto;vertical-align:middle" title="↔" alt="↔" />1使用NVLink，其餘跨卡連線為同NUMA內PCIe。</p>
<h2>3. 模型參數與設定</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>項目</th>
<th>Maya-L</th>
<th>Q4</th>
</tr>
</thead>
<tbody>
<tr>
<td>模型名稱／出處</td>
<td><a href="https://huggingface.co/peasantsmith/GLM-5.3-Flash-Maya-GGUF" rel="nofollow ugc">peasantsmith／GLM-5.3-Flash-Maya-L-IQ3_S</a></td>
<td><a href="https://huggingface.co/SixVolts/GLM-5.3-Flash-ewaste-edition-GGUF" rel="nofollow ugc">SixVolts／GLM-5.3-Flash-Q4_K_XL</a></td>
</tr>
<tr>
<td>量化／檔案大小</td>
<td>混合IQ3_S／Q5_K／IQ4_XS；156.3 GB</td>
<td>原Q4_K_XL混合量化；186.5 GB</td>
</tr>
<tr>
<td>Context</td>
<td>每slot輸入＋輸出≤500,000；native allocation 524,288</td>
<td>相同</td>
</tr>
<tr>
<td>Temperature／thinking</td>
<td>0.4／high</td>
<td>相同</td>
</tr>
<tr>
<td>Max concurrency</td>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>MTP／HC attention base</td>
<td>原K=1／45 tensors F32</td>
<td>相同</td>
</tr>
<tr>
<td>KV</td>
<td>INT8、host-backed；resident32,768，decode CLOCK開啟</td>
<td>相同</td>
</tr>
<tr>
<td>跨請求 prompt cache</td>
<td>已修復；每slot一份checkpoint，最多3份，完全相同token前綴才重用</td>
<td>備選artifact尚未套用此次修復</td>
</tr>
<tr>
<td>Prefill chunk</td>
<td>4096 tokens</td>
<td>相同</td>
</tr>
<tr>
<td>Expert RAM／shadow預算</td>
<td>84 GiB／8 GiB</td>
<td>相同</td>
</tr>
<tr>
<td>資源保護</td>
<td>cgroup MemoryHigh98G／Max102G／SwapMax0；可用RAM安全底線20 GiB</td>
<td>相同</td>
</tr>
<tr>
<td>API</td>
<td>0.0.0.0:9527，model id＝glm-5.3-flash</td>
<td>備選，未公開啟用</td>
</tr>
</tbody>
</table>
<p dir="auto">目前公開服務為 <code>glm-mayal-prefix-serving.service</code>，source <code>97fed45</code>／ELF SHA256 <code>73e186ef…68dbf3b2</code>；最後營運核對為2026-10-15 11:19（台北時間）。模型、精度與上述預算維持不變。</p>
<h2>4. 兩模型比較</h2>
<h3>C1 指標</h3>
<p dir="auto">以下 C1、C3及兩模型資源／品質表均為 <strong>Task33歷史實測（source61c／ELFc23）</strong>，不是此次快取修復版的完整重測。warm32K指expert cache已暖、prompt KV已reset；fresh近499K指載入後首次推論，均不含模型啟動／cold OS讀檔。兩者實際input為32,783／498,463，各輸出1537 tokens，decode取512 warm後的1024-token正式視窗。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>實測指標</th>
<th>Maya-L</th>
<th>Q4</th>
</tr>
</thead>
<tbody>
<tr>
<td>warm32K decode tok/s</td>
<td><strong>36.895</strong></td>
<td>25.028</td>
</tr>
<tr>
<td>warm32K prefill tok/s</td>
<td>790.054</td>
<td>835.982</td>
</tr>
<tr>
<td>warm32K prefill耗時／TTFT s</td>
<td>41.493／41.547</td>
<td>39.214／39.358</td>
</tr>
<tr>
<td>warm32K E2E s</td>
<td>85.146</td>
<td>103.126</td>
</tr>
<tr>
<td>近499K decode tok/s</td>
<td>27.963</td>
<td>20.988</td>
</tr>
<tr>
<td>近499K prefill tok/s</td>
<td>1294.617</td>
<td>1394.921</td>
</tr>
<tr>
<td>近499K prefill耗時／TTFT s</td>
<td>385.027／385.235</td>
<td>357.341／357.622</td>
</tr>
<tr>
<td>近499K E2E s</td>
<td>445.240</td>
<td>438.471</td>
</tr>
<tr>
<td>warm32K token gap p95／max ms</td>
<td>44.009／66.569</td>
<td>70.442／110.923</td>
</tr>
<tr>
<td>warm32K MTP接受率</td>
<td>88.27%</td>
<td>75.57%</td>
</tr>
</tbody>
</table>
<p dir="auto">TTFT／E2E及token gap為native量測，非HTTP/SSE延遲。每模型僅一組當輪視窗。</p>
<h3>Maya-L 快取修復實測</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>實際API情境</th>
<th>輸入／命中 tokens</th>
<th>Native prefill s</th>
<th>HTTP整個請求 s</th>
</tr>
</thead>
<tbody>
<tr>
<td>32K首次請求</td>
<td>32786／0</td>
<td>28.7461</td>
<td>29.6724</td>
</tr>
<tr>
<td>相同請求重複</td>
<td>32786／32785</td>
<td><strong>0.0822</strong></td>
<td><strong>0.7966</strong></td>
</tr>
<tr>
<td>真實多輪：接續assistant回覆再追問</td>
<td>32808／32785，只處理23個新tokens</td>
<td>1.7947</td>
<td>2.2058</td>
</tr>
<tr>
<td>工具結果重複續接</td>
<td>261／206</td>
<td>3.2171（首次9.2487）</td>
<td>未單獨量測</td>
</tr>
</tbody>
</table>
<p dir="auto">前兩列為修復版同binary冷／命中配對，完整回覆含reasoning一致；不是原版對修正版的cold-prefill A/B，也不是新的decode吞吐或HTTP TTFT成績。多輪與工具續接另有實際API證據。每slot僅保留一份checkpoint：被其他對話覆蓋、重啟、RELEASE或前綴改變仍會miss；expert hit telemetry尚未上報，不代表expert命中率為0。</p>
<h3>C3／操作指標</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>實測指標</th>
<th>Maya-L</th>
<th>Q4</th>
</tr>
</thead>
<tbody>
<tr>
<td>32K C3各slot decode tok/s</td>
<td>25.364／25.047／25.107</td>
<td>19.244／19.155／19.209</td>
</tr>
<tr>
<td>同一重疊視窗aggregate tok/s</td>
<td><strong>75.321</strong></td>
<td>57.729</td>
</tr>
<tr>
<td>Jain公平性</td>
<td>1.000000</td>
<td>約1.000000</td>
</tr>
<tr>
<td>STOP→DONE ms</td>
<td>61.012</td>
<td>102.420</td>
</tr>
<tr>
<td>RELEASE→ACK ms</td>
<td>29.567</td>
<td>92.700</td>
</tr>
<tr>
<td>Cancel後reuse／真正1→3→1</td>
<td>PASS／PASS</td>
<td>PASS／PASS</td>
</tr>
<tr>
<td>正常shutdown</td>
<td>exit0</td>
<td>exit0</td>
</tr>
</tbody>
</table>
<p dir="auto">C3為每slot32K的short測試；1→3→1為生命週期驗證，非三階段速度比較。本輪完整長context C3未重測。</p>
<h1>相較最新版上游 Maya，本地改了什麼（2026-10-15）</h1>
<p dir="auto"><strong>目前是從 Maya v1.0.21 分叉、選擇性移植與本機驗證的 V100 版本，並不是完整同步最新版上游。</strong> 本地保留四卡排程／生命週期、固定 RAM／expert 預算、F32 相容與 frontend 修正，並選擇性移植 decode CLOCK。沒有本機對上游最新版的同條件效能／品質 A/B，不能說本地全面較快或品質更高。</p>
<h2>已在本地版本中的主要差異</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>範圍</th>
<th>本地具體修改與目的</th>
<th>對最新版上游的定位／證據</th>
</tr>
</thead>
<tbody>
<tr>
<td>四卡資料搬運</td>
<td>建立 fenced CUDA P2P stage handoff，替代本 fork 原先的 host activation 中轉；依實際 NV5／PCIe topology 分層</td>
<td>本地 <code>stage_transfer.hpp</code>、<code>4bdf869</code>。最新版也有多GPU／P2P能力；不是本地發明P2P</td>
</tr>
<tr>
<td>C1／C3 排程</td>
<td>通用 slot ownership、四 stage dispatch、4096-token prefill admission 與 decode交錯；單slot adaptive solo 使用原K1 MTP，peer加入時在已確認boundary yield並處理prepared draft</td>
<td><code>glm_slot.hpp</code>、<code>generate.cpp</code>、<code>e87288b</code>／<code>8fff864</code>／<code>5cbde19</code>。上游已有 <code>--parallel 1..8</code>，本地新增的是這套四卡排程及切換，不是「上游不能並行」</td>
</tr>
<tr>
<td>slot/window生命週期</td>
<td>early solo entry前drain先前upload；銷毀slot latent window先於其借用stream，避免資源釋放順序錯誤</td>
<td><code>130461b</code>／<code>295db4c</code>；prepared-entry fence與window lifetime為不同修正，不將其混稱driver QUIT修復</td>
</tr>
<tr>
<td>KV容量與傳輸</td>
<td>完整logical KV保留host端，INT8 resident32768；GPU選取host rows並非截斷只留32K；另用原buffer做decode CLOCK4 reuse，reset／truncate／rewrite／slot隔離有明確規則</td>
<td><code>latent_window.cuh</code>／<code>clock_latent.cuh</code>／<code>61c0ced</code>。上游已含KV streaming；本地只選擇性移植#86 decode residency，沒有整段prefix staging、side-prefetch、或完整同步其新KV系統</td>
</tr>
<tr>
<td>expert placement／RAM保護</td>
<td>每卡pool cap、model-scoped host hard cap、shadow LRU clean-eviction、pure-GPU route counters、promotion margin與budget／aging修正</td>
<td><code>host_budget.hpp</code>與fast path；<code>f4c3aee</code>／<code>7b5242c</code>／<code>04631e9</code>／<code>9e2d836</code>。最新版fast path有基本pool／RAM／promote-min，本地額外的per-device cap、shadow與margin/budget實作不同</td>
</tr>
<tr>
<td>Q4／Maya-L 權重相容</td>
<td>Q4 lossless F32 pack admission及native F32投影；Maya-L明確保留F32 state、接入既有native FP16 expert decoder並記錄conversion manifest</td>
<td><code>4ab91f4</code>／<code>8267318</code>／<code>5ba4782</code>／<code>f5f6c33</code>。上游packer已能存部分F32，不應說最新版完全不支援F32；本地增加的是特定artifact的保留／admission規則</td>
</tr>
<tr>
<td>Volta prefill</td>
<td>Q4 expert dequant至FP16並用既有Tensor Core GEMM，另做dedicated workspace與prefill前tier quiesce</td>
<td><code>105f6c7</code>／<code>12297e6</code>／<code>0920bf9</code>。上游prefill也用FP16／Tensor Cores；本地是sm70與原Q4 pack路徑的適配，不是新增一種精度</td>
</tr>
<tr>
<td>Sampler</td>
<td>單token top-k使用兩階段64-block候選／規約，替代fork原單block長詞表掃描</td>
<td><code>fb09f02</code>，本地 <code>sampler_stage1_kernel</code>／<code>sampler_stage2_kernel</code>。最新版也有其sampler／speculative sampling演進，但不是這個相同兩階段實作；無最新版本機A/B，不能沿用舊比較宣稱勝過最新版</td>
</tr>
<tr>
<td>prompt／tool history</td>
<td>tool continuation保留reasoning_content、穩定歷史checkpoint、暫時tool cue處理、forced-tool render與admission token計數一致</td>
<td><code>0dee3ff</code>／<code>4fde90a</code>／<code>c97ce27</code>／<code>5c6fca1</code>。新版上游也有reasoning／conversation checkpoint等功能，不能把功能名稱全部算成獨有</td>
</tr>
<tr>
<td>三slot跨請求prefix cache</td>
<td>修復本地parallel3路徑每次GEN reset、未保存checkpoint的問題；每slot保存prompt邊界recurrent／indexer state、重用原KV，按完全相同token前綴恢復；API選最長匹配空閒slot並逐request記cached tokens</td>
<td><code>6fe1677</code>／<code>4c96b9a</code>／<code>97fed45</code>；<a href="tests/prefix-reuse-fix/REPORT.md">修復與實測</a>、<a href="patches/multislot-prefix-reuse.patch">完整patch</a>。上游已有conversation reuse，這是本地多slot路徑修復，不宣稱發明prefix cache</td>
</tr>
<tr>
<td>frontend併發與shutdown</td>
<td>完整pipe command序列化、各request timing隔離；shutdown先拒絕新request，逐slot cancel/drain DONE，再QUIT，修正只等global FIFO不能等到所有並行owner問題</td>
<td><code>5fb5b1c</code>／<code>7c33d31</code>，本地 <code>Service.shutdown_requests</code>／<code>wait_for_requests</code>。最新版同處仍採其WRAP／FIFO關閉流程，兩邊shutdown結構不同；未對最新版做失敗重現，不宣稱其一定有同一bug</td>
</tr>
<tr>
<td>營運與驗收（native以外）</td>
<td>immutable runtime、owned unit/PID/cgroup/GPU核對、RAM/swap guard、獨立finally／ExecStopPost、復原競態處理、raw manifest與品質／lifecycle驗收</td>
<td>本專案scripts/tests與部署controller，不是模型權重改動，也不是上游kernel patch；Maya-L上線後成功交接保持Maya-L，Q4是rollback，不自動切回</td>
</tr>
</tbody>
</table>
<h2>現行設定，與程式修改分開</h2>
<p dir="auto">本機固定：4×V100、split11/23/34、parallel3；每slot prompt+output≤500000、native ctx524288；temp0.4/high、K1、INT8 KV、resident32768、prefill4096；pool cap25.5/26.5/26.5/25.4 GiB、host expert84 GiB、shadow8 GiB；CPU lane OFF。公開model id維持glm-5.3-flash。</p>
<h2>最後附上llama-benchy測速 , 實際工作跑速約在 40 tok/s 左右, 緩存命中 98-99%, prefill部分應該是計算有問題, 大概800-1200左右吧</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="text-align:left">model</th>
<th style="text-align:right">test</th>
<th style="text-align:right">t/s</th>
<th style="text-align:right">peak t/s</th>
<th style="text-align:right">ttfr (ms)</th>
<th style="text-align:right">est_ppt (ms)</th>
<th style="text-align:right">e2e_ttft (ms)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">pp2048</td>
<td style="text-align:right">409563.61 ± 47468.25</td>
<td style="text-align:right"></td>
<td style="text-align:right">9.39 ± 0.61</td>
<td style="text-align:right">4.50 ± 0.61</td>
<td style="text-align:right">9477.68 ± 128.42</td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">tg128</td>
<td style="text-align:right">29.47 ± 2.72</td>
<td style="text-align:right">30.00 ± 2.94</td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">pp2048 @ d4096</td>
<td style="text-align:right">620290.80 ± 80231.06</td>
<td style="text-align:right"></td>
<td style="text-align:right">13.77 ± 1.29</td>
<td style="text-align:right">8.87 ± 1.29</td>
<td style="text-align:right">14608.85 ± 56.53</td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">tg128 @ d4096</td>
<td style="text-align:right">32.99 ± 3.76</td>
<td style="text-align:right">33.33 ± 3.86</td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">pp2048 @ d8192</td>
<td style="text-align:right">786304.27 ± 52395.70</td>
<td style="text-align:right"></td>
<td style="text-align:right">16.44 ± 0.85</td>
<td style="text-align:right">11.55 ± 0.85</td>
<td style="text-align:right">18632.48 ± 105.30</td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">tg128 @ d8192</td>
<td style="text-align:right">36.86 ± 2.78</td>
<td style="text-align:right">37.33 ± 2.62</td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">pp2048 @ d16384</td>
<td style="text-align:right">1129530.40 ± 116401.56</td>
<td style="text-align:right"></td>
<td style="text-align:right">19.61 ± 1.66</td>
<td style="text-align:right">14.72 ± 1.66</td>
<td style="text-align:right">26135.26 ± 727.22</td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">tg128 @ d16384</td>
<td style="text-align:right">37.46 ± 2.93</td>
<td style="text-align:right">38.00 ± 2.94</td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">pp2048 @ d32768</td>
<td style="text-align:right">1255497.81 ± 105983.77</td>
<td style="text-align:right"></td>
<td style="text-align:right">29.73 ± 1.93</td>
<td style="text-align:right">24.84 ± 1.93</td>
<td style="text-align:right">40396.22 ± 214.84</td>
</tr>
<tr>
<td style="text-align:left">glm-5.3-flash</td>
<td style="text-align:right">tg128 @ d32768</td>
<td style="text-align:right">39.58 ± 1.41</td>
<td style="text-align:right">40.00 ± 1.41</td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
<td style="text-align:right"></td>
</tr>
</tbody>
</table>
]]></description><link>https://lcz.me/topic/2330</link><generator>RSS for Node</generator><lastBuildDate>Tue, 10 Nov 2026 00:19:47 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2330.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Oct 2026 04:44:05 GMT</pubDate><ttl>60</ttl></channel></rss>