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時に失敗します。以前は、性能の落ちたバックエンドがそのままビルドされていました。

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