From 27ceaac47f6e3118cf97971773be939025d29e4c Mon Sep 17 00:00:00 2001 From: yy-fighting Date: Wed, 8 Jul 2026 11:21:15 +0000 Subject: [PATCH] results(long-context-matrix): complete 64k/128k/256k matrix run 20260708-100016; use common scripts --- .../dsv4_h200_long_context_matrix/compare.py | 85 -- .../parse_backend.py | 219 --- .../results/20260708-100016/comparison.md | 61 + .../results/20260708-100016/sglang/report.md | 35 + .../20260708-100016/sglang/results.json | 1219 +++++++++++++++++ .../results/20260708-100016/vllm/report.md | 35 + .../results/20260708-100016/vllm/results.json | 1219 +++++++++++++++++ .../run_bench.sh | 6 +- .../dsv4_h200_long_context_matrix/warmup.py | 76 - 9 files changed, 2572 insertions(+), 383 deletions(-) delete mode 100755 experiments/dsv4_h200_long_context_matrix/compare.py delete mode 100755 experiments/dsv4_h200_long_context_matrix/parse_backend.py create mode 100644 experiments/dsv4_h200_long_context_matrix/results/20260708-100016/comparison.md create mode 100644 experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/report.md create mode 100644 experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/results.json create mode 100644 experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/report.md create mode 100644 experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/results.json delete mode 100755 experiments/dsv4_h200_long_context_matrix/warmup.py diff --git a/experiments/dsv4_h200_long_context_matrix/compare.py b/experiments/dsv4_h200_long_context_matrix/compare.py deleted file mode 100755 index 1b9b432..0000000 --- a/experiments/dsv4_h200_long_context_matrix/compare.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python3 -"""Generate a side-by-side comparison of SGLang and vLLM results. - -Usage: - python3 compare.py --sglang --vllm \ - [--output comparison.md] -""" -import argparse -import json -from collections import defaultdict -from pathlib import Path - - -def load_result(result_root: Path) -> dict: - path = result_root / "results.json" - with open(path, "r", encoding="utf-8") as f: - return json.load(f) - - -def slo_status(ttft_p95_ms: float, tpot_mean_ms: float) -> str: - # S2 tier targets from docs/SLO_STANDARDS.md. - ttft_ok = ttft_p95_ms < 3000.0 - tpot_ok = tpot_mean_ms < 50.0 - if ttft_ok and tpot_ok: - return "✅" - if ttft_ok or tpot_ok: - return "⚠️" - return "❌" - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("--sglang", type=Path, required=True) - parser.add_argument("--vllm", type=Path, required=True) - parser.add_argument("-o", "--output", type=Path, default=Path("comparison.md")) - args = parser.parse_args() - - sglang_data = load_result(args.sglang) - vllm_data = load_result(args.vllm) - - by_scenario = defaultdict(dict) - for data in (sglang_data, vllm_data): - backend = data["metadata"]["engine"] - for s in data.get("scenarios", []): - key = s["name"] - by_scenario[key][backend] = s - - with open(args.output, "w", encoding="utf-8") as f: - f.write("# SGLang vs vLLM on DeepSeek-V4-Flash (H200, TP=8)\n\n") - f.write("## Summary\n\n") - f.write("- Model: `/data/models/DeepSeek-V4-Flash`\n") - f.write("- Hardware: 8x NVIDIA H200 143GB\n") - f.write("- Tensor Parallelism: 8\n") - f.write("- Benchmark client: `sglang.bench_serving`\n") - f.write("- SLO reference: S2 tier (TTFT P95 < 3s, TPOT < 50ms)\n\n") - - f.write("## Side-by-side results\n\n") - f.write("| Scenario | Backend | Conc | Input | Output | Req/s | OutTok/s | TTFT P95(ms) | TTFT P99(ms) | TPOT Mean(ms) | TPOT P95(ms) | TPOT P99(ms) | E2E P99(ms) | SLO |\n") - f.write("|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|\n") - - for scenario_name in sorted(by_scenario.keys()): - for backend in ("sglang", "vllm"): - s = by_scenario[scenario_name].get(backend) - if s is None: - continue - cfg = s["config"] - m = s["metrics"] - status = slo_status(m["ttft_ms"]["p95"], m["tpot_ms"]["mean"]) - f.write( - f"| {scenario_name} | {backend} | {cfg['concurrency']} | {cfg['input_len']} | {cfg['output_len']} | " - f"{m['request_throughput']:.2f} | {m['output_token_throughput']:.2f} | " - f"{m['ttft_ms']['p95']:.2f} | {m['ttft_ms']['p99']:.2f} | " - f"{m['tpot_ms']['mean']:.2f} | {m['tpot_ms']['p95']:.2f} | {m['tpot_ms']['p99']:.2f} | " - f"{m['e2e_ms']['p99']:.2f} | {status} |\n" - ) - - f.write("\n## Notes\n\n") - f.write("- SLO check uses TTFT P95 and TPOT mean (the same criteria as `docs/SLO_STANDARDS.md`).\n") - f.write("- A ⚠️ indicates one of the two metrics is out of target; ❌ indicates both are out.\n") - - print(f"Wrote comparison to {args.output}") - - -if __name__ == "__main__": - main() diff --git a/experiments/dsv4_h200_long_context_matrix/parse_backend.py b/experiments/dsv4_h200_long_context_matrix/parse_backend.py deleted file mode 100755 index 935d870..0000000 --- a/experiments/dsv4_h200_long_context_matrix/parse_backend.py +++ /dev/null @@ -1,219 +0,0 @@ -#!/usr/bin/env python3 -"""Parse raw sglang.bench_serving JSONL outputs for one backend. - -Reads JSONL files like {sglang|vllm}_phase1_MMDD_concurrency_inputlen_outputlen.jsonl -and generates results.json + report.md in the given result root. - -Usage: - python3 parse_backend.py [--backend sglang|vllm] -""" -import argparse -import json -import re -import sys -from pathlib import Path - - -def parse_jsonl(path: Path) -> dict | None: - with open(path, "r", encoding="utf-8") as f: - for line in f: - line = line.strip() - if not line: - continue - try: - return json.loads(line) - except json.JSONDecodeError: - continue - return None - - -def compute_metrics(data: dict) -> dict: - completed = data.get("completed", 0) - total = len(data.get("input_lens", [])) - failed = total - completed if total > 0 else 0 - duration_s = data.get("duration", 0.0) - - return { - "success": completed, - "failed": failed, - "duration_s": duration_s, - "request_throughput": data.get("request_throughput", 0.0), - "input_token_throughput": data.get("input_throughput", 0.0), - "output_token_throughput": data.get("output_throughput", 0.0), - "total_token_throughput": data.get("total_throughput", 0.0), - "total_input_tokens": data.get("total_input_tokens", 0), - "total_output_tokens": data.get("total_output_tokens", 0), - "e2e_ms": { - "mean": data.get("mean_e2e_latency_ms", 0.0), - "p50": data.get("median_e2e_latency_ms", 0.0), - "p90": data.get("p90_e2e_latency_ms", 0.0), - "p95": data.get("p95_e2e_latency_ms", 0.0), - "p99": data.get("p99_e2e_latency_ms", 0.0), - }, - "ttft_ms": { - "mean": data.get("mean_ttft_ms", 0.0), - "p50": data.get("median_ttft_ms", 0.0), - "p90": data.get("p90_ttft_ms", 0.0), - "p95": data.get("p95_ttft_ms", 0.0), - "p99": data.get("p99_ttft_ms", 0.0), - }, - "tpot_ms": { - "mean": data.get("mean_tpot_ms", 0.0), - "p50": data.get("median_tpot_ms", 0.0), - "p90": data.get("p90_tpot_ms", 0.0), - "p95": data.get("p95_tpot_ms", 0.0), - "p99": data.get("p99_tpot_ms", 0.0), - }, - "itl_ms": { - "mean": data.get("mean_itl_ms", 0.0), - "p50": data.get("median_itl_ms", 0.0), - "p90": data.get("p90_itl_ms", 0.0), - "p95": data.get("p95_itl_ms", 0.0), - "p99": data.get("p99_itl_ms", 0.0), - }, - } - - -def scenario_name(concurrency: int, input_len: int, output_len: int) -> str: - return f"c{concurrency}_i{input_len}_o{output_len}" - - -def slo_status(metrics: dict) -> dict: - """Check S2-tier SLO: TTFT P95 < 3s, TPOT mean < 50ms.""" - ttft_ok = metrics["ttft_ms"]["p95"] < 3000.0 - tpot_ok = metrics["tpot_ms"]["mean"] < 50.0 - if ttft_ok and tpot_ok: - mark = "✅" - elif ttft_ok or tpot_ok: - mark = "⚠️" - else: - mark = "❌" - return { - "ttft_p95_ok": ttft_ok, - "tpot_mean_ok": tpot_ok, - "overall": mark, - } - - -def append_scenario(results_json: Path, scenario: dict) -> None: - with open(results_json, "r", encoding="utf-8") as f: - data = json.load(f) - data["scenarios"].append(scenario) - with open(results_json, "w", encoding="utf-8") as f: - json.dump(data, f, indent=2, ensure_ascii=False) - - -def generate_report(result_root: Path, backend: str, scenarios: list[dict]) -> None: - report_path = result_root / "report.md" - with open(report_path, "w", encoding="utf-8") as f: - f.write(f"# H200 {backend.upper()} Comparison Benchmark Report\n\n") - f.write(f"- Result root: `{result_root}`\n") - f.write(f"- Model: `/data/models/DeepSeek-V4-Flash`\n") - f.write(f"- Backend: {backend.upper()} (TP=8)\n") - f.write(f"- Benchmark client: `sglang.bench_serving --backend {backend}`\n\n") - - f.write("## Results\n\n") - f.write("| Scenario | Phase | Concurrency | Input | Output | Duration(s) | Success | Req/s | In tok/s | Out tok/s | Total tok/s | Mean TTFT(ms) | P95 TTFT(ms) | P99 TTFT(ms) | Mean TPOT(ms) | P95 TPOT(ms) | P99 TPOT(ms) | Mean E2E(ms) | P95 E2E(ms) | P99 E2E(ms) | SLO |\n") - f.write("|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|\n") - - for s in scenarios: - cfg = s["config"] - m = s["metrics"] - slo = s.get("slo_status", {}).get("overall", "") - f.write( - f"| {s['name']} | {cfg['phase']} | {cfg['concurrency']} | {cfg['input_len']} | {cfg['output_len']} | " - f"{m['duration_s']:.2f} | {m['success']} | {m['request_throughput']:.2f} | " - f"{m['input_token_throughput']:.2f} | {m['output_token_throughput']:.2f} | " - f"{m['total_token_throughput']:.2f} | " - f"{m['ttft_ms']['mean']:.2f} | {m['ttft_ms']['p95']:.2f} | {m['ttft_ms']['p99']:.2f} | " - f"{m['tpot_ms']['mean']:.2f} | {m['tpot_ms']['p95']:.2f} | {m['tpot_ms']['p99']:.2f} | " - f"{m['e2e_ms']['mean']:.2f} | {m['e2e_ms']['p95']:.2f} | {m['e2e_ms']['p99']:.2f} | {slo} |\n" - ) - f.write("\n") - f.write("SLO: S2 tier — TTFT P95 < 3000ms, TPOT mean < 50ms. ✅ pass, ⚠️ partial, ❌ fail.\n\n") - - -def main() -> None: - parser = argparse.ArgumentParser() - parser.add_argument("result_root", type=Path) - parser.add_argument("--backend", default=None, choices=["sglang", "vllm"]) - args = parser.parse_args() - - result_root = args.result_root - raw_dir = result_root / "raw_outputs" - results_json = result_root / "results.json" - - if not raw_dir.exists(): - raise SystemExit(f"raw_outputs directory not found: {raw_dir}") - - backend = args.backend - if backend is None: - # Infer from filenames if not provided. - for p in raw_dir.iterdir(): - if p.name.startswith("sglang_"): - backend = "sglang" - break - if p.name.startswith("vllm_"): - backend = "vllm" - break - if backend is None: - raise SystemExit("Could not infer backend from raw outputs") - - scenarios = [] - for jsonl_path in sorted(raw_dir.glob(f"{backend}_*.jsonl")): - parts = jsonl_path.stem.split("_") - if len(parts) < 5: - continue - - label = parts[1] - if label == "sharegpt": - phase = "sharegpt" - dataset = "sharegpt" - else: - phase = label - dataset = "random" - - # The last three numeric tokens are: concurrency, input_len/output_ctx, output_len. - try: - concurrency, input_len, output_len = int(parts[-3]), int(parts[-2]), int(parts[-1]) - except ValueError: - continue - - data = parse_jsonl(jsonl_path) - if data is None: - continue - - metrics = compute_metrics(data) - scenario = { - "name": scenario_name(concurrency, input_len, output_len), - "config": { - "phase": phase, - "concurrency": concurrency, - "input_len": input_len, - "output_len": output_len, - "dataset": dataset, - "num_prompts": metrics["success"] + metrics["failed"], - }, - "metrics": metrics, - "slo_status": slo_status(metrics), - "raw_file": str(jsonl_path), - } - scenarios.append(scenario) - - if not scenarios: - print("No benchmark outputs found to parse") - return - - if results_json.exists(): - with open(results_json, "r", encoding="utf-8") as f: - data = json.load(f) - data["scenarios"] = scenarios - with open(results_json, "w", encoding="utf-8") as f: - json.dump(data, f, indent=2, ensure_ascii=False) - - generate_report(result_root, backend, scenarios) - print(f"Parsed {len(scenarios)} scenarios into {result_root}/report.md") - - -if __name__ == "__main__": - main() diff --git a/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/comparison.md b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/comparison.md new file mode 100644 index 0000000..89ef577 --- /dev/null +++ b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/comparison.md @@ -0,0 +1,61 @@ +# SGLang vs vLLM on DeepSeek-V4-Flash (H200, TP=8) + +## Summary + +- Model: `/data/models/DeepSeek-V4-Flash` +- Hardware: 8x NVIDIA H200 143GB +- Tensor Parallelism: 8 +- Benchmark client: `sglang.bench_serving` +- SLO reference: S2 tier (TTFT P95 < 3s, TPOT < 50ms) + +## Side-by-side results + +| Scenario | Backend | Conc | Input | Output | Req/s | OutTok/s | TTFT P95(ms) | TTFT P99(ms) | TPOT Mean(ms) | TPOT P95(ms) | TPOT P99(ms) | E2E P99(ms) | SLO | +|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| c10_i131072_o1024 | sglang | 10 | 131072 | 1024 | 0.68 | 319.74 | 4147.51 | 7409.82 | 25.69 | 49.89 | 58.92 | 26432.66 | ⚠️ | +| c10_i131072_o1024 | vllm | 10 | 131072 | 1024 | 0.39 | 183.08 | 6596.15 | 6603.12 | 47.10 | 77.53 | 84.06 | 48426.64 | ⚠️ | +| c10_i131072_o256 | sglang | 10 | 131072 | 256 | 0.34 | 42.70 | 26046.62 | 26064.38 | 1374.50 | 1810.56 | 19553.62 | 58326.41 | ❌ | +| c10_i131072_o256 | vllm | 10 | 131072 | 256 | 0.38 | 48.09 | 23250.03 | 24238.33 | 150.22 | 299.91 | 301.72 | 51439.08 | ❌ | +| c10_i131072_o4096 | sglang | 10 | 131072 | 4096 | 0.27 | 517.96 | 6177.42 | 6920.28 | 14.21 | 19.92 | 25.87 | 54286.63 | ⚠️ | +| c10_i131072_o4096 | vllm | 10 | 131072 | 4096 | 0.23 | 445.81 | 2096.29 | 2168.81 | 18.57 | 21.47 | 21.61 | 67041.13 | ✅ | +| c10_i262144_o1024 | sglang | 10 | 262144 | 1024 | 0.16 | 76.30 | 39446.96 | 43965.67 | 108.42 | 202.43 | 202.90 | 120180.87 | ❌ | +| c10_i262144_o1024 | vllm | 10 | 262144 | 1024 | 0.18 | 84.63 | 34130.22 | 38144.40 | 98.87 | 142.57 | 266.08 | 108658.89 | ❌ | +| c10_i262144_o256 | sglang | 10 | 262144 | 256 | 0.15 | 18.70 | 58074.31 | 62652.59 | 2953.70 | 3625.59 | 41185.32 | 134628.33 | ❌ | +| c10_i262144_o256 | vllm | 10 | 262144 | 256 | 0.18 | 22.76 | 50632.44 | 51883.02 | 229.20 | 339.27 | 344.95 | 110216.92 | ❌ | +| c10_i262144_o4096 | sglang | 10 | 262144 | 4096 | 0.14 | 272.46 | 18088.12 | 22579.09 | 28.00 | 43.87 | 45.07 | 120183.75 | ⚠️ | +| c10_i262144_o4096 | vllm | 10 | 262144 | 4096 | 0.11 | 215.86 | 34100.32 | 38022.94 | 37.18 | 56.07 | 62.00 | 157944.21 | ⚠️ | +| c25_i65536_o1024 | sglang | 25 | 65536 | 1024 | 0.67 | 346.70 | 19996.43 | 24478.11 | 149.27 | 395.00 | 2037.09 | 69586.94 | ❌ | +| c25_i65536_o1024 | vllm | 25 | 65536 | 1024 | 0.64 | 332.61 | 24861.20 | 28942.75 | 72.36 | 196.24 | 271.32 | 72689.84 | ❌ | +| c25_i65536_o256 | sglang | 25 | 65536 | 256 | 0.71 | 84.45 | 27219.06 | 31612.70 | 292.84 | 801.18 | 938.43 | 68854.26 | ❌ | +| c25_i65536_o256 | vllm | 25 | 65536 | 256 | 0.81 | 95.60 | 24902.72 | 28974.45 | 180.78 | 273.59 | 278.16 | 60781.45 | ❌ | +| c25_i65536_o4096 | sglang | 25 | 65536 | 4096 | 0.41 | 950.01 | 18559.58 | 23249.71 | 23.78 | 42.50 | 82.84 | 96670.12 | ⚠️ | +| c25_i65536_o4096 | vllm | 25 | 65536 | 4096 | 0.32 | 741.71 | 24847.97 | 28840.96 | 28.80 | 46.66 | 63.40 | 129654.04 | ⚠️ | +| c2_i131072_o1024 | sglang | 2 | 131072 | 1024 | 0.60 | 136.10 | 479.99 | 482.72 | 8.56 | 9.72 | 9.79 | 5480.98 | ✅ | +| c2_i131072_o1024 | vllm | 2 | 131072 | 1024 | 0.70 | 158.36 | 676.14 | 695.90 | 6.49 | 8.20 | 8.34 | 4803.24 | ✅ | +| c2_i131072_o256 | sglang | 2 | 131072 | 256 | 1.43 | 139.48 | 589.14 | 605.33 | 8.29 | 8.96 | 9.05 | 1750.12 | ✅ | +| c2_i131072_o256 | vllm | 2 | 131072 | 256 | 1.51 | 147.12 | 684.63 | 700.28 | 7.08 | 9.27 | 9.45 | 1556.46 | ✅ | +| c2_i131072_o4096 | sglang | 2 | 131072 | 4096 | 0.11 | 244.38 | 584.43 | 599.22 | 7.53 | 7.61 | 7.62 | 28360.35 | ✅ | +| c2_i131072_o4096 | vllm | 2 | 131072 | 4096 | 0.12 | 262.22 | 671.34 | 688.15 | 7.09 | 7.17 | 7.18 | 26496.04 | ✅ | +| c2_i262144_o1024 | sglang | 2 | 262144 | 1024 | 0.51 | 114.94 | 1007.07 | 1024.10 | 8.36 | 9.03 | 9.06 | 6240.65 | ✅ | +| c2_i262144_o1024 | vllm | 2 | 262144 | 1024 | 0.19 | 43.14 | 8722.76 | 9009.70 | 20.17 | 52.24 | 57.91 | 13826.13 | ⚠️ | +| c2_i262144_o256 | sglang | 2 | 262144 | 256 | 0.29 | 28.44 | 9538.91 | 9980.78 | 14.10 | 26.98 | 29.16 | 11941.34 | ⚠️ | +| c2_i262144_o256 | vllm | 2 | 262144 | 256 | 0.23 | 22.74 | 8625.18 | 8952.31 | 10.18 | 23.01 | 25.44 | 10378.60 | ⚠️ | +| c2_i262144_o4096 | sglang | 2 | 262144 | 4096 | 0.08 | 189.78 | 9453.57 | 9896.38 | 7.82 | 8.48 | 8.60 | 38723.14 | ⚠️ | +| c2_i262144_o4096 | vllm | 2 | 262144 | 4096 | 0.08 | 180.76 | 8759.63 | 9062.80 | 8.63 | 11.53 | 12.01 | 35881.75 | ⚠️ | +| c5_i131072_o1024 | sglang | 5 | 131072 | 1024 | 0.87 | 321.54 | 1231.23 | 1298.36 | 9.03 | 10.47 | 10.71 | 7298.25 | ✅ | +| c5_i131072_o1024 | vllm | 5 | 131072 | 1024 | 0.90 | 331.65 | 856.18 | 917.80 | 8.93 | 10.48 | 10.62 | 6989.27 | ✅ | +| c5_i131072_o256 | sglang | 5 | 131072 | 256 | 1.05 | 146.97 | 3270.23 | 4685.65 | 19.91 | 40.81 | 46.10 | 7815.89 | ⚠️ | +| c5_i131072_o256 | vllm | 5 | 131072 | 256 | 0.39 | 54.07 | 9384.23 | 9677.91 | 51.54 | 107.16 | 117.25 | 19860.69 | ❌ | +| c5_i131072_o4096 | sglang | 5 | 131072 | 4096 | 0.20 | 378.76 | 4667.56 | 6275.51 | 11.98 | 22.07 | 23.60 | 31176.81 | ⚠️ | +| c5_i131072_o4096 | vllm | 5 | 131072 | 4096 | 0.23 | 447.85 | 1054.01 | 1104.66 | 8.48 | 9.13 | 9.14 | 28818.20 | ✅ | +| c5_i262144_o1024 | sglang | 5 | 262144 | 1024 | 0.15 | 56.42 | 20522.02 | 25944.29 | 54.11 | 118.98 | 124.02 | 53444.22 | ❌ | +| c5_i262144_o1024 | vllm | 5 | 262144 | 1024 | 0.16 | 60.32 | 22564.89 | 26639.92 | 47.49 | 100.69 | 109.86 | 53790.59 | ⚠️ | +| c5_i262144_o256 | sglang | 5 | 262144 | 256 | 0.16 | 21.94 | 25875.40 | 30596.95 | 97.05 | 231.75 | 252.98 | 43756.53 | ❌ | +| c5_i262144_o256 | vllm | 5 | 262144 | 256 | 0.19 | 25.85 | 21986.99 | 26381.86 | 123.42 | 202.78 | 215.56 | 45761.90 | ❌ | +| c5_i262144_o4096 | sglang | 5 | 262144 | 4096 | 0.11 | 209.50 | 16539.50 | 20323.40 | 25.05 | 56.69 | 60.22 | 60383.57 | ⚠️ | +| c5_i262144_o4096 | vllm | 5 | 262144 | 4096 | 0.11 | 205.12 | 22171.78 | 26533.69 | 25.69 | 63.32 | 68.33 | 64086.27 | ⚠️ | + +## Notes + +- SLO check uses TTFT P95 and TPOT mean (the same criteria as `docs/SLO_STANDARDS.md`). +- A ⚠️ indicates one of the two metrics is out of target; ❌ indicates both are out. diff --git a/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/report.md b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/report.md new file mode 100644 index 0000000..452fe6c --- /dev/null +++ b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/report.md @@ -0,0 +1,35 @@ +# H200 SGLANG Comparison Benchmark Report + +- Result root: `/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang` +- Model: `/data/models/DeepSeek-V4-Flash` +- Backend: SGLANG (TP=8) +- Benchmark client: `sglang.bench_serving --backend sglang` + +## Results + +| Scenario | Phase | Concurrency | Input | Output | Duration(s) | Success | Req/s | In tok/s | Out tok/s | Total tok/s | Mean TTFT(ms) | P95 TTFT(ms) | P99 TTFT(ms) | Mean TPOT(ms) | P95 TPOT(ms) | P99 TPOT(ms) | Mean E2E(ms) | P95 E2E(ms) | P99 E2E(ms) | SLO | +|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| c10_i131072_o1024 | 128k | 10 | 131072 | 1024 | 29.58 | 20 | 0.68 | 49838.58 | 319.74 | 50158.31 | 1968.70 | 4147.51 | 7409.82 | 25.69 | 49.89 | 58.92 | 13268.98 | 25531.40 | 26432.66 | ⚠️ | +| c10_i131072_o256 | 128k | 10 | 131072 | 256 | 59.65 | 20 | 0.34 | 24716.54 | 42.70 | 24759.24 | 9130.87 | 26046.62 | 26064.38 | 1374.50 | 1810.56 | 19553.62 | 29314.12 | 58034.97 | 58326.41 | ❌ | +| c10_i131072_o4096 | 128k | 10 | 131072 | 4096 | 73.62 | 20 | 0.27 | 20027.92 | 517.96 | 20545.89 | 2624.32 | 6177.42 | 6920.28 | 14.21 | 19.92 | 25.87 | 28500.68 | 53466.72 | 54286.63 | ⚠️ | +| c2_i131072_o1024 | 128k | 2 | 131072 | 1024 | 6.62 | 4 | 0.60 | 36602.18 | 136.10 | 36738.28 | 363.59 | 479.99 | 482.72 | 8.56 | 9.72 | 9.79 | 2166.16 | 4983.98 | 5480.98 | ✅ | +| c2_i131072_o256 | 128k | 2 | 131072 | 256 | 2.79 | 4 | 1.43 | 86882.00 | 139.48 | 87021.48 | 423.87 | 589.14 | 605.33 | 8.29 | 8.96 | 9.05 | 1238.88 | 1727.94 | 1750.12 | ✅ | +| c2_i131072_o4096 | 128k | 2 | 131072 | 4096 | 37.21 | 4 | 0.11 | 6512.27 | 244.38 | 6756.65 | 417.65 | 584.43 | 599.22 | 7.53 | 7.61 | 7.62 | 17481.60 | 27763.29 | 28360.35 | ✅ | +| c5_i131072_o1024 | 128k | 5 | 131072 | 1024 | 11.51 | 10 | 0.87 | 64181.45 | 321.54 | 64502.99 | 747.50 | 1231.23 | 1298.36 | 9.03 | 10.47 | 10.71 | 4011.50 | 6687.19 | 7298.25 | ✅ | +| c5_i131072_o256 | 128k | 5 | 131072 | 256 | 9.50 | 10 | 1.05 | 77752.11 | 146.97 | 77899.07 | 1222.22 | 3270.23 | 4685.65 | 19.91 | 40.81 | 46.10 | 4366.18 | 7814.85 | 7815.89 | ⚠️ | +| c5_i131072_o4096 | 128k | 5 | 131072 | 4096 | 50.32 | 10 | 0.20 | 14676.36 | 378.76 | 15055.12 | 1452.15 | 4667.56 | 6275.51 | 11.98 | 22.07 | 23.60 | 19785.61 | 30849.59 | 31176.81 | ⚠️ | +| c10_i262144_o1024 | 256k | 10 | 262144 | 1024 | 123.96 | 20 | 0.16 | 22467.00 | 76.30 | 22543.30 | 12461.07 | 39446.96 | 43965.67 | 108.42 | 202.43 | 202.90 | 60222.02 | 119241.30 | 120180.87 | ❌ | +| c10_i262144_o256 | 256k | 10 | 262144 | 256 | 136.21 | 20 | 0.15 | 20447.06 | 18.70 | 20465.76 | 21481.91 | 58074.31 | 62652.59 | 2953.70 | 3625.59 | 41185.32 | 67539.67 | 134322.68 | 134628.33 | ❌ | +| c10_i262144_o4096 | 256k | 10 | 262144 | 4096 | 139.95 | 20 | 0.14 | 19900.66 | 272.46 | 20173.12 | 8041.92 | 18088.12 | 22579.09 | 28.00 | 43.87 | 45.07 | 61533.12 | 119183.37 | 120183.75 | ⚠️ | +| c2_i262144_o1024 | 256k | 2 | 262144 | 1024 | 7.84 | 4 | 0.51 | 64353.10 | 114.94 | 64468.04 | 817.04 | 1007.07 | 1024.10 | 8.36 | 9.03 | 9.06 | 2623.61 | 5714.71 | 6240.65 | ✅ | +| c2_i262144_o256 | 256k | 2 | 262144 | 256 | 13.68 | 4 | 0.29 | 36885.02 | 28.44 | 36913.47 | 4623.18 | 9538.91 | 9980.78 | 14.10 | 26.98 | 29.16 | 6497.61 | 11731.18 | 11941.34 | ⚠️ | +| c2_i262144_o4096 | 256k | 2 | 262144 | 4096 | 47.91 | 4 | 0.08 | 10528.36 | 189.78 | 10718.13 | 4475.72 | 9453.57 | 9896.38 | 7.82 | 8.48 | 8.60 | 22625.15 | 38039.50 | 38723.14 | ⚠️ | +| c5_i262144_o1024 | 256k | 5 | 262144 | 1024 | 65.58 | 10 | 0.15 | 21254.00 | 56.42 | 21310.42 | 9553.36 | 20522.02 | 25944.29 | 54.11 | 118.98 | 124.02 | 29705.24 | 53300.68 | 53444.22 | ❌ | +| c5_i262144_o256 | 256k | 5 | 262144 | 256 | 63.62 | 10 | 0.16 | 21909.37 | 21.94 | 21931.32 | 12937.52 | 25875.40 | 30596.95 | 97.05 | 231.75 | 252.98 | 27766.49 | 43745.44 | 43756.53 | ❌ | +| c5_i262144_o4096 | 256k | 5 | 262144 | 4096 | 90.98 | 10 | 0.11 | 15321.51 | 209.50 | 15531.02 | 6888.18 | 16539.50 | 20323.40 | 25.05 | 56.69 | 60.22 | 40104.55 | 58680.97 | 60383.57 | ⚠️ | +| c25_i65536_o1024 | 64k | 25 | 65536 | 1024 | 74.65 | 50 | 0.67 | 24668.22 | 346.70 | 25014.92 | 6120.96 | 19996.43 | 24478.11 | 149.27 | 395.00 | 2037.09 | 34945.80 | 68400.96 | 69586.94 | ❌ | +| c25_i65536_o256 | 64k | 25 | 65536 | 256 | 70.02 | 50 | 0.71 | 26299.26 | 84.45 | 26383.70 | 9330.86 | 27219.06 | 31612.70 | 292.84 | 801.18 | 938.43 | 34392.33 | 68802.89 | 68854.26 | ❌ | +| c25_i65536_o4096 | 64k | 25 | 65536 | 4096 | 122.10 | 50 | 0.41 | 15081.87 | 950.01 | 16031.88 | 5499.83 | 18559.58 | 23249.71 | 23.78 | 42.50 | 82.84 | 52152.37 | 93852.74 | 96670.12 | ⚠️ | + +SLO: S2 tier — TTFT P95 < 3000ms, TPOT mean < 50ms. ✅ pass, ⚠️ partial, ❌ fail. + diff --git a/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/results.json b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/results.json new file mode 100644 index 0000000..0f3ed10 --- /dev/null +++ b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/results.json @@ -0,0 +1,1219 @@ +{ + "metadata": { + "experiment": "dsv4_h200_long_context_matrix_sglang", + "run_id": "20260708-100016", + "timestamp": "2026-07-08T10:00:20+00:00", + "model": "/data/models/DeepSeek-V4-Flash", + "backend": "sglang", + "engine": "sglang", + "hardware": "8x NVIDIA H200 143GB", + "accelerator": "NVIDIA H200", + "chip": "nvidia_h200", + "script": "experiments/dsv4_h200_long_context_matrix/run_bench.sh", + "env": "/data/user1/yy/envs/sglang", + "git_commit": "7e35945", + "git_dirty": "dirty", + "description": "H200 long-context matrix sglang TP=8 for DeepSeek-V4-Flash" + }, + "config": { + "tp": 8, + "cuda_visible_devices": "0,1,2,3,4,5,6,7", + "backend": "sglang", + "server_start_script": "experiments/dsv4_h200_long_context_matrix/start_sglang.sh", + "groups": [ + { + "label": "64k", + "max_model_len": 80000, + "max_slots": 25 + }, + { + "label": "128k", + "max_model_len": 140000, + "max_slots": 10 + }, + { + "label": "256k", + "max_model_len": 270000, + "max_slots": 10 + } + ] + }, + "scenarios": [ + { + "name": "c10_i131072_o1024", + "config": { + "phase": "128k", + "concurrency": 10, + "input_len": 131072, + "output_len": 1024, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 29.583529918003478, + "request_throughput": 0.6760518455854964, + "input_token_throughput": 49838.57585915508, + "output_token_throughput": 319.73872036966054, + "total_token_throughput": 50158.31457952473, + "total_input_tokens": 1474401, + "total_output_tokens": 9459, + "e2e_ms": { + "mean": 13268.980272101908, + "p50": 10510.840059003385, + "p90": 24816.737577588356, + "p95": 25531.396126995245, + "p99": 26432.655442199466 + }, + "ttft_ms": { + "mean": 1968.6975458011148, + "p50": 1759.2950304970145, + "p90": 3613.020290805435, + "p95": 4147.509501551397, + "p99": 7409.8210011149 + }, + "tpot_ms": { + "mean": 25.693756340936623, + "p50": 24.88176984022087, + "p90": 39.529624163622046, + "p95": 49.887355328486585, + "p99": 58.924154640674516 + }, + "itl_ms": { + "mean": 23.943748617228504, + "p50": 8.454066002741456, + "p90": 8.788931590970606, + "p95": 8.975919598015025, + "p99": 233.5498191238731 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_10_131072_1024.jsonl" + }, + { + "name": "c10_i131072_o256", + "config": { + "phase": "128k", + "concurrency": 10, + "input_len": 131072, + "output_len": 256, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 59.65240250399802, + "request_throughput": 0.335275683132118, + "input_token_throughput": 24716.540124283893, + "output_token_throughput": 42.697358246875226, + "total_token_throughput": 24759.237482530767, + "total_input_tokens": 1474401, + "total_output_tokens": 2547, + "e2e_ms": { + "mean": 29314.11689295128, + "p50": 26262.799380499928, + "p90": 57981.770187895745, + "p95": 58034.969827709574, + "p99": 58326.41254074915 + }, + "ttft_ms": { + "mean": 9130.866601550952, + "p50": 5061.937274498632, + "p90": 24214.829088801343, + "p95": 26046.623209959216, + "p99": 26064.37579079109 + }, + "tpot_ms": { + "mean": 1374.5048535422816, + "p50": 169.0106426934659, + "p90": 430.81965476299, + "p95": 1810.5569532731727, + "p99": 19553.62188185579 + }, + "itl_ms": { + "mean": 159.74055988326018, + "p50": 7.61685699399095, + "p90": 9.68485160265118, + "p95": 145.2174844002002, + "p99": 4701.002810652135 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_10_131072_256.jsonl" + }, + { + "name": "c10_i131072_o4096", + "config": { + "phase": "128k", + "concurrency": 10, + "input_len": 131072, + "output_len": 4096, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 73.61727057601092, + "request_throughput": 0.2716753805664352, + "input_token_throughput": 20027.92263912663, + "output_token_throughput": 517.962696818937, + "total_token_throughput": 20545.885335945568, + "total_input_tokens": 1474401, + "total_output_tokens": 38131, + "e2e_ms": { + "mean": 28500.67895909815, + "p50": 28112.17715300154, + "p90": 49829.967515188044, + "p95": 53466.72197574008, + "p99": 54286.62850075067 + }, + "ttft_ms": { + "mean": 2624.3248954968294, + "p50": 2136.155736996443, + "p90": 6003.281899908325, + "p95": 6177.423165745859, + "p99": 6920.282273945922 + }, + "tpot_ms": { + "mean": 14.213841209315783, + "p50": 13.928366367431902, + "p90": 19.11311534143368, + "p95": 19.916946141598892, + "p99": 25.871121799909396 + }, + "itl_ms": { + "mean": 13.579451054235527, + "p50": 8.536182998795994, + "p90": 8.77653200586792, + "p95": 8.853724495565984, + "p99": 14.320646900160352 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_10_131072_4096.jsonl" + }, + { + "name": "c2_i131072_o1024", + "config": { + "phase": "128k", + "concurrency": 2, + "input_len": 131072, + "output_len": 1024, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 6.6201243749965215, + "request_throughput": 0.6042182553408751, + "input_token_throughput": 36602.1824174757, + "output_token_throughput": 136.10016201553213, + "total_token_throughput": 36738.282579491235, + "total_input_tokens": 242311, + "total_output_tokens": 901, + "e2e_ms": { + "mean": 2166.1627940011385, + "p50": 1224.2758355059777, + "p90": 4362.741659799941, + "p95": 4983.983836899277, + "p99": 5480.977578578749 + }, + "ttft_ms": { + "mean": 363.5929425036011, + "p50": 374.64400700991973, + "p90": 476.5860987958149, + "p95": 479.9941893936193, + "p99": 482.7206618718628 + }, + "tpot_ms": { + "mean": 8.56378605699, + "p50": 8.469017351992196, + "p90": 9.6394401799744, + "p95": 9.723479477276998, + "p99": 9.790710915119075 + }, + "itl_ms": { + "mean": 8.038057003330794, + "p50": 7.442517002345994, + "p90": 7.628289199783467, + "p95": 7.714029011549428, + "p99": 15.245293956249952 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_2_131072_1024.jsonl" + }, + { + "name": "c2_i131072_o256", + "config": { + "phase": "128k", + "concurrency": 2, + "input_len": 131072, + "output_len": 256, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 2.78896649699891, + "request_throughput": 1.434223037209028, + "input_token_throughput": 86882.0045922892, + "output_token_throughput": 139.47819036857797, + "total_token_throughput": 87021.48278265777, + "total_input_tokens": 242311, + "total_output_tokens": 389, + "e2e_ms": { + "mean": 1238.8818739927956, + "p50": 1287.7310694893822, + "p90": 1700.2253821905472, + "p95": 1727.9445655905874, + "p99": 1750.1199123106196 + }, + "ttft_ms": { + "mean": 423.87411399613484, + "p50": 443.92389149288647, + "p90": 568.8948895971407, + "p95": 589.1363902985177, + "p99": 605.3295908596191 + }, + "tpot_ms": { + "mean": 8.294876356890017, + "p50": 8.305240008359462, + "p90": 8.8474133241449, + "p95": 8.959042992216144, + "p99": 9.048346726673142 + }, + "itl_ms": { + "mean": 8.46726296366761, + "p50": 7.438301996444352, + "p90": 7.678568997653201, + "p95": 7.913634003489277, + "p99": 38.00833222979695 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_2_131072_256.jsonl" + }, + { + "name": "c2_i131072_o4096", + "config": { + "phase": "128k", + "concurrency": 2, + "input_len": 131072, + "output_len": 4096, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 37.20838306899532, + "request_throughput": 0.10750265585534367, + "input_token_throughput": 6512.269010741045, + "output_token_throughput": 244.38041242316, + "total_token_throughput": 6756.6494231642055, + "total_input_tokens": 242311, + "total_output_tokens": 9093, + "e2e_ms": { + "mean": 17481.596304744016, + "p50": 16374.755681492388, + "p90": 27016.964761391864, + "p95": 27763.290148692613, + "p99": 28360.350458533212 + }, + "ttft_ms": { + "mean": 417.6458147485391, + "p50": 440.9555434976937, + "p90": 565.9416574999341, + "p95": 584.4300492499315, + "p99": 599.2207626499294 + }, + "tpot_ms": { + "mean": 7.533689034138554, + "p50": 7.528465619569621, + "p90": 7.59955080906869, + "p95": 7.610607248780574, + "p99": 7.619452400550082 + }, + "itl_ms": { + "mean": 7.509697526022953, + "p50": 7.4637350044213235, + "p90": 7.645775395212695, + "p95": 7.709391202661209, + "p99": 7.858362724073233 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_2_131072_4096.jsonl" + }, + { + "name": "c5_i131072_o1024", + "config": { + "phase": "128k", + "concurrency": 5, + "input_len": 131072, + "output_len": 1024, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 11.507078130991431, + "request_throughput": 0.8690303382113576, + "input_token_throughput": 64181.45350129543, + "output_token_throughput": 321.5412251382023, + "total_token_throughput": 64502.99472643363, + "total_input_tokens": 738541, + "total_output_tokens": 3700, + "e2e_ms": { + "mean": 4011.5025283041177, + "p50": 4134.981311006413, + "p90": 5923.378200098522, + "p95": 6687.19352155458, + "p99": 7298.245778719429 + }, + "ttft_ms": { + "mean": 747.4954129982507, + "p50": 600.3231319991755, + "p90": 1147.3169775985298, + "p95": 1231.2274228017484, + "p99": 1298.3557789643237 + }, + "tpot_ms": { + "mean": 9.02663269935308, + "p50": 9.102326783070463, + "p90": 10.184806440411771, + "p95": 10.474653736578562, + "p99": 10.706531573511999 + }, + "itl_ms": { + "mean": 8.845442765854395, + "p50": 7.658207003260031, + "p90": 8.203889403375797, + "p95": 8.270193445059704, + "p99": 40.88204233179569 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_5_131072_1024.jsonl" + }, + { + "name": "c5_i131072_o256", + "config": { + "phase": "128k", + "concurrency": 5, + "input_len": 131072, + "output_len": 256, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 9.498662344994955, + "request_throughput": 1.0527798164411235, + "input_token_throughput": 77752.10584142437, + "output_token_throughput": 146.96806237518084, + "total_token_throughput": 77899.07390379955, + "total_input_tokens": 738541, + "total_output_tokens": 1396, + "e2e_ms": { + "mean": 4366.1755084991455, + "p50": 3982.204109990562, + "p90": 7813.550987806229, + "p95": 7814.851387899398, + "p99": 7815.891707973933 + }, + "ttft_ms": { + "mean": 1222.2237519992632, + "p50": 929.061669499788, + "p90": 1500.9601024939898, + "p95": 3270.2325747450186, + "p99": 4685.650552545849 + }, + "tpot_ms": { + "mean": 19.906604901446816, + "p50": 10.306678985809755, + "p90": 34.20789826843462, + "p95": 40.81402125487341, + "p99": 46.098919644024484 + }, + "itl_ms": { + "mean": 22.68340019768527, + "p50": 7.854708004742861, + "p90": 8.238709502620623, + "p95": 8.335292746778578, + "p99": 209.5159812430211 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_5_131072_256.jsonl" + }, + { + "name": "c5_i131072_o4096", + "config": { + "phase": "128k", + "concurrency": 5, + "input_len": 131072, + "output_len": 4096, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 50.321813589995145, + "request_throughput": 0.19872097777469958, + "input_token_throughput": 14676.35896467044, + "output_token_throughput": 378.76218363857737, + "total_token_throughput": 15055.121148309017, + "total_input_tokens": 738541, + "total_output_tokens": 19060, + "e2e_ms": { + "mean": 19785.605015904002, + "p50": 22238.636635505827, + "p90": 30440.56655391032, + "p95": 30849.593009458476, + "p99": 31176.814173897 + }, + "ttft_ms": { + "mean": 1452.1458315022755, + "p50": 845.5761140066897, + "p90": 2657.630662203881, + "p95": 4667.562957607147, + "p99": 6275.508793929766 + }, + "tpot_ms": { + "mean": 11.983874961162693, + "p50": 8.97393289609107, + "p90": 20.14835106419254, + "p95": 22.065141436643415, + "p99": 23.598573734604123 + }, + "itl_ms": { + "mean": 9.62384469852828, + "p50": 7.92445049592061, + "p90": 8.225913498608861, + "p95": 8.297063296777196, + "p99": 8.573916231980547 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_128k_0708_5_131072_4096.jsonl" + }, + { + "name": "c10_i262144_o1024", + "config": { + "phase": "256k", + "concurrency": 10, + "input_len": 262144, + "output_len": 1024, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 123.96498416698887, + "request_throughput": 0.16133588153456868, + "input_token_throughput": 22466.997585771973, + "output_token_throughput": 76.30380517177426, + "total_token_throughput": 22543.30139094375, + "total_input_tokens": 2785121, + "total_output_tokens": 9459, + "e2e_ms": { + "mean": 60222.0201104501, + "p50": 47189.717301494966, + "p90": 118746.55429970153, + "p95": 119241.29611300159, + "p99": 120180.87091939495 + }, + "ttft_ms": { + "mean": 12461.068878801598, + "p50": 8218.190929001139, + "p90": 30000.515215401552, + "p95": 39446.964688052685, + "p99": 43965.67287040655 + }, + "tpot_ms": { + "mean": 108.41895635156409, + "p50": 110.26026996855646, + "p90": 183.6072472225656, + "p95": 202.4327935913202, + "p99": 202.90272963421216 + }, + "itl_ms": { + "mean": 101.19910211611595, + "p50": 8.39356699725613, + "p90": 9.216163592645898, + "p95": 10.460725796292536, + "p99": 459.108861363784 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_10_262144_1024.jsonl" + }, + { + "name": "c10_i262144_o256", + "config": { + "phase": "256k", + "concurrency": 10, + "input_len": 262144, + "output_len": 256, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 136.21132193600351, + "request_throughput": 0.14683067248548287, + "input_token_throughput": 20447.059469172025, + "output_token_throughput": 18.698886141026243, + "total_token_throughput": 20465.758355313053, + "total_input_tokens": 2785121, + "total_output_tokens": 2547, + "e2e_ms": { + "mean": 67539.66885109912, + "p50": 64579.87214499735, + "p90": 134268.22255290608, + "p95": 134322.67501935567, + "p99": 134628.3311102711 + }, + "ttft_ms": { + "mean": 21481.911876800586, + "p50": 16078.680619000806, + "p90": 47468.99928749774, + "p95": 58074.31215379911, + "p99": 62652.58622915774 + }, + "tpot_ms": { + "mean": 2953.6964707275465, + "p50": 376.45904176504143, + "p90": 1102.486299162998, + "p95": 3625.5861425419776, + "p99": 41185.3192885079 + }, + "itl_ms": { + "mean": 364.52494103166526, + "p50": 2.6113710046047345, + "p90": 9.080003603594378, + "p95": 12.315574500826166, + "p99": 9161.599309783333 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_10_262144_256.jsonl" + }, + { + "name": "c10_i262144_o4096", + "config": { + "phase": "256k", + "concurrency": 10, + "input_len": 262144, + "output_len": 4096, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 139.951198544004, + "request_throughput": 0.14290695762574354, + "input_token_throughput": 19900.65843647842, + "output_token_throughput": 272.45926006136136, + "total_token_throughput": 20173.117696539783, + "total_input_tokens": 2785121, + "total_output_tokens": 38131, + "e2e_ms": { + "mean": 61533.118652649864, + "p50": 57467.8910960065, + "p90": 115673.9482717938, + "p95": 119183.3668849511, + "p99": 120183.74748178918 + }, + "ttft_ms": { + "mean": 8041.92020519913, + "p50": 5042.6441470044665, + "p90": 17776.405719191825, + "p95": 18088.116007791545, + "p99": 22579.08617755019 + }, + "tpot_ms": { + "mean": 27.99621378762109, + "p50": 33.11629646517114, + "p90": 41.01358958532386, + "p95": 43.87014164002981, + "p99": 45.07000334233188 + }, + "itl_ms": { + "mean": 28.071248564246346, + "p50": 8.652534990687855, + "p90": 9.23243400757201, + "p95": 9.507564500381704, + "p99": 17.724962301144885 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_10_262144_4096.jsonl" + }, + { + "name": "c2_i262144_o1024", + "config": { + "phase": "256k", + "concurrency": 2, + "input_len": 262144, + "output_len": 1024, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 7.838861249998445, + "request_throughput": 0.510278198890278, + "input_token_throughput": 64353.09720529881, + "output_token_throughput": 114.94016430003514, + "total_token_throughput": 64468.03736959884, + "total_input_tokens": 504455, + "total_output_tokens": 901, + "e2e_ms": { + "mean": 2623.6137064988725, + "p50": 1710.9498594945762, + "p90": 5057.276670502325, + "p95": 5714.705932253127, + "p99": 6240.64934165377 + }, + "ttft_ms": { + "mean": 817.0428332487063, + "p50": 846.876464493107, + "p90": 985.784365501604, + "p95": 1007.0702317520044, + "p99": 1024.0989247523248 + }, + "tpot_ms": { + "mean": 8.356801650073102, + "p50": 8.322034111108326, + "p90": 8.987893284592078, + "p95": 9.02657565642891, + "p99": 9.057521553898379 + }, + "itl_ms": { + "mean": 8.055848182821979, + "p50": 7.6801530085504055, + "p90": 7.929283403791487, + "p95": 8.031782798934728, + "p99": 10.759145955671555 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_2_262144_1024.jsonl" + }, + { + "name": "c2_i262144_o256", + "config": { + "phase": "256k", + "concurrency": 2, + "input_len": 262144, + "output_len": 256, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 13.676418158007436, + "request_throughput": 0.29247423951117135, + "input_token_throughput": 36885.02312315199, + "output_token_throughput": 28.443119792461413, + "total_token_throughput": 36913.46624294445, + "total_input_tokens": 504455, + "total_output_tokens": 389, + "e2e_ms": { + "mean": 6497.607406749012, + "p50": 6174.236201499298, + "p90": 11468.486644695804, + "p95": 11731.182600344617, + "p99": 11941.339364863668 + }, + "ttft_ms": { + "mean": 4623.183049494401, + "p50": 3760.040304492577, + "p90": 8986.581812394434, + "p95": 9538.914146694877, + "p99": 9980.780014135233 + }, + "tpot_ms": { + "mean": 14.09713766259988, + "p50": 9.559062930339627, + "p90": 24.260197655032492, + "p95": 26.983417011029736, + "p99": 29.16199249582754 + }, + "itl_ms": { + "mean": 19.47422767535771, + "p50": 7.5968110031681135, + "p90": 8.036788206663914, + "p95": 8.225746598327532, + "p99": 13.369320277706462 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_2_262144_256.jsonl" + }, + { + "name": "c2_i262144_o4096", + "config": { + "phase": "256k", + "concurrency": 2, + "input_len": 262144, + "output_len": 4096, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 47.9139328859892, + "request_throughput": 0.08348302381100643, + "input_token_throughput": 10528.357194145312, + "output_token_throughput": 189.77778387837034, + "total_token_throughput": 10718.134978023681, + "total_input_tokens": 504455, + "total_output_tokens": 9093, + "e2e_ms": { + "mean": 22625.154106750415, + "p50": 21311.755373506458, + "p90": 37184.96222729591, + "p95": 38039.503609643, + "p99": 38723.13671552067 + }, + "ttft_ms": { + "mean": 4475.717700250243, + "p50": 3599.2469300035737, + "p90": 8900.0592248005, + "p95": 9453.57058790032, + "p99": 9896.37967838018 + }, + "tpot_ms": { + "mean": 7.816333810675103, + "p50": 7.564392993347875, + "p90": 8.315652633977185, + "p95": 8.476097631276604, + "p99": 8.604453629116142 + }, + "itl_ms": { + "mean": 7.987409411269122, + "p50": 7.520452010794543, + "p90": 7.734301398159005, + "p95": 7.81220099888742, + "p99": 8.031192004564218 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_2_262144_4096.jsonl" + }, + { + "name": "c5_i262144_o1024", + "config": { + "phase": "256k", + "concurrency": 5, + "input_len": 262144, + "output_len": 1024, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 65.58298989200557, + "request_throughput": 0.15247856214647784, + "input_token_throughput": 21254.002025453763, + "output_token_throughput": 56.417067994196806, + "total_token_throughput": 21310.41909344796, + "total_input_tokens": 1393901, + "total_output_tokens": 3700, + "e2e_ms": { + "mean": 29705.239315898507, + "p50": 26832.999823993305, + "p90": 53121.259530991665, + "p95": 53300.682289002, + "p99": 53444.22049541026 + }, + "ttft_ms": { + "mean": 9553.357254501316, + "p50": 7428.888360009296, + "p90": 13744.180342195608, + "p95": 20522.01899459686, + "p99": 25944.289916517886 + }, + "tpot_ms": { + "mean": 54.106340392946684, + "p50": 35.3284117471819, + "p90": 112.67091399955211, + "p95": 118.9769503805897, + "p99": 124.02177948541978 + }, + "itl_ms": { + "mean": 54.61205585257842, + "p50": 7.787503513100091, + "p90": 8.485531604674179, + "p95": 8.731119994627077, + "p99": 163.1971791438993 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_5_262144_1024.jsonl" + }, + { + "name": "c5_i262144_o256", + "config": { + "phase": "256k", + "concurrency": 5, + "input_len": 262144, + "output_len": 256, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 63.62121302900778, + "request_throughput": 0.15718027877652302, + "input_token_throughput": 21909.37477668742, + "output_token_throughput": 21.942366917202612, + "total_token_throughput": 21931.31714360462, + "total_input_tokens": 1393901, + "total_output_tokens": 1396, + "e2e_ms": { + "mean": 27766.488692698476, + "p50": 26212.031901995942, + "p90": 43731.58486139291, + "p95": 43745.44146119224, + "p99": 43756.5267410317 + }, + "ttft_ms": { + "mean": 12937.516684601724, + "p50": 11740.926471502462, + "p90": 19973.475571106243, + "p95": 25875.404617557782, + "p99": 30596.94785471904 + }, + "tpot_ms": { + "mean": 97.04540830096094, + "p50": 68.37296407113367, + "p90": 205.2091521978607, + "p95": 231.7474121596734, + "p99": 252.97802012912362 + }, + "itl_ms": { + "mean": 106.99087801515344, + "p50": 7.89495949720731, + "p90": 8.512704996974207, + "p95": 8.72298425383633, + "p99": 533.0643086941564 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_5_262144_256.jsonl" + }, + { + "name": "c5_i262144_o4096", + "config": { + "phase": "256k", + "concurrency": 5, + "input_len": 262144, + "output_len": 4096, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 90.97672484000213, + "request_throughput": 0.1099182237829146, + "input_token_throughput": 15321.512204922845, + "output_token_throughput": 209.50413453023523, + "total_token_throughput": 15531.01633945308, + "total_input_tokens": 1393901, + "total_output_tokens": 19060, + "e2e_ms": { + "mean": 40104.55356059829, + "p50": 41497.74021099438, + "p90": 56552.7266723031, + "p95": 58680.973652151435, + "p99": 60383.57123603011 + }, + "ttft_ms": { + "mean": 6888.178656999662, + "p50": 6021.056942001451, + "p90": 11809.612826703229, + "p95": 16539.496441348445, + "p99": 20323.403333064638 + }, + "tpot_ms": { + "mean": 25.054269337052965, + "p50": 16.602636430291934, + "p90": 52.2769187839349, + "p95": 56.69092042522937, + "p99": 60.22212173826497 + }, + "itl_ms": { + "mean": 17.436399203515855, + "p50": 8.002083493920509, + "p90": 8.508344892470632, + "p95": 8.67334350114106, + "p99": 9.995497615309418 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_256k_0708_5_262144_4096.jsonl" + }, + { + "name": "c25_i65536_o1024", + "config": { + "phase": "64k", + "concurrency": 25, + "input_len": 65536, + "output_len": 1024, + "dataset": "random", + "num_prompts": 50 + }, + "metrics": { + "success": 50, + "failed": 0, + "duration_s": 74.64872127999843, + "request_throughput": 0.6698038377972475, + "input_token_throughput": 24668.218938311584, + "output_token_throughput": 346.7038625206112, + "total_token_throughput": 25014.922800832195, + "total_input_tokens": 1841451, + "total_output_tokens": 25881, + "e2e_ms": { + "mean": 34945.79836199962, + "p50": 31994.75705599616, + "p90": 67992.56891410187, + "p95": 68400.96390364997, + "p99": 69586.94131211669 + }, + "ttft_ms": { + "mean": 6120.962128339743, + "p50": 3360.3478820004966, + "p90": 18518.40006079001, + "p95": 19996.429142699337, + "p99": 24478.108350212275 + }, + "tpot_ms": { + "mean": 149.26707781764028, + "p50": 63.565434038753835, + "p90": 123.77963635468883, + "p95": 394.9986222815072, + "p99": 2037.0942240442123 + }, + "itl_ms": { + "mean": 55.794990739112286, + "p50": 10.010411002440378, + "p90": 11.551048010005616, + "p95": 20.707134499389213, + "p99": 880.9660942002665 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_64k_0708_25_65536_1024.jsonl" + }, + { + "name": "c25_i65536_o256", + "config": { + "phase": "64k", + "concurrency": 25, + "input_len": 65536, + "output_len": 256, + "dataset": "random", + "num_prompts": 50 + }, + "metrics": { + "success": 50, + "failed": 0, + "duration_s": 70.01913154299837, + "request_throughput": 0.7140905477997149, + "input_token_throughput": 26299.255066726655, + "output_token_throughput": 84.44834818279429, + "total_token_throughput": 26383.70341490945, + "total_input_tokens": 1841451, + "total_output_tokens": 5913, + "e2e_ms": { + "mean": 34392.330781399796, + "p50": 31949.203033007507, + "p90": 68333.77209850296, + "p95": 68802.89003190192, + "p99": 68854.26202498449 + }, + "ttft_ms": { + "mean": 9330.859263940365, + "p50": 4773.252274004335, + "p90": 25854.001908602368, + "p95": 27219.0645494993, + "p99": 31612.69766841418 + }, + "tpot_ms": { + "mean": 292.8437435563451, + "p50": 237.7339640860819, + "p90": 632.4370414020669, + "p95": 801.176717005343, + "p99": 938.4264802414143 + }, + "itl_ms": { + "mean": 213.72542370732003, + "p50": 9.647318001952954, + "p90": 54.957336393999874, + "p95": 328.82969500496984, + "p99": 4943.480069027282 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_64k_0708_25_65536_256.jsonl" + }, + { + "name": "c25_i65536_o4096", + "config": { + "phase": "64k", + "concurrency": 25, + "input_len": 65536, + "output_len": 4096, + "dataset": "random", + "num_prompts": 50 + }, + "metrics": { + "success": 50, + "failed": 0, + "duration_s": 122.097007467004, + "request_throughput": 0.40951044613859355, + "input_token_throughput": 15081.868411047186, + "output_token_throughput": 950.0069035790776, + "total_token_throughput": 16031.875314626262, + "total_input_tokens": 1841451, + "total_output_tokens": 115993, + "e2e_ms": { + "mean": 52152.373436100024, + "p50": 49024.354140492505, + "p90": 89052.32497549441, + "p95": 93852.743980995, + "p99": 96670.1228921843 + }, + "ttft_ms": { + "mean": 5499.833113261266, + "p50": 2674.395349000406, + "p90": 17162.67022081156, + "p95": 18559.575018648313, + "p99": 23249.706619027413 + }, + "tpot_ms": { + "mean": 23.781828525346313, + "p50": 20.795121718049213, + "p90": 31.204594821803948, + "p95": 42.50058968497073, + "p99": 82.84478563792041 + }, + "itl_ms": { + "mean": 20.118731597388148, + "p50": 10.207813000306487, + "p90": 10.9851807996165, + "p95": 11.638686200603841, + "p99": 94.83414596616095 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/sglang/raw_outputs/sglang_64k_0708_25_65536_4096.jsonl" + } + ] +} \ No newline at end of file diff --git a/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/report.md b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/report.md new file mode 100644 index 0000000..d2f00d9 --- /dev/null +++ b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/report.md @@ -0,0 +1,35 @@ +# H200 VLLM Comparison Benchmark Report + +- Result root: `/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm` +- Model: `/data/models/DeepSeek-V4-Flash` +- Backend: VLLM (TP=8) +- Benchmark client: `sglang.bench_serving --backend vllm` + +## Results + +| Scenario | Phase | Concurrency | Input | Output | Duration(s) | Success | Req/s | In tok/s | Out tok/s | Total tok/s | Mean TTFT(ms) | P95 TTFT(ms) | P99 TTFT(ms) | Mean TPOT(ms) | P95 TPOT(ms) | P99 TPOT(ms) | Mean E2E(ms) | P95 E2E(ms) | P99 E2E(ms) | SLO | +|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| c10_i131072_o1024 | 128k | 10 | 131072 | 1024 | 51.67 | 20 | 0.39 | 28537.46 | 183.08 | 28720.55 | 2870.79 | 6596.15 | 6603.12 | 47.10 | 77.53 | 84.06 | 24302.31 | 47488.34 | 48426.64 | ⚠️ | +| c10_i131072_o256 | 128k | 10 | 131072 | 256 | 52.96 | 20 | 0.38 | 27838.09 | 48.09 | 27886.18 | 10289.92 | 23250.03 | 24238.33 | 150.22 | 299.91 | 301.72 | 25961.91 | 51418.73 | 51439.08 | ❌ | +| c10_i131072_o4096 | 128k | 10 | 131072 | 4096 | 85.53 | 20 | 0.23 | 17238.00 | 445.81 | 17683.81 | 937.55 | 2096.29 | 2168.81 | 18.57 | 21.47 | 21.61 | 34484.49 | 65903.20 | 67041.13 | ✅ | +| c2_i131072_o1024 | 128k | 2 | 131072 | 1024 | 5.69 | 4 | 0.70 | 42587.41 | 158.36 | 42745.76 | 384.25 | 676.14 | 695.90 | 6.49 | 8.20 | 8.34 | 1937.38 | 4390.02 | 4803.24 | ✅ | +| c2_i131072_o256 | 128k | 2 | 131072 | 256 | 2.64 | 4 | 1.51 | 91644.87 | 147.12 | 91791.99 | 469.80 | 684.63 | 700.28 | 7.08 | 9.27 | 9.45 | 1208.21 | 1556.10 | 1556.46 | ✅ | +| c2_i131072_o4096 | 128k | 2 | 131072 | 4096 | 34.68 | 4 | 0.12 | 6987.68 | 262.22 | 7249.90 | 386.27 | 671.34 | 688.15 | 7.09 | 7.17 | 7.18 | 16427.81 | 25979.54 | 26496.04 | ✅ | +| c5_i131072_o1024 | 128k | 5 | 131072 | 1024 | 11.16 | 10 | 0.90 | 66199.25 | 331.65 | 66530.90 | 616.34 | 856.18 | 917.80 | 8.93 | 10.48 | 10.62 | 3905.82 | 6409.85 | 6989.27 | ✅ | +| c5_i131072_o256 | 128k | 5 | 131072 | 256 | 25.82 | 10 | 0.39 | 28605.35 | 54.07 | 28659.43 | 4405.54 | 9384.23 | 9677.91 | 51.54 | 107.16 | 117.25 | 12185.89 | 19857.41 | 19860.69 | ❌ | +| c5_i131072_o4096 | 128k | 5 | 131072 | 4096 | 42.56 | 10 | 0.23 | 17353.52 | 447.85 | 17801.37 | 615.76 | 1054.01 | 1104.66 | 8.48 | 9.13 | 9.14 | 16241.78 | 28711.60 | 28818.20 | ✅ | +| c10_i262144_o1024 | 256k | 10 | 262144 | 1024 | 111.77 | 20 | 0.18 | 24919.08 | 84.63 | 25003.71 | 15133.21 | 34130.22 | 38144.40 | 98.87 | 142.57 | 266.08 | 54087.22 | 107356.89 | 108658.89 | ❌ | +| c10_i262144_o256 | 256k | 10 | 262144 | 256 | 111.93 | 20 | 0.18 | 24883.63 | 22.76 | 24906.39 | 28922.71 | 50632.44 | 51883.02 | 229.20 | 339.27 | 344.95 | 55262.71 | 110121.03 | 110216.92 | ❌ | +| c10_i262144_o4096 | 256k | 10 | 262144 | 4096 | 176.65 | 20 | 0.11 | 15766.52 | 215.86 | 15982.38 | 11662.77 | 34100.32 | 38022.94 | 37.18 | 56.07 | 62.00 | 79905.41 | 156158.99 | 157944.21 | ⚠️ | +| c2_i262144_o1024 | 256k | 2 | 262144 | 1024 | 20.88 | 4 | 0.19 | 24156.04 | 43.14 | 24199.18 | 5483.04 | 8722.76 | 9009.70 | 20.17 | 52.24 | 57.91 | 9282.52 | 13247.86 | 13826.13 | ⚠️ | +| c2_i262144_o256 | 256k | 2 | 262144 | 256 | 17.11 | 4 | 0.23 | 29488.06 | 22.74 | 29510.80 | 6791.08 | 8625.18 | 8952.31 | 10.18 | 23.01 | 25.44 | 8281.06 | 10221.13 | 10378.60 | ⚠️ | +| c2_i262144_o4096 | 256k | 2 | 262144 | 4096 | 50.30 | 4 | 0.08 | 10027.95 | 180.76 | 10208.71 | 5468.77 | 8759.63 | 9062.80 | 8.63 | 11.53 | 12.01 | 23992.03 | 35306.58 | 35881.75 | ⚠️ | +| c5_i262144_o1024 | 256k | 5 | 262144 | 1024 | 61.34 | 10 | 0.16 | 22724.99 | 60.32 | 22785.31 | 11196.96 | 22564.89 | 26639.92 | 47.49 | 100.69 | 109.86 | 28871.28 | 47913.60 | 53790.59 | ⚠️ | +| c5_i262144_o256 | 256k | 5 | 262144 | 256 | 54.01 | 10 | 0.19 | 25809.33 | 25.85 | 25835.18 | 9094.42 | 21986.99 | 26381.86 | 123.42 | 202.78 | 215.56 | 26745.69 | 45719.33 | 45761.90 | ❌ | +| c5_i262144_o4096 | 256k | 5 | 262144 | 4096 | 92.92 | 10 | 0.11 | 15001.24 | 205.12 | 15206.37 | 9122.40 | 22171.78 | 26533.69 | 25.69 | 63.32 | 68.33 | 41465.64 | 61304.00 | 64086.27 | ⚠️ | +| c25_i65536_o1024 | 64k | 25 | 65536 | 1024 | 77.81 | 50 | 0.64 | 23665.15 | 332.61 | 23997.76 | 8358.86 | 24861.20 | 28942.75 | 72.36 | 196.24 | 271.32 | 36604.32 | 71227.08 | 72689.84 | ❌ | +| c25_i65536_o256 | 64k | 25 | 65536 | 256 | 61.85 | 50 | 0.81 | 29772.41 | 95.60 | 29868.01 | 11442.71 | 24902.72 | 28974.45 | 180.78 | 273.59 | 278.16 | 30201.94 | 60181.25 | 60781.45 | ❌ | +| c25_i65536_o4096 | 64k | 25 | 65536 | 4096 | 156.39 | 50 | 0.32 | 11775.02 | 741.71 | 12516.73 | 7847.53 | 24847.97 | 28840.96 | 28.80 | 46.66 | 63.40 | 69020.59 | 126999.05 | 129654.04 | ⚠️ | + +SLO: S2 tier — TTFT P95 < 3000ms, TPOT mean < 50ms. ✅ pass, ⚠️ partial, ❌ fail. + diff --git a/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/results.json b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/results.json new file mode 100644 index 0000000..ee32d30 --- /dev/null +++ b/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/results.json @@ -0,0 +1,1219 @@ +{ + "metadata": { + "experiment": "dsv4_h200_long_context_matrix_vllm", + "run_id": "20260708-100016", + "timestamp": "2026-07-08T10:00:20+00:00", + "model": "/data/models/DeepSeek-V4-Flash", + "backend": "vllm", + "engine": "vllm", + "hardware": "8x NVIDIA H200 143GB", + "accelerator": "NVIDIA H200", + "chip": "nvidia_h200", + "script": "experiments/dsv4_h200_long_context_matrix/run_bench.sh", + "env": "/data/user1/yy/envs/vllm", + "git_commit": "7e35945", + "git_dirty": "dirty", + "description": "H200 long-context matrix vllm TP=8 for DeepSeek-V4-Flash" + }, + "config": { + "tp": 8, + "cuda_visible_devices": "0,1,2,3,4,5,6,7", + "backend": "vllm", + "server_start_script": "experiments/dsv4_h200_long_context_matrix/start_vllm.sh", + "groups": [ + { + "label": "64k", + "max_model_len": 80000, + "max_slots": 25 + }, + { + "label": "128k", + "max_model_len": 140000, + "max_slots": 10 + }, + { + "label": "256k", + "max_model_len": 270000, + "max_slots": 10 + } + ] + }, + "scenarios": [ + { + "name": "c10_i131072_o1024", + "config": { + "phase": "128k", + "concurrency": 10, + "input_len": 131072, + "output_len": 1024, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 51.66545137499634, + "request_throughput": 0.387105879610665, + "input_token_throughput": 28537.464800192207, + "output_token_throughput": 183.08172576186402, + "total_token_throughput": 28720.54652595407, + "total_input_tokens": 1474401, + "total_output_tokens": 9459, + "e2e_ms": { + "mean": 24302.307708252192, + "p50": 21800.77651650936, + "p90": 47116.329806011345, + "p95": 47488.33684020138, + "p99": 48426.63913604789 + }, + "ttft_ms": { + "mean": 2870.791056800226, + "p50": 1759.841219500231, + "p90": 5543.851142600763, + "p95": 6596.149501448235, + "p99": 6603.124833886832 + }, + "tpot_ms": { + "mean": 47.09948558432735, + "p50": 55.566536207784615, + "p90": 67.81654982985651, + "p95": 77.52663093973904, + "p99": 84.05732836300406 + }, + "itl_ms": { + "mean": 45.89674528407251, + "p50": 20.6618029915262, + "p90": 36.3844861916733, + "p95": 279.25614129489986, + "p99": 340.7204606453888 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_10_131072_1024.jsonl" + }, + { + "name": "c10_i131072_o256", + "config": { + "phase": "128k", + "concurrency": 10, + "input_len": 131072, + "output_len": 256, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 52.96343759499723, + "request_throughput": 0.3776189935580983, + "input_token_throughput": 27838.091086052682, + "output_token_throughput": 48.08977882962382, + "total_token_throughput": 27886.180864882306, + "total_input_tokens": 1474401, + "total_output_tokens": 2547, + "e2e_ms": { + "mean": 25961.91139175062, + "p50": 25894.207332996302, + "p90": 51272.70432260411, + "p95": 51418.72619945061, + "p99": 51439.07880868617 + }, + "ttft_ms": { + "mean": 10289.923211449786, + "p50": 7619.981570496748, + "p90": 21425.749930497845, + "p95": 23250.027229247647, + "p99": 24238.332692253316 + }, + "tpot_ms": { + "mean": 150.21826331221968, + "p50": 152.71475159090537, + "p90": 298.5961233597156, + "p95": 299.91164498010716, + "p99": 301.722881242001 + }, + "itl_ms": { + "mean": 127.77789348878402, + "p50": 21.68448800512124, + "p90": 324.1446094005369, + "p95": 342.3754072049635, + "p99": 391.54394332435913 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_10_131072_256.jsonl" + }, + { + "name": "c10_i131072_o4096", + "config": { + "phase": "128k", + "concurrency": 10, + "input_len": 131072, + "output_len": 4096, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 85.53201726201223, + "request_throughput": 0.23383056591233586, + "input_token_throughput": 17238.001010585696, + "output_token_throughput": 445.80966544016394, + "total_token_throughput": 17683.81067602586, + "total_input_tokens": 1474401, + "total_output_tokens": 38131, + "e2e_ms": { + "mean": 34484.490811148135, + "p50": 33977.14802798873, + "p90": 62483.23918669922, + "p95": 65903.20190555212, + "p99": 67041.12905950897 + }, + "ttft_ms": { + "mean": 937.5491100487125, + "p50": 642.0005089967162, + "p90": 1956.0433094957264, + "p95": 2096.2857415936014, + "p99": 2168.806972318125 + }, + "tpot_ms": { + "mean": 18.574484843485518, + "p50": 20.402039316506, + "p90": 21.315744186469686, + "p95": 21.47395290997979, + "p99": 21.612366181997732 + }, + "itl_ms": { + "mean": 17.75861549879622, + "p50": 20.105969000724144, + "p90": 20.685401002992876, + "p95": 20.930733007844537, + "p99": 35.77366020763292 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_10_131072_4096.jsonl" + }, + { + "name": "c2_i131072_o1024", + "config": { + "phase": "128k", + "concurrency": 2, + "input_len": 131072, + "output_len": 1024, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 5.689733478997368, + "request_throughput": 0.7030206273747766, + "input_token_throughput": 42587.40780995237, + "output_token_throughput": 158.35539631616842, + "total_token_throughput": 42745.76320626854, + "total_input_tokens": 242311, + "total_output_tokens": 901, + "e2e_ms": { + "mean": 1937.3816890001763, + "p50": 1117.7794850009377, + "p90": 3873.4886924983593, + "p95": 4390.017209249343, + "p99": 4803.240022650133 + }, + "ttft_ms": { + "mean": 384.2540892474062, + "p50": 357.03718150034547, + "p90": 651.4245806931286, + "p95": 676.1357038427377, + "p99": 695.9046023624251 + }, + "tpot_ms": { + "mean": 6.491317100270631, + "p50": 7.012631920858373, + "p90": 8.019041642945352, + "p95": 8.196621751066914, + "p99": 8.338685837564164 + }, + "itl_ms": { + "mean": 7.404440741348319, + "p50": 6.702701997710392, + "p90": 7.250566800939851, + "p95": 7.664964400464669, + "p99": 16.972954474331345 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_2_131072_1024.jsonl" + }, + { + "name": "c2_i131072_o256", + "config": { + "phase": "128k", + "concurrency": 2, + "input_len": 131072, + "output_len": 256, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 2.6440215219918173, + "request_throughput": 1.5128469896064558, + "input_token_throughput": 91644.86672463248, + "output_token_throughput": 147.12436973922783, + "total_token_throughput": 91791.9910943717, + "total_input_tokens": 242311, + "total_output_tokens": 389, + "e2e_ms": { + "mean": 1208.2100787556556, + "p50": 1315.4866860058974, + "p90": 1555.6610688057845, + "p95": 1556.102363406535, + "p99": 1556.4553990871354 + }, + "ttft_ms": { + "mean": 469.8006515027373, + "p50": 488.6462400027085, + "p90": 665.0697350021801, + "p95": 684.631172002264, + "p99": 700.2803216023312 + }, + "tpot_ms": { + "mean": 7.077280489734826, + "p50": 7.6205459385392995, + "p90": 9.047700073656017, + "p95": 9.269358677714516, + "p99": 9.446685560961315 + }, + "itl_ms": { + "mean": 8.949986227327662, + "p50": 7.033545000012964, + "p90": 7.379413201124407, + "p95": 10.905502697278283, + "p99": 37.00466673850295 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_2_131072_256.jsonl" + }, + { + "name": "c2_i131072_o4096", + "config": { + "phase": "128k", + "concurrency": 2, + "input_len": 131072, + "output_len": 4096, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 34.67690336800297, + "request_throughput": 0.11535055358175018, + "input_token_throughput": 6987.6769972368675, + "output_token_throughput": 262.2206459297136, + "total_token_throughput": 7249.8976431665815, + "total_input_tokens": 242311, + "total_output_tokens": 9093, + "e2e_ms": { + "mean": 16427.805564500886, + "p50": 15522.598966999794, + "p90": 25333.909562396002, + "p95": 25979.535298196424, + "p99": 26496.035886836762 + }, + "ttft_ms": { + "mean": 386.27199300026405, + "p50": 364.75162849819753, + "p90": 650.3169154995704, + "p95": 671.3353617502435, + "p99": 688.1501187507819 + }, + "tpot_ms": { + "mean": 7.0888771850629775, + "p50": 7.074092415464063, + "p90": 7.159303860780842, + "p95": 7.170332691124276, + "p99": 7.179155755399024 + }, + "itl_ms": { + "mean": 7.101148280325202, + "p50": 7.057993505441118, + "p90": 7.237646510475315, + "p95": 7.2992147543118335, + "p99": 7.477600647689542 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_2_131072_4096.jsonl" + }, + { + "name": "c5_i131072_o1024", + "config": { + "phase": "128k", + "concurrency": 5, + "input_len": 131072, + "output_len": 1024, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 11.156335463994765, + "request_throughput": 0.8963516767914834, + "input_token_throughput": 66199.2463729259, + "output_token_throughput": 331.6501204128489, + "total_token_throughput": 66530.89649333875, + "total_input_tokens": 738541, + "total_output_tokens": 3700, + "e2e_ms": { + "mean": 3905.8177351005725, + "p50": 4192.37918699946, + "p90": 5685.582281209644, + "p95": 6409.85399711062, + "p99": 6989.271369831405 + }, + "ttft_ms": { + "mean": 616.3354310003342, + "p50": 630.4351844955818, + "p90": 779.1622185060987, + "p95": 856.1830642516724, + "p99": 917.7997408481316 + }, + "tpot_ms": { + "mean": 8.930163709257268, + "p50": 8.916015531095471, + "p90": 10.314694953508035, + "p95": 10.484373031482733, + "p99": 10.620115493862492 + }, + "itl_ms": { + "mean": 9.45514735153596, + "p50": 7.74998300767038, + "p90": 8.76904659671709, + "p95": 9.120293395244516, + "p99": 27.098282215009426 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_5_131072_1024.jsonl" + }, + { + "name": "c5_i131072_o256", + "config": { + "phase": "128k", + "concurrency": 5, + "input_len": 131072, + "output_len": 256, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 25.818277914993814, + "request_throughput": 0.3873225020245273, + "input_token_throughput": 28605.354796769643, + "output_token_throughput": 54.07022128262401, + "total_token_throughput": 28659.425018052265, + "total_input_tokens": 738541, + "total_output_tokens": 1396, + "e2e_ms": { + "mean": 12185.8890471005, + "p50": 10999.203152496193, + "p90": 19853.3254096983, + "p95": 19857.414202844666, + "p99": 19860.68523736176 + }, + "ttft_ms": { + "mean": 4405.543919697811, + "p50": 4785.443460001261, + "p90": 9017.131690100357, + "p95": 9384.23135404664, + "p99": 9677.911085203668 + }, + "tpot_ms": { + "mean": 51.53614550049823, + "p50": 47.148800233655614, + "p90": 94.54653787075607, + "p95": 107.15865861780897, + "p99": 117.24835521545133 + }, + "itl_ms": { + "mean": 61.31056672891171, + "p50": 8.423997001955286, + "p90": 291.9380680017639, + "p95": 327.3017734027235, + "p99": 370.823923558346 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_5_131072_256.jsonl" + }, + { + "name": "c5_i131072_o4096", + "config": { + "phase": "128k", + "concurrency": 5, + "input_len": 131072, + "output_len": 4096, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 42.558574515001965, + "request_throughput": 0.2349702760010203, + "input_token_throughput": 17353.51826080695, + "output_token_throughput": 447.8533460579447, + "total_token_throughput": 17801.371606864897, + "total_input_tokens": 738541, + "total_output_tokens": 19060, + "e2e_ms": { + "mean": 16241.784594696945, + "p50": 16785.255688002508, + "p90": 28578.344115095388, + "p95": 28711.595474048954, + "p99": 28818.196561211807 + }, + "ttft_ms": { + "mean": 615.7584768981906, + "p50": 619.8361904971534, + "p90": 990.6822835037019, + "p95": 1054.0053227523456, + "p99": 1104.663754151261 + }, + "tpot_ms": { + "mean": 8.482415081791261, + "p50": 8.584914685349283, + "p90": 9.119316274995734, + "p95": 9.13225667612229, + "p99": 9.142608997023535 + }, + "itl_ms": { + "mean": 8.322323361523896, + "p50": 8.334478501637932, + "p90": 8.716492498933803, + "p95": 8.831801002088469, + "p99": 11.488471249322174 + } + }, + "slo_status": { + "ttft_p95_ok": true, + "tpot_mean_ok": true, + "overall": "✅" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_128k_0708_5_131072_4096.jsonl" + }, + { + "name": "c10_i262144_o1024", + "config": { + "phase": "256k", + "concurrency": 10, + "input_len": 262144, + "output_len": 1024, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 111.7666079490009, + "request_throughput": 0.1789443230586903, + "input_token_throughput": 24919.07959907713, + "output_token_throughput": 84.63171759060758, + "total_token_throughput": 25003.711316667737, + "total_input_tokens": 2785121, + "total_output_tokens": 9459, + "e2e_ms": { + "mean": 54087.21958720125, + "p50": 45854.67296499701, + "p90": 104581.33334430022, + "p95": 107356.88945585352, + "p99": 108658.89333357001 + }, + "ttft_ms": { + "mean": 15133.209349600656, + "p50": 15488.721631001681, + "p90": 25876.80724879175, + "p95": 34130.219954399945, + "p99": 38144.397810086804 + }, + "tpot_ms": { + "mean": 98.8651079269732, + "p50": 103.25214553801447, + "p90": 133.975633900669, + "p95": 142.56661943596396, + "p99": 266.08017341112605 + }, + "itl_ms": { + "mean": 85.27571747186897, + "p50": 20.101816502574366, + "p90": 335.60964649223024, + "p95": 394.74781924946, + "p99": 477.74120174944983 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_10_262144_1024.jsonl" + }, + { + "name": "c10_i262144_o256", + "config": { + "phase": "256k", + "concurrency": 10, + "input_len": 262144, + "output_len": 256, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 111.92582058999687, + "request_throughput": 0.17868977769895802, + "input_token_throughput": 24883.632617734984, + "output_token_throughput": 22.756143189962305, + "total_token_throughput": 24906.388760924947, + "total_input_tokens": 2785121, + "total_output_tokens": 2547, + "e2e_ms": { + "mean": 55262.713170899224, + "p50": 47144.762987496506, + "p90": 106810.52704010073, + "p95": 110121.03238129348, + "p99": 110216.92147946043 + }, + "ttft_ms": { + "mean": 28922.714126997744, + "p50": 30003.8248819983, + "p90": 49919.92798739375, + "p95": 50632.43951184195, + "p99": 51883.02472316703 + }, + "tpot_ms": { + "mean": 229.20485763975984, + "p50": 304.37904707435774, + "p90": 337.78385858514525, + "p95": 339.2687884048935, + "p99": 344.9480431705525 + }, + "itl_ms": { + "mean": 209.96384566004198, + "p50": 275.63429399742745, + "p90": 409.77780719404115, + "p95": 443.09554080828093, + "p99": 506.6882172867193 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_10_262144_256.jsonl" + }, + { + "name": "c10_i262144_o4096", + "config": { + "phase": "256k", + "concurrency": 10, + "input_len": 262144, + "output_len": 4096, + "dataset": "random", + "num_prompts": 20 + }, + "metrics": { + "success": 20, + "failed": 0, + "duration_s": 176.64780976901238, + "request_throughput": 0.11321963191138533, + "input_token_throughput": 15766.518722433471, + "output_token_throughput": 215.85888922065172, + "total_token_throughput": 15982.377611654123, + "total_input_tokens": 2785121, + "total_output_tokens": 38131, + "e2e_ms": { + "mean": 79905.41021660028, + "p50": 71006.16067700321, + "p90": 153299.27942080103, + "p95": 156158.9913786549, + "p99": 157944.20693174092 + }, + "ttft_ms": { + "mean": 11662.773168051353, + "p50": 8513.091607506794, + "p90": 25862.007495203594, + "p95": 34100.31528659311, + "p99": 38022.94094612385 + }, + "tpot_ms": { + "mean": 37.1794706933376, + "p50": 40.5456700184206, + "p90": 54.37848334570407, + "p95": 56.065247396465274, + "p99": 62.004285348212015 + }, + "itl_ms": { + "mean": 36.36695911897189, + "p50": 20.078994508367032, + "p90": 34.5691745984368, + "p95": 269.43711890198756, + "p99": 410.95061424697633 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_10_262144_4096.jsonl" + }, + { + "name": "c2_i262144_o1024", + "config": { + "phase": "256k", + "concurrency": 2, + "input_len": 262144, + "output_len": 1024, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 20.883182838006178, + "request_throughput": 0.19154168361348792, + "input_token_throughput": 24156.04000181051, + "output_token_throughput": 43.144764233938155, + "total_token_throughput": 24199.18476604445, + "total_input_tokens": 504455, + "total_output_tokens": 901, + "e2e_ms": { + "mean": 9282.52205724857, + "p50": 8126.615065506485, + "p90": 12525.01908979175, + "p95": 13247.856977889749, + "p99": 13826.12728836815 + }, + "ttft_ms": { + "mean": 5483.044165495812, + "p50": 6116.950868999993, + "p90": 8364.095199097937, + "p95": 8722.764758044648, + "p99": 9009.70040520202 + }, + "tpot_ms": { + "mean": 20.169965146698488, + "p50": 8.914781762485976, + "p90": 45.14487564022166, + "p95": 52.23905397577902, + "p99": 57.91439664422493 + }, + "itl_ms": { + "mean": 18.26621805286357, + "p50": 6.9415050020325, + "p90": 7.282738502544817, + "p95": 13.22578915351182, + "p99": 332.4238129777949 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_2_262144_1024.jsonl" + }, + { + "name": "c2_i262144_o256", + "config": { + "phase": "256k", + "concurrency": 2, + "input_len": 262144, + "output_len": 256, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 17.107093440004974, + "request_throughput": 0.23382113472566834, + "input_token_throughput": 29488.060129509257, + "output_token_throughput": 22.739105352071245, + "total_token_throughput": 29510.799234861326, + "total_input_tokens": 504455, + "total_output_tokens": 389, + "e2e_ms": { + "mean": 8281.064997001522, + "p50": 8014.565017496352, + "p90": 10024.288492804046, + "p95": 10221.127670405258, + "p99": 10378.59901248623 + }, + "ttft_ms": { + "mean": 6791.076173005422, + "p50": 6304.710036005417, + "p90": 8216.254670906346, + "p95": 8625.176349956018, + "p99": 8952.313693195756 + }, + "tpot_ms": { + "mean": 10.181760587403115, + "p50": 5.548914722857892, + "p90": 19.976080493794306, + "p95": 23.012455824028287, + "p99": 25.44155608821548 + }, + "itl_ms": { + "mean": 18.114836313073543, + "p50": 7.0091839879751205, + "p90": 7.488688002922572, + "p95": 11.860086003434832, + "p99": 312.7510143991091 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_2_262144_256.jsonl" + }, + { + "name": "c2_i262144_o4096", + "config": { + "phase": "256k", + "concurrency": 2, + "input_len": 262144, + "output_len": 4096, + "dataset": "random", + "num_prompts": 4 + }, + "metrics": { + "success": 4, + "failed": 0, + "duration_s": 50.30488854799478, + "request_throughput": 0.07951513491941621, + "input_token_throughput": 10027.951846443526, + "output_token_throughput": 180.75778045556288, + "total_token_throughput": 10208.709626899088, + "total_input_tokens": 504455, + "total_output_tokens": 9093, + "e2e_ms": { + "mean": 23992.02666349447, + "p50": 22834.540578493034, + "p90": 34587.61013499753, + "p95": 35306.576348497765, + "p99": 35881.74931929796 + }, + "ttft_ms": { + "mean": 5468.770269493689, + "p50": 6087.707849997969, + "p90": 8380.67385629256, + "p95": 8759.632129640522, + "p99": 9062.79874831889 + }, + "tpot_ms": { + "mean": 8.625470352547925, + "p50": 7.610760335213301, + "p90": 10.917184712848888, + "p95": 11.526029506868458, + "p99": 12.013105342084113 + }, + "itl_ms": { + "mean": 8.190675389343355, + "p50": 7.165019997046329, + "p90": 7.346970996877644, + "p95": 7.413411745801568, + "p99": 7.657706698955734 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_2_262144_4096.jsonl" + }, + { + "name": "c5_i262144_o1024", + "config": { + "phase": "256k", + "concurrency": 5, + "input_len": 262144, + "output_len": 1024, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 61.33781583599921, + "request_throughput": 0.16303156321603146, + "input_token_throughput": 22724.985899838946, + "output_token_throughput": 60.321678389931634, + "total_token_throughput": 22785.307578228876, + "total_input_tokens": 1393901, + "total_output_tokens": 3700, + "e2e_ms": { + "mean": 28871.281030599494, + "p50": 28017.1025669988, + "p90": 40567.3574001019, + "p95": 47913.59944454815, + "p99": 53790.59308010517 + }, + "ttft_ms": { + "mean": 11196.959846300888, + "p50": 10630.609530002403, + "p90": 17471.093674494474, + "p95": 22564.888229250926, + "p99": 26639.923873056105 + }, + "tpot_ms": { + "mean": 47.48773145747153, + "p50": 37.93084358310368, + "p90": 89.22286159943364, + "p95": 100.68561415719321, + "p99": 109.85581620340092 + }, + "itl_ms": { + "mean": 51.40852411926291, + "p50": 7.74506800371455, + "p90": 283.8695481987088, + "p95": 338.8318899014843, + "p99": 459.29262580379196 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_5_262144_1024.jsonl" + }, + { + "name": "c5_i262144_o256", + "config": { + "phase": "256k", + "concurrency": 5, + "input_len": 262144, + "output_len": 256, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 54.00763233398902, + "request_throughput": 0.1851590148992076, + "input_token_throughput": 25809.333602702038, + "output_token_throughput": 25.848198479929383, + "total_token_throughput": 25835.181801181967, + "total_input_tokens": 1393901, + "total_output_tokens": 1396, + "e2e_ms": { + "mean": 26745.69082800008, + "p50": 26546.488270505506, + "p90": 45666.111250901304, + "p95": 45719.32812445375, + "p99": 45761.90162329571 + }, + "ttft_ms": { + "mean": 9094.423362601083, + "p50": 6875.693890498951, + "p90": 16493.41224690724, + "p95": 21986.99414745059, + "p99": 26381.859667885295 + }, + "tpot_ms": { + "mean": 123.42273835337818, + "p50": 157.13877274814615, + "p90": 186.793076411668, + "p95": 202.77654827342073, + "p99": 215.56332576282296 + }, + "itl_ms": { + "mean": 156.4825442339936, + "p50": 14.127962000202388, + "p90": 379.0354756027227, + "p95": 433.3574508113088, + "p99": 501.85217722595576 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_5_262144_256.jsonl" + }, + { + "name": "c5_i262144_o4096", + "config": { + "phase": "256k", + "concurrency": 5, + "input_len": 262144, + "output_len": 4096, + "dataset": "random", + "num_prompts": 10 + }, + "metrics": { + "success": 10, + "failed": 0, + "duration_s": 92.91902663900692, + "request_throughput": 0.10762058495135003, + "input_token_throughput": 15001.244098427176, + "output_token_throughput": 205.12483491727315, + "total_token_throughput": 15206.368933344449, + "total_input_tokens": 1393901, + "total_output_tokens": 19060, + "e2e_ms": { + "mean": 41465.640329997404, + "p50": 42983.5961284989, + "p90": 57826.16482919402, + "p95": 61304.00343809668, + "p99": 64086.27432521884 + }, + "ttft_ms": { + "mean": 9122.39999499725, + "p50": 6438.129387992376, + "p90": 16719.39194359147, + "p95": 22171.777112298136, + "p99": 26533.685247263496 + }, + "tpot_ms": { + "mean": 25.69300724592341, + "p50": 15.639313094015739, + "p90": 57.04181744930917, + "p95": 63.31536574396504, + "p99": 68.33420437968975 + }, + "itl_ms": { + "mean": 17.320837186150214, + "p50": 8.466871004202403, + "p90": 8.95137139596045, + "p95": 9.216577408369629, + "p99": 342.54000560729764 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_256k_0708_5_262144_4096.jsonl" + }, + { + "name": "c25_i65536_o1024", + "config": { + "phase": "64k", + "concurrency": 25, + "input_len": 65536, + "output_len": 1024, + "dataset": "random", + "num_prompts": 50 + }, + "metrics": { + "success": 50, + "failed": 0, + "duration_s": 77.81277099800354, + "request_throughput": 0.6425680432493898, + "input_token_throughput": 23665.151316192638, + "output_token_throughput": 332.6060705467491, + "total_token_throughput": 23997.757386739388, + "total_input_tokens": 1841451, + "total_output_tokens": 25881, + "e2e_ms": { + "mean": 36604.3198038204, + "p50": 33663.05495699635, + "p90": 70952.4083481927, + "p95": 71227.07770220513, + "p99": 72689.83805696538 + }, + "ttft_ms": { + "mean": 8358.863178979955, + "p50": 4153.6215449959855, + "p90": 23624.027395700978, + "p95": 24861.19765224866, + "p99": 28942.75298933673 + }, + "tpot_ms": { + "mean": 72.35892965785095, + "p50": 66.58819170680694, + "p90": 123.35084275705259, + "p95": 196.2389562667242, + "p99": 271.3221725716027 + }, + "itl_ms": { + "mean": 56.14946871815307, + "p50": 12.636155493964907, + "p90": 266.132606593601, + "p95": 283.47483030302095, + "p99": 315.9706088724488 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_64k_0708_25_65536_1024.jsonl" + }, + { + "name": "c25_i65536_o256", + "config": { + "phase": "64k", + "concurrency": 25, + "input_len": 65536, + "output_len": 256, + "dataset": "random", + "num_prompts": 50 + }, + "metrics": { + "success": 50, + "failed": 0, + "duration_s": 61.850929373002145, + "request_throughput": 0.8083952902060181, + "input_token_throughput": 29772.406310903247, + "output_token_throughput": 95.6008270197637, + "total_token_throughput": 29868.00713792301, + "total_input_tokens": 1841451, + "total_output_tokens": 5913, + "e2e_ms": { + "mean": 30201.942331739992, + "p50": 29890.801813991857, + "p90": 54022.06084709906, + "p95": 60181.24526374595, + "p99": 60781.44726209328 + }, + "ttft_ms": { + "mean": 11442.71382926061, + "p50": 9054.179862498131, + "p90": 23664.933058293536, + "p95": 24902.72004000362, + "p99": 28974.451748033018 + }, + "tpot_ms": { + "mean": 180.7841084353183, + "p50": 205.89811879472109, + "p90": 271.62320932265123, + "p95": 273.59178299184475, + "p99": 278.1578257179677 + }, + "itl_ms": { + "mean": 164.32375486440372, + "p50": 234.953918006795, + "p90": 298.6645766053698, + "p95": 312.48340460369946, + "p99": 343.43004875729093 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": false, + "overall": "❌" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_64k_0708_25_65536_256.jsonl" + }, + { + "name": "c25_i65536_o4096", + "config": { + "phase": "64k", + "concurrency": 25, + "input_len": 65536, + "output_len": 4096, + "dataset": "random", + "num_prompts": 50 + }, + "metrics": { + "success": 50, + "failed": 0, + "duration_s": 156.38622992498858, + "request_throughput": 0.3197212441529075, + "input_token_throughput": 11775.020095332313, + "output_token_throughput": 741.7085254605639, + "total_token_throughput": 12516.728620792876, + "total_input_tokens": 1841451, + "total_output_tokens": 115993, + "e2e_ms": { + "mean": 69020.59092995944, + "p50": 63262.664559006225, + "p90": 121268.93448900519, + "p95": 126999.05028985013, + "p99": 129654.03733668412 + }, + "ttft_ms": { + "mean": 7847.533580679155, + "p50": 2710.7052505089086, + "p90": 21635.62821639644, + "p95": 24847.965374695188, + "p99": 28840.956312033664 + }, + "tpot_ms": { + "mean": 28.80194254340415, + "p50": 30.27874658957449, + "p90": 40.0271379392775, + "p95": 46.66429590270747, + "p99": 63.40445082082613 + }, + "itl_ms": { + "mean": 26.62544646323448, + "p50": 21.984036997309886, + "p90": 22.893277191906236, + "p95": 39.47063520317897, + "p99": 284.1834103205481 + } + }, + "slo_status": { + "ttft_p95_ok": false, + "tpot_mean_ok": true, + "overall": "⚠️" + }, + "raw_file": "/data/user1/yy/experiments/dsv4_h200_long_context_matrix/results/20260708-100016/vllm/raw_outputs/vllm_64k_0708_25_65536_4096.jsonl" + } + ] +} \ No newline at end of file diff --git a/experiments/dsv4_h200_long_context_matrix/run_bench.sh b/experiments/dsv4_h200_long_context_matrix/run_bench.sh index 4ff579d..5f9dc6f 100755 --- a/experiments/dsv4_h200_long_context_matrix/run_bench.sh +++ b/experiments/dsv4_h200_long_context_matrix/run_bench.sh @@ -93,7 +93,7 @@ run_warmup() { fi log "warming up ${backend} (input=${input_len}, output=${output_len}, num=1)" - "${VENV_CLIENT}/bin/python" "${SCRIPT_DIR}/warmup.py" \ + "${VENV_CLIENT}/bin/python" "${SCRIPT_DIR}/../../scripts/common/warmup.py" \ --backend "$backend" \ --port "$port" \ --input-len "$input_len" \ @@ -201,7 +201,7 @@ parse_backend() { local backend="$1" local result_root="${RESULT_BASE}/${RUN_ID}/${backend}" log "parsing ${backend} results in ${result_root}" - "${VENV_CLIENT}/bin/python" "${SCRIPT_DIR}/parse_backend.py" "$result_root" --backend "$backend" \ + "${VENV_CLIENT}/bin/python" "${SCRIPT_DIR}/../../scripts/common/parse_backend.py" "$result_root" --backend "$backend" \ >> "${result_root}/logs/parse.log" 2>&1 || { log "WARNING: parser failed for ${backend}; see ${result_root}/logs/parse.log" } @@ -282,7 +282,7 @@ parse_backend sglang parse_backend vllm log "generating comparison report" -"${VENV_CLIENT}/bin/python" "${SCRIPT_DIR}/compare.py" \ +"${VENV_CLIENT}/bin/python" "${SCRIPT_DIR}/../../scripts/common/compare.py" \ --sglang "${RESULT_BASE}/${RUN_ID}/sglang" \ --vllm "${RESULT_BASE}/${RUN_ID}/vllm" \ --output "${RESULT_BASE}/${RUN_ID}/comparison.md" \ diff --git a/experiments/dsv4_h200_long_context_matrix/warmup.py b/experiments/dsv4_h200_long_context_matrix/warmup.py deleted file mode 100755 index 75dbe5f..0000000 --- a/experiments/dsv4_h200_long_context_matrix/warmup.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python3 -"""Send a small number of warmup requests to a running backend. - -Uses sglang.bench_serving with a single request so that the same code path -(prefill / decode kernels, CUDA graphs, etc.) is exercised before the real -benchmark begins. Discards the output. -""" -import argparse -import subprocess -import sys -import tempfile -from pathlib import Path - - -def run_warmup(backend: str, host: str, port: int, input_len: int, output_len: int, num: int, env_python: Path) -> None: - with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=True) as tmp: - cmd = [ - str(env_python), - "-m", - "sglang.bench_serving", - "--backend", - backend, - "--host", - host, - "--port", - str(port), - "--dataset-name", - "random", - "--random-input-len", - str(input_len), - "--random-output-len", - str(output_len), - "--num-prompts", - str(num), - "--max-concurrency", - "1", - "--request-rate", - "10000", - "--output-file", - tmp.name, - "--output-details", - ] - print(f"[warmup] {' '.join(cmd)}", flush=True) - result = subprocess.run(cmd, capture_output=True, text=True) - if result.returncode != 0: - print("[warmup] FAILED", file=sys.stderr) - print(result.stdout, file=sys.stderr) - print(result.stderr, file=sys.stderr) - sys.exit(1) - print(f"[warmup] OK: backend={backend} port={port} input={input_len} output={output_len} num={num}") - - -def main(): - parser = argparse.ArgumentParser(description="Warmup a serving backend.") - parser.add_argument("--backend", required=True, choices=["sglang", "vllm"]) - parser.add_argument("--port", type=int, required=True) - parser.add_argument("--input-len", type=int, required=True) - parser.add_argument("--output-len", type=int, required=True) - parser.add_argument("--num", type=int, default=1) - parser.add_argument("--host", default="127.0.0.1") - parser.add_argument("--env-python", default="/data/user1/yy/envs/sglang/bin/python") - args = parser.parse_args() - - run_warmup( - backend=args.backend, - host=args.host, - port=args.port, - input_len=args.input_len, - output_len=args.output_len, - num=args.num, - env_python=Path(args.env_python), - ) - - -if __name__ == "__main__": - main()