vllm-bench-random-synthetic について
自動生成したランダムプロンプトで vLLM のサービングを測定するスキルです。リクエストとトークンのスループットに加え、初回トークン時間、出力トークンあたりの時間、トークン間遅延を記録します。
主な機能
- 01ランダムな合成ワークロード
- 02リクエストとトークンのスループット指標
- 03TTFT、TPOT、トークン間遅延
- 04ベンチマーク結果の保存
活用シーン
- 01vLLM サーバーの迅速な評価
- 02モデルサービングの基準値の取得
- 03並行数ごとの遅延比較
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vllm-project/ vllm-skills --skill vllm-bench-random-syntheticインストール後、Claude Code で/vllm-bench-random-syntheticを入力して読み込まれたか確認します。
詳細
ランダムな合成データによる vLLM ベンチマーク
ランダムな合成データを使って、vLLM サーバーのパフォーマンスを手早くベンチマークします。このスキルでは、リクエストスループット、トークンスループット、TTFT(最初のトークンまでの時間)、TPOT(出力トークンあたりの時間)、トークン間レイテンシなど、主要なサービング指標を測定します。
使用するタイミング
- vLLM のサービングパフォーマンスを手早くベンチマークしたい場合
- データセットをダウンロードせずに、スループットとレイテンシの指標を測定したい場合
- 合成ワークロードで vLLM のデプロイをテストしたい場合
- 特定のモデルのベースラインパフォーマンスを把握したい場合
前提条件
- vLLM がインストールされていること(
pip install vllm) - vLLM サーバーが実行中であること(またはベンチマークの一環として起動できること)
- GPU モデルの場合、適切なドライバーを備えた NVIDIA GPU が利用可能であること
クイックスタート
ベンチマークを実行する最も簡単な方法:
# Start vLLM server (in background or separate terminal)
vllm serve Qwen/Qwen2.5-1.5B-Instruct
# Run benchmark with random synthetic data
vllm bench serve \
--backend openai-chat \
--model Qwen/Qwen2.5-1.5B-Instruct \
--endpoint /v1/chat/completions \
--dataset-name random \
--num-prompts 10
注:
- オンラインベンチマークでは、エンドポイント
/v1/chat/completionsに対して--backend openai-chatを使用してください。
パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
--backend | バックエンドの種類:vllm、openai、openai-chat | vllm |
--model | モデル名(サーバーと一致している必要があります) | 必須 |
--endpoint | API エンドポイントのパス | /v1/completions または /v1/chat/completions |
--dataset-name | 使用するデータセット | random(合成データ) |
--num-prompts | 送信するリクエスト数 | 10 |
--port | サーバーのポート | 8000 |
--max-concurrency | 最大同時リクエスト数 | 自動 |
--save-result | 結果をファイルに保存 | オフ |
--result-dir | 結果の保存先ディレクトリ | ./ |
想定される出力
成功すると、次のような出力が表示されます:
============ Serving Benchmark Result ============
Successful requests: 10
Benchmark duration (s): 5.78
Total input tokens: 1369
Total generated tokens: 2212
Request throughput (req/s): 1.73
Output token throughput (tok/s): 382.89
Total token throughput (tok/s): 619.85
---------------Time to First Token----------------
Mean TTFT (ms): 71.54
Median TTFT (ms): 73.88
P99 TTFT (ms): 79.49
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 7.91
Median TPOT (ms): 7.96
P99 TPOT (ms): 8.03
---------------Inter-token Latency----------------
Mean ITL (ms): 7.74
Median ITL (ms): 7.70
P99 ITL (ms): 8.39
==================================================
高度な使い方
より多くのプロンプトで統計の精度を高める
vllm bench serve \
--backend openai-chat \
--model Qwen/Qwen2.5-1.5B-Instruct \
--endpoint /v1/chat/completions \
--dataset-name random \
--num-prompts 100
結果をファイルに保存する
vllm bench serve \
--backend openai-chat \
--model Qwen/Qwen2.5-1.5B-Instruct \
--endpoint /v1/chat/completions \
--dataset-name random \
--num-prompts 50 \
--save-result \
--result-dir ./benchmark-results/
ポートと同時実行数を指定する
vllm bench serve \
--backend openai-chat \
--model meta-llama/Llama-3.1-8B-Instruct \
--endpoint /v1/chat/completions \
--dataset-name random \
--num-prompts 100 \
--port 8001 \
--max-concurrency 4
推奨モデル
手早いテスト向け(小型モデル、高速):
Qwen/Qwen2.5-1.5B-Instruct(手早いテストにおすすめ)facebook/opt-125mfacebook/opt-350m
実際の使用に近いベンチマーク向け(中型モデル):
Qwen/Qwen2.5-7B-Instructmeta-llama/Llama-3.1-8B-Instructmistralai/Mistral-7B-Instruct-v0.3
ワークフロー
- vLLM がインストールされているか確認する:
vllm --versionを実行して確認します - サーバーがすでに実行中か確認する:
curl http://localhost:8000/healthを実行して確認します - 必要に応じて vLLM サーバーを起動する:
vllm serve <model-name>を実行します(「Application startup complete」が表示されるまで待ちます) - ベンチマークを実行する:適切なパラメーターを指定して
vllm bench serveを実行します - 結果を確認する:スループットとレイテンシの指標を確認します
- クリーンアップする:エージェントスキルが vLLM サーバーを起動した場合(既存のサーバーではない場合)は、ベンチマーク完了後に
kill <PID>を使って停止します
トラブルシューティング
サーバーが応答しない:
- サーバーが実行中か確認します:
curl http://localhost:8000/health - ポートが一致しているか確認します:サーバーが別のポートを使用している場合は、
--portフラグを指定します
モデルが見つからない:
- サーバーとベンチマークでモデル名が完全に一致していることを確認します
- HuggingFace へのアクセスを確認します:必要に応じて
export HF_TOKEN=<your_token>を設定します
メモリ不足:
- より小さなモデルを使用します(例:Qwen2.5-1.5B-Instruct)
--num-promptsまたは--max-concurrencyを減らします
接続が拒否される:
- サーバーの起動中である可能性があります(「Application startup complete」が表示されるまで待ちます)
- ファイアウォールまたはネットワーク設定を確認します
注記
randomデータセットは合成プロンプトを自動生成します- ベンチマークの所要時間は
--num-promptsに応じて長くなります - 本番環境のベンチマークでは、安定した統計を得るために少なくとも100件のプロンプトを使用してください
- 結果はハードウェア、モデルサイズ、システム負荷によって異なる場合があります
- 初回の実行は、モデルの読み込みとコンパイルにより時間がかかる場合があります
- 重要:エージェントスキルがベンチマーク用に vLLM サーバーを起動した場合、リソースを解放するためにベンチマーク完了後にサーバーを停止する必要があります。ベンチマーク開始前から実行していた既存のサーバーは停止しないでください。
コメント
Markdown 対応