llama.cpp完全ガイド【2026年5月最新版】インストール・GGUF量子化・llama-serverまで決定版

llama.cpp完全ガイド【2026年5月最新版】 チュートリアル

llama.cppは、ローカル環境で大規模言語モデル(LLM)を高速に動かすためのC/C++製推論エンジンです。Ollama、LM Studio、KoboldCpp、text-generation-webuiといった人気ツールの内部エンジンとしても採用されており、ローカルLLM界隈の事実上の中核ライブラリになっています。本記事では、2026年5月時点の最新版b9085をベースに、llama.cppのインストールからGGUFモデルの量子化、llama-serverによるOpenAI互換APIの構築、CUDA/Vulkan/ROCm/Metalによるアクセラレーション、Q4_K_MやQ5_K_Mといった量子化形式の使い分けまで、運用に必要な情報を1記事で完結する決定版として整理しました。

本記事の最終更新は2026年5月時点(リリースタグ b9085 / 2026年5月9日リリース)です。llama.cppは1日に十数本の頻度でリリースが続くプロジェクトのため、新機能はマージ直後から記事に反映するように調査しています。

  1. llama.cppとは何か
    1. llama.cppの基本情報
    2. llama.cppでできること
    3. なぜllama.cppがローカルLLMの中核なのか
  2. 2026年最新リリース情報
    1. 2026年5月の主な更新
    2. 2026年4月の主な更新
    3. 過去バージョンからの破壊的変更
  3. 他のローカルLLM推論ツールとの比較
    1. llama.cppを直接使うべき人
    2. OllamaやLM Studioを選んだほうが良い人
  4. llama.cppのメリット・デメリット
    1. メリット
    2. デメリット
  5. 動作要件
    1. 最小・推奨スペック
    2. GPUベンダー別の対応バックエンド
  6. インストール手順
    1. プリビルドバイナリで導入(全OS共通・初心者推奨)
    2. Windows(CUDA)でソースビルド
    3. Windows(CPU only)でソースビルド
    4. macOS(Metal)でソースビルド
    5. Linux(CUDA)でソースビルド
    6. Linux(ROCm / AMD GPU)でソースビルド
    7. Linux(Vulkan / クロスベンダー)でソースビルド
    8. Docker(Linux + NVIDIA)で利用
  7. 初期設定とモデルの入手
    1. 方法1: HuggingFaceから直接ダウンロード(2026年最新の推奨方法)
    2. 方法2: 既存のGGUFファイルをローカルに用意
    3. 方法3: 自分でGGUFに変換(中級者向け)
  8. 基本的な使い方
    1. llama-cliによる対話実行
    2. 主要なllama-cliオプション
    3. llama-serverによるOpenAI互換APIサーバ起動
    4. OpenAI Python SDKからの利用
  9. 実践的な使い方
    1. ユースケース1: 自前のRAG(検索拡張生成)バックエンドを構築する
    2. ユースケース2: Visual Studio Codeのコード補完バックエンドにする
    3. ユースケース3: GBNF文法によるJSON強制出力
  10. 応用・カスタマイズ
    1. マルチGPUテンソル並列(2026年新機能)
    2. スペキュレーティブデコーディングで2〜3倍高速化
    3. コンテキスト長の拡張(RoPEスケーリング)
    4. マルチモーダル(画像入力)モデル
  11. パフォーマンス最適化
    1. 量子化形式の使い分け(Q4_K_M / Q5_K_M / Q8_0など)
    2. FlashAttentionでさらに高速化
    3. KVキャッシュの量子化
    4. 並列スロットによるバッチ処理
  12. よくあるエラーとトラブルシューティング
    1. エラー1: error loading model: unable to allocate backend buffer
    2. エラー2: llama_model_load: error loading model: tensor 'XXX' has wrong shape
    3. エラー3: CUDA error: out of memory
    4. エラー4: 日本語が文字化けする / おかしな繰り返しが出る
    5. エラー5: libcuda.so.1: cannot open shared object file (Linux)
    6. エラー6: 推論速度が異常に遅い(CPUで動いている可能性)
    7. エラー7: error: invalid option '-hf'
  13. おすすめの組み合わせ・連携
    1. Ollamaとの併用
    2. LM Studioとの併用
    3. Open WebUIとの連携
    4. Continue / Aider / LangChainとの連携
    5. Difyとの連携
  14. 推奨PCスペック(2026年5月時点)
    1. 入門構成: 1B〜8Bモデルを快適に動かす
    2. 標準構成: 13B〜32Bモデルや軽量MoEを動かす
    3. ハイエンド構成: 70B以上のフラッグシップモデル
  15. まとめ
    1. こんな人にllama.cppはおすすめ
    2. 逆に向かないケース
  16. 📦 この記事で紹介した商品

llama.cppとは何か

llama.cppは、Georgi Gerganov氏(GitHub ID: ggerganov)が2023年3月に公開したC/C++実装のLLM推論エンジンです。当初はMeta社のLLaMAモデルをMacBookで動かすことを目的に書かれましたが、現在ではggml-org組織に移管され、LLaMA系列以外の数十のモデルアーキテクチャに対応する汎用推論エンジンへと進化しました。

llama.cpp公式ロゴ
llama.cpp公式ロゴ(出典: 公式GitHubリポジトリ / MITライセンス)

llama.cppの基本情報

項目内容
プロジェクト名llama.cpp
開発元ggml-org(Georgi Gerganov氏ほかコミュニティ)
ライセンスMITライセンス
初回リリース2023年3月
最新リリースb9085(2026年5月9日)
言語C / C++(GGMLライブラリベース)
主要バックエンドCUDA / Metal / ROCm / Vulkan / SYCL / Hexagon / CPU(BLAS)
公式リポジトリgithub.com/ggml-org/llama.cpp

llama.cppでできること

  • LLaMA 2 / LLaMA 3 / Mistral / Mixtral / Qwen / Phi / Gemma / Deepseek / Yi / Falcon / StableLM / Mamba / Grok-1 など主要なオープンモデルのローカル実行
  • LLaVA / BakLLaVA / ShareGPT4V / Qwen2-VL などのマルチモーダル(画像入力)モデルの実行
  • 1.5bit〜8bitまでの整数量子化(Q4_K_M、Q5_K_M、Q8_0、IQ2、IQ3など)
  • HuggingFaceで配布されているSafeTensorsモデルからGGUF形式への変換
  • OpenAI互換APIサーバ(llama-server)によるバックエンド構築
  • llama-cliによる対話型実行と文法制約(GBNF)に基づく構造化出力
  • スペキュレーティブデコーディングによる推論高速化
  • マルチGPUテンソル並列(2026年4月以降のbuild b8738以降で対応)

なぜllama.cppがローカルLLMの中核なのか

OllamaやLM Studio、KoboldCppといった有名なフロントエンドは、内部の推論エンジンとしてllama.cppまたはそのフォークを利用しています。つまり、これらのツールで使えるGGUF形式のモデルは、すべてllama.cpp由来です。llama.cppを直接扱えるようになると、フロントエンドに依存せず最新機能を即座に試せるうえ、コマンドライン1本で動かせるためサーバー運用やDocker化も容易になります。

2026年最新リリース情報

llama.cppはほぼ毎日リリースタグが切られる超高速開発プロジェクトです。2026年4月だけで170以上の増分リリースが行われ、ローカルLLMに直結する大きな機能が次々と追加されています。最新版であるb9085(2026年5月9日)と、ここ数か月の主要アップデートを時系列で整理します。

2026年5月の主な更新

  • b9085(2026-05-09): MiMo-V2.5モデル向けにフラッシュアテンションのMMA(Matrix Multiply Accumulate)/Tilesカーネルを追加(d_kq=192、d_v=128対応)
  • b9084(2026-05-09): Qualcomm HexagonバックエンドにGated Delta Net演算のHTMカーネルを実装。PP(Prefill)とTG(Token Generation)の両パスで最適化
  • b9082(2026-05-08): Hexagonバックエンド向けにL2_NORM(L2正規化)のHVXカーネルを追加
  • b9080(2026-05-08): Gemma4_26B_A4B_NVFP4モデルのGGUF変換に対応

2026年4月の主な更新

  • テンソル並列の正式対応(build b8738): 複数GPU間でレイヤーを分割するパイプライン並列ではなく、各GPUがすべてのトークン生成に参加するテンソル並列を導入。NVIDIA以外のGPUでも動作するベンダー非依存実装
  • 1ビット量子化(Q1_0): 究極的に制約のあるエッジデバイス向けの1ビット量子化を追加。エッジAIや組込み用途を想定
  • Gemma 4 day-one対応: 2026年4月2日のGoogle Gemma 4リリース当日にビジョン入力とMoEを含む全バリアント(E2B、E4B、26B MoE、31B Dense)に対応
  • Qualcomm Hexagon NPU対応(build b8755、4月11日): Snapdragon搭載ノートPCやエッジデバイスのHexagon NPUバックエンドをLinuxで正式サポート
  • AMD CDNA4対応(build b8739、4月9日): AMD Instinct MI350X/MI355Xの新しいMFMA命令にチューニングしたカーネルを追加

過去バージョンからの破壊的変更

  • 2024年に廃止された旧convert.pyは、現在convert_hf_to_gguf.pyに統合済み。旧スクリプト名でのドキュメントは無効
  • サーバの起動コマンドはかつての./serverから./llama-serverに統一済み(同様にmainはllama-cli、quantizeはllama-quantizeに変更)
  • サブモジュールとして同梱されていたGGMLは2024年にggml-org/ggmlとしてリポジトリ分離、現在は同じggml-org組織下で開発が続いている

最新の差分は公式リリースページで確認できます。GitHub Actionsで自動ビルドされたWindows / Linux / macOS用のプリビルドバイナリも各リリースから直接ダウンロードできるため、自前でビルドしたくない場合はそちらを推奨します。

