3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「vLLM vs llama.cpp」徹底比較:GPUサーバとローカルLLMの最適な選び方

Posted at

🧠 まず概要:vLLM と llama.cpp の立ち位置

項目 vLLM llama.cpp
作者/組織 UC Berkeley発 → vLLM Project Georgi Gerganov (Meta元)
言語実装 Python + C++ + CUDA C/C++(単一バイナリ)
対象環境 GPU前提(CUDA, ROCm) CPU / GPU / Metal / Vulkan 対応
目的 高スループット推論(サーバ用途) 軽量・汎用実行(端末用途)
モデル互換 HuggingFace Transformers, LoRA, AWQ, GPTQ GGUF 形式(量子化モデル専用)
API 提供 OpenAI互換 API サーバ内蔵 なし(CLIツール or Embedding APIなど)
並列処理 Continuous batching / tensor parallel 1プロセス推論(複数セッション不可)
メモリ効率 高(PagedAttention) 非常に高(量子化中心)
運用想定 GPUサーバ、社内API、MLOps ローカル端末、エッジ、PoC環境

⚙️ 技術的な特徴比較

1️⃣ vLLM の特徴(サーバ向け)

✅ 強み

  • PagedAttention によりKVキャッシュをページ化 → 長文でも効率的にメモリ管理
  • Continuous Batching → 複数リクエストをまとめてGPU計算(高スループット)
  • OpenAI互換APIサーバ → 既存のクライアント資産を流用可能
  • Hugging Face 形式そのまま使える(変換不要)
  • LoRA, AWQ, GPTQ, Speculative decoding など最新機能をすぐサポート

⚠️ 弱点

  • GPUメモリを多く使う(最低 12GB〜)
  • セットアップが重め(Python依存, CUDA環境)
  • CPU-only動作は実用的でない(遅い)

2️⃣ llama.cpp の特徴(軽量・汎用)

✅ 強み

  • 単一バイナリで動く(ビルド後は即実行)
  • GGUF量子化モデルで圧倒的省メモリ(例: 7Bモデルが4〜8GBで可)
  • GPUなしでも動作(CPU/Metal/Vulkan対応)
  • ネイティブC/C++実装で移植性抜群(Windows, macOS, Raspberry Piでも動く)
  • Embeddings, RAG, ChatUIなど軽量ツール群が豊富(llama.cpp派生プロジェクト)

⚠️ 弱点

  • サーバ用途には不向き(1セッションずつ)
  • OpenAI互換APIなし(別途 web サーバ実装が必要)
  • 長文処理では性能が頭打ち(KVキャッシュ最適化が限定的)
  • HuggingFace 形式から GGUF 変換が必要

🔄 実運用での「使い分け」指針

ユースケース 推奨 理由
社内OpenAI APIサーバを自前構築 🟩 vLLM OpenAI互換API / 高スループット / マルチユーザ対応
クラウドGPU上で高速推論サーバ運用 🟩 vLLM Batching + GPU効率最適化
ローカルPCで軽く試す・PoC 🟩 llama.cpp セットアップ最小 / GPU不要
Edge/IoT/モバイル実装 🟩 llama.cpp CPUでも動く / クロスプラットフォーム
研究・MLOps実験基盤で複数モデルを回す 🟩 vLLM モデル切替・ローディングが安定
生成AIアプリのフロントで簡易Chat機能 🟩 llama.cpp 軽量・低コストで内蔵可
大量同時アクセス(並列推論) 🟩 vLLM Continuous batching によりQPSが伸びる
少数ユーザで軽量チャット 🟩 llama.cpp バイナリ単体で十分

💡 実際の性能感(参考値・単GPU)

モデル GPU llama.cpp (Q4_K_M) vLLM (FP16)
Llama-3-8B RTX 4090 約25–30 tokens/s 約120–180 tokens/s
Mistral-7B RTX 3090 約20 tokens/s 約90–150 tokens/s
CPU-only (llama.cpp) Core i9 約5–10 tokens/s ❌ 非現実的

🧩 vLLM は「スループット」に強く、
llama.cpp は「省メモリ・軽量性」に強い。


🧭 選び方チャート

💬 Q1: GPUがある? ── No → llama.cpp
              ↓Yes
💬 Q2: 複数ユーザ同時アクセスする? ── Yes → vLLM
              ↓No
💬 Q3: APIサーバとして使いたい? ── Yes → vLLM
              ↓No
💬 Q4: ローカルで軽く試したい? ── Yes → llama.cpp

🧰 実際の選定例(現場感)

目的 推奨構成
社内ChatGPT vLLM + OpenAI SDK + LangChain
ローカルLLMデモ llama.cpp + ollama
推論API本番運用 vLLM + Docker + Nginx + systemd
オフラインAIノートPC llama.cpp + GGUFモデル + Metal
学習済LoRAの検証 vLLM (--lora-modules)
エッジ組込み(Jetson, ARM) llama.cpp (GGUF量子化)

📦 実例まとめ

vLLMサーバ起動例

vllm serve mistralai/Mistral-7B-Instruct-v0.3 --port 8000

llama.cpp実行例

./main -m ./models/llama-3-8b-q4.gguf -p "日本語で自己紹介して"

🧩 併用も可能(ハイブリッド構成)

たとえば:

  • vLLM:社内APIサーバ(GPU上で高速推論)
  • llama.cpp:クライアント端末で軽量オフラインモード
[Webアプリ]
     │
     ├─> vLLM サーバ (GPU) … 高精度
     │
     └─> llama.cpp (端末) … 軽量フォールバック

🏁 まとめ:どう選ぶか

観点 vLLM llama.cpp
目的 高速・大量推論 軽量・汎用
環境 GPUサーバ CPU / GPU / Edge
導入難度 中〜高
速度 圧倒的に速い モデル・量子化次第
API互換性 OpenAI互換あり なし
用途例 社内AI・API基盤 ローカル・PoC・エッジ

GPUがあり複数ユーザ対応なら「vLLM」
GPUがなくローカルで軽く動かしたいなら「llama.cpp」

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?