技術變更內容:融合 FFN 矩陣乘法與 GLU 激活函數
llama.cpp 專案的 CUDA 後端近期合併了一項由開發者 anujj 提交的 Pull Request #29948。該變更的核心在於將前饋神經網路(FFN)層中的 gate/up 矩陣乘法與 GLU(Gated Linear Unit)激活函數在 MMQ(Matrix Multiplication Quantized)核心中進行融合。
根據 PR 標題,該變更為在 MMQ 中融合 FFN gate/up 矩陣乘法與 GLU,並採用交錯排列的 gate/up 行(interleaved gate/up rows)。原始來源未說明具體底層實作原理或效能調校機制。
DGX Spark (GB10) 上的測試數據顯示顯著增益
社群用戶 jacek2023 分享了在 NVIDIA DGX Spark(搭載 GB10 晶片)上執行 llama-bench 的測試結果。測試參數設定為 `-ngl 999`(所有層載入 GPU)、啟用 Flash Attention (`-fa on`)、預填充長度 16384 tokens (`-p 16384`),且不進行生成 (`-n 0`)。
在 Qwen3.8-27B 模型上,使用 IQ4_XS 量化格式時,吞吐量從 master 分支的 882.4 tok/s 提升至 PR 版本的 948.0 tok/s,增幅達 7.4%。Q4_K_M 格式則從 840.1 tok/s 提升至 899.9 tok/s,增幅為 7.1%。
對於較小的 Llama-3.1-8B 模型,增益更為明顯。IQ4_XS 格式的吞吐量從 2933.9 tok/s 提升至 3249.0 tok/s,增幅高達 10.7%。Q5_K_M 格式也錄得 9.7% 的提升,從 2699.4 tok/s 增至 2960.3 tok/s。
RTX 5090 上的增益較小,約為 2% 至 4.7%
同樣的測試參數下,在 NVIDIA RTX 5090 顯卡上執行的結果顯示,效能提升幅度明顯低於 DGX Spark。Qwen3.8-27B 模型在各量化格式下的增益介於 1.9% 至 4.1% 之間。
以 Q4_K_M 格式為例,吞吐量從 3688.4 tok/s 提升至 3790.9 tok/s,增幅為 2.8%。Q8_0 格式的增益最高,從 3617.3 tok/s 提升至 3766.9 tok/s,增幅為 4.1%。
Llama-3.1-8B 模型在 RTX 5090 上的提升幅度介於 4.0% 至 4.7%。IQ4_XS 格式從 12997.6 tok/s 提升至 13603.3 tok/s,增幅為 4.7%。數據顯示該優化在 RTX 5090 上的增益低於 DGX Spark (GB10),但原始來源未說明造成此差異的原因。
測試限制與適用範圍
這些數據僅反映預填充階段(prompt processing)的吞吐量變化,並未包含實際生成 token 階段的效能影響。測試使用了固定的批次大小 `-b 2048` 和微批次 `-ub 2048`,且 KV cache 類型設定為 f16 (`-ctk f16 -ctv f16`)。
結果基於重複執行 5 次 (`-r 5`) 的平均值,但原始來源未提供標準差或變異係數,因此無法評估數據的統計顯著性。此外,測試僅涵蓋 Qwen3.8、Qwen3.6 和 Llama-3.1 三種模型架構,其他架構的效益未知。