他のローカルLLM推論ツールとの比較

2026年5月時点で、ローカルLLM推論の主要ツールは大きく分けて以下のような立ち位置になっています。すべて記事公開時点の最新メジャーバージョンで比較しました。

項目llama.cppOllamaLM StudiovLLMKoboldCpptext-generation-webui
2026年5月時点バージョンb9085v0.23.20.4.12v0.20.1v1.112.2v4.8
ライセンスMITMITプロプライエタリ(個人無料)Apache 2.0AGPL 3.0AGPL 3.0
UICLI / 内蔵Web UICLI / 公式GUIデスクトップGUICLI / API中心Web UIWeb UI
モデル形式GGUFGGUF(内部はllama.cpp)GGUF / MLXSafeTensors / HFGGUF(llama.cppフォーク)GGUF / SafeTensors / EXL2
強み軽量・高速・全機能アクセス1コマンド導入とモデル管理GUIで完結、初心者向け大規模並列推論、本番運用RP/小説特化、低スペック対応複数バックエンド統合UI
弱み初学者にはCLIの敷居カスタマイズ性が低めクローズドソースVRAM要求が高い、GGUF未対応本流からは派生フォーク初期セットアップが重い
推奨用途サーバ運用・実験・学習カジュアル利用・開発個人ユース・モデル試用本番API・高並列ロールプレイ・低VRAM多様なモデルを試したい人

llama.cppを直接使うべき人

  • OllamaやLM Studio経由では使えない最新機能(テンソル並列、Hexagon NPU、新モデル対応など)を即座に試したい
  • モデルのGGUF変換や量子化を自分で行いたい
  • OpenAI互換APIサーバを軽量に立ててDockerで運用したい
  • Raspberry PiやAndroid、Hexagon搭載デバイスなど特殊なハードで動かしたい
  • GBNF文法による構造化出力を細かく制御したい

OllamaやLM Studioを選んだほうが良い人

  • とにかくすぐにLLMを動かしたい(Ollamaが最速)
  • GUI操作で完結させたい(LM Studio)
  • モデルファイルの場所やバージョン管理を意識したくない

llama.cppのメリット・デメリット

メリット

  • 純粋C/C++実装で依存が最小: PythonランタイムやCUDAライブラリの差異に振り回されにくい
  • あらゆるハードウェアで動く: NVIDIA、Apple Silicon、AMD(ROCm)、Intel(SYCL/Vulkan)、Qualcomm(Hexagon)、CPU単体までカバー
  • 軽量で高速: M2 MacBookで7Bモデルが30 tokens/sec前後、RTX 4060(8GB)で7B Q4_K_Mが80〜100 tokens/sec前後で動作
  • GGUFという統一フォーマット: 一度GGUFに変換すれば、Ollama、LM Studio、KoboldCpp、text-generation-webuiでも同じファイルがそのまま動く
  • OpenAI API互換サーバ標準搭載: 既存のOpenAI SDKコードをエンドポイントURLだけ差し替えてローカルに切り替え可能
  • マルチモーダル対応: LLaVAやQwen2-VLなど、画像入力可能なモデルを公式対応
  • 2025年以降は商用GPU(MI355X、Hexagon NPU)対応も活発

デメリット

  • CLI中心で初学者にはハードルが高い: 内蔵Web UIはあるが、最初はコマンドラインの理解が必要
  • SafeTensorsを直接読み込めない: HuggingFaceのモデルはGGUFに変換が必要(変換スクリプトは同梱)
  • 本格的な高並列(数十並列以上)はvLLM等が有利: バッチ処理やKVキャッシュ最適化の点で本番向けにはvLLMが選ばれることも多い
  • 更新が早すぎる: 1日10本以上のリリースが珍しくないため、追従するのが大変
  • ドキュメントが分散している: README、docs/、Wiki、各ツールのREADMEが分かれており、検索の手間がある

動作要件

llama.cppはCPUだけでも動作するため、敷居は非常に低いツールです。ただし実用速度を出すにはGPU(またはApple Silicon)が現実的に必要です。

最小・推奨スペック

項目最小(動くだけ)推奨(7B〜13B運用)本格(70B運用)
OSWindows 10 / macOS 12 / Ubuntu 20.04Windows 11 / macOS 14 / Ubuntu 22.04Ubuntu 24.04 LTS
CPUx86_64またはARM64の任意のCPUAVX2対応 / 8コア以上AVX-512対応 / 16コア以上
RAM8GB32GB128GB以上
GPU不要(CPUのみ可)VRAM 8GB以上(RTX 4060 / RX 7600以上)VRAM 24GB以上 ×複数
ストレージSSD 50GBNVMe SSD 500GB以上NVMe SSD 2TB以上
想定モデルサイズ1B〜3B(Q4_K_M)7B〜13B(Q4_K_M / Q5_K_M)70B(Q4_K_M)、Mixtral 8x22B

GPUベンダー別の対応バックエンド

