ローカル推論ライブラリの llama.cpp が v1.0.0 を公開し、基盤のテンソルライブラリ ggml も同時に1.0へ上がった。プロジェクトチームは Hugging Face のブログで、今回のリリースは依存する開発者により安定した土台を提供するためのものだと説明している。今後、llama.cpp と ggml で公開 API または ABI に非互換が生じた場合は、すべてメジャーバージョンの変更として反映される。
これまで llama.cpp のリリースは、ほぼ「b」から始まるビルド番号だけで管理されてきた。コードがメインブランチにマージされるたびに新しいビルドが生まれ、番号はすでに b12000 を超えている。1.0以降もこのビルド番号が止まるわけではなく、プレリリースの形で出続ける。変わるのは、保証付きの正式なバージョン系列が新たに加わり、利用者が用途に応じて選べるようになった点だ。
バージョン番号に意味が生まれる
ブログが示すルールは明快だ。MAJOR は ./include ディレクトリにある公開 C インターフェースの破壊的変更、MINOR は後方互換のある新機能や新モデルへの対応、PATCH は不具合修正のみでインターフェースには手を入れない。この規則は ggml-org 配下のすべてのプロジェクトに適用される。利用者が増えたことを受け、こうした境界を今後はより厳格に見えるようにしていく、とチームは書いている。
きれいな状態で出発するため、1.0ではまず整理が行われた。以前から非推奨とされていた公開インターフェースの一部を削除し、いくつかの関数名を変更し、コンテキストのパラメータ構造体に新しいフィールドを追加した。ggml 側でも非推奨 API と古い DIAG_MASK 演算子が取り除かれている。llama.cpp をライブラリとして自社製品にリンクしている開発者にとって、今回のアップグレードではコードの修正が一度必要になる。ただしその後にマイナーバージョンを追う限り、あるビルドでインターフェースが突然消える心配はなくなる。
このバージョンの新機能
バージョン規則に加え、1.0自体にも多くの更新が含まれる。
- KV キャッシュが FP8 に対応。ホストメモリ上に置く MoE エキスパートキャッシュも新たに加わり、CPU に分担させる比率を設定できる。
- Kimi-K3.1-Pro などのモデルに新たに対応し、Kimi-K3.1 は画像入力を扱える。
- llama-server に /v1/audio/speech の音声合成インターフェースを追加。drama-3 TTS モデルと組み合わせて使う。
- サーバー側で SSRF、CORS、DNS リバインディングの問題を修正。認証なしでのツール呼び出しやプライベート URL へのアクセスは、明示的に有効化しなければならなくなり、HF_TOKEN は huggingface.co にのみ送信される。
最後の項目は、自前でサーバーを運用する人にとって最も実用的だ。llama-server はローカルの OpenAI 互換インターフェースとして社内ネットワークに置かれることが多く、場合によっては公衆網に直接公開されることもある。ツール呼び出しが既定で開放されていれば、攻撃対象となる範囲もそれだけ広がる。明示的な有効化に改めたことは、選択権をデプロイする側に戻したことを意味する。
MoE エキスパートキャッシュは、現在のモデルの構造を意識したものだ。今年の大規模モデルの多くは混合エキスパート構造で、総パラメータ数は数千億に達することも珍しくなく、1ステップで活性化するのはそのごく一部にすぎない。ビデオメモリにすべてのエキスパートが収まらないとき、当面使わない分をホストメモリに退避させ、比率を決めて CPU に計算を任せるのは、コンシューマー向けグラフィックスカードで大型の MoE モデルを動かす際の一般的な折衷策である。今回これがメインラインに入ったため、ユーザーがサードパーティ製のフォークを探し回る必要はなくなった。
データセンター系との対比
推論フレームワークは現在、二つの道に分かれている。vLLM や SGLang のようなフレームワークはデータセンター向け GPU を対象とし、バッチスループットと同時処理性能を競う。一方 llama.cpp が目指すのは、スマートフォンやノートパソコン、ワークステーションでモデルを動かすことだ。量子化で大規模モデルを限られたメモリに収め、CPU と GPU を併用する。
この性格はバックエンド一覧からも見て取れる。CUDA、Metal、Vulkan、WebGPU、AMD の HIP、インテルの SYCL、Snapdragon Hexagon、そして Moore Threads の MUSA が並び、各バックエンドは動的ライブラリとしてビルドし、実行時に必要に応じて読み込める。ブログによれば、対応するモデルアーキテクチャのバリエーションは150種類以上に及ぶ。データセンター系のフレームワークが最新ハードウェアを追うのに対し、llama.cpp が追うのはロングテールの端末であり、両者のユーザー層はあまり重ならない。
プロジェクトの GitHub でのスター数は約13.5万、フォークは約2.56万。チームは現在 Hugging Face に所属しており、ブログでは CI の計算資源を提供した HF への謝意を述べるとともに、NVIDIA、AMD、Qualcomm、Arm、IBM、インテルからのハードウェア支援も挙げている。バージョンの約束を守り切れるかどうかは、この先のマイナーバージョンでこっそりインターフェースが変えられないかにかかっている。
参考資料:Hugging Face ブログ、llama.cpp GitHub リリースページ、CocoLoop、llama.cpp リポジトリ README。リリースページで1.0の新機能、インターフェース整理の範囲、バックエンド一覧を確認した。