
llama.cppとは何か
ノートPCでもスマホでも、LLMを動かす「エンジン室」。ggml と GGUF を土台に、量子化と幅広いハードウェア対応でローカルLLMの世界を支えている llama.cpp を分解します。
このページの内容(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"]
GGUF は真空パックされた食材セット。中にレシピ(メタ情報)まで同封されています。llama.cpp はそれを調理する厨房、ggml は厨房のコンロや包丁です。コンロをガスにするかIHにするか(CUDA か Metal か)は、厨房が設置先に合わせて選びます。
どこでも動く理由: バックエンドの多さ
llama.cpp の一番の強みは、対応するハードウェアの幅です。README には次のようなバックエンドが並んでいます2026年10月時点。
| バックエンド | 主な対象 |
|---|---|
| Metal | Apple シリコンの Mac(README では「第一級市民」扱い) |
| CUDA | NVIDIA GPU |
| HIP | AMD GPU |
| Vulkan | メーカーを問わず幅広いGPU |
| SYCL | Intel 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) | 長い文脈でのメモリと速度を改善。既定は auto | 15 |
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["そのほか多数の
アプリ・ライブラリ"]
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 を動かす推論エンジンと道具一式です。
この章のまとめ
- 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 を使っている
次に読む章
さらに深く学ぶ
この章の内容をもう一歩掘り下げるための原典です。
出典・参考
- ggml-org/llama.cpp(GitHub) — README(目標、MITライセンス、対応バックエンド、量子化ビット幅、Quick start)(2026年10月確認)
- llama.cpp v0.7.0 リリースノート — 2026年10月15日公開。既定ポート 9931 への変更、
--moe-cache-mibの追加 - llama.cpp tools/cli README —
-ngl(既定 auto)、--fit、-fa、-cmoeなどのオプション(2026年10月確認) - llama.cpp HTTP Server README — OpenAI/Anthropic互換API、ルーターモード、既定ポート(2026年10月確認)
- llama.cpp tools/quantize README —
llama-quantizeの使い方(2026年10月確認) - llama.app Docs —
llama cli・llama serve、インストール方法、Llama アプリ(2026年10月確認) - ggml.ai joins Hugging Face(llama.cpp Discussions #19759) — 2026年2月20日の発表
- Simon Willison, “Large language models are having their Stable Diffusion moment” (2023年3月11日) — llama.cpp 登場時の反響