AI

オープンソースLLMサービング比較:vLLM vs TGI vs Ollama でLLMを高速推論・サービングする

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

オープンソースLLMサービング比較:vLLM vs TGI vs Ollama でLLMを高速推論・サービングする

ローカルまたはセルフホストサーバーでLLMを本番品質で高速推論するには、専用のサービングフレームワークが必要です。vLLM・TGI(Text Generation Inference)・Ollamaは代表的なオープンソースLLMサービングソリューションです。単純な推論から大規模バッチ処理・OpenAI互換APIまで対応できます。

LLMサービングの主要課題

通常のPyTorch/HuggingFaceでの推論と比べて、専用サービングツールが解決する問題:

  • スループット向上: 連続バッチ処理(continuous batching)で並列リクエストを効率化
  • KVキャッシュ管理: PagedAttentionで大量の同時ユーザーのメモリを最適化
  • 量子化対応: GPTQ・AWQ・GGUF等で推論メモリを削減
  • OpenAI互換API: 既存のOpenAI SDKをそのまま使える

主要ツールの概要

vLLM

UCバークレーが開発したPagedAttentionを採用する高スループットLLM推論エンジンです。連続バッチ処理・テンソル並列・モデル並列をサポートし、HuggingFace Transformersと比べて20-24倍のスループットを実現します。

# vLLMのインストール(GPU必須)
pip install vllm

# OpenAI互換APIサーバーとして起動
python -m vllm.entrypoints.openai.api_server   --model meta-llama/Llama-3.1-8B-Instruct   --dtype auto   --api-key token-abc123   --port 8000   --tensor-parallel-size 1  # GPUの数

# Dockerで起動
docker run --runtime nvidia --gpus all   -v ~/.cache/huggingface:/root/.cache/huggingface   -p 8000:8000   vllm/vllm-openai   --model mistralai/Mistral-7B-Instruct-v0.3
# OpenAI SDKでvLLMに接続(既存コードをそのまま使える)
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="token-abc123",
)

response = client.chat.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",
    messages=[
        {"role": "system", "content": "あなたは役立つアシスタントです。"},
        {"role": "user", "content": "Pythonで二分探索を実装してください。"},
    ],
    max_tokens=500,
    temperature=0.7,
)
print(response.choices[0].message.content)

# バッチ推論でスループット最大化
responses = client.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",
    prompt=["質問1", "質問2", "質問3"],  # 複数プロンプトを一括処理
    max_tokens=100,
)

TGI(Text Generation Inference)

HuggingFace公式のLLM推論サーバーです。Flash Attention 2・ページドアテンション・連続バッチ処理をサポートし、AWS・GCP・Azure上での大規模デプロイでの実績があります。

# TGIをDockerで起動
docker run --gpus all   --shm-size 1g   -p 8080:80   -v $volume:/data   ghcr.io/huggingface/text-generation-inference:2.0   --model-id mistralai/Mistral-7B-Instruct-v0.3   --dtype bfloat16   --max-input-tokens 4096   --max-total-tokens 8192
# TGI Python クライアント
from huggingface_hub import InferenceClient

client = InferenceClient("http://localhost:8080")

# テキスト生成
for token in client.text_generation(
    "Pythonで二分探索を実装してください。",
    max_new_tokens=500,
    stream=True,
):
    print(token, end="", flush=True)

# OpenAI互換エンドポイント(TGI v1.4+)
from openai import OpenAI
tgi_client = OpenAI(base_url="http://localhost:8080/v1", api_key="-")

Ollama

最もシンプルにローカルLLMを動かせるツールです。CPU・MPS(Apple Silicon)・CUDAをサポートし、GGUFフォーマットのモデルをcurl 1行で使えます。

# macOS/Linux
curl -fsSL https://ollama.com/install.sh | sh

# Windowsはインストーラーをダウンロード
# モデルを取得して実行
ollama pull llama3.1:8b
ollama run llama3.1:8b

# REST APIで使用
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.1:8b",
  "messages": [{"role": "user", "content": "こんにちは"}],
  "stream": false
}'

