Skip to content

fix: add missing property for routed_experts_weights_of_layer#21461

Closed
longxin9715 wants to merge 6 commits intosgl-project:mainfrom
longxin9715:main
Closed

fix: add missing property for routed_experts_weights_of_layer#21461
longxin9715 wants to merge 6 commits intosgl-project:mainfrom
longxin9715:main

Conversation

@longxin9715
Copy link
Copy Markdown

@longxin9715 longxin9715 commented Mar 26, 2026

Motivation

Fix the invocation error caused by the missing @property wrapper for routed_experts_weights_of_layer.
After using LazyValue to lazily initialize the routed experts weights, the attribute accessor was missing, which caused runtime exceptions when accessing this field directly from outside the class.

Modifications

  1. Add the missing @property decorator and method for routed_experts_weights_of_layer.
  2. The property returns self._routed_experts_weights_of_layer.value to properly unwrap the LazyValue object.
  3. Keep the existing lazy initialization logic unchanged; only fix the attribute access issue.

Accuracy Tests

image

Benchmarking and Profiling

This change does not affect inference speed or memory usage. No benchmarking or profiling is required.

Checklist

Review Process

  1. Ping Merge Oncalls to start the PR flow. See the PR Merge Process.
  2. Get approvals from CODEOWNERS and other reviewers.
  3. Trigger CI tests with comments or contact authorized users to do so.
    • /tag-run-ci-label, /rerun-failed-ci, /tag-and-rerun-ci
  4. After green CI and required approvals, ask Merge Oncalls to merge.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, 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 addresses a runtime invocation error by implementing a crucial property accessor for a lazily initialized attribute. The change ensures that routed_experts_weights_of_layer can be correctly accessed from outside its class, resolving a bug without impacting the model's core forward logic, tensor computations, or performance.

Highlights

  • Property Addition: Added the missing @Property decorator to routed_experts_weights_of_layer in the Qwen3MoEForCausalLM class.
  • LazyValue Unwrapping: The new property method now correctly unwraps the LazyValue object by returning self._routed_experts_weights_of_layer.value.
  • Core Logic Unchanged: Ensured that the existing lazy initialization logic remains intact, focusing solely on fixing the attribute access issue.

🧠 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.

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
Copy Markdown
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 property, routed_experts_weights_of_layer, to the qwen3_moe.py model. This property provides a convenient way to access the value of the _routed_experts_weights_of_layer attribute. There is no feedback to provide.

@sglang-npu-bot
Copy link
Copy Markdown
Collaborator

/tag-and-rerun-ci

@sglang-npu-bot
Copy link
Copy Markdown
Collaborator

/rerun-failed-ci

j30065060 and others added 4 commits March 28, 2026 17:53
* origin/main:
  [MLX] Add native MLX execution backend for Apple Silicon Mac (#20342)
  [Diffusion] Refactor diffusion JIT kernel test layout and narrow CI triggers (#21385)
  [CI] Add PID namespace and ps auxf diagnostics to killall.py (#21401)
@longxin9715 longxin9715 closed this by deleting the head repository Mar 30, 2026
vroomfondel added a commit to vroomfondel/dgxarley that referenced this pull request Apr 7, 2026
**Upstream status** as of 2026-04-06:
- Qwen3.5: fixed via [PR #19767](sgl-project/sglang#19767) (merged 2026-03-09, included in v0.5.10)
- Qwen3: [PR #21461](sgl-project/sglang#21461) — closed without merge 2026-03-30 (CI failure), superseded by #21822
- Qwen3: [PR #21822](sgl-project/sglang#21822) — new fix opened 2026-03-26, addresses `AttributeError: 'LazyValue' object has no attribute 'keys'` in `eplb_manager.py` for Qwen3 MoE. Code review 2026-04-04 by `Fridge003` and `Evgueni-Petrov-aka-espetrov`. Alternative `LazyValue.__getattr__` approach proposed (avoids modifying the model class). **Approved** by `Fridge003` on 2026-04-06, CI rerun triggered — awaiting merge. (Duplicate [PR #21820](sgl-project/sglang#21820) was closed same day in favour of #21822.) Not in v0.5.10

When `--enable-eplb` is active with EP, the `EPLBManager` crashes after its first rebalance interval (default: 1000 forward passes):
- SGLang PR #17137 — non-Marlin WNA16MoE port (does not fix EP bug)
- SGLang #14158 — update_weights_from_tensor for WNA16MoE (unrelated)
- SGLang [PR #13715](sgl-project/sglang#13715) — fix EPLB + FP4 weight tensor filtering (merged, different issue)
- SGLang [PR #20963](sgl-project/sglang#20963) — Nvidia modelopt refactoring (1/N). Under active review: reviewer `Edwardf0t1` asked for end-to-end verification 2026-03-31, author `wenscarl` responded 2026-04-01 and posted 3 further inline review responses 2026-04-06. Not stalled but awaiting approval. Migrates the NVFP4 code as-is — expected vehicle for EP-awareness fixes (#20869, #21630). Watch this PR for resolution of the NVFP4 input_scale and CutlassMoEParams bugs
- SGLang [PR #21822](sgl-project/sglang#21822) — new EPLB/Qwen3 fix (opened 2026-03-26). Addresses `LazyValue.keys()` AttributeError. Code review 2026-04-04 by `Fridge003` and `Evgueni-Petrov-aka-espetrov`. Alternative `LazyValue.__getattr__` approach proposed. **Approved** by `Fridge003` on 2026-04-06, CI rerun triggered — awaiting merge

"Good code is like humor: when you have to explain it, it’s bad." - Cory House
P.S.: Code reviews and approvals are crucial for maintaining high-quality software.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants