Files
wehub-resource-sync 94057c3d3e
PR Test (NPU) / check-changes (push) Has been cancelled
PR Test (NPU) / pr-gate (push) Has been cancelled
PR Test (NPU) / set-image-config (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-4-npu-a3 (push) Has been cancelled
PR Test (NPU) / stage-b-test-16-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-1-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-2-npu-a3 (push) Has been cancelled
PR Test (Arm64) / pr-gate (push) Has been cancelled
PR Test (Arm64) / check-changes (push) Has been cancelled
PR Test (Arm64) / build-test (push) Has been cancelled
PR Test (sgl-router) / gate (push) Has been cancelled
PR Test (sgl-router) / tier-1 — lint (push) Has been cancelled
PR Test (sgl-router) / tier-2 — build + test (push) Has been cancelled
PR Test (sgl-router) / tier-3 — docker (placeholder) (push) Has been cancelled
PR Test (sgl-router) / tier-3 — k8s integration (push) Has been cancelled
PR Test (sgl-router) / tier-3 — e2e (push) Has been cancelled
PR Test (sgl-router) / finish (push) Has been cancelled
PR Test (NPU) / single-node-poc (map[name:qwen3_6_27b_w8a8_1p_in64k_out1k_50ms runner:linux-aarch64-a3-2 test_case:test/registered/ascend/performance/qwen3_6_27b/test_npu_qwen3_6_27b_w8a8_1p_in64k_out1k_50ms.py test_type:perf]) (push) Has been cancelled
PR Test (NPU) / pr-test-npu-finish (push) Has been cancelled
PR Test (Xeon) / pr-gate (push) Has been cancelled
PR Test (Xeon) / check-changes (push) Has been cancelled
PR Test (Xeon) / build-test (, xeon-gnr, base-b-test-cpu) (push) Has been cancelled
PR Test (XPU) / check-changes (push) Has been cancelled
PR Test (XPU) / pr-gate (push) Has been cancelled
PR Test (XPU) / stage-a-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / wait-for-stage-a (push) Has been cancelled
PR Test (XPU) / stage-b-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / finish (push) Has been cancelled
CI Model Inventory / build-inventory (push) Has been cancelled
Lint / lint (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Compilation Check (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Manual Policy (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Request Processing (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Summary (push) Has been cancelled
PR Test (SMG) / build-wheel (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on windows (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (x86_64 - auto) (push) Has been cancelled
PR Test (SMG) / python-unit-tests (push) Has been cancelled
PR Test (SMG) / unit-tests (push) Has been cancelled
PR Test (SMG) / benchmarks (push) Has been cancelled
PR Test (SMG) / chat-completions (push) Has been cancelled
PR Test (SMG) / chat-completions-4gpu (push) Has been cancelled
PR Test (SMG) / e2e (push) Has been cancelled
PR Test (SMG) / docker-build-test (push) Has been cancelled
PR Test (SMG) / k8s-integration (push) Has been cancelled
PR Test (SMG) / finish (push) Has been cancelled
PR Test (SMG) / summarize-benchmarks (push) Has been cancelled
Release SGLang Model Gateway Docker Image / publish (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Build SDist (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Upload to PyPI (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (aarch64, 12.9, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (x86_64, 12.9, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu129 (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (aarch64, 13.0, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (x86_64, 13.0, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu130 (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 700) (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 720) (push) Has been cancelled
Release SGLang Kernels / release-rocm700 (push) Has been cancelled
Release SGLang Kernels / release-rocm720 (push) Has been cancelled
Release SGLang Kernels / build-musa43 (43, 3.10) (push) Has been cancelled
Release SGLang Kernels / release-musa43 (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:16 +08:00

129 lines
3.1 KiB
Python

"""Print a markdown summary table from processed benchmark results.
Usage:
python3 summarize.py <results_dir>
Reads all agg_*.json files recursively from <results_dir> and prints a
markdown table to stdout (redirect to $GITHUB_STEP_SUMMARY to publish).
"""
import json
import sys
from pathlib import Path
from tabulate import tabulate
HEADERS = [
"Model",
"Served Model",
"Hardware",
"Framework",
"Precision",
"ISL",
"OSL",
"Prefill TP",
"Prefill EP",
"Prefill DP Attn",
"Prefill Workers",
"Prefill GPUs",
"Decode TP",
"Decode EP",
"Decode DP Attn",
"Decode Workers",
"Decode GPUs",
"Conc",
"TTFT (ms)",
"TPOT (ms)",
"Interactivity (tok/s/user)",
"E2EL (s)",
"TPUT per GPU",
"Output TPUT per GPU",
"Input TPUT per GPU",
]
def load_json(path):
try:
with open(path) as f:
return json.load(f)
except Exception:
return None
def main():
if len(sys.argv) < 2:
print("Usage: python3 summarize.py <results_dir>")
sys.exit(1)
results_dir = Path(sys.argv[1])
results = [
r
for path in results_dir.rglob("agg_*.json")
if (r := load_json(path)) and "is_multinode" in r
]
if not results:
print("No processed result files found.")
return
results.sort(
key=lambda r: (
r["infmax_model_prefix"],
r["hw"],
r["framework"],
r["precision"],
r["isl"],
r["osl"],
r["prefill_tp"],
r["prefill_ep"],
r["decode_tp"],
r["decode_ep"],
r["conc"],
)
)
rows = [
[
r["infmax_model_prefix"],
r["model"],
r["hw"].upper(),
r["framework"].upper(),
r["precision"].upper(),
r["isl"],
r["osl"],
r["prefill_tp"],
r["prefill_ep"],
r["prefill_dp_attention"],
r["prefill_num_workers"],
r["num_prefill_gpu"],
r["decode_tp"],
r["decode_ep"],
r["decode_dp_attention"],
r["decode_num_workers"],
r["num_decode_gpu"],
r["conc"],
f"{r['median_ttft'] * 1000:.4f}",
f"{r['median_tpot'] * 1000:.4f}",
f"{r['median_intvty']:.4f}",
f"{r['median_e2el']:.4f}",
f"{r['tput_per_gpu']:.4f}",
f"{r['output_tput_per_gpu']:.4f}",
f"{r['input_tput_per_gpu']:.4f}",
]
for r in results
]
hw_label = "/".join(sorted({r["hw"].upper() for r in results}))
if hw_label == "GB200":
# NVIDIA GB200 nightly: keep the original hardcoded title untouched.
print("## GB200 Nightly Benchmark Results\n")
else:
# AMD (e.g. MI355X) nightly: derive the title from the result hardware.
print(f"## {hw_label} Nightly Benchmark Results\n")
print(tabulate(rows, headers=HEADERS, tablefmt="github"))
print()
if __name__ == "__main__":
main()