GPU推奨バックエンドビルドフラグ備考
NVIDIA(GeForce / RTX / Tesla)CUDA-DGGML_CUDA=ON最も高速。CUDA 12.2以上推奨
NVIDIA(複数GPU)CUDA + テンソル並列-DGGML_CUDA=ON2026年4月以降公式対応
Apple(M1/M2/M3/M4シリーズ)Metal(デフォルト有効)追加フラグ不要
AMD Radeon(RDNA2以降)ROCm / Vulkan-DGGML_HIP=ON または -DGGML_VULKAN=1RX 7000シリーズはROCm 6.x推奨
AMD Instinct MI300以降ROCm-DGGML_HIP=ON2026年4月にCDNA4対応追加
Intel ArcSYCL / Vulkan-DGGML_SYCL=ONoneAPI 2025以降が必要
その他(GPUベンダー横断)Vulkan-DGGML_VULKAN=1幅広いGPUで動くが速度は中程度
Qualcomm SnapdragonHexagon-DGGML_HEXAGON=ON2026年4月以降のLinux対応
GPU無しCPU(BLAS/BLIS)(デフォルト)OpenBLASやIntel MKL併用で高速化

インストール手順

llama.cppには大きく分けて「プリビルドバイナリ版」「ソースからのビルド」の2通りがあります。最新機能を試したいならソースビルド、すぐ動かしたいならプリビルドバイナリを推奨します。

プリビルドバイナリで導入(全OS共通・初心者推奨)

2026年現在、llama.cppは全リリースに対してWindows / Linux / macOS用のプリビルドバイナリをGitHub Actionsで自動公開しています。最も手軽な導入方法です。

  1. 公式リリースページを開く
  2. 最新タグ(b9085など)のAssetsから自分の環境に合うアーカイブをダウンロード
    • Windows + NVIDIA: llama-bXXXX-bin-win-cuda-x64.zip
    • Windows + CPU only: llama-bXXXX-bin-win-cpu-x64.zip
    • Windows + Vulkan: llama-bXXXX-bin-win-vulkan-x64.zip
    • macOS Apple Silicon: llama-bXXXX-bin-macos-arm64.zip
    • Linux x86_64: llama-bXXXX-bin-ubuntu-x64.zip
  3. 任意のフォルダに展開
  4. 展開先でllama-clillama-serverllama-quantizeなどが使える

Windows(CUDA)でソースビルド

NVIDIA GPUで最高速を狙う場合のビルド手順です。Visual Studio 2022 Communityの「C++によるデスクトップ開発」ワークロードと、CUDA Toolkit 12.x以上が事前に必要です。

# 1. リポジトリをクローン
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

# 2. ビルド用ディレクトリを作成し、CUDA有効でCMake構成
cmake -B build -DGGML_CUDA=ON

# 3. Releaseビルド(並列ビルドで高速化)
cmake --build build --config Release -j 8

# 4. 実行ファイルを確認
dir build\bin\Release\

ビルドが成功すると、build\bin\Release\配下にllama-cli.exellama-server.exellama-quantize.exeなどが生成されます。

Windows(CPU only)でソースビルド

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build
cmake --build build --config Release -j 8

macOS(Metal)でソースビルド

Apple SiliconではMetalがデフォルトで有効になり、追加フラグは不要です。Xcodeコマンドラインツールが事前に必要です(xcode-select --install)。

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build
cmake --build build --config Release -j $(sysctl -n hw.ncpu)

Apple SiliconでGPUを意図的に無効化したい場合は、実行時に-ngl 0を指定することでCPU実行に切り替わります。

Linux(CUDA)でソースビルド

sudo apt install build-essential cmake git

# CUDA Toolkitのインストール(Ubuntu 22.04の場合)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install cuda-toolkit-12-6

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j $(nproc)

Linux(ROCm / AMD GPU)でソースビルド

AMD Radeon RX 6000/7000シリーズや、Instinct MI200/MI300/MI350シリーズで使う場合の手順です。GPU_TARGETSは使うGPU世代に合わせて指定します(RX 6800 XT/6900 XTならgfx1030、RX 7900 XT/XTXならgfx1100、MI300Xならgfx942)。

HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" \
  cmake -S . -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1100
cmake --build build --config Release -j $(nproc)

Linux(Vulkan / クロスベンダー)でソースビルド

NVIDIA / AMD / Intel問わず動作するVulkanバックエンドです。CUDAやROCmのインストールが面倒な場合や、Steam Deckのような環境で動かす場合に向いています。

sudo apt install libvulkan-dev glslc

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build -DGGML_VULKAN=1
cmake --build build --config Release -j $(nproc)

Docker(Linux + NVIDIA)で利用

本番運用ならDocker版が最も再現性が高くおすすめです。公式コンテナはGHCRで配布されています。

docker run --rm --gpus all \
  -v $(pwd)/models:/models \
  -p 8080:8080 \
  ghcr.io/ggml-org/llama.cpp:server-cuda \
  -m /models/llama-3.1-8b-q4_k_m.gguf \
  --host 0.0.0.0 --port 8080 -ngl 99

