第5部 どうやってモデルを動かすのか第7章

llama.cppとは何か

ノートPCでもスマホでも、LLMを動かす「エンジン室」。ggml と GGUF を土台に、量子化と幅広いハードウェア対応でローカルLLMの世界を支えている llama.cpp を分解します。

約14分で読めます2026年10月改訂

このページの内容(11項目)
  1. llama.cppはどんなプロジェクトか
  2. ggml・GGUF・llama.cpp の関係
  3. どこでも動く理由: バックエンドの多さ
  4. 量子化: 小さくして載せる
  5. 使ってみる: llama cli と llama serve
  6. 速さのための仕掛けいろいろ
  7. llama.cppの上に建つ家々
  8. 得意なこと・苦手なこと
  9. 次に読む章
  10. さらに深く学ぶ
  11. 出典・参考

2023年3月、ふつうの MacBook の上で大規模言語モデルが動いた。

Meta の LLaMA が研究者向けに公開された直後、Georgi Gerganov さんが C/C++ で書いた小さなプログラムを公開しました。高価なデータセンター用GPUがなくても、手元のノートPCで大きな言語モデルが文章を書き始めたのです。開発者の Simon Willison さんはこの出来事を「LLMの Stable Diffusion モーメント」と呼びました。

それが llama.cpp です。いまでは Ollama、LM Studio、Jan など多くのローカルLLMアプリの中で、このエンジンが回っています。

llama.cppはどんなプロジェクトか

ひとことで言うと

llama.cpp は、C/C++で書かれた、LLMをできるだけ多くのハードウェアで、少ない準備で動かすための推論エンジンです。ライセンスは MIT。

README が掲げる目標は「最小限のセットアップと最先端の性能で、ローカルでもクラウドでも、幅広いハードウェア上でLLM(とVLM)を推論できるようにすること」。Python や PyTorch の環境を用意しなくても、1つの実行ファイルで動くのが大きな特徴です。

名前に「llama」とありますが、いまは Meta の Llama 専用ではありません。Qwen、Gemma、Mistral、gpt-oss など、数多くのモデル系統に対応しています。最初に動かしたモデルの名前が、そのままプロジェクト名として残っているのです。

項目内容2026年10月時点
開発元ggml-org(GitHub)。2026年2月、ggml.ai のチームが Hugging Face に合流
言語・ライセンスC/C++、MIT
リリースほぼ毎日の自動ビルド(b11846 など)と、節目のバージョン(最新は 2026年10月15日の v0.7.0)
土台テンソル計算ライブラリ ggml

Hugging Face への合流について、発表文は「プロジェクトは100%オープンソースのまま、コミュニティ主導で続く」と説明しています。transformers ライブラリとの連携を深め、新しいモデルにより早く対応することが目標に挙がっています。

ggml・GGUF・llama.cpp の関係

llama.cpp まわりでは、似た名前が3つ出てきます。ここを押さえると、ローカルLLMの話が一気に読みやすくなります。

ggml ジージーエムエル

行列計算などのテンソル演算を、CPUやさまざまなGPUで実行するための C のライブラリ。llama.cpp の「計算の筋肉」にあたります。

GGUF ジージーユーエフ

llama.cpp が読み込むモデルのファイル形式。重み、トークナイザ、チャットテンプレートなどのメタ情報を1つのファイルにまとめられます(第5章)。

llama.cpp ラマ・シーピーピー

ggml を使って GGUF のモデルを動かす推論エンジン本体と、CLI・サーバ・量子化ツールなどの道具一式。

