fix(dashboard): Fix SGLang benchmark workflow and integrate into dashboard#548
fix(dashboard): Fix SGLang benchmark workflow and integrate into dashboard#548
Conversation
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
e8d9255 to
1f36af3
Compare
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
There was a problem hiding this comment.
Pull request overview
This PR adds/updates benchmarking automation for ATOM-accelerated SGLang and wires its results into the existing benchmark dashboard, while refactoring the benchmark-processing scripts to be framework-agnostic and shared across vLLM and SGLang.
Changes:
- Introduces shared “plugin_*” benchmark scripts and updates both vLLM and SGLang benchmark workflows to use them (including per-backend labeling for the dashboard).
- Adds a shared graph-capture patch helper and hooks SGLang plugin mode to apply it (mirroring the vLLM plugin patch behavior).
- Updates Docker release workflow logic to allow releasing both OOT and SGLang images when both inputs are selected; adds dashboard color offset for ATOM-SGLang.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
docker/Dockerfile |
Removes ROCm vision/audio wheel pinning and replaces with runtime validation for both OOT and SGLang images. |
atom/plugin/graph_capture_patch.py |
Adds a shared helper to patch framework GroupCoordinator.graph_capture to nest aiter capture. |
atom/plugin/vllm/graph_capture_patch.py |
Refactors vLLM patch module to delegate to the shared helper. |
atom/plugin/sglang/graph_capture_patch.py |
Adds SGLang patch module delegating to the shared helper. |
atom/plugin/prepare.py |
Applies the SGLang graph-capture patch during SGLang plugin model preparation. |
.github/workflows/docker-release.yaml |
Fixes release gating logic so selecting both “only_release_*” builds/releases both images. |
.github/workflows/atom-vllm-benchmark.yaml |
Switches to unified plugin scripts; passes title/default backend for dashboard integration. |
.github/workflows/atom-sglang-benchmark.yaml |
Switches to unified plugin scripts; publishes results with ATOM-SGLang backend labeling and data-only gh-pages updates. |
.github/scripts/plugin_benchmark_validate_baseline.py |
Generalizes baseline validation to skip any *_benchmark_summary.json and regression report. |
.github/scripts/plugin_benchmark_to_dashboard.py |
Generalizes dashboard conversion; adds --default-backend and supports SGLang image tag field. |
.github/scripts/plugin_benchmark_summary.py |
Generalizes summary generation; adds --title. |
.github/scripts/plugin_benchmark_regression.py |
Generalizes regression report wording (OOT → generic). |
.github/dashboard/index.html |
Adds backend hue offset for ATOM-SGLang to visually separate charts. |
Comments suppressed due to low confidence (1)
.github/scripts/plugin_benchmark_to_dashboard.py:91
.github/workflows/pre-checks.yamlruns Black and Ruff on the whole repo;plugin_benchmark_to_dashboard.pycurrently has formatting that will fail those checks (e.g., overly long lines and whitespace on blank lines around thebuild_entriesdefinition /image_tagblock). Please run Black on this file (which will also remove the trailing whitespace) so CI style checks pass.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
3009f89 to
2f6a1cd
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds a dedicated GitHub Actions workflow for ATOM+SGLang benchmarking and integrates its results into the existing benchmark dashboard, while refactoring previously OOT/vLLM-specific benchmark scripts into shared “plugin” scripts reusable across frameworks.
Changes:
- Introduces/updates the ATOM SGLang benchmark workflow and wires its results into the dashboard publish flow.
- Refactors benchmark helper scripts (
*_summary,*_to_dashboard,*_validate_baseline,*_regression) into framework-agnostic “plugin_*” variants and updates workflows to use them. - Centralizes the graph-capture patch logic into a shared helper and adds an SGLang-specific delegating patch module.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| docker/Dockerfile | Removes ROCm vision/audio wheel pinning and replaces with runtime validation; adjusts SGLang step labels. |
| atom/plugin/graph_capture_patch.py | Adds shared framework-agnostic graph_capture patch helper. |
| atom/plugin/vllm/graph_capture_patch.py | Refactors vLLM patch module to delegate to shared helper. |
| atom/plugin/sglang/graph_capture_patch.py | Adds SGLang patch module delegating to shared helper. |
| atom/plugin/prepare.py | Applies SGLang graph_capture patch during plugin model preparation. |
| .github/workflows/docker-release.yaml | Fixes only_release_* mutual-exclusivity behavior so both can be released when both are selected. |
| .github/workflows/atom-vllm-benchmark.yaml | Switches to unified plugin benchmark scripts and passes backend/title parameters. |
| .github/workflows/atom-sglang-benchmark.yaml | Expands model toggles, loads model configs from JSON, uses unified plugin scripts, and publishes dashboard data. |
| .github/scripts/plugin_benchmark_validate_baseline.py | Generalizes baseline validation to ignore summary artifacts and remove OOT-specific wording. |
| .github/scripts/plugin_benchmark_to_dashboard.py | Generalizes dashboard conversion, adds --default-backend, supports SGLang image tag field. |
| .github/scripts/plugin_benchmark_summary.py | Generalizes summary title/wording and adds --title. |
| .github/scripts/plugin_benchmark_regression.py | Generalizes regression script wording (OOT → benchmark). |
| .github/dashboard/index.html | Adds hue offset for ATOM-SGLang to visually distinguish charts. |
| .github/benchmark/sglang_benchmark_models.json | Adds JSON model configuration source for the SGLang benchmark workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
Description
This PR introduces a dedicated GitHub Actions workflow for benchmarking ATOM-accelerated SGLang (
atom-sglang-benchmark.yaml) and officially integrates its performance results into the benchmark dashboard.To avoid code duplication, it also refactors the existing vLLM Python scripts into generic plugin scripts shared by both frameworks.
cherry-pick #497 and #575 to make sure sglang docker and benchmark functionality, details can refer to each pr description.
SGLang Benchmark Details
workflow_dispatch).DeepSeek-R1-0528(FP8 TP8).atom-mi355-8gpu-oot-benchmark(MI355 8-GPU machines).Dashboard Integration
-30) forATOM-SGLanginindex.htmlto visually distinguish its charts fromATOMandATOM-vLLM.atom_logo_mini.pngis correctly copied to thegh-pagesbranch.Script Unification (SGLang & vLLM)
oot_benchmark_*.pyscripts toplugin_benchmark_*.pyto make them framework-agnostic.atom-sglang-benchmark.yamlandatom-vllm-oot-benchmark.yamlto reuse these unified scripts by passing specific arguments (e.g.,--titleand--default-backend).Docker Release Workflow Fix
docker-release.yaml: Previously, if a user checked bothonly_release_ootandonly_release_sglang, the workflow would fail to build either image. The logic has been updated so that if both are checked, both the OOT and SGLang images will be built and released (while still correctly skipping the native image test/push). The UI descriptions for these inputs have been updated to reflect this behavior.