初期設定とモデルの入手

llama.cppはGGUF形式のモデルファイルを直接読み込みます。GGUFはGGML派生のコンテナフォーマットで、テンソルデータとメタデータ(モデル名、コンテキスト長、トークナイザーなど)を1ファイルにまとめた形式です。

方法1: HuggingFaceから直接ダウンロード(2026年最新の推奨方法)

llama.cppは-hfオプションでHuggingFaceから直接GGUFモデルを引っ張ってこられるようになっています。以下のコマンド一発で動きます。

# 軽量モデルでお試し(Gemma 3 1B)
./llama-cli -hf ggml-org/gemma-3-1b-it-GGUF

# 7B級の実用モデル
./llama-cli -hf bartowski/Meta-Llama-3.1-8B-Instruct-GGUF

# サーバとして起動
./llama-server -hf ggml-org/gemma-3-1b-it-GGUF

初回実行時にモデルが自動ダウンロードされ、デフォルトキャッシュ(~/.cache/llama.cpp)に保存されます。以降はキャッシュから読み込みます。

方法2: 既存のGGUFファイルをローカルに用意

HuggingFaceのモデルページ(例: bartowski氏の量子化リポジトリ)から.ggufファイルを直接ダウンロードして使うこともできます。

mkdir -p models
cd models
wget https://huggingface.co/bartowski/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf

# 起動
cd ..
./llama-cli -m models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf -p "こんにちは" -n 100

方法3: 自分でGGUFに変換(中級者向け)

HuggingFaceで配布されているSafeTensors形式のオリジナルモデルを、自分でGGUFに変換するパターンです。

# 変換に必要なPython依存をインストール
pip install -r requirements.txt

# HuggingFaceからモデルをクローン(SafeTensors形式)
git lfs install
git clone https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct models/llama-3.1-8b

# F16のGGUFに変換
python convert_hf_to_gguf.py models/llama-3.1-8b --outfile models/llama-3.1-8b-f16.gguf --outtype f16

# Q4_K_Mに量子化
./build/bin/llama-quantize models/llama-3.1-8b-f16.gguf models/llama-3.1-8b-q4_k_m.gguf Q4_K_M

基本的な使い方

llama-cliによる対話実行

もっともシンプルな使い方はllama-cliです。プロンプトを与えてテキストを生成します。

# シンプルな1ショット生成
./llama-cli -m models/gemma-3-1b-it-q4_k_m.gguf -p "日本の首都を教えてください" -n 200 -ngl 99

# インタラクティブ対話モード
./llama-cli -m models/llama-3.1-8b-instruct-q4_k_m.gguf -cnv -ngl 99

# システムプロンプト指定
./llama-cli -m models/llama-3.1-8b-instruct-q4_k_m.gguf \
  -cnv -ngl 99 \
  -sys "あなたは日本語で簡潔に答えるアシスタントです"

主要なllama-cliオプション

オプション用途
-m PATHGGUFモデルファイルのパス
-p "TEXT"プロンプト(1ショット)
-cnv対話モード(チャット形式)
-sys "TEXT"システムプロンプト
-n N生成する最大トークン数
-c Nコンテキスト長(0で自動)
-ngl NGPUへオフロードする層数(99で全層)
-t NCPUスレッド数
--temp Xサンプリング温度(0.0〜2.0)
--top-p Xnucleus sampling閾値
--repeat-penalty X繰り返し抑制ペナルティ
-faFlashAttentionを有効化(高速化)
--jinjaJinjaテンプレートでチャットフォーマット指定

llama-serverによるOpenAI互換APIサーバ起動

llama.cppにはOpenAI互換APIサーバが標準同梱されています。これがllama.cppの真の威力で、既存のOpenAI SDKコードをエンドポイントURLだけ差し替えてローカル実行に切り替え可能です。

# 最小起動(127.0.0.1:8080でリッスン)
./llama-server -m models/llama-3.1-8b-instruct-q4_k_m.gguf -ngl 99

# 公開IPで起動・APIキー認証付き
./llama-server -m models/llama-3.1-8b-instruct-q4_k_m.gguf \
  --host 0.0.0.0 --port 8080 \
  -ngl 99 -c 8192 \
  --api-key "your-secret-key" \
  -np 4

起動後、ブラウザでhttp://localhost:8080にアクセスすると内蔵Web UIが表示されます。CLIで叩く場合は以下のように標準OpenAI APIフォーマットで通信できます。

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-key" \
  -d '{
    "model": "local-model",
    "messages": [
      {"role": "system", "content": "あなたは日本語アシスタントです"},
      {"role": "user", "content": "llama.cppとは?"}
    ],
    "temperature": 0.7,
    "max_tokens": 300
  }'

OpenAI Python SDKからの利用

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="your-secret-key"
)

response = client.chat.completions.create(
    model="local-model",
    messages=[
        {"role": "user", "content": "C言語のメリットを3つ教えて"}
    ],
    temperature=0.7,
    max_tokens=500
)

print(response.choices[0].message.content)

