Skip to content

fix(dashboard): Fix SGLang benchmark workflow and integrate into dashboard#548

Merged
valarLip merged 8 commits intomainfrom
yuhua/slg-benchmark
Apr 16, 2026
Merged

fix(dashboard): Fix SGLang benchmark workflow and integrate into dashboard#548
valarLip merged 8 commits intomainfrom
yuhua/slg-benchmark

Conversation

@zhuyuhua-v
Copy link
Copy Markdown
Collaborator

@zhuyuhua-v zhuyuhua-v commented Apr 13, 2026

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

  • Trigger Method: Manual only (workflow_dispatch).
  • Target Model: DeepSeek-R1-0528 (FP8 TP8).
  • Hardware / Runner: Executed on atom-mi355-8gpu-oot-benchmark (MI355 8-GPU machines).
  • Workflow: Handles custom SGLang Docker image building, model loading, performance profiling, and result artifact generation.

Dashboard Integration

  • Added a dedicated hue offset (-30) for ATOM-SGLang in index.html to visually distinguish its charts from ATOM and ATOM-vLLM.
  • Fixed a missing deployment step in the workflow to ensure atom_logo_mini.png is correctly copied to the gh-pages branch.

Script Unification (SGLang & vLLM)

  • Renamed the existing oot_benchmark_*.py scripts to plugin_benchmark_*.py to make them framework-agnostic.
  • Updated both atom-sglang-benchmark.yaml and atom-vllm-oot-benchmark.yaml to reuse these unified scripts by passing specific arguments (e.g., --title and --default-backend).

Docker Release Workflow Fix

  • Fixed mutual exclusivity bug in docker-release.yaml: Previously, if a user checked both only_release_oot and only_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.

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>
@zhuyuhua-v zhuyuhua-v force-pushed the yuhua/slg-benchmark branch from e8d9255 to 1f36af3 Compare April 14, 2026 09:14
@zhuyuhua-v zhuyuhua-v marked this pull request as ready for review April 16, 2026 01:45
Copilot AI review requested due to automatic review settings April 16, 2026 01:45
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.yaml runs Black and Ruff on the whole repo; plugin_benchmark_to_dashboard.py currently has formatting that will fail those checks (e.g., overly long lines and whitespace on blank lines around the build_entries definition / image_tag block). 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.

Comment thread .github/workflows/atom-sglang-benchmark.yaml
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
@zhuyuhua-v zhuyuhua-v force-pushed the yuhua/slg-benchmark branch from 3009f89 to 2f6a1cd Compare April 16, 2026 04:51
Copilot AI review requested due to automatic review settings April 16, 2026 04:51
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread docker/Dockerfile
Comment thread atom/plugin/vllm/graph_capture_patch.py
Comment thread atom/plugin/sglang/graph_capture_patch.py
Comment thread .github/workflows/atom-sglang-benchmark.yaml
Comment thread .github/workflows/atom-sglang-benchmark.yaml
Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
@wuhuikx wuhuikx requested review from gyohuangxin and valarLip April 16, 2026 06:34
@valarLip valarLip merged commit a2f33bf into main Apr 16, 2026
23 of 29 checks passed
@valarLip valarLip deleted the yuhua/slg-benchmark branch April 16, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants