AI

LLM推論エンジン比較:Ollama vs vLLM vs llama.cpp でLLMをセルフホストする

オープンソースラボ編集部2026年6月13日

LLM推論エンジン比較:Ollama vs vLLM vs llama.cpp でLLMをセルフホストする

GPT-4・Claude・Geminiなどのクラウドプロプライエタリ LLMではなく、Llama 3・Mistral・Qwen・Gemma等のオープンウェイトLLMを自社GPU・CPUサーバーで動かすためのOSS推論エンジンが急速に普及しています。Ollama(最も使いやすい・開発者向け)・vLLM(最高スループット・本番API)・llama.cpp(CPU対応・軽量・組み込み)の3つが2026年のデファクトスタンダードです。

セルフホストLLM推論エンジンを使う理由

  • コスト削減: GPT-4 API($30/1Mトークン)→Llama 3 70B をA100 1台($3/時)で自社運用=100分の1以下のコスト
  • プライバシー: ユーザーの入力・出力データが外部LLMプロバイダーに送信されない
  • レイテンシ: インターネット往復なし→ローカルLLMは応答が高速(VPN不要)
  • カスタマイズ: LoRA・QLoRAファインチューニングで自社ドメインに特化したモデルを運用

主要ツールの概要

Ollama

2023年公開、Go製のOSSです。GitHubスター115k+。最も使いやすいローカルLLM実行ツールで、ollama run llama3.2の1コマンドでLlama・Mistral・Qwen・Gemma・CodeLlamaなど100+モデルをダウンロードして実行できます。OpenAI互換のREST API(/api/generate/v1/chat/completions)も提供します。

# Ollama インストールと実行
curl -fsSL https://ollama.ai/install.sh | sh

# モデルをダウンロードして実行
ollama run llama3.2          # Llama 3.2 3B(軽量・高速)
ollama run llama3.1:70b      # Llama 3.1 70B(高品質)
ollama run qwen2.5-coder:14b # Qwen2.5 Coder 14B(コーディング特化)
ollama run nomic-embed-text  # テキスト埋め込みモデル

# Docker でのOllama(GPU付き)
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

# OpenAI互換APIとして使う
curl http://localhost:11434/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "llama3.2",
    "messages": [{"role": "user", "content": "日本のOSS文化について教えて"}]
  }'
# Python: Ollama API でLLMアプリを構築(OpenAI SDKで互換)
from openai import OpenAI
import ollama

# OpenAI SDK互換(base_urlをOllamaに変更するだけ)
client = OpenAI(
    base_url='http://localhost:11434/v1',
    api_key='ollama',  # 任意の文字列
)

def chat(messages: list[dict], model: str = 'llama3.2') -> str:
    resp = client.chat.completions.create(model=model, messages=messages)
    return resp.choices[0].message.content

def streaming_chat(prompt: str, model: str = 'llama3.2'):
    '''ストリーミング出力'''
    stream = client.chat.completions.create(
        model=model,
        messages=[{'role': 'user', 'content': prompt}],
        stream=True,
    )
    for chunk in stream:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end='', flush=True)
    print()

def embed(text: str, model: str = 'nomic-embed-text') -> list[float]:
    '''テキスト埋め込みベクトルを生成(RAG用)'''
    resp = ollama.embeddings(model=model, prompt=text)
    return resp['embedding']

# Next.jsバックエンドからの呼び出し例(TypeScript)
nextjs_example = '''
// app/api/chat/route.ts - ストリーミングLLMレスポンス
import { OpenAI } from 'openai'

const ollama = new OpenAI({
  baseURL: process.env.OLLAMA_URL + '/v1',
  apiKey: 'ollama',
})

export async function POST(req: Request) {
  const { messages } = await req.json()
  const stream = await ollama.chat.completions.create({
    model: 'llama3.2',
    messages,
    stream: true,
  })

  return new Response(
    new ReadableStream({
      async start(controller) {
        for await (const chunk of stream) {
          const text = chunk.choices[0]?.delta?.content ?? ''
          controller.enqueue(new TextEncoder().encode(text))
        }
        controller.close()
      },
    }),
    { headers: { 'Content-Type': 'text/event-stream' } }
  )
}
'''

vLLM

2023年公開(UCバークレー)、Python製のOSSです。GitHubスター48k+。最高スループットの本番LLM推論エンジンで、PagedAttentionアルゴリズムによりGPUメモリを効率化して既存フレームワークの最大24倍のスループットを実現します。OpenAI互換APIサーバーをすぐに起動できます。

# vLLM インストールと起動(CUDA GPU必須)
pip install vllm

# OpenAI互換APIサーバーとして起動
python -m vllm.entrypoints.openai.api_server   --model meta-llama/Llama-3.1-8B-Instruct   --served-model-name llama3.1-8b   --max-model-len 8192   --tensor-parallel-size 2 \   # 2 GPU で分散推論
  --gpu-memory-utilization 0.9   --host 0.0.0.0   --port 8000

# Docker(GPU付き)
docker run --runtime nvidia --gpus all   -v ~/.cache/huggingface:/root/.cache/huggingface   -p 8000:8000   vllm/vllm-openai:latest   --model meta-llama/Llama-3.1-8B-Instruct
# Python: vLLM でバッチ推論・高スループット処理
from vllm import LLM, SamplingParams

llm = LLM(
    model='meta-llama/Llama-3.1-8B-Instruct',
    tensor_parallel_size=2,
    gpu_memory_utilization=0.9,
    max_model_len=8192,
)
sampling_params = SamplingParams(temperature=0.7, max_tokens=512, top_p=0.95)

prompts = [
    '日本のOSSエコシステムについて教えてください',
    'Pythonのasync/awaitを初心者向けに説明してください',
    'RustとGo言語の主な違いは何ですか?',
]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    print(f'回答: {output.outputs[0].text[:100]}...')

llama.cpp

2023年公開、C++製のOSSです。GitHubスター73k+。CPUのみでLLMを動作させる軽量高速推論エンジンで、4bit/8bit量子化(GGUF形式)によってLlama 70BモデルをCPUのみ・64GB RAMで動作させます。RaspberryPi・組み込みデバイス・M1/M2 MacのGPUでも高速動作します。

# llama.cpp ビルドと実行
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && make -j

# GGUF形式のモデルをHugging Faceからダウンロード
wget https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF/resolve/main/Llama-3.2-3B-Instruct-Q4_K_M.gguf

# テキスト生成
./llama-cli -m Llama-3.2-3B-Instruct-Q4_K_M.gguf -p "日本のOSSを教えて" -n 200

# OpenAI互換サーバーとして起動
./llama-server -m Llama-3.2-3B-Instruct-Q4_K_M.gguf --host 0.0.0.0 --port 8080 -c 4096

機能比較表

比較項目OllamavLLMllama.cpp
CPU対応❌(GPU必須)✅ 最強
スループット✅ 最高
セットアップ✅ 最簡単
OpenAI互換API
GitHub Stars115k+48k+73k+

LLM推論エンジンはLLM Toolsカテゴリ/categories/llm-toolsのLiteLLM Proxyと組み合わせてOllamaをバックエンドの1プロバイダーとして設定し、クラウドLLMへのフォールバック設定で可用性を高める構成が採用されています。DevOpsカテゴリ/categories/devopsのKubernetes上でvLLMをGPU Deploymentとして運用してHPAで負荷に応じてGPU Podをスケールさせる本番AI推論クラスター構成が増えています。

FAQ

Q. OllamaでRAGシステムを構築する最小構成は?

A. **Ollama + nomic-embed-text(埋め込み) + Chroma(ベクターDB) + llama3.2(生成)**の4コンポーネントでRAGを構築できます。手順: ①ollama pull llama3.2 && ollama pull nomic-embed-textpip install chromadb openai③ドキュメントをnomic-embed-textで埋め込み→Chromaに保存④質問をnomic-embed-textで埋め込み→Chromaで類似検索→上位チャンクを取得⑤llama3.2のプロンプトに「コンテキスト+質問」を渡して生成。コスト: すべてローカル実行→API費用ゼロ。最小メモリ要件: llama3.2 3B(Q4量子化)≈ 2GBのRAM→M1 MacBook Air(8GB RAM)でも動作。

Q. vLLMでLlama 3 70Bを2台のA100で動かすための設定は?

A. --tensor-parallel-size 2でテンソル並列分散推論を設定します。設定: python -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-70B-Instruct --tensor-parallel-size 2 --gpu-memory-utilization 0.95。必要リソース: Llama 3 70B(fp16)= 140GB GPU VRAM→A100 80GB×2台で収まる(80×2=160GB)。量子化: --quantization awq(Activation-aware Weight Quantization)で70B→35GB相当に削減→A100 40GB×1台で動作可能。スループット: vLLMのPagedAttentionにより既存フレームワーク比8〜24倍→本番APIとして1000リクエスト/分以上を処理可能。

Q. llama.cppでM2 MacのGPU(Metal)を使って推論を高速化するには?

A. LLAMA_METAL=1 makeでビルドしてMetalバックエンドを有効化します。ビルド: LLAMA_METAL=1 make -j(M1/M2/M3 MacでMetal GPUを自動検出)。速度比較(Llama 3.2 3B Q4_K_M・M2 Pro): CPUのみ: 約15トークン/秒→Metal GPU: 約60トークン/秒(4倍高速)。-nglオプション: ./llama-cli -m model.gguf -ngl 33 -p "Hello"-ngl 33でlayer数33をGPUにオフロード)→Metalで高速化。Mac用最適化: M2 Maxは最大96GB統合メモリ→Llama 3 70B Q4量子化(35GB)をGPUでフル実行可能。Apple Siliconeは統合メモリでCPU/GPU共有なので-ngl 99でほぼすべてのlayerをGPUに渡すと最速。

Q. OllamaとvLLMのどちらを本番APIとして使うべきですか?

A. 開発・小規模チーム・CPU環境ならOllama本番・高スループット・GPU複数台・エンタープライズならvLLMが推奨です。Ollama優位: ①セットアップが最も簡単②Modelfileでカスタムシステムプロンプト・モデル設定を定義③Mac M1/M2で高速動作④モデル管理(pull・list・rm)がDockerライクで直感的。vLLM優位: ①PagedAttentionで最高スループット②テンソル並列・パイプライン並列で複数GPU分散推論③連続バッチ処理(Continuous Batching)でGPU利用率最大化④LoRA(Low-Rank Adaptation)の動的ロード→複数ファインチューニングモデルを1台のGPUで切り替え。本番構成: vLLMをAPI層+Ollamaを開発者向けローカルという組み合わせが多い。

まとめ

ユースケース推奨ツール
開発者ローカル・マルチモデル・最速セットアップOllama
本番API・高スループット・GPU複数台vLLM
CPU推論・軽量組み込み・Mac Metalllama.cpp

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。