AI

オープンソースローカルLLM実行環境比較:Ollama vs vLLM vs LM Studio でLLMをオンプレで動かす

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

オープンソースローカルLLM実行環境比較:Ollama vs vLLM vs LM Studio でLLMをオンプレで動かす

OpenAIやAnthropicのAPIを使わず、LLMをローカルマシンやオンプレミスサーバーで実行したい場合、Ollama・vLLM・LM Studioが主要な選択肢です。プライバシー保護・コスト削減・エアギャップ環境でのAI活用を実現しましょう。

ローカルLLMが必要な場面

  • プライバシー: 機密文書・個人情報をクラウドAPIに送れない
  • コスト: 大量トークン処理でAPIコストが問題になっている
  • レイテンシ: ネットワーク遅延なしのリアルタイム推論
  • エアギャップ: インターネット非接続環境でのAI活用
  • カスタムモデル: ファインチューニングした独自モデルをサービング

主要ツールの概要

Ollama

ローカルLLM実行の最も手軽なツールです。macOS・Linux・WindowsでGPU/CPUを自動検出し、ollama run llama31コマンドでLLMを起動できます。OpenAI互換APIを内蔵しており、既存のOpenAIコードを最小限の変更でローカルモデルに向け直せます。

# Ollamamのインストールと起動
curl -fsSL https://ollama.com/install.sh | sh

# モデルのダウンロードと実行
ollama run llama3.2:3b      # 3Bパラメータ(4GB VRAM)
ollama run llama3.1:8b      # 8Bパラメータ(8GB VRAM)
ollama run mistral:7b       # Mistral 7B
ollama run qwen2.5:14b      # Qwen2.5 14B
ollama run phi4:14b         # Microsoft Phi-4

# 日本語対応モデル
ollama run hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF

# Dockerで起動(GPU付き)
docker run -d   -p 11434:11434   --gpus=all   -v ollama:/root/.ollama   ollama/ollama
# OllamaをOpenAI SDKで使う
from openai import OpenAI

# baseUrlをOllamaに向けるだけ
client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # 任意の文字列
)

# チャット補完
response = client.chat.completions.create(
    model="llama3.1:8b",
    messages=[
        {"role": "system", "content": "あなたはコードレビューの専門家です。"},
        {"role": "user", "content": "このPythonコードを改善してください:
def fib(n):
  if n<=1: return n
  return fib(n-1)+fib(n-2)"},
    ],
    temperature=0.7,
)
print(response.choices[0].message.content)

# ストリーミング
for chunk in client.chat.completions.create(
    model="llama3.1:8b",
    messages=[{"role": "user", "content": "日本の技術トレンドを教えて"}],
    stream=True,
):
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
# OllamaのネイティブAPIを使う
import httpx
import json

# チャット
response = httpx.post("http://localhost:11434/api/chat", json={
    "model": "llama3.1:8b",
    "messages": [{"role": "user", "content": "日本語でHello World"}],
    "stream": False,
})
print(response.json()["message"]["content"])

# Embedding生成
embed_resp = httpx.post("http://localhost:11434/api/embed", json={
    "model": "nomic-embed-text",
    "input": "このテキストをベクトルに変換します",
})
embedding = embed_resp.json()["embeddings"][0]
print(f"Embedding dimension: {len(embedding)}")  # 768次元

vLLM

PagedAttentionアルゴリズムで高スループットを実現するLLMサービングエンジンです。複数のリクエストを効率的にバッチ処理し、OpenAI互換APIサーバーとして動作します。本番環境での高負荷なLLM推論に使われます。

# vLLMをPipでインストールして起動
pip install vllm

# OpenAI互換APIサーバーとして起動
python -m vllm.entrypoints.openai.api_server   --model meta-llama/Llama-3.1-8B-Instruct   --host 0.0.0.0   --port 8000   --tensor-parallel-size 2   --gpu-memory-utilization 0.9   --max-model-len 8192

# HuggingFace認証が必要なモデルは
# --hf-token YOUR_HF_TOKEN を追加
# Dockerで起動(NVIDIA GPU必須)
docker run --runtime nvidia --gpus all   -p 8000:8000   --ipc=host   vllm/vllm-openai:latest   --model Qwen/Qwen2.5-7B-Instruct   --dtype bfloat16   --gpu-memory-utilization 0.85

# Kubernetesにデプロイ(複数GPUノード)
kubectl apply -f - << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vllm-server
spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: vllm
          image: vllm/vllm-openai:latest
          resources:
            limits:
              nvidia.com/gpu: "2"
          args:
            - --model=Qwen/Qwen2.5-7B-Instruct
            - --tensor-parallel-size=2
EOF
# vLLMの非同期バッチ推論(スループット最大化)
from vllm import LLM, SamplingParams

llm = LLM(
    model="Qwen/Qwen2.5-7B-Instruct",
    tensor_parallel_size=2,
    gpu_memory_utilization=0.85,
)

sampling_params = SamplingParams(
    temperature=0.7,
    max_tokens=512,
    stop=["</s>", "<|im_end|>"],
)

# 複数プロンプトを一括処理
prompts = [
    "Pythonでクイックソートを実装して",
    "TypeScriptの型システムを説明して",
    "機械学習とは何かを一言で説明して",
]

outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    print(f"Prompt: {output.prompt[:30]}...")
    print(f"Response: {output.outputs[0].text[:100]}...")
    print()

LM Studio

GUIベースのローカルLLM実行環境です。技術者でなくてもHugging Faceからモデルをダウンロードしてチャットできます。内蔵のOpenAI互換APIサーバーを起動してコードから利用することも可能です。

# LM Studioの内蔵APIサーバーに接続
from openai import OpenAI

# LM Studioの「Local Server」を起動してから
client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="lm-studio",
)

