llama.cppとは?軽量にローカルLLMを実行する方法を初心者向けに解説

kento_morota 12分で読めます

llama.cppは、ローカルLLMを軽量かつ高速に実行するためのオープンソース推論エンジンです。C/C++で実装されているため、PythonやCUDAなどの複雑な依存関係なしに動作し、CPU環境でも実用的な速度でLLMを実行できる点が大きな特徴です。

本記事では、llama.cppの基本的な概要からインストール方法、モデルの実行、APIサーバーとしての運用方法まで、初心者の方でも理解できるよう丁寧に解説します。

llama.cppとは何か

llama.cppは、Georgi Gerganov氏が2023年に開発を開始したオープンソースプロジェクトです。当初はMetaのLlama モデルをCPUで動作させることを目的として作られましたが、現在ではQwenGemmaMistralなど、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など低スペックデバイスでも動作可能

実はOllamaLM Studioも、内部的にはllama.cppの推論エンジンを利用しています。llama.cppを直接使用することで、より細かい制御やカスタマイズが可能になります。

llama.cppのインストール方法

llama.cppのインストール方法は、ビルド済みバイナリの利用とソースからのビルドの2通りがあります。

方法1:ビルド済みバイナリを使う(推奨)

最も手軽なのは、GitHubのリリースページからビルド済みバイナリをダウンロードする方法です。

  1. llama.cpp リリースページにアクセス
  2. 最新リリースの「Assets」セクションから、自分の環境に合ったファイルをダウンロード
  3. ダウンロードしたアーカイブを展開

主なダウンロード対象は以下の通りです。

ファイル名の目印 対象環境
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、OllamaLM 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 4Qwen3Gemma 3などを実行可能
  • GPU/CPU両対応:NVIDIA CUDA、Apple Metal、CPU推論すべてをサポート
  • APIサーバー内蔵:OpenAI互換APIで既存システムとの連携が容易
  • OllamaやLM Studioの基盤技術:より細かい制御が必要な場合に直接利用する価値がある

初めてローカルLLMを試す方は、まずOllamaLM Studioから始め、より高度な制御やカスタマイズが必要になった段階でllama.cppの直接利用を検討するのが良いでしょう。パフォーマンス最適化を追求する際にも、llama.cppの各種オプションの理解が役立ちます。

#llama.cpp#ローカルLLM#使い方
共有:
無料メルマガ

週1回、最新の技術記事をお届け

AI・クラウド・開発の最新記事を毎週月曜にメールでお届けします。登録は無料、いつでも解除できます。

プライバシーポリシーに基づき管理します

AI活用のヒントをお探しですか?お気軽にご相談ください。

まずは話だけ聞いてもらう