2026/07/08

llama.cpp を自分でビルドする方法

記事イメージ
※画像はイメージです。本文と直接の関係はありません

llama.cpp を自分でビルドする方法

結論

llama.cpp は CPU のみでも、GPU バックエンド(Vulkan、CUDA、ROCm、SYCL)でも動作します。GPU を利用すれば必ず高速化するわけではありませんが、公式バイナリに比べてビルド時に CPU の AVX/AVX2、場合によっては AVX‑512 などの最適化や GPU バックエンドを有効化することで、性能を引き出すことができます。実測例として、CUDA 12 系で 7B モデルを Q4KM 量子化した場合、公式バイナリより約 1.8 倍 の速度向上が報告されています。
速度向上は GPU の世代、VRAM 容量、量子化レベル、-ngl 設定などに大きく左右されます。自分のハードウェアに合わせて最適化すれば、ローカルで LLM を快適に利用できる可能性が高まりますが、期待できる速度は環境次第で変動します。


1 llama.cpp の概要

  • 軽量推論エンジン:C++ で実装され、CPU のみでも動作します。
  • GPU バックエンド:CUDA、Metal、ROCm、Vulkan、SYCL など複数の GPU API に対応しています(Metal 版は docs/metal.md を参照)。
  • 量子化フォーマット:モデルは GGUF 形式で提供され、4 ビットや 5 ビットに圧縮すれば数 GB のメモリで実行可能です。
  • オープンソース:MIT ライセンスで公開され、GitHub のスター数は 75,000 を超えています。

2 ビルドの選択肢とその影響

CPU 版:GPU が無い環境でも動作。最小構成でビルド可能。 ・Vulkan 版:クロスプラットフォームで比較的ドライバ依存が少ない。 ・CUDA 版:NVIDIA GPU 向けで高速な行列演算が可能。cuDNN は必須ではなく、CUDA Toolkit だけで動作します。 ・ROCm 版:AMD GPU 向け、主に Linux で利用。 ・SYCL 版:Intel oneAPI 系列に対応した比較的新しいバックエンド。 ・Metal 版:Apple Silicon(M1・M2 系列)での最適化が可能。macOS で GPU を活用したい場合に選択します。

バックエンドを選択すると、ビルド時に有効化する CMake オプションが変わります。GPU が搭載されていない場合は CPU 版 のみで十分です。GPU がある環境でも、CUDA や ROCm はオプション扱いであり、必ずしもインストールする必要はありません。


3 環境別ビルド手順

3‑1 Ubuntu(Linux)でのビルド(初心者向け)

対象:Ubuntu 24.04 LTS(他バージョンでもパッケージ名が若干異なる場合があります)

  1. 必要なパッケージをインストールします。
sudo apt update
sudo apt install -y git git-lfs cmake g++ libcurl4-openssl-dev
  1. 作業ディレクトリを作成し、リポジトリを取得します。
mkdir -p ~/git
cd ~/git
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
  1. ビルドディレクトリを作成し、CMake を実行します。
    • CPU 版
cmake -B build
  • Vulkan 版
cmake -B build -DGGML_VULKAN=ON
  • CUDA 版(CUDA がインストール済みの場合)
cmake -B build -DGGML_CUDA=ON -DGGML_CUDA_F16=ON
  • **Metal 版(Apple Silicon 用)**は macOS で実行してください。
cmake -B build -DGGML_METAL=ON
  1. リリース構成でビルドします。
cmake --build build --config Release -j $(nproc)
  1. 実行ファイルを確認します。build/bin ディレクトリに llama-clillama-server が生成されます。

ポイント
- -DLLAMA_CURL=OFF を付ければ curl が未インストールでもビルドできます。
- CUDA を有効にする場合は、環境変数 CUDA_PATH が正しく設定されているか echo $CUDA_PATH で確認してください。
- 実行時に Flash Attention を利用したい場合は、-fa オプションを付与するとパフォーマンスが向上します(ビルドオプションは不要です)。


3‑2 Windows でのビルド(ややハードルは高め)

対象:Windows 10/11、Visual Studio Build Tools がインストール済み

  1. Visual Studio Build Tools をインストールし、「C++ によるデスクトップ開発」ワークロードを有効にします。
  2. CMake をインストールし、インストーラで「システム PATH に追加」にチェックを入れます。
  3. 必要なら CUDA をインストールします。NVIDIA の公式サイトからダウンロードし、インストール後に CUDA_PATH が自動設定されます。GPU が無い環境ではこの手順は省略してください。
  4. Git をインストールし、PowerShell でリポジトリを取得します。
mkdir C:\git
cd C:\git
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
  1. CMake を実行します(例:CUDA 有効、Visual Studio 2022 用ジェネレータ)。パスにスペースが含まれる場合は必ず二重引用符で囲んでください。
cmake -B build -G "Visual Studio 17 2022" `
  -DGGML_CUDA=ON -DGGML_CUDA_F16=ON `
  -DCUDAToolkit_ROOT="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6"

v12.6 はインストールした CUDA のバージョン例です。実際のバージョンに合わせて書き換えてください。

  1. ビルドします。
