llama.cpp の CLI とサーバーによるクイックスタート
OpenCode のインストール、設定、および使用方法
ローカル推論には、llama.cpp に戻って利用する機会が多いです。Ollama 他が抽象化して隠している部分を自分で制御できるだけでなく、すぐに動作するからです。GGUFモデルを llama-cli で対話的に実行したり、llama-server で OpenAI 互換の HTTP API を公開したりするのが簡単です。
まだローカル、セルフホスティング、クラウドのアプローチのどれを選ぶべきか迷っている場合は、まずは柱となるガイド LLM ホスティング 2026: ローカル、セルフホスティング、クラウドインフラの比較 を確認することをお勧めします。
2026 年に llama.cpp が選ばれる理由
llama.cpp は、以下の点に偏重した軽量な推論エンジンです。
- CPU および複数の GPU バックエンド間の移植性
- 単一マシンでの予測可能なレイテンシ
- ラップトップからオンプレミスノードまで、デプロイメントの柔軟性
プライバシーとオフライン操作が求められる際、ランタイムフラグに対する決定論的な制御が必要な際、あるいは Python 依存のフルスタックを実行せずに推論を大規模システムに組み込みたい際に、その真価を発揮します。
また、後で高スループットのサーバーランタイムを選択した場合でも、llama.cpp の理解は役に立ちます。例えば、GPU での最大サービングスループットが目標である場合は、vLLM とも比較を検討するでしょう。その際、以下のリファレンスが役立ちます:
vLLM クイックスタート: 高性能 LLM サービング
また、ツールの選択をベンチマークするには以下を参照してください:
Ollama vs vLLM vs LM Studio: 2026 年にローカルで LLM を実行する最善の方法とは?

