mcpField
P
perf-test-flagos

perf-test-flagos

github.com/flagos-aiテスト・品質2248 回インストール15 週間前に更新
リポジトリ

perf-test-flagos について

vLLM サーバーを起動し、5 つのプロファイルで性能ベンチマークを実行するスキルです。FlagEval が利用可能になるまでは精度テストをスキップし、実行中のコンテナでモデルスタックを測定して JSON 結果と概要を出力します。

主な機能

  1. 01vLLM サーバーの起動と確認
  2. 025 つのプロファイルで測定
  3. 03個別の失敗後も続行
  4. 04個別・統合 JSON の保存
  5. 05状態と性能指標の報告

活用シーン

  1. 01コンテナ内のモデルを測定
  2. 02プロファイル間の性能比較
  3. 03スループットとレイテンシの収集
  4. 04失敗またはタイムアウトしたプロファイルの特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/flagos-ai/skills --skill perf-test-flagos

インストール後、Claude Code で/perf-test-flagosを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
benchmark-profiles.md
scripts/
run_all_benchmarks.py
run_benchmark.py

詳細

精度+パフォーマンステスト

対象モデルで vLLM を起動し、複数のプロファイルで精度ベンチマーク(FlagEval が利用可能な場合)とパフォーマンスベンチマーク(vllm bench serve)を実行します。

スキルの構成要素

perf-test/
├── SKILL.md                            # This file — execution flow
├── scripts/
│   ├── run_benchmark.py                # Run single benchmark profile (JSON output)
│   └── run_all_benchmarks.py           # Run all 5 profiles, collect + summarize (JSON)
└── references/
    └── benchmark-profiles.md           # Profile definitions, metrics, vllm bench usage

env-verify から再利用:

  • env-verify/scripts/test_serve_mode.py — ベンチマーク前にサーバーが正常かどうかを確認するために使用できます(任意の事前チェック)

前提条件

  • ソフトウェアスタックがインストールされたコンテナが実行中であること
  • model-verify が完了していること — 使用するスタック(full と base のどちらか)が判明していること
  • model-verify から取得したモデルパス、TP サイズ、推奨スタック

単独で呼び出された場合は、コンテナ名、モデルパス、TP サイズ、スタック構成を確認してください。 /flagrelease から呼び出された場合は、これらがコンテキストとして渡されます。

実行フロー

ステップ 1:vLLM サーバーを起動

model-verify で推奨されたスタックを使用します。vllm serve のコマンドパターンについては、references/benchmark-profiles.md を参照してください。

docker exec -d <CONTAINER> bash -c '
export USE_FLAGGEMS=<0|1>
export FLAGCX_PATH=<path_or_unset>
export VLLM_PLUGINS=<fl_or_unset>
vllm serve <MODEL_PATH> \
    --tensor-parallel-size <TP_SIZE> \
    --max-num-batched-tokens 4096 \
    --max-num-seqs 256 \
    --trust-remote-code \
    --port 8000 \
    <EXTRA_ARGS>
'

サーバーの起動完了を待ちます(/health をポーリング、タイムアウト 300s):

docker exec <CONTAINER> bash -c '
for i in $(seq 1 150); do
    if curl -s http://localhost:8000/health 2>/dev/null | grep -qE "ok|200|\{\}"; then
        echo "SERVER_READY"; break
    fi
    sleep 2
done
'

サーバーが起動しない場合は、エラーを報告して終了します。

ステップ 2:サーバーからモデル名を取得
docker exec <CONTAINER> bash -c '
curl -s http://localhost:8000/v1/models | python3 -c "
import json, sys; print(json.load(sys.stdin)[\"data\"][0][\"id\"])"
'

パート A:精度テスト(FlagEval)— プレースホルダー

ステータス: FlagEval テストクライアントはまだ利用できません。

FlagEval が利用可能になったら、このセクションを以下の内容で更新してください。

  • Docker イメージの URL または pip パッケージ名
  • 対応するベンチマーク(MMLU、GSM8K、HumanEval など)
  • 必須の引数と構成
  • 想定される出力形式
  • 合格/不合格の基準(精度のしきい値)

現在の動作: 精度テストを SKIPPED として報告します。


パート B:パフォーマンスベンチマーク

ステップ 3:すべてのベンチマークプロファイルを実行

スクリプトをコンテナにコピーして実行します。

docker cp <SKILL_DIR>/scripts/run_benchmark.py <CONTAINER>:/tmp/
docker cp <SKILL_DIR>/scripts/run_all_benchmarks.py <CONTAINER>:/tmp/

docker exec <CONTAINER> python3 /tmp/run_all_benchmarks.py \
    --model <MODEL_NAME> \
    --tokenizer <MODEL_PATH> \
    --port 8000 \
    --output-dir /data/results/perf

このスクリプトはデフォルトの 5 つのプロファイルをすべて実行し(references/benchmark-profiles.md を参照)、プロファイルごとの JSON を /data/results/perf/ に保存して、サマリーテーブルを含む統合 JSON レポートを出力します。

重要: 1 つのプロファイルで失敗しても、残りのプロファイルはスキップされません。

ステップ 4:サーバーを停止
docker exec <CONTAINER> bash -c 'pkill -f "vllm serve" || true'
ステップ 5:レポートを作成
{
  "status": "PASS | PARTIAL | FAIL",
  "stage": "perf-test",
  "model": "<MODEL_PATH>",
  "tensor_parallel_size": 8,
  "flags": {"USE_FLAGGEMS": "1|0", "FLAGCX_PATH": "..."},
  "accuracy": {
    "status": "SKIPPED",
    "reason": "FlagEval test client not yet available"
  },
  "performance": {
    "status": "PASS | PARTIAL | FAIL",
    "profiles_passed": "5/5",
    "profiles": [ "...per-profile results..." ],
    "summary_table": "...markdown table..."
  }
}

サマリーテーブルをユーザーに提示します。

| Profile | Input | Output | Prompts | Req/s | Tok/s | TTFT(ms) | TPOT(ms) | P99(ms) | Status |
|---------|-------|--------|---------|-------|-------|----------|----------|---------|--------|
| ...     | ...   | ...    | ...     | ...   | ...   | ...      | ...      | ...     | ...    |

ステータスの判定ロジック:

  • PASS — すべてのプロファイルが完了
  • PARTIAL — 一部は成功し、一部は失敗
  • FAIL — サーバーが起動しなかった、またはすべてのプロファイルが失敗

エラー処理

失敗動作
サーバーの起動に失敗エラーを報告して終了
vllm bench serve が見つからないvllm のバージョンに関する問題を報告
1 つのプロファイルが失敗エラーを報告し、残りのプロファイルを続行
1 つのプロファイルがタイムアウト600s 後に停止し、部分的な結果を報告して続行
ベンチマーク中にサーバーがクラッシュログを取得し、クラッシュの原因となったプロファイルを報告
高い並行実行数で OOM が発生報告し、num_prompts を減らすよう提案

タイムアウトのルール

操作タイムアウト
サーバーの起動300s
プロファイルごとのベンチマーク600s

コメント