実践的な使い方

ユースケース1: 自前のRAG(検索拡張生成)バックエンドを構築する

llama-serverは埋め込み(embeddings)エンドポイントもOpenAI互換で提供しています。これを使うと、外部ベクターDB(Qdrant、Chromaなど)と組み合わせてフルローカルなRAGを構築できます。

# 埋め込み専用モデルでサーバを起動
./llama-server \
  -hf nomic-ai/nomic-embed-text-v1.5-GGUF \
  --embedding \
  --port 8081 \
  -ngl 99
from openai import OpenAI

embed_client = OpenAI(base_url="http://localhost:8081/v1", api_key="dummy")

vector = embed_client.embeddings.create(
    model="local-embed",
    input="検索したい文章"
).data[0].embedding

print(len(vector))  # 768など、モデルにより異なる

ユースケース2: Visual Studio Codeのコード補完バックエンドにする

Continueなどの拡張機能はOpenAI互換APIをそのままバックエンドにできます。~/.continue/config.jsonを以下のように設定するだけです。

{
  "models": [
    {
      "title": "Local llama.cpp",
      "provider": "openai",
      "model": "local-model",
      "apiBase": "http://localhost:8080/v1",
      "apiKey": "your-secret-key"
    }
  ]
}

ユースケース3: GBNF文法によるJSON強制出力

llama.cppはGBNF(GGML Backus-Naur Form)という独自文法で出力フォーマットを確定的に制約できます。

cat > person.gbnf <<'EOF'
root ::= "{" ws "\"name\":" ws string "," ws "\"age\":" ws number "}"
string ::= "\"" [a-zA-Zあ-んア-ン一-龥]+ "\""
number ::= [0-9]+
ws ::= [ \t\n]*
EOF

./llama-cli -m models/llama-3.1-8b-instruct-q4_k_m.gguf \
  -p "田中さん35歳の情報をJSONで:" \
  --grammar-file person.gbnf \
  -n 100 -ngl 99

これにより、出力が必ず指定スキーマの有効JSONになることが保証されます。リトライやバリデーションが不要になり、エージェント開発やツール呼び出しに極めて有用です。

応用・カスタマイズ

マルチGPUテンソル並列(2026年新機能)

2026年4月のbuild b8738以降、ベンダー非依存のテンソル並列が公式対応しました。例えばRTX 4090を2枚使う場合、--tensor-splitでVRAM配分を制御します。

./llama-server -m models/llama-3.3-70b-q4_k_m.gguf \
  -ngl 99 \
  --tensor-split 1,1 \
  --main-gpu 0 \
  --port 8080

スペキュレーティブデコーディングで2〜3倍高速化

大きい本命モデル(例: 70B)と小さいドラフトモデル(例: 1B)を組み合わせ、ドラフトが先回りに予測した結果を本命が一括検証することで、スループットを大幅に上げる手法です。

./llama-server \
  -m models/llama-3.3-70b-q4_k_m.gguf \
  -md models/llama-3.2-1b-q4_k_m.gguf \
  --draft-max 16 --draft-min 4 \
  -ngl 99

コンテキスト長の拡張(RoPEスケーリング)

長文を扱いたい場合、RoPEスケーリングで実効コンテキストを延ばせます。ただし精度低下とのトレードオフです。

./llama-server -m models/llama-3.1-8b-instruct-q4_k_m.gguf \
  -c 32768 \
  --rope-scaling linear --rope-freq-scale 0.5 \
  -ngl 99

マルチモーダル(画像入力)モデル

LLaVAやQwen2-VLのようなマルチモーダルモデルも--mmprojで投影モデルを併指定するだけで動きます。

./llama-server \
  -hf ggml-org/Qwen2-VL-7B-Instruct-GGUF \
  --mmproj-hf ggml-org/Qwen2-VL-7B-Instruct-GGUF \
  -ngl 99

パフォーマンス最適化

量子化形式の使い分け(Q4_K_M / Q5_K_M / Q8_0など)

2026年5月時点で、最も実用的な量子化形式の使い分けは以下の通りです。

量子化サイズ目安(7Bモデル)品質劣化(perplexity増加)推奨用途
Q2_K2.6GB大(+0.5以上)VRAM 4GBの極小環境のみ
IQ3_XS / IQ3_M3.0〜3.3GB中(+0.25前後)importance matrix採用で品質維持
Q4_K_M4.5GB前後小(+0.18)万人向けの標準。8GB VRAMで快適に動く
Q5_K_M5.3GB前後非常に小(+0.06)品質を重視する場合の標準
Q6_K6.1GB前後ほぼ無しF16の代替として精度ほぼ不変
Q8_08.0GB前後ほぼ無し事実上のリファレンス品質
F1614GB前後無し(原本)追加学習用途・ベンチ用

結論としては、「迷ったらQ4_K_M、品質重視ならQ5_K_M、ハイエンドGPUがあればQ6_KかQ8_0」が2026年時点のベストプラクティスです。Q1_0は2026年4月に追加された極限量子化で、エッジデバイス用途に限定されます。

