Skip to content

[None][fix] Fix Qwen3 w4a8 model execution failure and add unit test (re-open of #14527) - #17196

Open
rosenrodt wants to merge 5 commits into
NVIDIA:mainfrom
rosenrodt:mixed-w4a8-quant-fix
Open

[None][fix] Fix Qwen3 w4a8 model execution failure and add unit test (re-open of #14527)#17196
rosenrodt wants to merge 5 commits into
NVIDIA:mainfrom
rosenrodt:mixed-w4a8-quant-fix

Conversation

@rosenrodt

@rosenrodt rosenrodt commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Dev Engineer Review

  • ConfigurableMoE defers backend weight creation until layer-wise quantization is applied.
  • Explicit quantization overrides remain authoritative.
  • Excluded MoE modules reset _weights_created and recreate weights with the updated configuration.
  • The implementation supports Qwen3 W4A8 quantization with FP8 KV cache.
  • The MMLU reference records 79.53 accuracy for Qwen3-30B-A3B.
  • Test-list entries target the intended Qwen3 W4A8 test.
  • Remaining risks include broad deferral for FP8 block-scale models and MoE modules created outside the post-initialization lifecycle.
  • Verdict: needs follow-up.

QA Engineer Review

  • Added test_layerwise_quant_config_is_applied_before_weight_creation.
  • Added test_exclusions_only_recreate_matching_moe_weights.
  • Added TestQwen3_30B_A3B.test_w4a8.
  • Registered the integration test in tests/integration/test_lists/qa/llm_function_core.txt.
  • Registered the same test in tests/integration/test_lists/test-db/l0_dgx_h100.yml.
  • The integration test covers tensor parallelism, expert parallelism, CUDA graphs, overlap scheduling, attention DP, and MMLU accuracy.
  • Updated-head CI coverage is incomplete because two runs failed and a later run was aborted.
  • Verdict: needs follow-up.

Description

Re-open of #14527

Models utilizing w4a8 + fp8 kvcache failed to correctly retrieve quant_config. As a result, the system failed to trigger and use the correct load weight method during model initialization or weight loading.

Test Coverage

pytest tests/integration/defs/accuracy/test_llm_api_pytorch.py::TestQwen3_30B_A3B::test_w4a8[tp2_ep1]
pytest tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py

PR Checklist

Please review the following before submitting your PR:

  • PR description clearly explains what and why. If using CodeRabbit's summary, please make sure it makes sense.

  • PR Follows TRT-LLM CODING GUIDELINES to the best of your knowledge.

  • Test cases are provided for new code paths (see test instructions)

  • If PR introduces API changes, an appropriate PR label is added - either api-compatible or api-breaking. For api-breaking, include BREAKING in the PR title.

  • Any new dependencies have been scanned for license and vulnerabilities

  • CODEOWNERS updated if ownership changes

  • Documentation updated as needed

  • Update tava architecture diagram if there is a significant design change in PR.

  • The reviewers assigned automatically/manually are appropriate for the PR.

  • Please check this after reviewing the above items as appropriate for this PR.

GitHub Bot Help

To see a list of available CI bot commands, please comment /bot help.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 69a3fca8-1abe-437f-87fd-d934029b5d6b

📥 Commits

Reviewing files that changed from the base of the PR and between 223b76e and 342b7a0.

📒 Files selected for processing (7)
  • tensorrt_llm/_torch/models/modeling_utils.py
  • tensorrt_llm/_torch/modules/fused_moe/configurable_moe.py
  • tests/integration/defs/accuracy/references/mmlu.yaml
  • tests/integration/defs/accuracy/test_llm_api_pytorch.py
  • tests/integration/test_lists/qa/llm_function_core.txt
  • tests/integration/test_lists/test-db/l0_dgx_h100.yml
  • tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py
🚧 Files skipped from review as they are similar to previous changes (5)
  • tests/integration/test_lists/qa/llm_function_core.txt
  • tests/integration/defs/accuracy/references/mmlu.yaml
  • tests/integration/test_lists/test-db/l0_dgx_h100.yml
  • tests/integration/defs/accuracy/test_llm_api_pytorch.py
  • tensorrt_llm/_torch/modules/fused_moe/configurable_moe.py

Walkthrough

The change updates ConfigurableMoE to apply finalized or overridden quantization settings before backend weight creation. It also adds and registers a 2-GPU Qwen3 30B-A3B W4A8 MMLU accuracy test.

Changes

Qwen3 W4A8 quantization and accuracy coverage

Layer / File(s) Summary
Backend quantization synchronization
tensorrt_llm/_torch/modules/fused_moe/configurable_moe.py
ConfigurableMoE stores quantization overrides, defers weight creation when post-initialization settings can change, and applies the finalized configuration before backend allocation.
Excluded-module weight recreation
tensorrt_llm/_torch/models/modeling_utils.py, tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py
Excluded MoE modules reset _weights_created after quantization changes. Unit tests verify configuration ordering, weight invalidation, and single recreation.
W4A8 accuracy test and registration
tests/integration/defs/accuracy/references/mmlu.yaml, tests/integration/defs/accuracy/test_llm_api_pytorch.py, tests/integration/test_lists/qa/llm_function_core.txt, tests/integration/test_lists/test-db/l0_dgx_h100.yml
Adds the Qwen3 mixed-precision MMLU reference, defines the 2-GPU W4A8 test, and registers it in QA and H100 pre-merge suites.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: bowenfu, leslie-fang25

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title follows the required format and clearly identifies the Qwen3 W4A8 execution fix and added unit test.
Description check ✅ Passed The description explains the issue, solution, relevant tests, and includes the repository checklist with the review confirmation checked.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
tests/integration/defs/accuracy/test_llm_api_pytorch.py (1)

4772-4773: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add type annotations to the new test method.

Annotate tp_size, pp_size, and ep_size as int. Annotate attention_dp, cuda_graph, and overlap_scheduler as bool. Add -> None.

Proposed change
-    def test_w4a8(self, tp_size, pp_size, ep_size, attention_dp, cuda_graph,
-                  overlap_scheduler):
+    def test_w4a8(
+        self,
+        tp_size: int,
+        pp_size: int,
+        ep_size: int,
+        attention_dp: bool,
+        cuda_graph: bool,
+        overlap_scheduler: bool,
+    ) -> None:

As per coding guidelines, “Annotate every function, use None for non-returning functions.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/integration/defs/accuracy/test_llm_api_pytorch.py` around lines 4772 -
4773, Update the test_w4a8 method signature to annotate tp_size, pp_size, and
ep_size as int, attention_dp, cuda_graph, and overlap_scheduler as bool, and its
return type as None.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@tests/integration/defs/accuracy/test_llm_api_pytorch.py`:
- Around line 4772-4773: Update the test_w4a8 method signature to annotate
tp_size, pp_size, and ep_size as int, attention_dp, cuda_graph, and
overlap_scheduler as bool, and its return type as None.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2d54d4a9-bff6-4607-b802-d0a6888d4879

📥 Commits

Reviewing files that changed from the base of the PR and between 7e2fca0 and 1bde1b2.

📒 Files selected for processing (5)
  • tensorrt_llm/_torch/modules/fused_moe/configurable_moe.py
  • tests/integration/defs/accuracy/references/mmlu.yaml
  • tests/integration/defs/accuracy/test_llm_api_pytorch.py
  • tests/integration/test_lists/qa/llm_function_core.txt
  • tests/integration/test_lists/test-db/l0_dgx_h100.yml

@BowenFu

BowenFu commented Aug 3, 2026

Copy link
Copy Markdown

Reviewed the whole change. The diagnosis is right — apply_layerwise_quant_config does match by module name and the backend's .backend suffix does prevent it matching, so the backend keeps the global config. But the fix as written makes the wrapper's quant_config authoritative for the backend, and the wrapper's value is not reliably authoritative.

1. It can clobber a deliberate override_quant_config. override_quant_config exists precisely because the name-matched value is wrong for some layers. Both apply_layerwise_quant_config (modeling_utils.py:485-493, loose substring if name in n) and apply_quant_config_exclude_modules (:537-569) write module.quant_config on the wrapper, and both run in __post_init__ before the create_weights() sweep — so they are the last writers. modeling_deepseekv3.py:1385-1400 returns an unquantized QuantConfig for a layer excluded via exclude_modules and passes it at :1326; same shape at modeling_glm.py:546 and modeling_exaone_moe.py:228. Today that clobbering only affects the wrapper and is harmless because the backend does the work; after this line it reaches weight creation.

2. The eager path desyncs instead of syncing. When skip_create_weights_in_init is False, configurable_moe.py:346-347 calls self.backend.create_weights() directly, bypassing this new line. The later __post_init__ sweep then hits ConfigurableMoE.create_weights(), reassigns backend.quant_config, and backend.create_weights() early-returns on _weights_created (fused_moe_cutlass.py:943). The backend is then reporting a quant_config that its quant_method and weights were not built from — and load_weights branches on self.has_any_quant.

Both point at the same thing: two mechanisms now decide the backend's quant config and the winner depends on call order. Worth considering making the wrapper's quant_config a property that forwards to the backend (single source of truth), or doing the sync where the override decision is made rather than at create_weights time.

3. Competing implementation. modeling_qwen3_next.py:152-173 already works around this exact bug per-model — its comment literally says "apply_layerwise_quant_config (which rebinds the ConfigurableMoE wrapper but not its delegated backend)". If the generic fix is correct that workaround should be removed in the same PR; otherwise the two race.

4. Title says "add unit test", but the added coverage is a 2-GPU H100 accuracy run needing saved_models_Qwen3-30B-A3B_w4a8_hf. A unit test that builds a ConfigurableMoE with a quant_config_dict and asserts backend.quant_config would pin the contract without a checkpoint. The l0_dgx_h100 registration itself looks right (gpu_count 2, pre_merge/pytorch/mpi, and skip_pre_hopper/skip_post_blackwell line up).

No blossom run on 1bde1b23f yet — worth a /bot run once the above is settled.

@rosenrodt

Copy link
Copy Markdown
Collaborator Author

/bot run

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py`:
- Around line 70-87: Add two focused tests alongside
test_layerwise_quant_config_is_applied_before_weight_creation: cover the
non-empty exclude_modules branch in the relevant backend allocation flow, and
verify that an explicit _override_quant_config remains authoritative over other
quantization configuration sources. Keep each case isolated and assert the
resulting quant_config and weight-creation behavior, including the expected
allocation/deferment outcome for exclusions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 5d8bfb29-3378-4f39-9603-6f3d6f526164

📥 Commits

Reviewing files that changed from the base of the PR and between 1bde1b2 and 223b76e.

📒 Files selected for processing (3)
  • tensorrt_llm/_torch/modules/fused_moe/configurable_moe.py
  • tests/integration/defs/accuracy/test_llm_api_pytorch.py
  • tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py

Comment on lines +70 to +87
def test_layerwise_quant_config_is_applied_before_weight_creation() -> None:
global_config = QuantConfig()
layer_config = QuantConfig()
model_config = ModelConfig(
quant_config=global_config,
quant_config_dict={"model.layers.0.mlp.experts": layer_config},
)
wrapper = _wrapper()
wrapper.quant_config = global_config

backend = _create_backend(wrapper, model_config)

backend.create_weights.assert_not_called()
wrapper.quant_config = layer_config
wrapper.create_weights()

assert backend.quant_config is layer_config
backend.create_weights.assert_called_once_with()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Add coverage for the other quantization lifecycle branches.

This test covers quant_config_dict deferral. It does not cover a non-empty exclude_modules value at Line 354. It also does not verify that _override_quant_config remains authoritative at Lines 664-668.

Add one focused case for exclusions and one for explicit override precedence.

Test coverage summary: insufficient. The added unit test covers layerwise configuration propagation. It does not cover all changed allocation branches. Integration test-list registration does not apply to this unit-test module.

As per path instructions, changed test code requires a coverage verdict.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py` around
lines 70 - 87, Add two focused tests alongside
test_layerwise_quant_config_is_applied_before_weight_creation: cover the
non-empty exclude_modules branch in the relevant backend allocation flow, and
verify that an explicit _override_quant_config remains authoritative over other
quantization configuration sources. Keep each case isolated and assert the
resulting quant_config and weight-creation behavior, including the expected
allocation/deferment outcome for exclusions.

Source: Path instructions

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63426 [ run ] triggered by Bot. Commit: 223b76e Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63426 [ run ] completed with state FAILURE. Commit: 223b76e
/LLM/main/L0_MergeRequest_PR pipeline #51400 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@BowenFu

BowenFu commented Aug 3, 2026

Copy link
Copy Markdown

Re-reviewed 223b76eb8. Both points from my earlier comment are addressed, and I verified how:

  • Override precedence_override_quant_config is now stored in __init__ (line 175, before _create_and_sync_backend at 187) and wins over self.quant_config in create_weights(). That preserves the pre-PR backend behaviour: _create_and_sync_backend already substituted the override into the backend's model_config copy (configurable_moe.py:302-305), so DeepSeek-V3/GLM/EXAONE layers that deliberately hand down an unquantized config keep it. Good fix.
  • Eager-path desync — resolved by deferring instead of syncing, and by routing through self.create_weights() rather than self.backend.create_weights().

One new thing, and it is the reason I'm not approving yet:

The deferral is much broader than the comment says. The comment reads as if only unusual models defer and "directly-created MoE modules ... retain their historical eager allocation behavior". But has_post_init_exclusions is true for essentially the whole FP8-block-scales family: model_config.py:461-464 and :505-517 set exclude_modules = ["*kv_b_proj*", "*k_b_proj*", "*eh_proj"] unconditionally for FP8_BLOCK_SCALES when the checkpoint doesn't supply one. So DeepSeek-V3/V4, GLM-5, Kimi and friends all move MoE weight allocation out of __init__ and onto the __post_init__ sweep.

Inside a DecoderModelForCausalLM that's fine — PostInitCaller guarantees the sweep (modeling_utils.py:359-371, :584-590), and GPT-OSS has its own at modeling_gpt_oss.py:623-627. Two consequences worth handling anyway:

  1. Anything that builds a MoE through create_moe() outside that lifecycle and relies on eager allocation now gets a backend with no weights, silently, whenever a quantized config carries exclude_modules. Worth an explicit assert in load_weights/forward rather than leaving it to whatever fails later.
  2. The new unit test only covers the quant_config_dict arm. The exclude_modules arm is the one that will actually fire for most quantized models in production, and it interacts with apply_quant_config_exclude_modules resetting _weights_created — that combination is untested.

Also still open from last time: modeling_qwen3_next.py:150-173 works around this exact bug per-model, with a comment naming apply_layerwise_quant_config. If the generic fix is right, that workaround should be removed in this PR so the two mechanisms don't drift.

Finally, there's no blossom run on this head yet — only the lightweight checks — so nothing has exercised any of the above. Note main was breaking every L0 until #17198 landed at 10:17Z; a run started after that should be meaningful now.

@rosenrodt

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63462 [ run ] triggered by Bot. Commit: 223b76e Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63462 [ run ] completed with state FAILURE. Commit: 223b76e
/LLM/main/L0_MergeRequest_PR pipeline #51433 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

leo0519 and others added 4 commits August 4, 2026 08:27
Signed-off-by: ylichen <ylichen@nvidia.com>
Signed-off-by: ylichen <ylichen@nvidia.com>
- Add test_w4a8[tp2_ep1] to llm_function_core.txt QA test list
- Add test to l0_dgx_h100.yml 2-GPU pre_merge section
- Add W4A8_AWQ accuracy reference (79.53) to mmlu.yaml

Signed-off-by: ylichen <ylichen@nvidia.com>
Register the Qwen3 W4A8 checkpoint using its global mixed-precision quantization metadata so accuracy reference lookup matches the runtime configuration.

Changes
- replace the W4A8_AWQ-only MMLU key with MIXED_PRECISION
- include the checkpoint's FP8 KV-cache quantization key

Validation
- git diff --check
- parse mmlu.yaml and assert the exact reference entry

Result
- the reported accuracy lookup resolves MIXED_PRECISION plus FP8 to the 79.53 reference

Signed-off-by: Anthony Chang <27950904+rosenrodt@users.noreply.github.com>
@rosenrodt

Copy link
Copy Markdown
Collaborator Author

/bot run

@rosenrodt

Copy link
Copy Markdown
Collaborator Author

/bot kill

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63593 [ run ] triggered by Bot. Commit: 223b76e Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63595 [ kill ] triggered by Bot. Commit: 223b76e Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63593 [ run ] completed with state ABORTED. Commit: 223b76e

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63595 [ kill ] completed with state SUCCESS. Commit: 223b76e
Successfully killed previous jobs for commit 223b76e

Link to invocation

Defer ConfigurableMoE weight creation until layerwise quantization has selected the final configuration while preserving eager allocation for unrelated module exclusions. Preserve explicit backend overrides as authoritative.

Changes
- defer backend weight allocation only for post-init layerwise quantization
- delegate weight-state resets so matching exclusions recreate backend weights
- preserve eager allocation for unrelated FP8-block-scale exclusions
- add focused lifecycle tests and annotate the W4A8 acceptance test

Validation
- pre-commit run --files tensorrt_llm/_torch/models/modeling_utils.py tensorrt_llm/_torch/modules/fused_moe/configurable_moe.py tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py
- python -m pytest -q tests/unittest/_torch/modules/fused_moe/test_configurable_moe.py
- LLM_MODELS_ROOT=/home/scratch.trt_llm_data/llm-models python -m pytest -q -s tests/integration/defs/accuracy/test_llm_api_pytorch.py -k 'TestQwen3_30B_A3B and test_w4a8'

Result
- focused layerwise and exclusion lifecycle suite passes 2 tests
- prior 2xH100 W4A8 acceptance produced MMLU accuracy 80.263 above the 77.713 threshold

Signed-off-by: Anthony Chang <27950904+rosenrodt@users.noreply.github.com>
@rosenrodt
rosenrodt force-pushed the mixed-w4a8-quant-fix branch from 223b76e to 342b7a0 Compare August 4, 2026 01:50
@rosenrodt
rosenrodt requested a review from a team as a code owner August 4, 2026 01:50
@rosenrodt

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63624 [ run ] triggered by Bot. Commit: 342b7a0 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63624 [ run ] completed with state FAILURE. Commit: 342b7a0
/LLM/main/L0_MergeRequest_PR pipeline #51579 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@BowenFu

BowenFu commented Aug 4, 2026

Copy link
Copy Markdown

Re-reviewed 342b7a020. My previous finding is addressed.

The deferral guard is now just model_config.quant_config_dict is not None. The exclude_modules arm is gone, so DeepSeek-V3/V4, GLM-5 and Kimi — which get exclude_modules = ["*kv_b_proj*", "*k_b_proj*", "*eh_proj"] injected unconditionally for any FP8_BLOCK_SCALES checkpoint (model_config.py:461-464, :505-517) — keep the historical eager allocation. Deferral is now confined to genuinely layerwise-quantized checkpoints, which is the case you are fixing. The comment and the code now say the same thing. test_exclusions_only_recreate_matching_moe_weights also closes the untested-arm gap I flagged.

One thing worth a line in the comment, because it is load-bearing: dropping the try/except AttributeError in apply_quant_config_exclude_modules is only safe because ConfigurableMoE._weights_created (configurable_moe.py:722) is the only read-only _weights_created property in-tree — every other occurrence is a plain writable attribute. Your new setter covers it. If a future wrapper proxies _weights_created read-only, that module._weights_created = False starts raising for every model whose quant config has exclude_modules, which is most FP8 checkpoints. The old except swallowed it; nothing does now.

Still open from the first pass, not blocking: the per-model workaround at modeling_qwen3_next.py:150-173 is a second implementation of the same fix and should go once this lands.

Not approving on this head yet, and the reason is CI, not the code: build 51579 came back FAILURE with 77 passed / 0 failed and every GPU test stage ABORTED — the x86 test stages never reported at all. That is an aborted pipeline, not a red test, so there is no signal on this change. Re-run and ping me.

@rosenrodt

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63655 [ run ] triggered by Bot. Commit: 342b7a0 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63655 [ run ] completed with state FAILURE. Commit: 342b7a0
/LLM/main/L0_MergeRequest_PR pipeline #51609 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@rosenrodt

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63711 [ run ] triggered by Bot. Commit: 342b7a0 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63711 [ run ] completed with state FAILURE. Commit: 342b7a0
/LLM/main/L0_MergeRequest_PR pipeline #51663 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

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.

4 participants