ニュース

LocalAIのC++ポートがPythonスタックを凌駕する——その理由はあなたの想像とは異なる

LocalAIの手書きC/C++エンジンは、vLLMの9.1 GiB仮想環境に匹敵する66 MiBのバイナリを提供し、真の速度向上はカーネルの魔法ではなく、ホスト側の作業のキャッシュから生まれる。

August 3, 2026· 1 min read· 出典: LocalAI
LocalAIのC++ポートがPythonスタックを凌駕する——その理由はあなたの想像とは異なる

LocalAIのデフォルトは、llama.cpp、vLLM、whisper.cppなど、他のエンジンをラップすることだ。これらはモデルを最もよく知る人々によってメンテナンスされている。しかし、そのバックエンドのうち18は手書きのC/C++ポートであり、それぞれが存在する理由は、アップストリームをラップすると、数ギガバイトのPythonインストール、CUDA専用スタック、またはC++実装がまったくないモデルなど、使えないものを出荷することになるからだ。

見出しとなる数字はvllm.cppで、vLLMのV1サービングアーキテクチャのC++20ポートだ。vLLMをインストールすると9.1 GiBの仮想環境が生成されるが、vllm.cppは66 MiBのバイナリだ。ページ化KVキャッシュ、連続バッチ処理、プレフィックスキャッシュ、スケジューラ、サンプラーを実装しており、推論時にPython、PyTorch、ggmlは不要だ。NVIDIA GB10上のQwen3.6-27Bで、vLLMの本番グラフ化構成とコンカレンシー1〜32で同等の性能を発揮し、シングルストリームでは4.5%先行し、残りはノイズの範囲内だ。ピークホストメモリは28.18 GiBから24.88 GiBに削減される。

時にはポートが単純に高速なこともある。depth-anything.cppはDepth Anything 3のポートで、CPU上でPyTorchより1.31倍高速で、メモリ使用量は27%だ。これは優れたmatmulカーネルによるものではなく、2つの位置埋め込みが毎フォワードパスでシングルスレッドのスカラーループによって再計算されていたためだ。それらをキャッシュすることで、フォワードごとに約95ミリ秒のホスト側オーバーヘッドが削減された。これが一般的な形だ:GEMMは同等で、違いはPythonリファレンスが最適化しなかったホスト側の作業にある。

パリティがゲートであり、速度はその後の話だ。face-detect.cppvoice-detect.cppは、CPU速度の向上がなくても出荷される。なぜなら、生体認証パイプラインでは、小数第4位で異なる埋め込みが検証決定を変えるからだ。face-detect.cppはinsightfaceとコサイン1.000000で一致し、voice-detect.cppはPythonパスの約334 MBに対して約62 MBを使用する。

方法は一貫している:まず重みを1つのGGUFに変換し、次にコンポーネントごとのパリティゲートでグラフをポートし、3番目にプロファイラーで最適化し、最後にフラットなC ABIを公開する。コストはメンテナンスだ——各エンジンには独自のCI、ベンチマーク、コンバーターがあり、GPUカーネルが弱点で、ggmlの汎用カーネルはconvヘビーなモデルでcuDNNに遅れを取る。

高速だがわずかに間違っているポートは無価値であり、コンポーネントごとのゲートがなければ、それが間違っていることを数か月後に知ることになる。
Manul X 編集部