models = client.models.list()
print("利用可能なモデル:")
for m in models.data:
    print(f"  - {m.id}")

response = client.chat.completions.create(
    model=models.data[0].id,  # 最初のロードされたモデルを使用
    messages=[{"role": "user", "content": "こんにちは!"}],
)
print(response.choices[0].message.content)

機能比較表

比較項目OllamavLLMLM Studio
セットアップの容易さ★★★★★★★★☆☆★★★★★
GUI❌(CLI)❌(CLI)
スループット★★★☆☆★★★★★★★★☆☆
OpenAI互換API
GPU必須❌(CPU可)❌(CPU可)
バッチ処理
マルチGPU✅ tensor parallel
Embedding API
モデルカタログ❌(HFから)
Windows対応⚠️ WSL2
Apple Silicon✅ Metal
ライセンスMITApache 2.0非公開(無料)
GitHub Stars97k+45k+

LLMツール・AI開発環境はLLMツールカテゴリ(/categories/llm-tools)で一覧でき、AI活用のRAG・ベクターDB構築はknowledgeカテゴリ(/categories/knowledge)でも探せます。

FAQ

Q. ローカルLLMは商用で使えますか?

A. モデルのライセンスによります。Llama 3.1(Meta)はMetaのLlama 3 Community Licenseで月間アクティブユーザー7億未満なら商用利用可能。Mistralモデルは多くがApache 2.0で商用可能。Gemmaは「Gemma Terms of Use」でほぼ商用可能。ただし再配布・ファインチューニングモデルの公開・競合AI製品への組み込みには制限がある場合があります。使用前に各モデルのライセンスを確認してください。

Q. MacBook(Apple Silicon)でOllamaを使う場合の推奨モデルは?

A. Apple SiliconはGPUメモリをシステムメモリと共有します。16GBのMacでは7〜8Bパラメータ、32GBでは14〜20Bパラメータが快適に動作します。推奨: M1/M2 16GB→llama3.2:3bphi4:14b(4bit量子化)、M2 Pro/Max 32GB→llama3.1:8bqwen2.5:14b、M2 Ultra 64GB→qwen2.5:32bllama3.1:70b(4bit量子化)。日本語を使うならqwen2.5シリーズが特に優れています。

Q. vLLMとOllamaのスループットはどのくらい違いますか?

A. 単一リクエストのレイテンシはOllamaもvLLMも同程度です。違いが出るのは同時リクエスト数が増えた場合で、vLLMのPagedAttentionは複数リクエストのKVキャッシュを効率的に共有するため、10〜100の同時リクエストではvLLMが3〜10倍以上のスループットを出します。Ollama(またはllama.cpp)は単一ユーザーの対話には十分ですが、複数ユーザーが同時利用するプロダクション環境ではvLLMが推奨されます。

Q. HuggingFaceのモデルをOllamaで動かすには?

A. GGUFフォーマットのモデルはOllamaで直接使えます。ollama run hf.co/ユーザー名/モデル名-GGUFでHugging Faceから直接ダウンロードして実行できます(v0.1.47以降)。PyTorch形式のモデルはGGUFに変換が必要です: llama.cppconvert.pyでGGUFに変換し、Modelfileを作成してollama createコマンドでOllamaに登録します。

まとめ

ユースケース推奨ツール
個人・開発者の手軽な利用Ollama
本番環境・高スループットvLLM
非技術者のGUI利用LM Studio
Apple Silicon MacOllama / LM Studio

関連外部リソース

他の記事も読む

Let's Build Together

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

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