クラウド GPU で vLLM を使って OpenAI 互換 API を提供するには?
結論: Raw GPU をデプロイし、Python の仮想環境で uv pip install vllm --torch-backend=auto を実行して vLLM をインストールし、vllm serve <model> --api-key <key> を実行します。vLLM のクイックスタートによると、サーバーは既定で http://localhost:8000 で起動し、/v1/models や /v1/chat/completions などの OpenAI のエンドポイントを提供します(vLLM クイックスタート、2026-11-03 閲覧)。SSH でポート 8000 を転送し、任意の OpenAI クライアントを http://localhost:8000/v1 に向けます。
ステップ 1:カードを選んで Raw GPU をデプロイする
重みと KV キャッシュが 1 枚の GPU に収まる必要があります。モデルのサイズは LLM に必要な VRAMで見積もってください。必要な VRAM はモデル、精度、ワークフローによって変わります。vLLM には compute capability 7.5 以上の NVIDIA GPU が必要です。CloudGPU が vLLM 向けに掲載しているカードは /rent-gpu-for-vllm にあります。
/deploy で Raw GPU(JupyterLab と CUDA、root SSH)とカードを選びます。このガイドでは、バージョンとフラグを自分で管理できるよう vLLM を自分でインストールします。現在のテンプレート一覧は /deploy で確認してください。インスタンスの引き渡し後にインストールを自動で実行したい場合は、ステップ 2 の内容を任意のスタートアップスクリプトに貼り付けます(起動時にセットアップスクリプトを実行する方法)。
ステップ 2:vLLM をインストールする
nvidia-smi # GPU, driver, and the CUDA version the driver supports
pip install -U uv
uv venv --python 3.12 --seed ~/vllm-env
source ~/vllm-env/bin/activate
uv pip install vllm --torch-backend=auto
vllm --version
クイックスタートは Python 3.11〜3.14 を対象とし、uv を推奨しています。--torch-backend=auto はドライバーに合った PyTorch ビルドを選びます。RTX 5090 で PyTorch が sm_120 用のカーネルがないと報告する場合は、「no kernel image」の直し方(英語)をご覧ください。
ステップ 3:モデルをダウンロードする(任意ですが便利です)
vllm serve は初回起動時に Hugging Face からダウンロードしますが、別にダウンロードしておくほうが進み具合を確認しやすく、再開もしやすくなります:
pip install -U "huggingface_hub"
cloudgpu-net on # download acceleration for this shell
hf download Qwen/Qwen2.5-7B-Instruct --local-dir ~/models/qwen2.5-7b-instruct
cloudgpu-net off
Llama などのゲート付きモデルは、先に Hugging Face でライセンスに同意し、HF_TOKEN を export してください。モデルのダウンロードを速くする方法もご覧ください。
ステップ 4:サーバーを起動する
SSH が切れても動き続けるよう、tmux の中で実行します:
tmux new -s vllm
source ~/vllm-env/bin/activate
export VLLM_API_KEY="$(openssl rand -hex 16)"; echo "$VLLM_API_KEY" # note the key
vllm serve ~/models/qwen2.5-7b-instruct \
--host 127.0.0.1 --port 8000 \
--served-model-name qwen2.5-7b \
--max-model-len 16384
vLLM のエンジン引数のページ(2026-11-03 閲覧)によるフラグの意味:
| フラグ | 意味 |
|---|---|
--api-key または VLLM_API_KEY |
リクエストはこのキーを Bearer トークンとして送る必要があります(クイックスタート) |
--served-model-name |
“The model name(s) used in the API”(API で使うモデル名)。指定しないとモデルのパスがそのまま名前になります |
--max-model-len |
“Model context length (prompt and output)”(モデルのコンテキスト長、プロンプトと出力)。KV キャッシュが収まらなければ下げます |
--gpu-memory-utilization |
“The fraction of GPU memory to be used for the model executor”(モデル実行に使う GPU メモリの割合) |
--generation-config |
既定は auto で、モデルの generation_config.json からサンプリングの既定値を読み込みます。vllm にすると vLLM 自身の既定値を使います |
--dtype |
auto では FP32/FP16 のモデルに FP16、BF16 のモデルに BF16 を使います |
127.0.0.1 にバインドするとサーバーはインターネットに公開されず、次のステップの SSH 経由でアクセスします。ログにサーバーがポート 8000 で待ち受けていると表示されるまで待ってください。
ステップ 5:手元のコンピューターから呼び出す
インスタンスの行に表示されるユーザー、ホスト、ポートでトンネルを開きます:
ssh -N -L 8000:127.0.0.1:8000 -p <ssh-port> <user>@<host>
続いて、手元のコンピューターで:
export VLLM_API_KEY=<the key from Step 4>
curl http://localhost:8000/v1/models -H "Authorization: Bearer $VLLM_API_KEY"
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" -H "Authorization: Bearer $VLLM_API_KEY" \
-d '{"model": "qwen2.5-7b", "messages": [{"role": "user", "content": "Say hello in one sentence."}]}'
OpenAI の Python SDK(pip install openai)でストリーミングする例:
import os
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key=os.environ["VLLM_API_KEY"])
stream = client.chat.completions.create(
model="qwen2.5-7b",
messages=[{"role": "user", "content": "Explain the KV cache in two sentences."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
OpenAI のベース URL を指定できるツール(Open WebUI、LangChain、Cursor 系のクライアントなど)も、http://localhost:8000/v1 を指定すれば同じように使えます。トンネルの詳細は クラウド GPU での SSH ポートフォワーディング(英語)をご覧ください。
トラブルシューティング
- 起動時に CUDA out of memory:
--max-model-lenを下げる、量子化モデルを選ぶ、または VRAM の多いカードを使います。CUDA out of memory の直し方(英語)をご覧ください。 - チャットのリクエストが失敗する: vLLM のサービングのドキュメントには “vLLM requires the model to include a chat template in its tokenizer configuration”(vLLM はモデルのトークナイザー設定にチャットテンプレートが含まれていることを必要とします)とあります。テンプレートのないモデルでは
--chat-template <file.jinja>を指定します(オンラインサービングのドキュメント、2026-11-03 閲覧)。 - 回答が想定と違う: vLLM は既定でモデルの
generation_config.jsonを適用します。--generation-config vllmで vLLM の既定値を使って試してください。 - 401 エラー: クライアントは同じキーを
Authorization: Bearer <key>として送る必要があります。 curlが接続できない: トンネルが開いているか、サーバーのログがポート 8000 で待ち受けていることを示しているかを確認します。
提供をやめたら課金も止める
GPU は 1 分単位(切り上げ)、最低 1 分で課金され、サーバーがリクエストを待っているアイドル時間も含まれます。インスタンスを破棄すると課金は止まり、同時にインスタンス上のデータは削除されるので、残したいものは先にコピーしてください。REST API でインスタンスを起動する場合、idle_minutes を指定すると GPU がその時間アイドル状態だったインスタンスを破棄します(API ドキュメント)。GPU を自分で動かしたくない場合は、CloudGPU 自身の OpenAI 互換モデル API が https://cloudgpu.app/v1 にあります。
よくある質問
vllm serve はどのポートを使いますか?
vLLM のクイックスタートによると、サーバーは既定で http://localhost:8000 で起動します。–host 127.0.0.1 --port 8000 を明示し、SSH トンネルでアクセスしてください。
vLLM に API キーを付けるには?
vLLM のクイックスタートのとおり、–api-key を渡すか、環境変数 VLLM_API_KEY を設定します。クライアントはそのキーを Authorization: Bearer
クライアントが使うモデル名を変えるには?
–served-model-name を使います。vLLM のエンジン引数によると、指定しない場合のモデル名は model 引数(たとえばローカルパス)と同じになります。
vLLM サーバーはどのエンドポイントを提供しますか?
vLLM のサービングのドキュメントには、Completions、Chat Completions、Embeddings、Transcriptions、Translation の各 API と Responses API が挙げられています。/v1/models では提供中のモデルを一覧できます(2026-11-03 閲覧)。
CloudGPU で vLLM サーバーはどのように課金されますか?
GPU 時間の 1 分単位(切り上げ)、最低 1 分で、アイドル時間も含まれます。インスタンスを破棄すると課金は止まります。料金は https://cloudgpu.app/ja/pricing をご覧ください。
出典(2026-11-03 閲覧、Asia/Shanghai)
- vLLM クイックスタート(Python 3.11〜3.14、uv でのインストール、–torch-backend=auto、localhost:8000、–api-key / VLLM_API_KEY、–generation-config vllm):https://docs.vllm.ai/en/latest/getting_started/quickstart/
- vLLM エンジン引数(–served-model-name、–max-model-len、–gpu-memory-utilization、–generation-config、–dtype):https://docs.vllm.ai/en/latest/configuration/engine_args/
- vLLM オンラインサービング(対応する OpenAI API、チャットテンプレートの要件):https://docs.vllm.ai/en/latest/serving/online_serving/
- CloudGPU の vLLM ページ(compute capability 7.5 以上、カード):https://cloudgpu.app/rent-gpu-for-vllm
- CloudGPU API ドキュメント(idle_minutes):https://cloudgpu.app/api/docs#gpu
起動できるカードは Deploy ページに一覧があります。料金は https://cloudgpu.app/ja/pricing に掲載しており、ここでは繰り返しません。
最終更新:2026-11-03(Asia/Shanghai)。