Windows、macOS、Linux への llama.cpp のインストール
インストールには、利便性、移植性、あるいは最大のパフォーマンスを重視するかによって、3 つの実践的な選択肢があります。
パッケージマネージャーによるインストール
これが最も速く「動作確認」できるオプションです。
# macOS または Linux
brew install llama.cpp
# Windows
winget install llama.cpp
# macOS (MacPorts)
sudo port install llama.cpp
# macOS または Linux (Nix)
nix profile install nixpkgs#llama-cpp
ヒント:インストール後、ツールが存在するか確認してください。
llama-cli --version
llama-server --version
事前構築済みバイナリによるインストール
コンパイラなしでクリーンなインストールを望む場合は、llama.cpp の GitHub リリースに公開されている公式の事前構築済みバイナリを使用してください。これらは通常、複数の OS ターゲットと複数のバックエンド(CPU 専用および GPU 対応のバリエーション)をカバーしています。
一般的なワークフローは以下の通りです:
# 1) OS とバックエンドに合ったアーカイブをダウンロード
# 2) 解凍
# 3) 解凍フォルダから実行
./llama-cli --help
./llama-server --help
正確なハードウェア向けソースからのビルド
CPU/GPU バックエンドから最高のパフォーマンスを絞り出したい場合は、CMake を使用してソースからビルドしてください。
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# CPU ビルド
cmake -B build
cmake --build build --config Release
ビルド後、バイナリは通常以下の場所にあります:
ls -la ./build/bin/
1 コマンドでの GPU ビルド
ハードウェアに一致するバックエンドを有効化します(例:CUDA と Vulkan):
# NVIDIA CUDA
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
# Vulkan
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release
Ubuntu 24.04 + NVIDIA GPU: 完全なビルド手順
NVIDIA GPU を搭載した Ubuntu 24.04 では、ビルド前に CUDA ツールキットと OpenSSL のインストールが必要です。以下はテスト済みの手順です:
1. CUDA ツールキット 13.1 のインストール
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/13.1.1/local_installers/cuda-repo-ubuntu2404-13-1-local_13.1.1-590.48.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-13-1-local_13.1.1-590.48.01-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-13-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-1
2. 環境に CUDA を追加(~/.bashrc に追記):
# cuda toolkit
export PATH=/usr/local/cuda-13.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-13.1/lib64:$LD_LIBRARY_PATH
その後、source ~/.bashrc を実行するか、新しいターミナルを開いてください。
3. OpenSSL 開発ヘッダーのインストール(クリーンなビルドに必要):
sudo apt update
sudo apt install libssl-dev
4. llama.cpp のビルド(llama.cpp クローンを含むディレクトリから、CUDA を有効にして):
cmake llama.cpp -B llama.cpp/build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split llama-embedding
cp llama.cpp/build/bin/llama-* llama.cpp
これにより、llama.cpp ディレクトリに llama-cli、llama-mtmd-cli、llama-server、llama-embedding、llama-gguf-split が生成されます。
複数のバックエンドをコンパイルし、ランタイムでデバイスを選択することも可能です。これは、同じビルドを異種マシンにデプロイする際に役立ちます。
GGUF モデルと量子化の選択
推論を実行するには、GGUF モデルファイル(*.gguf)が必要です。GGUF は、llama.cpp などのエンジンに必要なモデル重みと標準化されたメタデータを単一ファイルにバンドルする形式です。
モデルを取得する 2 つの方法
オプション A: ローカルの GGUF ファイルを使用
GGUF をダウンロードするか、./models/ にコピーします:
mkdir -p models
# GGUF を models/my-model.gguf に配置
その後、パスを指定して実行します:
llama-cli -m models/my-model.gguf -p "Hello! Explain what llama.cpp is." -n 128
オプション B: llama.cpp が Hugging Face からダウンロードする
最新の llama.cpp ビルドでは、Hugging Face からダウンロードし、ファイルをローカルキャッシュに保存できます。これは、クイックな実験には最も簡単なワークフローです。
# HF からモデルをダウンロードし、プロンプトを実行
llama-cli \
--hf-repo ggml-org/tiny-llamas \
--hf-file stories15M-q4_0.gguf \
-p "Once upon a time," \
-n 200
リポジトリセレクターで量子化を指定し、ツールが一致するファイルを選択させることもできます:
llama-cli \
--hf-repo unsloth/phi-4-GGUF:q4_k_m \
-p "Summarize the concept of quantization in one paragraph." \
-n 160
後で完全なオフラインワークフローが必要になる場合は、--offline を使用することでキャッシュの使用を強制し、ネットワークアクセスを防ぐことができます。
ローカル推論向けの量子化の選択
量子化は、「ローカル推論にどの GGUF 量子化を選ぶべきか」という質問に対する実用的な答えであり、それは品質、モデルサイズ、速度のトレードオフに直接関係します。
実用的な出発点:
- CPU 優先のマシンでは、Q4 または Q5 のバリエーションから始める
- RAM または VRAM が許容できる場合は、より高い精度(またはより攻撃的な量子化)へ移行する
- モデルがタスクに対して「愚か」に感じる場合、その修正は、より良いモデルまたはより攻撃的な量子化ではなく、サンプリングの微調整であることが多い
また、コンテキストウィンドウの重要性も覚えておいてください。GGUF ファイル自体が収まっても、より大きなコンテキストサイズはメモリ使用量を増加させます(場合によっては劇的に)。
llama-cli クイックスタートと主要パラメータ
llama-cli は、モデルが読み込まれ、バックエンドが動作し、プロンプトが期待通りに動作するかを検証する最速の方法です。
最小限の実行
llama-cli \
-m models/my-model.gguf \
-p "Write a short TCP vs UDP comparison." \
-n 200
インタラクティブなチャット実行
会話モードはチャットテンプレート向けに設計されています。通常、インタラクティブな動作を有効化し、モデルのテンプレートに従ってプロンプトをフォーマットします。
llama-cli \
-m models/my-model.gguf \
--conversation \
--system-prompt "You are a concise systems engineering assistant." \
--ctx-size 4096
モデルが特定のシーケンスを出力した際に生成を終了させるには、リバースプロンプトを使用します。これは特にインタラクティブモードで役立ちます。
重要な llama-cli フラグ
200 個のフラグを覚えるのではなく、正確性、レイテンシ、メモリに支配的なものに焦点を当てましょう。
モデルとダウンロード
| 目的 | フラグ | 使用タイミング |
|---|---|---|
| ローカルファイルの読み込み | -m, --model |
既に *.gguf を持っている場合 |
| Hugging Face からのダウンロード | --hf-repo, --hf-file, --hf-token |
クイックな実験、自動キャッシュ |
| オフラインキャッシュの強制 | --offline |
エアギャップまたは再現可能な実行 |
コンテキストとスループット
| 目的 | フラグ | 実用的な注記 |
|---|---|---|
| コンテキストの増減 | -c, --ctx-size |
大きなコンテキストはより多くの RAM または VRAM を必要とする |
| プロンプト処理の改善 | -b, --batch-size と -ub, --ubatch-size |
バッチサイズは速度とメモリに影響する |
| CPU 並列性の調整 | -t, --threads と -tb, --threads-batch |
CPU コアとメモリ帯域幅に合わせる |
GPU オフロードとハードウェア選択
| 目的 | フラグ | 実用的な注記 |
|---|---|---|
| 利用可能なデバイスの一覧 | --list-devices |
複数のバックエンドがコンパイルされている場合に役立つ |
| デバイスの選択 | --device |
CPU と GPU のハイブリッド選択を有効化 |
| レイヤーのオフロード | -ngl, --n-gpu-layers |
速度向上の最大のレバーの一つ |
| 複数 GPU のロジック | --split-mode, --tensor-split, --main-gpu |
複数 GPU ホストまたは VRAM 不均衡に有用 |
サンプリングと出力品質
| 目的 | フラグ | 開始時の良いデフォルト値 |
|---|---|---|
| クリエイティビティ | --temp |
タスクに応じて 0.2 から 0.9 |
| 核サンプリング | --top-p |
一般的に 0.9 から 0.98 |
| トークンカットオフ | --top-k |
40 が定番のベースライン |
| 反復の削減 | --repeat-penalty と --repeat-last-n |
小規模モデルに特に有用 |
llama-cli を使った例となるワークロード
プロンプトだけでなくファイルを要約
llama-cli \
-m models/my-model.gguf \
--system-prompt "You summarize technical documents. Output five bullets max." \
--file ./docs/incident-report.txt \
-n 300
結果の再現性を高める
プロンプトをデバッグしている際は、シードを固定し、ランダム性を減らします:
llama-cli \
-m models/my-model.gguf \
-p "Extract key risks from this design note." \
-n 200 \
--seed 42 \
--temp 0.2
OpenAI 互換 API を使った llama-server クイックスタート
llama-server は、以下の機能を公開できる組み込み HTTP サーバーです:
- チャット、完了、埋め込み、レスポンスのための OpenAI 互換エンドポイント
- インタラクティブなテスト用の Web UI
- 本番環境の可視化のためのオプションの監視エンドポイント
ローカルモデルでサーバーを起動
llama-server \
-m models/my-model.gguf \
-c 4096
デフォルトでは、127.0.0.1:8080 でリッスンします。
外部にバインドする場合(Docker 内や LAN 内など)は、ホストとポートを指定します:
llama-server \
-m models/my-model.gguf \
-c 4096 \
--host 0.0.0.0 \
--port 8080
オプションだが重要なサーバーフラグ
| 目的 | フラグ | 重要性 |
|---|---|---|
| 並列性 | --parallel |
並列リクエスト用のサーバースロットを制御 |
| 負荷下でのスループット向上 | --cont-batching |
継続的バッチングを有効化 |
| アクセス制限 | --api-key または --api-key-file |
API リクエストの認証 |
| Prometheus メトリクスの有効化 | --metrics |
/metrics を公開するために必要 |
| プロンプト再処理のリスク低減 | --cache-prompt |
レイテンシのためのプロンプトキャッシュ動作 |
コンテナ内で実行する場合、多くの設定は LLAMA_ARG_* 環境変数を通じて制御することもできます。
API 呼び出しの例
curl を使ったチャット完了
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Give me a quick llama.cpp checklist." }
],
"temperature": 0.7
}'
本番デプロイメントへのヒント:--api-key を設定している場合、x-api-key ヘッダー(またはゲートウェイに応じて Authorization ヘッダー)を送信できます。
llama-server をターゲットとした OpenAI Python クライアント
OpenAI 互換サーバーを使用する場合、多くのクライアントは base_url を変更するだけで動作します。
import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1",
api_key="sk-no-key-required",
)
resp = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain threads vs batch size in llama.cpp."},
],
)
print(resp.choices[0].message.content)
埋め込み(Embeddings)
OpenAI 互換の埋め込みは /v1/embeddings で公開されますが、モデルは none ではない埋め込みプーリングモードをサポートしている必要があります。
curl http://localhost:8080/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"input": ["hello", "world"],
"model": "GPT-4",
"encoding_format": "float"
}'
専用埋め込みモデルを実行する場合は、埋め込み専用モードでサーバーを起動することを検討してください:
llama-server \
-m models/Qwen3-Embedding-0.6B-Q8_0.gguf \
--embeddings \
--host 127.0.0.1 \
--pooling last \
--port 8080
または、CPU で llama-cpp の埋め込みモデルを実行したい場合は:
CUDA_VISIBLE_DEVICES="" llama-server \
-m models/Qwen3-Embedding-0.6B-Q8_0.gguf \
--embeddings \
--host 127.0.0.1 \
--pooling last \
--port 8080
以下のように試してください:
CUDA_VISIBLE_DEVICES="" llama-embedding \
-m /path/to/Qwen3-Embedding-0.6B-Q8_0.gguf \
-p "your text here" \
--pooling last \
--verbose-prompt
1 プロセスからの複数モデルのサービング
上記の例では、llama-server を起動時に単一モデルにバインドしています。プロセスを再起動せずにリクエストごとにモデルを切り替えたい場合は、ルーターモードがそのためにあります。詳細は以下を参照してください:
llama-server ルーターモード: 再起動なしの動的モデル切り替え
パフォーマンス、監視、本番環境の堅牢化
「速度とメモリにとって最も重要な llama.cpp コマンドラインオプションは何か」という FAQ は、推論をシステムとして扱うことで格段に簡単になります:
- メモリ上限は通常、最初の制約となります(CPU の RAM、GPU の VRAM)。
- コンテキストサイズは主要なメモリ乗数です。
- GPU レイヤーオフロードは、1 秒あたりのトークン数を高めるための最も速いパスであることが多いです。
- バッチサイズとスレッドはスループットを向上させますが、メモリ圧力を高める可能性もあります。
より深く、エンジニアリングファーストの視点については以下を参照してください: LLM パフォーマンス 2026: ベンチマーク、ボトルネック、最適化
16 GB クラスの GPU において、コンテキスト(19K / 32K / 64K)を密なモデルと MoE GGUF でスイープしながら、1 秒あたりのトークン数、VRAM、GPU 負荷を測定した llama-cli スタイルの結果が欲しい場合は、以下を参照してください:16 GB VRAM LLM ベンチマーク(速度とコンテキスト)
Prometheus と Grafana を使った llama-server の監視
llama-server は --metrics が有効化されている場合、/metrics で Prometheus 互換のメトリクスを公開できます。これは、Prometheus のスクレイプ設定と Grafana ダッシュボードと自然にペアになります。
llama.cpp(および vLLM、TGI)に特化したダッシュボードとアラートについては:本番環境での LLM 推論監視(2026): vLLM、TGI、llama.cpp 向け Prometheus & Grafana より広範なガイド:可視化:監視、メトリクス、Prometheus & Grafana ガイド および LLM システムのための可視化
基本的な堅牢化チェックリスト
llama-server が localhost 以外からアクセス可能になる場合:
- リクエストを認証するために
--api-key(または--api-key-file)を使用する - 必要がない限り
0.0.0.0にバインドしない - サーバーの SSL フラグまたはリバースプロキシで TLS を終端することを検討する
- 負荷下でのレイテンシを保護するために
--parallelで並列性を制限する
トラブルシューティングのクイックウィン
モデルは読み込まれるが、チャットの回答がおかしい
チャットエンドポイントは、モデルがサポートされているチャットテンプレートを持つ場合に最適です。出力が構造化されていないように見える場合は、以下を試してください:
llama-cli --conversationと明示的な--system-promptを使用する- モデルが指示またはチャット調整済みのバリエーションであることを確認する
- アプリケーションに組み込む前に、サーバーの Web UI でテストする
メモリ不足(Out of Memory)に遭遇
コンテキストを減らすか、小さい量子化を選択してください:
--ctx-sizeを下げる- VRAM が問題の場合は
--n-gpu-layersを減らす - より小さいモデルまたは圧縮率の高い量子化に切り替える
CPU での動作が遅い
以下から始めてください:
- 物理コア数と同じ
--threadsを設定 - 適度なバッチサイズを使用
- マシン(CPU 機能とバックエンド)に合ったビルドをインストールしていることを確認