llama.cppは、ローカルLLMを軽量かつ高速に実行するためのオープンソース推論エンジンです。C/C++で実装されているため、PythonやCUDAなどの複雑な依存関係なしに動作し、CPU環境でも実用的な速度でLLMを実行できる点が大きな特徴です。
本記事では、llama.cppの基本的な概要からインストール方法、モデルの実行、APIサーバーとしての運用方法まで、初心者の方でも理解できるよう丁寧に解説します。
llama.cppとは何か
llama.cppは、Georgi Gerganov氏が2023年に開発を開始したオープンソースプロジェクトです。当初はMetaのLlama モデルをCPUで動作させることを目的として作られましたが、現在ではQwen、Gemma、Mistralなど、GGUF形式に対応する数百種類のモデルを実行できるようになっています。
llama.cppの主な特徴
- C/C++実装:Pythonランタイムが不要で、依存関係が最小限
- CPU推論の最適化:AVX2やARM NEONなど、CPU命令セットに最適化された高速推論
- GPU推論対応:CUDA(NVIDIA)、Metal(Apple)、Vulkan(AMD/Intel)をサポート
- GGUF形式:量子化モデルの標準フォーマットとして広く採用
- 低メモリ消費:量子化技術により、大幅に少ないメモリでモデルを実行可能
- APIサーバー機能:OpenAI互換のHTTPサーバーを内蔵
- 組み込み対応:Raspberry Piなど低スペックデバイスでも動作可能
実はOllamaやLM Studioも、内部的にはllama.cppの推論エンジンを利用しています。llama.cppを直接使用することで、より細かい制御やカスタマイズが可能になります。
llama.cppのインストール方法
llama.cppのインストール方法は、ビルド済みバイナリの利用とソースからのビルドの2通りがあります。
方法1:ビルド済みバイナリを使う(推奨)
最も手軽なのは、GitHubのリリースページからビルド済みバイナリをダウンロードする方法です。
- llama.cpp リリースページにアクセス
- 最新リリースの「Assets」セクションから、自分の環境に合ったファイルをダウンロード
- ダウンロードしたアーカイブを展開
主なダウンロード対象は以下の通りです。
| ファイル名の目印 | 対象環境 |
|---|---|
| win-cuda | Windows + NVIDIA GPU |
| win-avx2 | Windows(CPU推論) |
| macos-arm64 | macOS(Apple Silicon) |
| ubuntu-x64 | Linux(CPU推論) |
| ubuntu-cuda | Linux + NVIDIA GPU |
方法2:ソースからビルドする
最新機能を利用したい場合や、特定のハードウェアに最適化したビルドを作りたい場合は、ソースからビルドします。
Linux / macOS でのビルド(CPU推論)
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -B build
cmake --build build --config Release -j$(nproc)
NVIDIA GPU(CUDA)を有効にしたビルド
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j$(nproc)
Apple Silicon(Metal)を有効にしたビルド
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release -j$(sysctl -n hw.ncpu)
ビルドが完了すると、build/bin/ ディレクトリ内に実行ファイルが生成されます。
モデルの入手と実行
llama.cppで利用できるモデルは、GGUF形式のファイルです。Hugging Faceから多数のモデルをダウンロードできます。
モデルのダウンロード
Hugging Faceで「GGUF」と検索すると、多くの量子化済みモデルが見つかります。例えば、Qwen3 8BのQ4_K_M量子化版は以下のようにダウンロードできます。
# Hugging Face CLIを使用(事前にpip install huggingface-hubが必要)
huggingface-cli download Qwen/Qwen3-8B-GGUF qwen3-8b-q4_k_m.gguf --local-dir models/
# またはwgetで直接ダウンロード
wget -P models/ https://huggingface.co/Qwen/Qwen3-8B-GGUF/resolve/main/qwen3-8b-q4_k_m.gguf
対話モードでの実行
ダウンロードしたモデルを対話モードで実行します。
# 基本的な対話モード
./build/bin/llama-cli -m models/qwen3-8b-q4_k_m.gguf -c 4096 --conversation
# GPU(CUDA)を利用する場合(全レイヤーをGPUにオフロード)
./build/bin/llama-cli -m models/qwen3-8b-q4_k_m.gguf -c 4096 -ngl 99 --conversation
主要なオプションの意味は以下の通りです。
| オプション | 説明 |
|---|---|
-m |
モデルファイルのパス |
-c |
コンテキスト長(処理できるトークン数) |
-ngl |
GPUにオフロードするレイヤー数(99で全レイヤー) |
-t |
使用するCPUスレッド数 |
--conversation |
対話モードを有効化 |
--temp |
Temperature(応答のランダム性制御、デフォルト0.8) |
ベンチマークの実行
自分のPC環境でどの程度のパフォーマンスが出るか確認するには、ベンチマークを実行します。
./build/bin/llama-bench -m models/qwen3-8b-q4_k_m.gguf -ngl 99
これにより、プロンプト処理速度(pp: tokens/s)と生成速度(tg: tokens/s)が表示されます。生成速度が5 tokens/s以上あれば、対話的な利用に十分です。PCスペックガイドの推奨値と比較して、自分の環境のパフォーマンスを評価してください。
APIサーバーとしての運用
llama.cppには、OpenAI互換のHTTP APIサーバーが内蔵されています。これを利用することで、社内の様々なアプリケーションからローカルLLMにアクセスできるようになります。
サーバーの起動
# 基本的なサーバー起動
./build/bin/llama-server -m models/qwen3-8b-q4_k_m.gguf -c 4096 --port 8080
# GPU利用 + 複数同時リクエスト対応
./build/bin/llama-server -m models/qwen3-8b-q4_k_m.gguf -c 4096 -ngl 99 --port 8080 --parallel 4
サーバーが起動すると、http://localhost:8080 でAPIにアクセスできます。簡易的なWeb UIも内蔵されており、ブラウザからアクセスするとチャット画面が表示されます。
APIの利用例
# curlでのリクエスト例
curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "qwen3-8b",
"messages": [
{"role": "user", "content": "来月の売上見込みレポートのフォーマットを作成してください。"}
]
}'
Pythonからも、OpenAIライブラリをそのまま利用できます。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="no-key"
)
response = client.chat.completions.create(
model="qwen3-8b",
messages=[
{"role": "system", "content": "あなたは経験豊富なビジネスコンサルタントです。"},
{"role": "user", "content": "中小企業のDX推進で最初に着手すべき施策を3つ教えてください。"}
]
)
print(response.choices[0].message.content)
APIサーバーの詳細な構築方法については、専用の記事も参考にしてください。
CPU推論を最大限に活用するテクニック
llama.cppの最大の強みは、GPU無しのCPU環境でも実用的な速度でLLMを動作させられる点です。CPU推論のパフォーマンスを最大化するためのテクニックを紹介します。
適切なスレッド数の設定
CPUのコア数に応じた適切なスレッド数を設定することで、推論速度が改善します。
# 物理コア数と同じスレッド数を設定(例:8コアCPUの場合)
./build/bin/llama-cli -m models/qwen3-8b-q4_k_m.gguf -t 8 --conversation
一般的には、物理コア数と同じかやや少ない数が最適です。ハイパースレッディングの論理コア数を設定すると、逆にパフォーマンスが低下することがあるため注意してください。
低ビット量子化の活用
CPU推論では、量子化レベルを下げることでメモリ使用量と処理速度の両方を改善できます。Q4_K_Mが標準的ですが、CPU環境ではQ3_K_MやIQ3_XXSなどの低ビット量子化も検討に値します。
小さなモデルを選ぶ
CPU推論では、モデルサイズがパフォーマンスに直結します。SLMクラスの1B〜4Bモデルであれば、一般的なビジネスPCでも快適に動作します。
# 軽量なSLMをCPU推論で実行
./build/bin/llama-cli -m models/gemma3-1b-q4_k_m.gguf -t 8 --conversation
llama.cppとOllama・LM Studioの関係
llama.cpp、Ollama、LM Studioの3つは、ローカルLLMのエコシステムにおいて密接に関連しています。
| ツール | 位置づけ | 向いている人 |
|---|---|---|
| llama.cpp | 推論エンジン(コア技術) | 細かい制御が必要な開発者・上級者 |
| Ollama | llama.cppのラッパー(CLI) | CLIに慣れた技術者、サーバー運用 |
| LM Studio | llama.cppのラッパー(GUI) | 初心者、GUI操作を好む方 |
OllamaもLM Studioも、内部でllama.cppの推論エンジンを使用しています。通常の業務利用であればOllamaやLM Studioで十分ですが、以下のような場面ではllama.cppを直接利用する価値があります。
- 推論パラメータを細かく制御したい場合
- 最新のllama.cpp機能をいち早く利用したい場合
- カスタムビルドで特定のハードウェアに最適化したい場合
- Raspberry Piなどの組み込みデバイスで動作させたい場合
- バッチ処理で大量のテキストを効率的に処理したい場合
業務活用の具体例
llama.cppを使った業務活用のシナリオをいくつか紹介します。
社内文書の一括要約処理
llama.cppのバッチ処理機能を使えば、大量の社内文書を一括で要約できます。シェルスクリプトと組み合わせて自動化パイプラインを構築できます。
#!/bin/bash
# 社内文書の一括要約スクリプト例
for file in documents/*.txt; do
content=$(cat "$file")
echo "以下の文書を200文字以内で要約してください:$content" | \
./build/bin/llama-cli -m models/qwen3-8b-q4_k_m.gguf -c 4096 -n 256 --temp 0.1 -p "$(cat)" \
> "summaries/$(basename $file)"
done
オフライン環境でのAI活用
llama.cppはインターネット接続不要で動作するため、セキュリティ要件の厳しい環境やオフライン拠点でも利用できます。セキュリティとデータ保護の観点からも、完全オフライン運用は大きなメリットです。
RAGシステムのバックエンド
llama.cppのAPIサーバー機能をRAGシステムのバックエンドとして使用することで、社内ナレッジベースと連携した高精度な質問応答システムを構築できます。
まとめ:llama.cppは高度なローカルLLM運用の基盤
llama.cppは、ローカルLLMエコシステムの中核を担う推論エンジンです。本記事のポイントを整理します。
- C/C++実装で軽量高速:依存関係が少なく、CPU環境でも実用的な速度を実現
- 幅広いモデル対応:GGUF形式でLlama 4、Qwen3、Gemma 3などを実行可能
- GPU/CPU両対応:NVIDIA CUDA、Apple Metal、CPU推論すべてをサポート
- APIサーバー内蔵:OpenAI互換APIで既存システムとの連携が容易
- OllamaやLM Studioの基盤技術:より細かい制御が必要な場合に直接利用する価値がある
初めてローカルLLMを試す方は、まずOllamaやLM Studioから始め、より高度な制御やカスタマイズが必要になった段階でllama.cppの直接利用を検討するのが良いでしょう。パフォーマンス最適化を追求する際にも、llama.cppの各種オプションの理解が役立ちます。
関連記事
Claude CodeでREST API開発|設計からテストまでAI駆動で高速構築
Claude Codeでコードレビュー|AIを活用した品質チェックとレビュー効率化
Claude Codeのコンテキスト管理術|大規模プロジェクトで精度を維持する方法
Claude Codeのカスタムスラッシュコマンド作成ガイド|独自ワークフローの自動化
Claude Codeでデータベース移行・マイグレーション|安全なスキーマ変更の実践
Claude Codeでデバッグを効率化|バグ修正・エラー解析の実践テクニック
Claude Codeでドキュメント自動生成|README・API仕様書・技術文書の効率的な作り方
Claude Codeでエラーハンドリング実装|堅牢なアプリケーションを構築するパターン集