オープンソース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": "こんにちは"}]
}'
機能比較表
| 比較項目 | vLLM | TGI | Ollama |
|---|---|---|---|
| PagedAttention / 連続バッチ | ✅ | ✅ | ❌ |
| OpenAI互換API | ✅ | ✅ | ✅ |
| GPUメモリ効率 | ★★★★★ | ★★★★☆ | ★★★☆☆ |
| Apple Silicon(MPS) | ❌ | ❌ | ✅ |
| CPU推論 | ✅ 低速 | ❌ | ✅ |
| GGUFモデル対応 | ❌ | ❌ | ✅ |
| 量子化(GPTQ/AWQ) | ✅ | ✅ | ✅(GGUF) |
| テンソル並列(マルチGPU) | ✅ | ✅ | ❌ |
| スループット(要GPU) | ★★★★★ | ★★★★☆ | ★★☆☆☆ |
| セットアップの容易さ | ★★★☆☆ | ★★★☆☆ | ★★★★★ |
| 本番GPU推論 | ★★★★★ | ★★★★☆ | ❌ |
| ローカル開発 | ⚠️ | ⚠️ | ✅ |
| ライセンス | Apache 2.0 | Apache 2.0 | MIT |
| GitHub Stars | 40k+ | 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 Silicon | Ollama |
| CPU推論・低スペック環境 | Ollama(GGUF) |