10 月 21 日至 24 日,llama.cpp 連續三個建置(b11785、b11858、b11866)圍繞 MoE 下投影的 amax 縮放做了一組改動。b11785 把 MoE 下投影的全域性 amax 縮放改為按專家 token 計算的因子,沿中間維做 POOL_1D 最大值歸約得到縮放量,輸出端再用同一 2… 看完整事件
llama.cpp Metal 後端移除 MoE mul_mm_id 的 amax 重縮放
llama.cpp 建置 b11866 在 Metal 後端移除了 kernel_mul_mm_id 中對 src1 的二次冪重縮放。這項縮放已經被計算圖中按 expert-token 執行的 amax 縮放(#30861)取代,後者能在運算元執行之前把 MoE 下投影啟用維持在 f16 範圍內。
原標題:b11866
閱讀原文
| 評分 | 42 / 35(平均 38,門檻 60) |
|---|---|
| 狀態 | 未入選 |
原文
相關報導
llama.cpp Metal 把 few-row MMA 核心擴充套件到 BF16、MXFP4 等型別
llama.cpp 的 Metal 後端將通用 few-row MMA 矩陣乘法核心擴充套件到更多權重量化型別,BF16、Q1_0、Q2_0、MXFP4、Q2_K、Q3_K、TQ2_0 及 IQ 系列現已納入。該核心適用於任何帶 16-weight 反量化器的型別,各型別從在 M3 Ultra 上能勝過現有核心的行數起啟用:TQ2_0 為 5 行,BF16 為 4 行,MXFP4、Q2_0、Q2_K、IQ4_NL 為 3 行,其餘為 2 行。
llama.cpp 新版最佳化 Vulkan 上 MoE 重複專家的矩陣乘
llama.cpp 發布 b11554,Vulkan 後端改進了 MoE 推理中 mul_mat_id 對重複專家 id 的處理:不再逐個迴圈,而是在預計算階段統一處理。原本受限的 hoist row ids 最佳化現在預設開啟,會生成緊湊的 tile 描述列表、按需發射多個 tile,從而收緊 workgroup 數量上界,尾部執行緒可直接提前退出。
llama.cpp 修復 Metal 後端每 token 9 專家 MoE 核心缺失
llama.cpp 建置 b11755 修復了 Metal 後端缺少每 token 9 專家 MoE 核心變體的問題(#30610、#30699),涉及 Apple Silicon 上的 MoE 推理路徑。該版本照例發布全平台預編譯包,覆蓋 macOS/iOS、Linux(CUDA 12/13、ROCm 10.0、Vulkan、SYCL、OpenVINO)、Android、Windows 及 openEuler 昇騰等後端。
llama.cpp 修復 Metal 後端 mul_mat_id 重複 id 錯誤
llama.cpp 建置版本 b11569 修復了 Metal 後端 mul_mat_id 在 id 重複時輸出錯誤、丟行乃至溢位到下一個 expert 切片的問題。新實現先做一遍預掃描,為每個 expert 建立緊湊的 (token, slot) 條目列表,並借鑑 Vulkan 方案讓 map0 額外輸出 tile 描述符,kernel_mul_mm_id 按描述符處理單個 tile,重複 id 由此被隱式處理。
llama.cpp 修復 Metal 後端 MUL_MAT+ADD 融合錯誤
llama.cpp 合併 PR #30100,修復 Metal 後端 MUL_MAT+ADD 融合中殘差運算元的選擇錯誤:當 ADD 的兩個運算元都是矩陣乘法輸出(x = W1@u + W2@v)時,舊邏輯會選中自身從未寫入的輸出緩衝區,導致結果錯誤。Clef 決策模型因此在 Metal 上機率趨近均勻,billing 輸出 0.28,而 CPU 後端為 0.977,且同一檔案在 CPU 上結果正確,說明並非量化問題。