llama.cpp b12251、SYCL向けデバイス側MoEスケジューラーを追加

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)として記されています。

この記事の固有名詞

コメント (0)

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

コメントを書く

2000文字以内