-
-
Notifications
You must be signed in to change notification settings - Fork 11.3k
[Kernel][Model] Tune fused_moe Triton configs for Qwen3-30B A3/A3B on H100 (FP8/BF16) #26268
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Kernel][Model] Tune fused_moe Triton configs for Qwen3-30B A3/A3B on H100 (FP8/BF16) #26268
Conversation
|
👋 Hi! Thank you for contributing to the vLLM project. 💬 Join our developer Slack at https://slack.vllm.ai to discuss your PR in #pr-reviews, coordinate on features in #feat- channels, or join special interest groups in #sig- channels. Just a reminder: PRs would not trigger full CI run by default. Instead, it would only run You ask your reviewers to trigger select CI tests on top of Once the PR is approved and ready to go, your PR reviewer(s) can run CI to test the changes comprehensively before merging. To run CI, PR reviewers can either: Add If you have any questions, please reach out to us on Slack at https://slack.vllm.ai. 🚀 |
There was a problem hiding this 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 tuned Triton configurations for Fused-MoE kernels to optimize performance for Qwen3-30B models on H100 GPUs. While the intent is to provide specific configs for FP8 and BF16 data types with expert counts of 64 and 128, a critical issue has been identified: all four newly added JSON configuration files are identical. This suggests a copy-paste error, which would lead to using incorrect and non-optimal kernel parameters for at least three of the four scenarios, potentially degrading performance instead of improving it. It is crucial to replace the duplicated content with the correctly tuned configurations for each specific file.
...utor/layers/fused_moe/configs/E=128,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=bf16.json
Show resolved
Hide resolved
b0146ac to
086ce44
Compare
- Add JSONs for E=64 and E=128, N=8960 with device_name=NVIDIA_H100_80GB_HBM3 - Verified loader pickup on H100 80GB (logs show “Using configuration from …” for fp8_w8a8 and bf16) Refs: vllm-project#22294 Signed-off-by: Shivam <shivampr.dev@gmail.com>
086ce44 to
14699ba
Compare
…BF16 & FP8); per-(E,dtype) distinct tables Signed-off-by: Shivam <shivampr.dev@gmail.com>
7c2e05c to
fde213e
Compare
|
Hi @mgoin , |
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com> Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com> Signed-off-by: 0xrushi <6279035+0xrushi@users.noreply.github.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com> Signed-off-by: 0xrushi <6279035+0xrushi@users.noreply.github.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com>
… H100 (FP8/BF16) (vllm-project#26268) Signed-off-by: Shivam <shivampr.dev@gmail.com>
Purpose
This PR adds tuned Fused-MoE Triton configs for Qwen3-30B A3 (E=64) and A3B (E=128) on NVIDIA H100 80GB, covering both BF16 and FP8 (
fp8_w8a8). It’s part of #22294.New files (under
vllm/model_executor/layers/fused_moe/configs/):E=64,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=bf16.jsonE=64,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.jsonE=128,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=bf16.jsonE=128,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.jsonEach table is tuned per (E, dtype) and only keeps the “turning-point” batches to avoid bloat. For FP8, I used zero-init weights + unit scales (PyTorch can’t
randnfloat8 yet); this doesn’t affect which kernel gets picked—selection depends on shapes and launch params.Test Plan
Env: H100 80GB (SXM) · CUDA 12.8 · PyTorch 2.8.0 · vLLM wheel (with Triton)
What I verified
Repro
Loader logs (proof of pickup)