llama.cpp b11636、SYCLでIQ3_Sのデコードを最大82%高速化

llama.cppはリリースb11636(#29107)で、SYCLバックエンドにIQ3_S/IQ3_XXS重みの永続的な再配置を追加しました。Intel Arc Pro B70上のQwen3.8-27B-GSQ-RCO-IQ3_S(MTP)で、コンテキスト長0のデコード速度は12.92 tok/sから23.54 tok/sへ82%向上しています。

llama.cppはggml-orgが公開するC/C++製の推論ソフトウェアで、CPUや各社GPUで動作し、量子化とCPU・GPUの併用に対応します。

何が変わったか

IQ3_SとIQ3_XXSの重みは、ロード時に一度だけ再配置されるようになりました。再配置後のMMVQドット積は、標準のインターリーブ配置からビットを集める処理をやめ、dp4aとSWAR符号展開で密なスーパーブロックを順に処理します。prefill側では、再配置に対応したデ量子化の出力をバッチ処理のGEMMに渡し、decodeとprefillの両方でこの配置を使います。

MMVQ GLU fusion wideningとrms_norm+scale fusionは#28931ですでにmasterに入っています。

測定結果

測定はIntel Arc Pro B70、Qwen3.8-27B-GSQ-RCO-IQ3_S(MTP)、設定-ngl 999 -b 4096 -ub 1024 -fa onで行われています。

ベンチマーク 変更前 変更後 差分
tg256 @ ctx 0 12.92 tok/s 23.54 tok/s +82%
tg256 @ ctx 9,216 12.33 tok/s 21.69 tok/s +76%
tg256 @ ctx 64,000 9.76 tok/s 14.91 tok/s +53%
pp8192 833.9 tok/s 833.6 tok/s 横ばい

標準量子化のQwen3.5-9B Q4_K_M/Q3_K_Mでは、最大の差分がppの-0.5%、tgは横ばいで、変化はノイズの範囲に収まっています。

対象とビルド要件

  • 最適化の対象はIQ3_SとIQ3_XXSで、標準量子化には影響しません。
  • oneDNNを使うビルドでは、ビルドチェックが厳しくなりました。DNNLパッケージがない場合や、DNNLがCPU専用ビルドの場合は、configure時に失敗します。以前は、性能の落ちたバックエンドがそのままビルドされていました。

この記事の固有名詞

コメント (0)

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

コメントを書く

2000文字以内