llama.cppの最新ビルドb9294で、QualcommのAdreno GPU向けにMixture of Expertsモデルの推論カーネルが汎用化された。この変更はモバイルデバイス上で大規模言語モデルを分割実行する際のボトルネックを解消し、モデル開発者が個別チューニングなしに多様なMoEアーキテクチャをデプロイできる基盤を整備するものだ。

背景

llama.cppはC++で実装された軽量推論エンジンであり、量子化技術を駆使してコンシューマデバイス上でのLLM動作を可能にしてきた。Google PixelやSamsung Galaxyに代表されるAndroidフラッグシップ端末の多くはQualcomm Snapdragonチップセットを搭載し、そのGPUコアにはAdrenoアーキテクチャが採用されている。

従来のAdreno向けMoEカーネルは、特定のエキスパート数やモデル構造にハードコードされる傾向があった。MoEモデルはGPT-4やMixtral 8x7Bに代表されるように、複数の専門家ネットワークを内包し、入力トークンごとに一部のエキスパートだけを活性化する仕組みを持つ。この疎活性化によりパラメータ総数は大きいまま計算量を抑制できるが、GPU上での効率的なスケジューリングが実装上の難題だった。

構造

今回のプルリクエスト#23449は、Adreno GPU向けのOpenCL実装において、ハードコードされたM値依存を取り除く設計変更である。M値とはトークン総数を示し、バッチサイズやシーケンス長に直接対応する。従来この値が固定されていたため、モデル開発者が異なるバッチ設定で推論する際にカーネル再コンパイルや分岐処理が発生していた。

汎用化により、OpenCLカーネルは実行時にM値を動的解決する。これはAndroid端末上でMixtralシリーズやDeepSeek V3等のMoE派生モデルを動作させる際、フレームワーク層での調整を不要にする。llama.cppのバックエンド抽象化層GGMLにとって、AdrenoはCUDAやMetalと並ぶ主要GPUターゲットの一つに位置づけられる。

影響

モバイルAI推論のレイヤー構造から見ると、この変更はハードウェア抽象化レイヤーの成熟を示す。QualcommのSnapdragon 8 Gen 3以降、デバイス上AI処理はNPUに注目が集まるが、既存のGPU資産を活用するOpenCL経路の最適化は、幅広いモデル互換性の面で依然として重要だ。

特に日本市場では、エッジAIソリューションを提供するスタートアップや組み込み機器メーカーが、オンプレミスでのLLM推論に関心を寄せている。llama.cppのAndroid対応拡充は、クラウドAPI依存を避けたい業務用端末や、通信制約のあるIoT機器への展開を後押しする。

推論産業の視点では、MoEカーネルの汎用化はトークン処理コストの低減に直結する。Stability AIやMistral AIが公開するオープンウェイトのMoEモデルを、追加のGPUカーネル開発なしにデプロイできるようになることで、モデル選択肢の拡大と推論実験の加速が期待される。現在llama.cppがサポートするバイナリはmacOS Apple SiliconからUbuntuのVulkan、WindowsのCUDAまで15のプラットフォームを網羅しており、Android arm64向けも今回のビルドに含まれる。

今後の論点

Qualcommが推進するSNPEやQNNといった独自SDKと、llama.cppのようなコミュニティ主導実装の性能差が次の焦点となる。NPU専用APIとの比較で、OpenCLバックエンドがワットパフォーマンスでどこまで迫れるかは、バッテリー駆動時間を重視するモバイル用途で実証が必要だ。

また、Adreno GPUの世代間差異も重要である。Snapdragon 8 Eliteに搭載されるAdreno 830ではアーキテクチャ刷新が報じられており、今回の汎用カーネルが新世代GPU上でも最適に動作するか、マイクロベンチマークによる検証がコミュニティで進むと見られる。