llama.cpp 推論エンジン(ラマシーピーピー スイロンエンジン)
Georgi Gerganovが開発したC/C++製LLM推論ライブラリ。GGUF形式の量子化モデルを4ビット以下で実行し、CPU単体でもLlama/Mistral/Gemma等を動作させる。Metal/CUDA/Vulkan/OpenCL等のバックエンドに対応しローカルLLM普及の事実上の標準インフラ。
llama.cpp 推論エンジンとは
llama.cppは、ブルガリア人エンジニアGiorgi Gerganov(Georgi Gerganov)が2023年3月に公開したC/C++製のLLM推論ライブラリです。依存ライブラリをゼロに抑えた設計で、コンパイル後すぐに動作します。GGUFフォーマットの量子化モデルと組み合わせることで、一般消費者向けハードウェアでLlama 3.1・Mistral・Qwen・Gemmaなどの大規模言語モデルをローカル実行できる点が最大の特徴です。
主な特徴
- マルチバックエンド対応: CPU(AVX2/AVX-512)、Metal(Apple Silicon)、CUDA(NVIDIA)、ROCm(AMD)、Vulkan、OpenCL、SYCL/Level Zero(Intel)をサポート
- GGUF量子化: Q2_K〜Q8_0まで8段階の精度。Q4_K_Mが品質・速度バランスの推奨値
- Flash Attention内蔵: Scaled Dot-Product Attention最適化でKV Cacheメモリ40%削減
- Speculative Decoding: 小型ドラフトモデル(例: Llama 3.2 1B)で仮トークン列を生成し大型モデルで検証、最大2倍の速度向上
- OpenAI互換APIサーバー:
llama-serverコマンドで/v1/chat/completionsエンドポイントを即起動
他推論エンジンとの比較
| エンジン | 対象HW | 主言語 | GGUF対応 | GPU必須 | 特徴 |
|---|---|---|---|---|---|
| llama.cpp | CPU+GPU | C++ | ✅ネイティブ | ❌ | ゼロ依存・ローカル向け |
| vLLM | GPU | Python | ❌ | ✅ | PagedAttention・高スループット |
| SGLang | GPU | Python | ❌ | ✅ | Radix Attention・バッチ処理 |
| MLC-LLM | GPU/CPU | C++/Python | ✅変換後 | △ | TVM最適化・モバイル対応 |
| LMDeploy | GPU | Python/C++ | ❌ | ✅ | TurboMind・商用品質 |
量子化形式と性能(Llama 3.1 70B、RTX 4090 24GB)
| フォーマット | サイズ | 品質損失 | 速度(tok/s) | VRAM |
|---|---|---|---|---|
| Q2_K | 26GB | 大 | 65 | 28GB※ |
| Q4_K_M | 43GB | 小 | 50 | 44GB※ |
| Q5_K_M | 52GB | 最小 | 42 | 53GB※ |
| Q8_0 | 74GB | 極小 | 35 | 75GB※ |
| F16 | 140GB | なし | 20 | 141GB※ |
※モデルによってはCPU-GPU分割ロード可能(--n-gpu-layersで調整)
具体的な使用例
インストールとサーバー起動
# ビルド(CUDA対応)
git clone https://github.com/ggerganov/llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j$(nproc)
# モデルダウンロード(Hugging Face)
huggingface-cli download bartowski/Qwen2.5-72B-Instruct-GGUF \
--include "*.Q4_K_M.gguf" --local-dir ./models
# API サーバー起動
./build/bin/llama-server \
--model ./models/Qwen2.5-72B-Instruct-Q4_K_M.gguf \
--n-gpu-layers 80 \
--ctx-size 8192 \
--port 8080
Apple Silicon(M3 Max 128GB)での実行
cmake -B build -DGGML_METAL=ON
# Llama 3.1 70B Q4_K_M(43GB)をMetalで全層オフロード
./build/bin/llama-server \
--model llama-3.1-70b-instruct-q4_k_m.gguf \
--n-gpu-layers 999 \
--metal-offload all
# 実測: 約28 tok/s(M3 Max 128GB)
主要なフロントエンドツール
- LM Studio: GUIでGGUFモデルを管理・実行(Windows/macOS/Linux)
- Ollama: Dockerライクなモデル管理CLI(
ollama run qwen2.5:72b) - Jan: オフライン対応デスクトップアプリ
- GPT4All: エンタープライズ向けローカルLLMプラットフォーム
- Open WebUI: Webブラウザ対応チャットUI(llama-server/Ollama両対応)
vLLMとの使い分け
llama.cppはローカル・CPU・単一ユーザー向けに最適化されており、vLLMは高同時接続・GPU専用・本番サービング向けです。開発PC・エッジデバイス・オフライン環境ではllama.cpp、クラウドAPI基盤ではvLLMが適切です。
FAQ
Q1: CPUだけで70Bモデルは動きますか? A: 可能です。RAM 64GB以上あればQ4_K_M量子化70Bを実行できます。速度はCore i9-14900Kで約5〜8 tok/sです。
Q2: GGUFとGGMLの違いは? A: GGMLは旧フォーマット、GGUFは2023年8月に導入した後継。メタデータ(トークナイザー・アーキテクチャ情報)をファイル内に埋め込んでおり後方互換性が高いです。
Q3: ROCm(AMD GPU)でも動きますか?
A: -DGGML_HIPBLAS=ONでビルドするとRX 7900 XTX等で動作します。CUDA比で5〜15%遅い傾向があります。
Q4: コンテキスト長はどのくらいまで対応しますか?
A: Llama 3.1は128Kトークン対応ですが、VRAM/RAM制限があります。--ctx-size 32768等で調整します。
まとめ
llama.cppはローカルLLM推論の事実上の標準インフラであり、GGUF量子化・マルチバックエンド・OpenAI互換APIを単一バイナリで提供します。GPU不要でも動作し、LM Studio・Ollamaのバックエンドとして数百万台規模で稼働しています。本番サービングにはvLLMが優位ですが、開発・実験・エッジ推論のファーストチョイスはllama.cppです。