Skip to content

[AMD] feat: Add mi355x distributed inference test CI workflow#401

Merged
cquil11 merged 6 commits intomainfrom
feat/mi355x-disagg
Jan 8, 2026
Merged

[AMD] feat: Add mi355x distributed inference test CI workflow#401
cquil11 merged 6 commits intomainfrom
feat/mi355x-disagg

Conversation

@cquil11
Copy link
Collaborator

@cquil11 cquil11 commented Jan 7, 2026

This patch is to add mi355x distributed inference test CI workflow and integrate recipes https://github.com/billishyahao/sglang_disagg into inferencemax github action

Co-authored-by: billishyahao [email protected]
Co-authored-by: ichbinblau [email protected]
Co-authored-by: Duyi-Wang [email protected]
Co-authored-by: inkcherry [email protected]


Note

Adds multinode disaggregated benchmarking for DeepSeek-R1 FP8 on MI355X using SGLang.

  • New dsr1-fp8-mi355x-sglang-disagg config in amd-master.yaml with prefill/decode worker splits, EP/DP toggles, and both MTP and non-MTP across isl/osl pairs (1k1k, 8k1k, 1k8k)
  • New benchmarks/dsr1_fp8_mi355x_sglang-disagg_slurm.sh that clones sglang_disagg, sets env, and submits disagg Slurm jobs
  • runners/launch_mi355x-amd.sh gains multinode path: scancel_sync, Slurm env, job submit, log tailing, result collection, and cleanup; retains single-node flow
  • Update perf-changelog.yaml documenting the new MI355X 1P2D disaggregation (with/without speculative decoding)

Written by Cursor Bugbot for commit 1460803. This will update automatically on new commits. Configure here.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @cquil11, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request establishes a new continuous integration workflow to validate distributed inference performance on AMD MI355x accelerators. It incorporates sglang_disagg for benchmarking the DeepSeek-R1 model using FP8 precision across various configurations, including both MTP and non-MTP speculative decoding. The changes also involve significant updates to the SLURM job launcher to orchestrate and monitor these complex multinode tests effectively.

Highlights

  • New CI Workflow: Introduced a CI workflow for distributed inference testing on AMD MI355x hardware.
  • SGLang Disaggregation Integration: Integrated sglang_disagg recipes for benchmarking, specifically for the DeepSeek-R1 model with FP8 precision.
  • Multinode Benchmark Support: Enhanced the MI355x runner script to support and manage multinode SLURM jobs for distributed inference benchmarks, including robust log and result collection.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new CI workflow for distributed inference testing on MI355x hardware. The changes include a new YAML configuration for the test suite, a benchmark script for sglang-disagg, and significant modifications to the launch_mi355x-amd.sh runner script to handle multi-node SLURM jobs. My review focuses on improving the maintainability, robustness, and security of the new scripts. Key areas for improvement include reducing duplication in the YAML configuration using anchors, avoiding dependencies on personal GitHub repositories in CI, removing the use of sudo for better security, and fixing a fragile file processing loop in the runner script.

bash benchmarks/"${EXP_NAME%%_*}_${PRECISION}_mi355x_${FRAMEWORK}_slurm.sh"

# Wait for job to complete
JOB_ID=$(squeue -u $USER --noheader --format='%i')
Copy link

Choose a reason for hiding this comment

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

Missing validation that job was submitted successfully

Medium Severity

The benchmark script execution on line 46 has no return code check, and there's no validation that JOB_ID is non-empty before proceeding. If the benchmark script fails (e.g., git clone fails in the called script), execution continues and JOB_ID captures whatever jobs happen to be in the queue. If JOB_ID is empty but other user jobs exist, the loop on lines 56-63 becomes infinite because grep -q "" matches any output, preventing the error condition from triggering while the expected log file never appears.

Fix in Cursor Fix in Web

@cquil11 cquil11 merged commit 1e6cfbf into main Jan 8, 2026
1 check passed
@cquil11 cquil11 deleted the feat/mi355x-disagg branch January 8, 2026 21:24
cquil11 added a commit that referenced this pull request Jan 8, 2026
cquil11 added a commit that referenced this pull request Jan 8, 2026
@cquil11 cquil11 restored the feat/mi355x-disagg branch January 8, 2026 21:27
@functionstackx functionstackx deleted the feat/mi355x-disagg branch January 11, 2026 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Development

Successfully merging this pull request may close these issues.

3 participants