FlashAttentionでさらに高速化

2024年以降、llama.cppにはFlashAttention実装が組み込まれています。FlashAttentionは推論を10〜30%高速化しつつVRAM使用量も削減します。2026年5月のb9085では、d_kq=192/d_v=128構成のMMA/Tilesカーネルが追加され、MiMo-V2.5などの非標準Attentionを持つモデルでも有効化可能になりました。

./llama-server -m models/llama-3.1-8b-instruct-q4_k_m.gguf \
  -ngl 99 -fa

KVキャッシュの量子化

長文コンテキストではKVキャッシュがVRAMを圧迫します。これを量子化することで利用可能なコンテキスト長を倍増できます。

./llama-server -m models/llama-3.1-8b-instruct-q4_k_m.gguf \
  -ngl 99 -fa \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  -c 32768

並列スロットによるバッチ処理

複数ユーザーから同時にAPIアクセスがある場合、-npで並列スロットを増やすとスループットが大幅に上がります。

./llama-server -m models/llama-3.1-8b-instruct-q4_k_m.gguf \
  -ngl 99 -np 8 -c 16384

よくあるエラーとトラブルシューティング

エラー1: error loading model: unable to allocate backend buffer

原因: GPUにオフロードしようとした層がVRAMに収まらない。
対処: -nglの値を下げる(例: 99 → 30)、または量子化レベルを下げる(Q5_K_M → Q4_K_M)。VRAM 8GBで7Bならcontext sizeを-c 4096程度に絞ると安定します。

エラー2: llama_model_load: error loading model: tensor 'XXX' has wrong shape

原因: モデルファイルとllama.cppのバージョンが古い、またはGGUFのバージョン不一致。
対処: llama.cppを最新版に更新するか、convert_hf_to_gguf.pyでモデルを再変換する。古いconvert.pyで作ったGGUFは2026年現在動作しないことが多いです。

エラー3: CUDA error: out of memory

原因: 同一GPU上で他プロセスがVRAMを占有している。
対処: 他のCUDAアプリ(Stable DiffusionやChromeのGPU加速)を終了する。nvidia-smiで占有プロセスを確認できます。あるいは--main-gpuで別GPUを指定。

エラー4: 日本語が文字化けする / おかしな繰り返しが出る

原因: チャットテンプレートの不一致、またはトークナイザーの不整合。
対処: --jinjaを有効化してJinjaテンプレートでフォーマットする。または--repeat-penalty 1.1程度を指定。Llama 3系モデルでは公式チャットテンプレートを使うと文字化けが解消することが多いです。

エラー5: libcuda.so.1: cannot open shared object file (Linux)

原因: NVIDIAドライバがインストールされていない、またはLD_LIBRARY_PATHの設定不備。
対処: nvidia-smiでドライバを確認。sudo ldconfigを実行、またはexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHを追加。Docker利用時は--gpus allnvidia-container-toolkitのインストールが必要です。

エラー6: 推論速度が異常に遅い(CPUで動いている可能性)

原因: -nglが0、もしくはCUDAなしでビルドされている。
対処: 起動時のログにllm_load_tensors: offloaded N/N layers to GPUと表示されているか確認。表示されない場合はビルド時のフラグ(-DGGML_CUDA=ONなど)が抜けています。./llama-cli --versionでビルド情報を再確認します。

エラー7: error: invalid option '-hf'

原因: 古いllama.cppバージョンを使っている。
対処: HuggingFace直接ダウンロード機能は2024年後半に追加された機能のため、最新のリリース(b9000以降)に更新してください。

おすすめの組み合わせ・連携

Ollamaとの併用

OllamaはモデルのバージョンマネージャやModelfileによるカスタマイズが優秀ですが、内部エンジンはllama.cppです。カジュアル利用はOllama、最新機能の検証はllama.cppという棲み分けが現実的です。Ollamaが未対応の最新モデルは、llama.cppのGGUFを~/.ollama/models/blobs/に手動でリンクすることで認識させる裏技もあります。

LM Studioとの併用

LM Studio 0.4.12はモデル探索GUIが優秀で、HuggingFaceのモデル一覧から直接ダウンロードできる利便性があります。LM Studioで動作確認してから、本番運用としてllama.cppでサーバ化、というワークフローが安定します。

Open WebUIとの連携

llama-serverのOpenAI互換APIをそのままOpen WebUIのバックエンドに指定できます。ChatGPT風の高機能UIをローカルで完結したい場合の鉄板構成です。

Continue / Aider / LangChainとの連携

すべてOpenAI互換APIに対応しているため、OPENAI_API_BASE=http://localhost:8080/v1を環境変数で設定するだけでローカルLLMに切り替わります。Aiderでローカルコーディングエージェントを動かす場合も同様です。

Difyとの連携

RAGアプリケーションプラットフォームのDifyは、OpenAI互換LLMプロバイダ設定からllama-serverをそのまま登録できます。フルローカルRAGの構築が30分で完成する組み合わせです。