flowchart TD
  G["GGUFファイル
重みとメタ情報"] --> L["llama.cpp
推論エンジン"] L --> M["ggml
テンソル計算"] M --> B["バックエンド
CPU・CUDA・Metal・Vulkan"] L --> T["道具たち
llama cli・llama serve・llama-quantize"]
図1: GGUFは「材料」、llama.cppは「調理場」、ggmlは「コンロ」

GGUF は真空パックされた食材セット。中にレシピ(メタ情報)まで同封されています。llama.cpp はそれを調理する厨房、ggml は厨房のコンロや包丁です。コンロをガスにするかIHにするか(CUDA か Metal か)は、厨房が設置先に合わせて選びます。

どこでも動く理由: バックエンドの多さ

llama.cpp の一番の強みは、対応するハードウェアの幅です。README には次のようなバックエンドが並んでいます2026年10月時点。

バックエンド主な対象
MetalApple シリコンの Mac(README では「第一級市民」扱い)
CUDANVIDIA GPU
HIPAMD GPU
Vulkanメーカーを問わず幅広いGPU
SYCLIntel GPU
CPU(AVX・NEONなど)x86、Arm、RISC-V のCPU
そのほかCANN(Ascend NPU)、OpenCL(Adreno GPU)、WebGPU、RPC など

もう1つの特徴が、CPUとGPUのハイブリッド推論です。VRAMに載りきらない大きなモデルでも、一部の層だけGPUに置き、残りをCPUとメインメモリで計算できます。どの層をGPUに置くかは -ngl(--n-gpu-layers)で指定できますが、いまの既定値は auto です。

さらに既定で --fit on が有効になっていて、指定していない設定をメモリに収まるよう自動調整してくれます。昔の解説記事にある「-ngl 99 を必ず付ける」といった作法は、もう必須ではありません2026年10月時点。

もう一歩深く

MoE(Mixture of Experts)モデルは、総パラメータは大きくても、1トークンごとに使う「専門家」は一部だけです(第26章)。llama.cpp には、専門家の重みをCPU側に置く -cmoe(--cpu-moe)や、よく使う専門家をGPUにキャッシュする --moe-cache-mib(v0.7.0で追加)があり、小さなGPUでも大きなMoEモデルを動かしやすくなっています。

量子化: 小さくして載せる

80億パラメータのモデルを16bitのまま置くと、重みだけで約16GBになります。これを4bit前後に量子化すれば約4〜5GB。多くのノートPCに収まるサイズです。下のウィジェットでパラメータ数とビット幅を変えてみてください。

llama.cpp は 1.5bit から 8bit までの整数量子化に対応しています。Hugging Face で見かける Q4_K_M、Q5_K_M、Q8_0 といった名前は、GGUF の中身の量子化方式を表すラベルです。くわしいしくみは第10章と第11章で扱います。

自分で量子化したいときは、付属の llama-quantize を使います。公式の手順では、まず16bitのGGUFを作り、それを目的の方式に変換します。

# 16bitのGGUFから Q4_K_M に量子化する(tools/quantize の README より)
./build/bin/llama-quantize gemma-4-E2B-it-bf16.gguf gemma-4-E2B-it-Q4_K_M.gguf Q4_K_M

とはいえ、人気のモデルなら量子化済みのGGUFが Hugging Face にたいてい公開されています。最初は自分で量子化せず、それをダウンロードするのが近道です。

使ってみる: llama cli と llama serve

2026年の大きな変化は、入口がずいぶんやさしくなったことです。公式サイト llama.app にワンライナーのインストーラが用意され、llama という1つのコマンドから各機能を呼び出せるようになりました2026年10月時点。

# インストール(macOS・Linux)
curl -LsSf https://llama.app/install.sh | sh

# Hugging Face からモデルを取得して、ターミナルでチャット
llama cli -hf ggml-org/gemma-4-e4b-it-GGUF:Q4_0

# OpenAI互換APIサーバと Web UI を起動
llama serve -hf ggml-org/gemma-4-e4b-it-GGUF:Q4_0

-hf に Hugging Face のリポジトリ名を渡すと、初回だけダウンロードされ、標準の Hugging Face キャッシュに保存されます。手元の GGUF ファイルを使うときは -m my-model.gguf です。Windows では PowerShell 用のインストーラのほか、winget や Homebrew、conda-forge などのパッケージマネージャ、リリースページのビルド済みバイナリも選べます。

注意: ポート番号が変わりました

v0.7.0(2026年10月)から、サーバの既定ポートは 8080 から 9931 に変わりました(Docker イメージの中は 8080 のまま)。古い記事どおりに http://localhost:8080 を開いてもつながらないときは、http://localhost:9931 を試してください。

従来どおりの個別コマンド llama-cli や llama-server も、ドキュメントの多くの例で使われています。llama serve と llama-server は同じサーバ機能への入口だと考えてかまいません。

起動したサーバには、次のような機能がそろっています2026年10月時点。

  • OpenAI互換の chat completions・responses・embeddings と、Anthropic Messages API 互換の窓口
  • ブラウザで使える内蔵 Web UI(モデルのダウンロード・管理もできる)
  • 複数ユーザーの並列処理と連続バッチ処理
  • 画像・音声入力(マルチモーダル)、関数呼び出し(ツール利用)、JSONスキーマで出力形式を縛る機能
  • 複数モデルを切り替える「ルーターモード」(--models-dir でフォルダを指定)

ためしてみよう

llama serve を起動したら、ブラウザで http://localhost:9931 を開くと内蔵のチャット画面が使えます。同じ住所の /v1 を、OpenAI の SDK の接続先(base URL)に指定すれば、自作のスクリプトからも呼び出せます。

Mac と Windows には、llama.cpp チームと Hugging Face が作った常駐アプリ「Llama」も登場しました。メニューバーからモデルを選んで入れるだけで、裏で llama.cpp のサーバが動く、というものです(第8章)。

速さのための仕掛けいろいろ

llama.cpp は「動けばいい」だけのエンジンではありません。最新の高速化技術も次々と取り込んでいます。

機能何がうれしいか関連章
Flash Attention(-fa)長い文脈でのメモリと速度を改善。既定は auto15
KVキャッシュの量子化(-ctk・-ctv)KVキャッシュを q8_0 などで保存してメモリ節約15
投機的デコーディング小さな下書きモデルやMTPで生成を速める16
文法制約(GBNF)出力を決まった書式やJSONに強制する—
RPC複数のマシンにまたがってモデルを分割—

推論モデル(第27章)の「考える」部分を止める -rea off や、考える量に上限を付ける --reasoning-budget といったオプションも用意されています。

llama.cppの上に建つ家々

llama.cpp は、ほかのアプリに組み込まれることでさらに広がりました。ライブラリとして C の API(libllama)を公開しているので、他のソフトがエンジンとして使えるのです。

flowchart TD
  E["llama.cpp と ggml"] --> O["Ollama"]
  E --> S["LM Studio"]
  E --> J["Jan"]
  E --> A["Llama アプリ
公式"] E --> X["そのほか多数の
アプリ・ライブラリ"]
図2: 多くのローカルLLMアプリが、中で llama.cpp を使っている

Ollama は README の「Supported backends」に llama.cpp を挙げ、LM Studio や Jan もGGUFモデルの実行に llama.cpp を使っています2026年10月時点。アプリを乗り換えても、同じ GGUF ファイルがたいてい使い回せるのはこのためです。

得意なこと・苦手なこと

得意苦手・注意
環境ノートPC、Mac、GPUが小さいPC、組み込み大規模なGPUクラスタでの運用は専用エンジンに分がある
利用者数1人〜少人数大勢の同時アクセスでは vLLM・SGLang が有利
モデル形式GGUF ならすぐ動くsafetensors はGGUFへの変換が必要
新モデル人気モデルへの対応が速い新しい構造は、対応が入るまで動かない

つまり llama.cpp は「家庭用の万能エンジン」です。大勢に配るサービスを作るなら、第9章のサーバ向けエンジンと比べて選ぶのがよいでしょう。

よくある誤解

llama.cpp は Meta の Llama 専用

名前は最初に動かしたモデルに由来するだけ。いまは Qwen、Gemma、gpt-oss など多くのモデル系統に対応している

llama.cpp は CPU で動かすためのもの

CPUでも動くのが強みだが、CUDA・Metal・Vulkan・HIP など多数のGPUバックエンドがあり、CPUとGPUの併用もできる

GGUF = 量子化の方式

GGUF はファイル形式。Q4_K_M などの量子化方式は、その中身の話

確認クイズ

Q1. ggml、GGUF、llama.cpp をそれぞれ一言で言うと?

ggml はテンソル計算のライブラリ、GGUF はモデルのファイル形式、llama.cpp は ggml を使って GGUF を動かす推論エンジンと道具一式です。

Q2. 2026年10月時点の llama.cpp で、llama serve を既定設定で起動したときにつなぐ住所は?

  • http://localhost:8080
  • http://localhost:9931
  • http://localhost:11434

v0.7.0 で既定ポートが 8080 から 9931 に変わりました。11434 は Ollama の既定ポートです。

Q3. VRAMが足りない大きなモデルを llama.cpp で動かすときの考え方として正しいのは?

  • VRAMに全部載らないモデルは一切動かない
  • 一部の層をGPUに、残りをCPUとメインメモリに置いて動かせる
  • 自動でクラウドに送って計算する

CPU+GPU のハイブリッド推論ができます。GPUに置く割合が減るほど遅くはなりますが、動かすことはできます。

この章のまとめ

  • llama.cpp は C/C++ 製、MIT ライセンスの推論エンジン。ローカルLLMの事実上の土台
  • ggml が計算、GGUF がファイル形式、llama.cpp がエンジンと道具一式
  • Metal・CUDA・Vulkan など多数のバックエンドと、CPU+GPU のハイブリッド推論で「どこでも動く」
  • いまは llama cli・llama serve で手軽に使える。サーバの既定ポートは 99312026年10月時点
  • Ollama・LM Studio・Jan なども中で llama.cpp を使っている

次に読む章

さらに深く学ぶ

この章の内容をもう一歩掘り下げるための原典です。

第7章の論文・資料をすべて見る →

出典・参考

  1. ggml-org/llama.cpp(GitHub) — README(目標、MITライセンス、対応バックエンド、量子化ビット幅、Quick start)(2026年10月確認)
  2. llama.cpp v0.7.0 リリースノート — 2026年10月15日公開。既定ポート 9931 への変更、--moe-cache-mib の追加
  3. llama.cpp tools/cli README — -ngl(既定 auto)、--fit、-fa、-cmoe などのオプション(2026年10月確認)
  4. llama.cpp HTTP Server README — OpenAI/Anthropic互換API、ルーターモード、既定ポート(2026年10月確認)
  5. llama.cpp tools/quantize README — llama-quantize の使い方(2026年10月確認)
  6. llama.app Docs — llama cli・llama serve、インストール方法、Llama アプリ(2026年10月確認)
  7. ggml.ai joins Hugging Face(llama.cpp Discussions #19759) — 2026年2月20日の発表
  8. Simon Willison, “Large language models are having their Stable Diffusion moment” (2023年3月11日) — llama.cpp 登場時の反響