cmake --build build --config Release
  1. 実行ファイルを確認します。build\bin\Releasellama-cli.exe などが生成されます。

デバッグのやり方
build\llama.cpp.sln を Visual Studio で開き、llama-cli プロジェクトのプロパティ → デバッグ → コマンド引数に例 -m models\llama-2-7b.Q4_K_M.gguf -p "こんにちは" を設定して実行します。main.cppllama_decode 行にブレークポイントを置き、[デバッグ] → [新しいインスタンスの開始] でコードの流れを追えます。


3‑3 macOS(Apple Silicon)でのビルド(Metal バックエンド)

対象:macOS 14 以降、Apple Silicon(M1、M2 系列)

  1. 必要なツールを Homebrew 経由でインストールします。
brew update
brew install git cmake
  1. 作業ディレクトリを作成し、リポジトリを取得します。
mkdir -p ~/git
cd ~/git
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
  1. ビルドディレクトリを作成し、Metal バックエンドを有効にして CMake を実行します。
cmake -B build -DGGML_METAL=ON
  1. リリース構成でビルドします。
cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
  1. build/binllama-cli が生成されます。GPU(Metal)を利用した実行は -ngl オプションでオフロード層数を指定してください。

4 カスタム最適化と実測結果

GPU オフロード層数 (-ngl):-ngl 20 など、VRAM に余裕がある範囲で設定 ・CPU スレッド数 (-t):-t 8 など、CPU コア数の半分程度から試す ・量子化レベルQ4_K_M(デフォルト)または Q5_K_M(品質向上) ・CUDA バージョン:CUDA 12 系でビルドした例では、公式バイナリより約 1.8 倍速くなる ・CPU の拡張命令:AVX‑512 が有効な CPU では自動的に利用され、CPU 版でも大幅な高速化が期待できる

上記はあくまで一例です。実際にはハードウェア条件に合わせて数値を調整してください。


5 ハマりやすいポイントと回避策

  • CUDA と cuDNN のバージョン不一致
    llama.cpp の標準ビルドでは cuDNN は必須ではなく、CUDA Toolkit だけで動作します。cuDNN が見つからない場合は無視して構いません。

  • Vulkan が見つからない
    sudo apt install vulkan-tools libvulkan-dev で開発パッケージを導入すれば解決します。

  • 環境変数の設定ミス
    echo $CUDA_PATH(Linux)や echo %CUDA_PATH%(Windows)で確認し、必要に応じて export CUDA_PATH=/usr/local/cuda などで設定します。

  • VRAM が足りない
    -ngl の値を下げ、コンテキスト長 -c も適宜小さく設定すると安定します。

  • ビルドディレクトリの残骸
    再ビルド前に rm -rf build(Linux)や Remove-Item -Recurse -Force .\build(PowerShell)でディレクトリを削除してから実行してください。

  • モデル変換に Python が必要
    GGUF 形式への変換スクリプトは Python 環境で動作します。リポジトリに含まれる requirements.txt をインストールすることで、pip install -r requirements.txt が実行可能です。これにより、Hugging Face などから取得した HF 形式のモデルを簡単に変換できます。


6 モデルの入手と実行例

llama.cpp がビルドできたら、GGUF 形式のモデルを用意します。代表的な入手先として Hugging Face のリポジトリがあります。モデルをダウンロードしたら models/ ディレクトリに配置し、以下のように実行できます。

./build/bin/llama-cli -m models/llama-2-7b.Q4_K_M.gguf -p "こんにちは、調子はどうですか?"

GPU を利用する場合は -ngl オプションでオフロード層数を指定し、さらに Flash Attention を有効にしたいときは -fa を付与します。

./build/bin/llama-cli -m models/llama-2-7b.Q4_K_M.gguf -ngl 20 -fa -p "GPU で高速化できるか教えて"

7 まとめ

  • CPU だけでも、GPU バックエンドでも動作する ことが llama.cpp の大きな利点です。GPU があっても速度向上は保証されず、ハードウェア構成や量子化レベル、-ngl 設定などが結果に大きく影響します。
  • Ubuntu はパッケージが揃っているため手順がシンプル です。一方、Windows では Visual Studio と CUDA の環境設定が必要ですが、標準コンパイラを使えば同様にビルドは可能です。
  • macOS(Apple Silicon)向けに Metal バックエンドを有効にすれば、Apple の GPU でも高速化が期待できます
  • カスタムビルドは必ずしも大幅な高速化を保証しません が、GPU を有効にした場合に 1.5〜2.0 倍程度の速度向上が報告されています(実測は環境依存)。
  • ビルド後は llama-cli で対話的に、llama-server で API 化でき、ノートパソコンでも日本語 LLM を手軽に試すことができます。

本手順は執筆時点の情報に基づいています。公式リポジトリは随時更新されますので、最新のビルドオプションや依存パッケージは GitHub の README を併せて確認してください。
ご自身の環境や目的に合わせて適宜調整し、最適な llama.cpp を構築してローカル AI の可能性を広げてみてください。