大規模言語モデルを個人のPCで動かす際、処理の遅さが課題となる。特にGPUの計算効率を引き出す「カーネル」の設計は、体感速度を左右する。今回Intelのエンジニアが、SYCL環境で量子化モデルを処理する「DMMV(Dequantize Matrix-Matrix/Vector Multiply)」パスに複数の修正を加えた。この変更は、データの並べ替え経路の門番を開放し、1回あたりの処理量を調整することでGPUの稼働率を高める。結果として、Intelの内蔵GPUなどで動くローカルAIの応答生成がより滑らかになる可能性を示している。
SYCL版llama.cppに潜んでいた「二重の門番」
修正は、量子化された重みと入力ベクトルの積を計算するggml_sycl_op_dequantize_mul_mat_vec関数を巡るものだ。実はこの高速化経路を使うには、ggml_sycl_supports_reorder_dmmvという条件を通過する必要があったが、特定のデータ型がサポートリストから漏れていた。これは、高速道路の入口が一部の車種に対して閉ざされていた状況に似ている。Todd Malsbary氏による今回のコミットは、この「型チェックの門番」を修正し、本来通れるはずのデータが全て高速経路に入れるようにした。併せて、別の関数でもデータ割り当てを適切に行う修正が加えられ、ハードウェアの再配置機能が実際に動作する前提が整えられた。
1ループあたりの処理量削減が全体の効率を上げる理由
今回のパッチの核心の一つが、K_QUANTS_PER_ITERATIONを1に設定する変更だ。一見すると一度に処理する量子化グループの数を減らすことは性能低下に思える。しかし、これはGPU内部の計算ユニット(EU)の「手待ち時間」を減らす効果を持つ。Intelの統合型GPUアーキテクチャ(B70)において、一度に多くの処理を詰め込むよりも、細かいタスクを高頻度で発行する方が全体の稼働率が向上するケースがある。これは工場のベルトコンベアで、大きな荷物を間欠的に流すより、小さな荷物を絶え間なく流す方がライン全体の停止時間が減るのに似ている。実際にこの変更と前述の門番修正の組み合わせにより、1秒あたりのトークン生成数(tg t/s)に顕著な改善が確認されている。
WARP_SIZE統一が示すクロスアーキテクチャ開発の課題
修正には、特定の量子化タイプ(QK_5)で使われていたQK_WARP_SIZEを、標準的なWARP_SIZEに置き換える変更も含まれる。WARPとはGPUがロックステップで実行するスレッドの最小単位を指し、NVIDIAのCUDAでは32が一般的だが、Intel GPUでは異なる最適値を持つ。カスタム定義と標準定義が混在していたことは、マルチベンダー対応のコードベースで生じがちな技術的負債の一端を示している。一見地味なこの修正は、SYCLのようなクロスプラットフォームを掲げるフレームワークにおいて、ハードウェア固有の前提をいかに抽象化し、保守するかという開発上の論点を浮き彫りにしている。
エッジAI推論の競争は「ソフトウェアの成熟度」へ
今回の一連の修正は、極めて細かなカーネルレベルのチューニングでありながら、AIの民主化という大きな流れに直結する。GPUベンダー各社が高性能なハードウェアを競って提供する中で、実際にユーザーが手にする推論速度は、こうした地道なソフトウェア最適化の積み重ねで決まる場面が増えている。特にIntelは、ノートPCに広く搭載される統合GPUの強みを活かすには、NVIDIAのCUDAエコシステムが先行する離散GPU向けの最適化とは異なるアプローチが不可欠だ。今回のSYCLパスへの貢献は、個人のデバイス上でAIが動く「エッジ推論」が、ハードウェアの出荷台数競争から、成熟したソフトウェアスタックの開発競争へと重心を移しつつあることを示している。