llama-cpp について
llama.cppは、CPUやApple Siliconなどで動作するC/C++製のLLM推論ツールです。GGUF量子化モデルに対応し、コマンドライン推論やOpenAI互換サーバーモードを備えています。
主な機能
- 01依存関係を抑えたC/C++推論
- 02GGUF量子化モデル対応
- 03CPUと複数GPUバックエンド
- 04対話型・バッチ型コマンドライン推論
- 05OpenAI互換サーバーモード
活用シーン
- 01CPUのみのマシンでモデルを実行
- 02Apple SiliconやAMD GPUで推論
- 03プロンプトファイルを一括処理
- 04APIサーバーとして推論を提供
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ orchestra-research/ ai-research-skills --skill llama-cppインストール後、Claude Code で/llama-cppを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/optimization.mdquantization.mdserver.md詳細
llama.cpp
最小限の依存関係で動作する純粋な C/C++ 製の LLM 推論エンジンで、CPU および NVIDIA 以外のハードウェア向けに最適化されています。
llama.cpp を使うべき場合
llama.cpp を使うべき場合:
- CPU のみのマシンで実行する場合
- Apple Silicon (M1/M2/M3/M4) にデプロイする場合
- AMD または Intel の GPU を使用する場合 (CUDA は不要)
- エッジデプロイ (Raspberry Pi、組み込みシステム) の場合
- Docker や Python を使わず、シンプルにデプロイしたい場合
代わりに TensorRT-LLM を使うべき場合:
- NVIDIA GPU (A100/H100) がある場合
- 最大スループット (100K+ tok/s) が必要な場合
- CUDA を使ってデータセンターで実行する場合
代わりに vLLM を使うべき場合:
- NVIDIA GPU がある場合
- Python ファーストの API が必要な場合
- PagedAttention を使いたい場合
クイックスタート
インストール
# macOS/Linux
brew install llama.cpp
# Or build from source
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
# With Metal (Apple Silicon)
make LLAMA_METAL=1
# With CUDA (NVIDIA)
make LLAMA_CUDA=1
# With ROCm (AMD)
make LLAMA_HIP=1
モデルのダウンロード
# Download from HuggingFace (GGUF format)
huggingface-cli download \
TheBloke/Llama-2-7B-Chat-GGUF \
llama-2-7b-chat.Q4_K_M.gguf \
--local-dir models/
# Or convert from HuggingFace
python convert_hf_to_gguf.py models/llama-2-7b-chat/
推論の実行
# Simple chat
./llama-cli \
-m models/llama-2-7b-chat.Q4_K_M.gguf \
-p "Explain quantum computing" \
-n 256 # Max tokens
# Interactive chat
./llama-cli \
-m models/llama-2-7b-chat.Q4_K_M.gguf \
--interactive
サーバーモード
# Start OpenAI-compatible server
./llama-server \
-m models/llama-2-7b-chat.Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8080 \
-ngl 32 # Offload 32 layers to GPU
# Client request
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama-2-7b-chat",
"messages": [{"role": "user", "content": "Hello!"}],
"temperature": 0.7,
"max_tokens": 100
}'
量子化フォーマット
GGUF フォーマットの概要
| フォーマット | ビット数 | サイズ (7B) | 速度 | 品質 | 用途 |
|---|---|---|---|---|---|
| Q4_K_M | 4.5 | 4.1 GB | 高速 | 良好 | 推奨デフォルト |
| Q4_K_S | 4.3 | 3.9 GB | より高速 | やや低い | 速度が最優先の場合 |
| Q5_K_M | 5.5 | 4.8 GB | 中程度 | より良い | 品質が最優先の場合 |
| Q6_K | 6.5 | 5.5 GB | やや遅い | 最良 | 最高品質が必要な場合 |
| Q8_0 | 8.0 | 7.0 GB | 遅い | 優秀 | 劣化を最小限に抑えたい場合 |
| Q2_K | 2.5 | 2.7 GB | 最速 | 低い | テスト専用 |
量子化の選び方
# General use (balanced)
Q4_K_M # 4-bit, medium quality
# Maximum speed (more degradation)
Q2_K or Q3_K_M
# Maximum quality (slower)
Q6_K or Q8_0
# Very large models (70B, 405B)
Q3_K_M or Q4_K_S # Lower bits to fit in memory
ハードウェアアクセラレーション
Apple Silicon (Metal)
# Build with Metal
make LLAMA_METAL=1
# Run with GPU acceleration (automatic)
./llama-cli -m model.gguf -ngl 999 # Offload all layers
# Performance: M3 Max 40-60 tokens/sec (Llama 2-7B Q4_K_M)
NVIDIA GPU (CUDA)
# Build with CUDA
make LLAMA_CUDA=1
# Offload layers to GPU
./llama-cli -m model.gguf -ngl 35 # Offload 35/40 layers
# Hybrid CPU+GPU for large models
./llama-cli -m llama-70b.Q4_K_M.gguf -ngl 20 # GPU: 20 layers, CPU: rest
AMD GPU (ROCm)
# Build with ROCm
make LLAMA_HIP=1
# Run with AMD GPU
./llama-cli -m model.gguf -ngl 999
よくあるパターン
バッチ処理
# Process multiple prompts from file
cat prompts.txt | ./llama-cli \
-m model.gguf \
--batch-size 512 \
-n 100
制約付き生成
# JSON output with grammar
./llama-cli \
-m model.gguf \
-p "Generate a person: " \
--grammar-file grammars/json.gbnf
# Outputs valid JSON only
コンテキストサイズ
# Increase context (default 512)
./llama-cli \
-m model.gguf \
-c 4096 # 4K context window
# Very long context (if model supports)
./llama-cli -m model.gguf -c 32768 # 32K context
パフォーマンスベンチマーク
CPU のパフォーマンス (Llama 2-7B Q4_K_M)
| CPU | スレッド数 | 速度 | コスト |
|---|---|---|---|
| Apple M3 Max | 16 | 50 tok/s | $0 (ローカル) |
| AMD Ryzen 9 7950X | 32 | 35 tok/s | $0.50/時間 |
| Intel i9-13900K | 32 | 30 tok/s | $0.40/時間 |
| AWS c7i.16xlarge | 64 | 40 tok/s | $2.88/時間 |
GPU アクセラレーション (Llama 2-7B Q4_K_M)
| GPU | 速度 | CPU 比 | コスト |
|---|---|---|---|
| NVIDIA RTX 4090 | 120 tok/s | 3-4× | $0 (ローカル) |
| NVIDIA A10 | 80 tok/s | 2-3× | $1.00/時間 |
| AMD MI250 | 70 tok/s | 2× | $2.00/時間 |
| Apple M3 Max (Metal) | 50 tok/s | ほぼ同等 | $0 (ローカル) |
サポートされているモデル
LLaMA ファミリー:
- Llama 2 (7B, 13B, 70B)
- Llama 3 (8B, 70B, 405B)
- Code Llama
Mistral ファミリー:
- Mistral 7B
- Mixtral 8x7B, 8x22B
その他:
- Falcon, BLOOM, GPT-J
- Phi-3, Gemma, Qwen
- LLaVA (ビジョン)、Whisper (音声)
モデルを探す: https://huggingface.co/models?library=gguf
参考資料
- 量子化ガイド - GGUF フォーマット、変換、品質比較
- サーバーデプロイ - API エンドポイント、Docker、モニタリング
- 最適化 - パフォーマンスチューニング、CPU と GPU のハイブリッド構成
リソース
コメント
Markdown 対応