推奨PCスペック(2026年5月時点)

llama.cppで動かしたいモデルサイズに応じて、3段階の推奨構成を整理しました。GPUは消費電力と価格のバランスが取れた現行モデルを基準にしています。

入門構成: 1B〜8Bモデルを快適に動かす

パーツ推奨備考
CPURyzen 5 7600 / Core i5-13400以上AVX2必須
GPURTX 4060 / RTX 4060 Ti(8GB / 16GB)VRAM 8GBで7B Q4_K_Mが快適
RAM32GB DDR5(2枚組)OS + モデル + 余裕
SSD1TB NVMe SSDモデル数本を持ち回せる
電源650W 80PLUS Gold余裕を持って
想定用途個人用チャットボット、軽量RAG、学習用速度: 7B Q4_K_Mで80〜100 t/s前後

標準構成: 13B〜32Bモデルや軽量MoEを動かす

パーツ推奨備考
CPURyzen 7 7700X / Core i7-14700マルチスレッド有効
GPURTX 4070 Ti SUPER(16GB)13B Q5_K_Mが快適、32Bも条件付きで可
RAM64GB DDR5大きいモデルでCPUオフロード時に有利
SSD2TB NVMe SSD複数モデルの併存に必須
電源850W 80PLUS Gold余裕構成
想定用途本格チャット、コード補完、エージェント13B Q5_K_Mで45〜60 t/s前後

ハイエンド構成: 70B以上のフラッグシップモデル

パーツ推奨備考
CPUThreadripper 7960X以上大量メモリ帯域
GPURTX 5090(32GB) ×2 または RTX 6000 Adaテンソル並列で70Bフルオフロード
RAM128GB DDR5 ECCMixtral 8x22Bの一部CPU実行用
SSD4TB NVMe SSD(Gen5)大量GGUF格納
電源1600W 80PLUS Platinum2GPU構成想定
想定用途本格的な業務利用、研究、エージェント運用70B Q4_K_Mで30〜40 t/s前後

なお、Apple Siliconの場合はM2/M3/M4 Max(64GB〜128GBユニファイドメモリ)がコストパフォーマンスに優れます。70B Q4_K_Mが20〜30 t/sで動き、消費電力も低い点で本格構成にも耐えうる選択肢です。

まとめ

llama.cppは2023年の登場以来、ローカルLLMという領域そのものを牽引してきたツールです。2026年5月時点の最新版b9085では、Hexagon NPU、AMD CDNA4、テンソル並列、1ビット量子化など、数か月前には想像もできなかった機能が次々と本流に入ってきています。

本記事の要点を改めて整理します。

  • llama.cppはMITライセンスのC/C++製ローカルLLM推論エンジン。Ollama、LM Studio、KoboldCpp、text-generation-webuiの多くも内部はllama.cpp
  • 導入はプリビルドバイナリが最速、最新機能を使うならソースビルド(cmake -B build -DGGML_CUDA=ON)
  • HuggingFaceから-hfオプションでGGUFモデルを直接実行可能
  • llama-serverはOpenAI互換APIをそのまま提供。既存SDKコードをURLだけ差し替えてローカル化
  • 量子化はQ4_K_Mが万人向けの標準、品質重視ならQ5_K_M
  • 2026年の新機能はテンソル並列、Hexagon NPU、Gemma 4 day-one対応、AMD CDNA4対応
  • 本格運用にはVRAM 16GB以上、エッジ用途ならMacBook M2 Maxが現実解

こんな人にllama.cppはおすすめ

  • OllamaやLM Studioでは満足できず、最新モデルや最先端機能を即座に試したい
  • OpenAI互換APIをローカルに立てて自社サービスに組み込みたい
  • Raspberry PiやSnapdragon、Apple Siliconなど多様なハードで動かしたい
  • GBNF文法による構造化出力で、エージェント開発の信頼性を上げたい
  • RAG / Continue / Aider / Difyのバックエンドをフルローカルで自前運用したい

逆に向かないケース

  • とにかくGUI操作で完結させたい(LM Studioを推奨)
  • 1コマンドでモデルを切り替えたい(Ollamaを推奨)
  • 本番で数十並列の高スループットが必要(vLLMを検討)

llama.cppは公式ロードマップ上、今後も新ハードウェアへの対応(Apple M5、Intel Battlemage、Qualcomm次世代Hexagonなど)と推論最適化(Speculativeデコーディングの強化、KVキャッシュ最適化、より積極的な量子化形式)が中心となる見込みです。2026年に新しくローカルLLM環境を組むなら、まずllama.cppを直接触れるようになっておくことが、今後どのフロントエンドが流行っても潰しが効く最も賢い投資と言えます。

本記事をブックマークして、新リリースが出るたびに該当セクションを参照してください。公式リリースページ公式リポジトリを併せてウォッチしておくことをおすすめします。

📦 この記事で紹介した商品

※ 上記リンクはAmazonアソシエイトリンクです。購入いただくと当サイトに紹介料が入ります。

タイトルとURLをコピーしました