# OpenAI互換エンドポイント
curl http://localhost:11434/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "llama3.1:8b",
    "messages": [{"role": "user", "content": "こんにちは"}]
  }'

機能比較表

比較項目vLLMTGIOllama
PagedAttention / 連続バッチ
OpenAI互換API
GPUメモリ効率★★★★★★★★★☆★★★☆☆
Apple Silicon(MPS)
CPU推論✅ 低速
GGUFモデル対応
量子化(GPTQ/AWQ)✅(GGUF)
テンソル並列(マルチGPU)
スループット(要GPU)★★★★★★★★★☆★★☆☆☆
セットアップの容易さ★★★☆☆★★★☆☆★★★★★
本番GPU推論★★★★★★★★★☆
ローカル開発⚠️⚠️
ライセンスApache 2.0Apache 2.0MIT
GitHub Stars40k+9k+100k+

KubernetesでのvLLMデプロイ

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vllm-server
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: vllm
        image: vllm/vllm-openai:latest
        args:
          - "--model"
          - "meta-llama/Llama-3.1-8B-Instruct"
          - "--tensor-parallel-size"
          - "1"
        resources:
          limits:
            nvidia.com/gpu: 1
            memory: "24Gi"
        ports:
        - containerPort: 8000
        env:
        - name: HUGGING_FACE_HUB_TOKEN
          valueFrom:
            secretKeyRef:
              name: hf-secret
              key: token

LLM推論・サービングツールはLLMツールカテゴリ(/categories/llm-tools)で一覧でき、AI系DevOpsツールはDevOpsカテゴリ(/categories/devops)でも探せます。

FAQ

Q. vLLMとOllamaはどちらを選ぶべきですか?

A. 目的で使い分けます。Ollamaはローカル開発・デモ・CPU/Apple Siliconでの実行に最適で、セットアップが圧倒的に簡単です。vLLMは本番NVIDIA GPU環境での高スループット推論に最適で、同じGPUメモリで何倍もの同時リクエストを処理できます。開発はOllamaで始め、本番GPUサーバーにはvLLMを使うのが一般的なパターンです。

Q. PagedAttentionとはどういう技術ですか?

A. KVキャッシュ(Key-Value Cache)をOSの仮想メモリのように管理する技術です。従来の実装では各リクエストに連続したGPUメモリを事前確保するため、メモリの断片化と無駄が発生していました。PagedAttentionは非連続メモリブロックを効率的に割り当てて、GPUメモリの使用効率を大幅に改善します。結果として同じGPUで多くの同時リクエストを処理できます。

Q. モデルのGPUメモリ要件はどれくらいですか?

A. 一般的な目安(fp16の場合): 7Bモデル→14GB VRAM、13Bモデル→26GB VRAM、70Bモデル→140GB VRAM。量子化(4bit)を使うと: 7Bモデル→4〜5GB VRAM、70Bモデル→35〜40GB VRAM。Ollamaで使えるGGUFはQ4_K_Mで7Bなら約4.5GBで動作します。

Q. vLLMで量子化モデルを使う方法は?

A. vLLMはGPTQ・AWQ・SqueezeLLMをネイティブサポートしています。起動時に --quantization awq または --quantization gptq を指定するだけで使えます。AWQ量子化7Bモデルは通常の半分以下のVRAMで動作し、速度低下もほとんどありません。HuggingFace Hubに多くの量子化済みモデルが公開されています。

Q. APIサーバーに認証を設定するには?

A. vLLMは --api-key オプションでBearerトークン認証を設定できます。TGIはEnvironment変数で設定します。本番環境ではNginxやTraefikをリバースプロキシとして前に置き、mTLS・JWTなどの追加認証レイヤーを設けることを推奨します。

まとめ

ユースケース推奨ツール
本番GPU高速推論vLLM
HuggingFaceモデルの本番デプロイTGI
ローカル開発・Apple SiliconOllama
CPU推論・低スペック環境Ollama(GGUF)

関連外部リソース

他の記事も読む

Let's Build Together

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

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