UbuntuにvLLMを構築して高速推論する方法

ローカルLLM

ChatGPTのようなAIを自分のサーバーで動かしたい、しかもできるだけ速く推論したい——そう考えたとき、最も注目されているのが vLLM(Virtual Large Language Model)です。

vLLMは、UbuntuにインストールしてNVIDIA GPUと組み合わせるだけで、Hugging Faceのモデルを高速に推論できるPythonライブラリです。PagedAttentionという独自のメモリ管理によって、同じGPUでもより多くのリクエストを同時にさばけるのが特徴です。

本記事では、結論から言うと python3 -m venv で仮想環境を作って pip install vllm するだけで導入できます。実際に ubuntu:24.04(Docker公式イメージ)を起動して、バージョン要件・PEP 668 エラーの再現・pip の挙動までを実測しました。検証日は2026年6月15日、対象は vLLM 0.23.0(2026年6月13日リリースの最新版)です。

この記事のポイント

  • vLLM 0.23.0 は Ubuntu 24.04 + Python 3.12 + venv でインストールできる(pip install vllm 一行)
  • vLLMの Python 要件は >=3.10,<3.15(PyPIメタデータで実測。3.9以前は不可)
  • Ubuntu 24.04 は PEP 668 により venv が必須——--break-system-packages は使わない
  • 依存として torch==2.11.0 と NVIDIA CUDA 13(cu13)系カーネルが入る(実測)
  • 起動後は OpenAI 互換の REST API(http://localhost:8000/v1)として動き、既存コードを base_url の変更だけで流用できる

目次

  1. vLLMとは——なぜ高速なのか
  2. 動作環境と要件(実測)
  3. vLLMのインストール手順
  4. APIサーバーを起動する
  5. Swagger UIでAPIを確認する
  6. curlとPythonでAPIをテストする
  7. よくあるエラーと解決策
  8. まとめ

vLLMとは——なぜ高速なのか

vLLMはカリフォルニア大学バークレー校のSky Computing Labが2023年に公開したOSSです。LLM推論の大きなボトルネックだった「KVキャッシュのメモリの無駄」を PagedAttention(ページド・アテンション) という仕組みで解決しています。

簡単に言うと、GPUメモリをOSのページングのように細かく区切って管理し、使っていない領域を別のリクエストで再利用します。さらに Continuous Batching(実行中のバッチに新しいリクエストを動的に差し込む方式)と組み合わせることで、次のような効果が出ます。

  • 同じGPUでより多くのリクエストを並列処理できる
  • メモリの断片化が減り、大きなモデルでも安定して動かせる
  • スループット(秒間に処理できるトークン数)が大きく向上する
vLLMの高速化の仕組み(PagedAttention)の概念図
vLLMの高速化の仕組み(PagedAttention)の概念図

そしてもう一つの強みが OpenAI互換のREST API を内蔵していることです。OpenAI Pythonライブラリの base_url を自前サーバーに向けるだけで、既存コードをほぼ無修正で流用できます。商用APIから自前サーバーへ移行するコストが小さいのは、地味ですが大きな利点です。

動作環境と要件(実測)

まず、自分の環境がvLLMの要件を満たしているか確認しましょう。今回は ubuntu:24.04 のDocker公式イメージ(linux/amd64)を起動して、実際にコマンドを叩いて確かめました。




ubuntu@linuxlab: ~ (ubuntu:24.04)
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 24.04.4 LTS
Release: 24.04
Codename: noble
$ python3 –version
Python 3.12.3
$ ldd –version | head -1
ldd (Ubuntu GLIBC 2.39-0ubuntu8.7) 2.39
$ uname -m
x86_64
Ubuntu 24.04 の環境確認(vLLMの要件チェック・実測)
Ubuntu 24.04 の環境確認(vLLMの要件チェック・実測)

Ubuntu 24.04.4 LTS には Python 3.12.3 が標準搭載され、glibc は 2.39 でした。ここで気をつけたいのが vLLMの実際の要件です。PyPI のメタデータ(requires_python / requires_dist)を取得して確認したところ、次のとおりでした。

vLLM 0.23.0 の動作要件(PyPIメタデータ実測)
vLLM 0.23.0 の動作要件(PyPIメタデータ実測)

注目すべきは、Python の対応バージョンが >=3.10,<3.15 だという点です。古い記事では「Python 3.9以上」と書かれていることがありますが、vLLM 0.23.0 では 3.9 以前ではインストールできません。また配布されている wheel は manylinux_2_28(glibc 2.28以上)向けで、Ubuntu 24.04 の glibc 2.39 なら問題なく動きます。

注意:本番はNVIDIA GPUが前提です

vLLM 0.23.0 の依存パッケージを実測すると、torch==2.11.0 がバージョン固定で入り、nvidia-cutlass-dsl[cu13] など CUDA 13(cu13)向けのカーネルが含まれます。本来の用途はNVIDIA GPUでの推論です。GPUなし環境では --device cpu で動作確認はできますが、推論速度は桁違いに遅くなります。VPSでGPUを試すならVultrの時間課金GPUインスタンスが手頃です。

Ubuntu 22.04 と 24.04、どちらを使うべきか

「手元のサーバーが22.04なんだけど大丈夫?」という疑問もよくあります。両方のイメージで apt-cache policy を実行して、標準のPythonバージョンを比べてみました。

Ubuntu 22.04 と 24.04 の Python バージョン差(apt-cache 実測)
Ubuntu 22.04 と 24.04 の Python バージョン差(apt-cache 実測)

Ubuntu 22.04 の標準 Python は 3.10.6、24.04 は 3.12.3 でした。どちらも vLLM の要件(3.10以上)を満たしますが、24.04 は標準で 3.12 を備えているため追加のリポジトリ設定が要りません。これから始めるなら 24.04 LTS をおすすめします。

vLLMのインストール手順

手順1:パッケージを更新してPython環境を準備する

まずシステムを最新にして、Python と venv をインストールします。




ubuntu@linuxlab: ~
$ sudo apt update && sudo apt upgrade -y
Reading package lists… Done
$ sudo apt install -y python3 python3-pip python3-venv git curl
Setting up python3 (3.12.3-0ubuntu2) …
Setting up python3-pip (24.0+dfsg-1ubuntu1.2) …
Setting up python3-venv (3.12.3-0ubuntu2) …

Ubuntu 24.04 から PEP 668(外部管理環境) が有効になっており、システムのPythonに直接 pip install するとエラーになります。これは意図的な仕様です。実際にエラーを再現してみましょう。




ubuntu@linuxlab: ~ (ubuntu:24.04)
$ pip3 install requests
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
create a virtual environment using python3 -m venv path/to/venv.
hint: See PEP 668 for the detailed specification.
PEP 668 エラーの実再現と venv での回避(実測)
PEP 668 エラーの実再現と venv での回避(実測)

このとおり、システムの pip に直接インストールしようとすると弾かれます。--break-system-packages で無理やり通すこともできますが、OS標準のPythonを壊すリスクがあるので使いません。正しい回避策は、次の手順で venv(仮想環境)を作ることです。

手順2:仮想環境(venv)を作成してpipを最新化する




ubuntu@linuxlab: ~ (vllm_env)
$ python3 -m venv /opt/vllm_env
$ source /opt/vllm_env/bin/activate
(vllm_env) $ which python3
/opt/vllm_env/bin/python3
(vllm_env) $ pip –version
pip 24.0 from /opt/vllm_env/lib/python3.12/site-packages/pip (python 3.12)
(vllm_env) $ pip install –upgrade pip
Successfully uninstalled pip-24.0
Successfully installed pip-26.1.2

/opt/vllm_env に仮想環境を作成しました。有効化すると which python3/opt/vllm_env/bin/python3 を指します。venv 内の pip は最初 24.0 で、pip install --upgrade pip によって 26.1.2 に更新されました(いずれも実測)。

手順3:vLLMをインストールする

あとは pip install vllm を実行するだけです。インストール前に pip index versions vllm で最新版を確認しておくと安心です。




ubuntu@linuxlab: ~ (vllm_env)
(vllm_env) $ pip index versions vllm
vllm (0.23.0)
Available versions: 0.23.0, 0.22.1, 0.22.0, 0.21.0, 0.20.2, …
(vllm_env) $ pip install vllm
Collecting vllm
Collecting torch==2.11.0 (from vllm)
Collecting transformers>=4.56.0 (from vllm)
Collecting fastapi[standard]>=0.115.0 (from vllm)
Collecting openai>=2.0.0 (from vllm)
Collecting pydantic>=2.12.0 (from vllm)

Successfully installed vllm-0.23.0
(vllm_env) $ vllm –version
0.23.0
venv作成からpip最新化・vLLM取得までの実測ターミナル
venv作成からpip最新化・vLLM取得までの実測ターミナル

pip index versions vllm が返す最新版は 0.23.0(2026年6月13日リリース)でした。pip install vllmtorch==2.11.0 をはじめ PyTorch・Transformers・FastAPI など大量の依存を引き込みます。正直、ここが一番時間のかかるポイントです。コーヒーでも飲みながら待ちましょう。

著者アイコン
著者アイコン

vLLM 0.23.0 は torch==2.11.0 を厳密にバージョン固定し、CUDA 13(cu13)向けのカーネルまで入ってきます。PyTorch だけで数GBあるので、/opt に 20GB 以上は空けておくと安心です。既存の PyTorch を入れている人は、必ず専用の venv に分けてください。

手順4:CUDAドライバーを確認する(GPU環境のみ)

GPU環境では、NVIDIAドライバーが正しく入っているかを nvidia-smi で確認します。vLLM 0.23.0 は CUDA 13 系のカーネルに依存するため、ドライバーは新しめのものを用意してください。




ubuntu@linuxlab: ~ (GPU環境の例)
$ nvidia-smi
+—————————————————————————–+
| NVIDIA-SMI 580.xx Driver Version: 580.xx CUDA Version: 13.0 |
| 0 NVIDIA RTX 4090 | 00000000:01:00.0 Off | N/A |
| 30% 42C P8 20W / 450W | 300MiB / 24564MiB | 0% Default |

GPUが認識されないとき

nvidia-smi が動かない場合は、sudo ubuntu-drivers autoinstall で推奨ドライバーを入れて再起動してください。上の出力は GPU 環境での表示例です(本記事の検証はGPUなしのコンテナで行ったため、ドライバーのバージョンは環境により異なります)。

APIサーバーを起動する

インストールできたら、vllm serve でAPIサーバーを起動します。モデルはHugging Faceから自動でダウンロードされます。




ubuntu@linuxlab: ~ (vllm_env)
(vllm_env) $ vllm serve Qwen/Qwen2.5-7B-Instruct \
–host 0.0.0.0 \
–port 8000 \
–max-model-len 8192
INFO … vLLM API server version 0.23.0
INFO … Model: Qwen/Qwen2.5-7B-Instruct
INFO … Loading model weights…
INFO … Application startup complete.
INFO … Uvicorn running on http://0.0.0.0:8000

起動後は http://localhost:8000 でAPIが使えます。よく使うオプションをまとめます。

  • --host 0.0.0.0:他のマシンからもアクセス可能にする(デフォルトは localhost のみ)
  • --port 8000:待ち受けポート番号(デフォルト 8000)
  • --max-model-len 8192:最大コンテキスト長(VRAMが少ない場合に削減)
  • --tensor-parallel-size 2:GPU 2枚でモデルを分割する場合
  • --gpu-memory-utilization 0.9:GPU VRAMの使用率(デフォルト 0.9)

本記事の検証範囲について

本記事は GPU を持たない ubuntu:24.04 コンテナで検証したため、バージョン要件・PEP 668・pip の挙動は実測ですが、vllm serve 起動以降のログや推論の出力は GPU 環境での例示です。実際の応答内容やINFOログの行番号は、モデル・GPU・バージョンによって変わります。

Swagger UIでAPIを確認する

vLLMのAPIサーバーはデフォルトで Swagger UIhttp://localhost:8000/docs)を内蔵しています。ブラウザからアクセスすると、利用できるエンドポイントを一覧で確認できます。

vLLM APIサーバーのSwagger UI(再現UI / mock)
vLLM APIサーバーのSwagger UI(再現UI / mock)

主なエンドポイントは次のとおりです。OpenAI と同じパス構成(/v1/chat/completions/v1/completions/v1/embeddings/v1/models)に加え、/tokenize/health、Prometheus 用の /metrics も用意されています。

現在ロードされているモデルは http://localhost:8000/v1/models にアクセスするとJSONで確認できます。ReDoc形式のドキュメントは http://localhost:8000/redoc です。

curlとPythonでAPIをテストする

curlでチャット生成




ubuntu@linuxlab: ~
$ curl http://localhost:8000/v1/chat/completions \
-H “Content-Type: application/json” \
-d ‘{
“model”: “Qwen/Qwen2.5-7B-Instruct”,
“messages”: [{“role”: “user”, “content”: “Ubuntuとは何ですか?一言で。”}],
“max_tokens”: 100
}’
{
“object”: “chat.completion”,
“model”: “Qwen/Qwen2.5-7B-Instruct”,
“choices”: [{
“message”: {“role”: “assistant”, “content”: “Ubuntuは、Linuxカーネルを基盤とした使いやすいオープンソースOSです。”},
“finish_reason”: “stop”
}]
}

レスポンスは OpenAI のチャット補完APIとまったく同じJSON構造です(上の応答内容はGPU環境での例示です)。choices[].message.content に生成テキストが入ります。

Pythonから呼び出す(OpenAI互換)

OpenAI Pythonライブラリ(pip install openai)で、base_url を変えるだけで呼び出せます。APIキーは不要ですが、引数として何かを渡す必要があるため "EMPTY" を指定します。




ubuntu@linuxlab: ~ (Python)
from openai import OpenAI
client = OpenAI(base_url=”http://localhost:8000/v1″, api_key=”EMPTY”)
resp = client.chat.completions.create(
model=”Qwen/Qwen2.5-7B-Instruct”,
messages=[{“role”: “user”, “content”: “こんにちは!”}])
print(resp.choices[0].message.content)
こんにちは!何かお手伝いできることはありますか?

ここだけは順番を間違えると動きません——必ず vllm serve でサーバーが起動してから、Pythonコードを実行してください。なお vLLM 0.23.0 は依存に openai>=2.0.0 を要求するので、クライアント側のライブラリも新しめにしておくと安心です。

よくあるエラーと解決策

①「error: externally-managed-environment」

Ubuntu 24.04 の PEP 668 によるエラーです。本記事の手順2のとおり、python3 -m venv /opt/vllm_env で仮想環境を作り、source /opt/vllm_env/bin/activate で有効化してからインストールしてください。

②「ERROR: Package ‘vllm’ requires a different Python」

Python のバージョンが要件外(3.9 以前、または 3.15 以上)の場合に出ます。vLLM 0.23.0 の要件は >=3.10,<3.15 です。python3 --version で確認し、Ubuntu 24.04 標準の 3.12 を使うのが確実です。

③「CUDA out of memory」

GPUのVRAMが不足しています。以下のいずれかで対処します。

  • --max-model-len 4096 のようにコンテキスト長を短くする
  • --gpu-memory-utilization 0.7 でVRAM使用率を下げる
  • より小さいモデルを選ぶ(7B → 3B など)
  • --quantization awq で量子化モデルを使う

④「ModuleNotFoundError: No module named ‘vllm’」

venv が有効化されていません。source /opt/vllm_env/bin/activate を実行してから試してください。which python3/opt/vllm_env/bin/python3 を返せば有効化されています。

本記事の検証環境

インストール手順・バージョン要件・PEP 668・pipの挙動は ubuntu:24.04 Docker公式イメージ(linux/amd64、2026-06-15)で実測しています。vLLM のバージョン・要件・依存は PyPI(https://pypi.org/pypi/vllm/json)から同日取得した一次データです。GPUを持たないコンテナでの検証のため、実推論の出力例は GPU 環境に準じた例示です。

まとめ

Ubuntu 24.04 に vLLM 0.23.0(2026年6月時点の最新)をインストールして、高速推論APIサーバーを構築する手順を実測ベースで解説しました。

  • Ubuntu 24.04.4 LTS は Python 3.12.3 / glibc 2.39 を備え、vLLMの要件を満たす
  • vLLMの Python 要件は 3.10以上 3.15未満(PyPI実測。3.9以前は不可)
  • PEP 668 のため python3 -m venv で仮想環境を作ってから pip install vllm する
  • venv 内の pip は 24.0 から 26.1.2 へ更新された(実測)
  • 依存に torch==2.11.0 と CUDA 13(cu13)系カーネルが入る
  • 起動は vllm serve <モデル名>、OpenAI Pythonライブラリから base_url 変更だけで呼べる

vLLMを本格的に運用するなら、GPUを搭載したクラウドサーバーが現実的です。Vultrは時間課金のGPUインスタンスを提供しており、必要なときだけ使えてコストを抑えやすいです。

関連記事:Ollamaでローカルchatを動かす方法やOpen WebUIのインストールと使い方もあわせてどうぞ。GPUの料金を比較したい方はクラウドGPUの料金比較も参考になります。

コメント

タイトルとURLをコピーしました