Ollamaで十分と思ってた。でも、ある日1000件の文章をバッチ処理する必要があって、Ollamaの速度に限界を感じた。そこで出会ったのがvLLM。これ、次元が違う。
vLLMはカリフォルニア大学バークレー校発の高速LLM推論エンジン。最大の特徴はPagedAttentionというメモリ管理技術で、KVキャッシュの無駄を徹底的に排除する。結果、Ollamaの2〜3倍のスループットが出る。
vLLMのインストールと起動:
# インストール pip install vllm # APIサーバー起動(OpenAI互換!) vllm serve meta-llama/Llama-3-8B-Instruct --host 0.0.0.0 --port 8000 --max-model-len 8192
起動したら、OpenAIのPythonライブラリでそのままアクセスできる:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")
response = client.chat.completions.create(
model="meta-llama/Llama-3-8B-Instruct",
messages=[{"role": "user", "content": "こんにちは"}]
)
vLLMが速い理由:
- PagedAttention — KVキャッシュを固定サイズの「ページ」に分割して管理。必要なときだけ確保・解放するから、VRAMが無駄にならない。これにより同じVRAMでもより多くのリクエストを同時処理できる。
- 連続バッチ処理 — リクエストをその場でバッチに追加する。一つのリクエストが終わるのを待たずに次の推論を始められる。
- 最適化されたCUDAカーネル — llama.cppよりGPUの使い方が上手い。特にバッチ処理で差が出る。
vLLMの注意点。起動に時間がかかる(モデルを全部VRAMにロードするから2〜3分)。あとメモリ使用量がOllamaより多い(速度とのトレードオフ)。個人の普段使いにはオーバースペックだけど、本格的なサービス運用なら必須級。
参考:vLLM GitHub