llama.cppはリリースb12251(#30156)で、SYCLバックエンドにデバイス側MoEスケジューラーを追加しました。Qwen3-30B-A3B Q4_K_Mを1x B60で動かした検証では、llama-perplexityの実行時間がmasterの116秒から67秒になっています。
llama.cppはggml-orgが公開するC/C++製の推論ソフトウェアで、量子化とCPU・GPUの併用に対応します。
変更内容
- デバイス側MoEスケジューラーの追加と、幅ヒューリスティックの上書きビット
- Q2_K/Q3_Kへの対応。Q3_KのMoEエキスパートは再並べ替え後、grouped GEMMでベクトルとしてロード
- デバイスMoEスケジュール上でスキップされたMUL_MAT_IDスロットのテスト
- SYCLグラフの判定修正。従来は再並べ替え拡張を持つ全MUL_MAT重みの再並べ替え完了までグラフを無効にしており、dense MXFP4やfused GLUのplainパスでは完了しないため、グラフが常に無効のまま毎回判定が走っていました。今後は記録前に再並べ替えするのはMUL_MAT_IDの重みだけです
- BN=64の組み合わせを拒否。デバイススケジュールは
BN == GGML_SYCL_FG_BNでのみ動作し、32x64 combo(GGML_SYCL_XMX_GATHER_SHAPES=4または8)は対象外です -ncmoe使用時にホストへオフロードされたテンソルを誤って再並べ替えしていた問題の修正。CPU常駐エキスパートを計算バッファへ毎回アップロードする際、そのコピーにも再並べ替え記録が付き、ubatchごとに再並べ替えしては次のアップロードで上書きされていました- MUL_MAT_ID関連の述語名の変更(例:
ggml_sycl_mul_mat_id_mmvq_ok→ggml_sycl_mul_mat_id_should_use_mmvq)。機能変更はありません
検証結果
条件: Qwen3-30B-A3B Q4_K_M、1x B60、llama-perplexity -c 4096 -ub 2048 -ncmoe 48、8チャンク、master ac8e169。
| 構成 | 実行時間 | PPL |
|---|---|---|
| master | 116 s | 7.739 |
master(XMX_GATHER_TYPES=0) |
67 s | 7.738 |
| 本変更後 | 67 s | 7.729 |
開発体制
コミットにはGeorgi Gerganovが共同著者として記載され、Claude Opus 5.5とCodexが支援(Assisted-by)として記されています。

まだコメントはありません。