Skip to content

[Bugfix] Preserve MiniMax-H3 VAE compiled RoPE outputs - #8551

Open
yosh20004 wants to merge 1 commit into
vllm-project:mainfrom
yosh20004:fix/minimax-h3-vae-compiled-rope-lifetime
Open

yosh20004 wants to merge 1 commit into
vllm-project:mainfrom
yosh20004:fix/minimax-h3-vae-compiled-rope-lifetime

Conversation

@yosh20004

@yosh20004 yosh20004 commented Oct 6, 2026 •

Copy link
Copy Markdown

Purpose

MiniMax-H3 video VAE decoding can fail with native RoPE torch.compile(mode="reduce-overhead"):

RuntimeError: accessing tensor output of CUDAGraphs that has been overwritten by a subsequent run
producer: video_vae/func.py:99, t = torch.cat((t_rot, t_pass), dim=-1)

Attention calls the same cached compiled RoPE helper for Q and then K. A later call can invalidate Q's graph-owned output before attention consumes it. The VAE adapter now clones outputs outside the compiled region when the checkpoint actually selects the compiled helper. Eager and fallback outputs retain their original identity; RoPE math and compile options are unchanged.

Relationship to #6607

#6607 is the preferred performance path on supported configurations. Its eager VAE optimizations cover Q/K RMSNorm + RoPE, SwiGLU, scaled residuals, and FP16 Linear weight materialization. It reports substantial decode speedups, including approximately 2× on B300 versus reference eager (8719.9 ms → 4414.5 ms). Those published measurements use a different workload from our validation and are not a direct comparison with native RoPE compile.

The fused Q/K path bypasses the native compiled RoPE helper repaired here. Enabling native FF compile prevents installation of the eager operator set; RoPE compile alone does not, but the native helper remains reachable through the original attention path, including fallback. Our repair validation enabled both native FF and RoPE compile.

This PR is only a correctness fix for that optional native-compile path, not an alternative to #6607's performance optimizations. It preserves compiled outputs at the cost of an extra copy and should not be taken as a recommendation to enable native FF/RoPE compile for performance. No controlled performance A/B between these paths was performed.

Test Plan

The CUDA regression requires a CUDA GPU and a working Inductor toolchain, but no model weights.

pytest -sv tests/diffusion/models/minimax_h3/test_minimax_h3_vae_compile.py -m 'core_model and cpu' --run-level core_model
pytest -sv tests/diffusion/models/minimax_h3/test_minimax_h3_vae_compile.py -m 'core_model and cuda' --run-level core_model

To reproduce using the checkpoint's actual helper, set H3_ROOT to the downloaded Ref2VA directory (tested checkpoint revision 42ed227ee7df40d41602854ae760620d6eb651fe):

export H3_ROOT=/path/to/MiniMax-H3/Ref2VA
export MINIMAX_H3_VAE_DECODER_VIT_ROPE_TORCH_COMPILE=1
export MINIMAX_H3_VAE_DECODER_VIT_ROPE_TORCH_COMPILE_FATAL=1
export MINIMAX_H3_VAE_DECODER_VIT_ROPE_TORCH_COMPILE_MODE=reduce-overhead
python - <<'PY'
import importlib.util
import os
import torch

spec = importlib.util.spec_from_file_location("native_rope", os.path.join(os.environ["H3_ROOT"], "video_vae/func.py"))
native = importlib.util.module_from_spec(spec)
spec.loader.exec_module(native)
torch.manual_seed(3100)
q = torch.randn(1, 195, 32, 64, device="cuda", dtype=torch.float16)
k = torch.randn_like(q)
cos = torch.randn(1, 195, 1, 48, device="cuda", dtype=torch.float16)
rope = cos, torch.randn_like(cos)
with torch.inference_mode():
    for _ in range(4):
        rotated_q = native.apply_rotary_pos_emb(q, rope)
        rotated_k = native.apply_rotary_pos_emb(k, rope)
        torch.testing.assert_close(rotated_q, native._apply_rotary_pos_emb_impl(q, rope), atol=4e-3, rtol=2e-3)
PY

This directly calls the unpatched checkpoint helper and reproduces its failure even with this PR installed. The fix is installed by the Omni VAE adapter; the regression tests exercise that installer.

vLLM Version: 0.31.0; PyTorch 2.13.0+cu130; Transformers 5.14.1; Diffusers 0.40.0.

vLLM-Omni Commit: validated on 25fb257667abb397eab10b71ec7de7b35b42e3a3 plus this fix; rebased onto 65699fe94c355e235f1acabddd866bce0bba1c02, with no intervening changes to the tested H3 code.

Test Result

The unpatched official checkout at 25fb257667abb397eab10b71ec7de7b35b42e3a3 reproduced the full-model failure with native FF/RoPE compile enabled (reduce-overhead, both FATAL switches enabled). The traceback below is copied from that run; only ANSI colors and per-line logger prefixes have been removed.

Full traceback before the fix
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/worker/diffusion_worker.py", line 1886, in execute_method
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/worker/diffusion_worker.py", line 704, in execute_model
    output = self.model_runner.execute_model(req, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/worker/diffusion_model_runner.py", line 957, in execute_model
    runner_output = self._execute_request_list(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/worker/diffusion_model_runner.py", line 865, in _execute_request_list
    raw_outputs = self.pipeline.forward(batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/profiler/diffusion_pipeline_profiler.py", line 27, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/utils/_contextlib.py", line 124, in decorate_context
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/models/minimax_h3/pipeline_minimax_h3.py", line 3043, in forward
    video, audio = self.decode(
                   ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/profiler/diffusion_pipeline_profiler.py", line 27, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/models/minimax_h3/pipeline_minimax_h3.py", line 2234, in decode
    video = self.video_vae.decode_latent(video_latent)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/profiler/diffusion_pipeline_profiler.py", line 27, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/utils/_contextlib.py", line 124, in decorate_context
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/models/minimax_h3/vae.py", line 963, in decode_latent
    decoded = self.model.decode_base(self._denormalize_latent(latent))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/klvae.py", line 797, in decode_base
    recon = self.decode_temporal(z)
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/klvae.py", line 717, in decode_temporal
    return self._decode_temporal_streaming(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/vllm_omni/diffusion/models/minimax_h3/vae_temporal.py", line 188, in _decode_temporal_streaming_uint8
    clip_dec = self._adaptive_decode(clip_z)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/klvae.py", line 439, in _adaptive_decode
    return self.tiled_decode(z)
           ^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/klvae.py", line 398, in tiled_decode
    decoded_tasks = self._run_tile_tasks(
                    ^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/klvae.py", line 292, in _run_tile_tasks
    tasks.append(forward_fn(tiles[idx]))
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/klvae.py", line 1223, in decode
    dec = self.decoder(z2)
          ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1778, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1789, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/vae_vit.py", line 344, in forward
    hidden_states = maybe_checkpoint(
                    ^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/attention.py", line 34, in maybe_checkpoint
    return function(*args)
           ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1778, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1789, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/base_module.py", line 269, in forward
    attn_output = self.attn(norm_hidden_states, rotary_pos_emb, pack_info)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1778, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1789, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/attention.py", line 155, in forward
    hidden_states = self.perform_attention(query, key, value, pack_info)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/attention.py", line 126, in perform_attention
    return self._perform_attention(query, key, value, pack_info)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/attention.py", line 117, in _perform_attention
    hidden_states = flash_attn(
                    ^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/torch/_dynamo/eval_frame.py", line 1446, in _fn
    return fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/flash.py", line 178, in flash_attn
    return _sdpa_attention(query, key, value, causal=causal)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/flash.py", line 58, in _sdpa_attention
    q = query.transpose(1, 2)
        ^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Error: accessing tensor output of CUDAGraphs that has been overwritten by a subsequent run. Stack trace: File "/root/.cache/huggingface/modules/transformers_modules/video_vae/e7edf8d93de46b79/func.py", line 99, in _apply_rotary_pos_emb_impl
    t = torch.cat((t_rot, t_pass), dim=-1)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^. To prevent overwriting, clone the tensor outside of torch.compile() or call torch.compiler.cudagraph_mark_step_begin() before each model invocation.
  • NVIDIA B300: the actual checkpoint helper failed before the fix and passed Q/K numerical checks against eager afterward, including changed inputs and retained outputs across subsequent calls. The compiled cache remained active.
  • Regression tests: 6 passed (5 CPU cases, 1 CUDA case). All applicable changed-file pre-commit checks and the full precheck passed.
  • Full model: two Ref2VA requests completed and passed full media decoding, with native FF/RoPE compile and the repair confirmed active. Configuration: one B300, BS1, 576×1024, 24 fps, requested duration 10 seconds (243 output frames), one diffusion step, seed 3100, VAE tiling, no offload or quantization; DiT regional compile (dynamic=False), TRTLLM_ATTN; native FF/RoPE compile in reduce-overhead mode, both FATAL switches enabled.
  • Independently, unmodified official main at 65699fe94c355e235f1acabddd866bce0bba1c02 completed three Ref2VA requests with native FF/RoPE compile disabled and without this fix. All outputs passed full decoding, and the trace confirmed [Perf] MiniMax-H3 VAE Decoder Ops #6607's fused kernels executed. This validates the separate eager path, not the native-compile repair.

Validation covers helper numerics and successful media decoding on one GPU/software profile, not full-model eager/compile equivalence or perceptual quality.

AI assistance: Codex assisted with the patch, regression tests, GPU validation, and drafting this PR description.

@yosh20004 yosh20004 closed this Oct 6, 2026
@yosh20004 yosh20004 reopened this Oct 6, 2026
@yosh20004
yosh20004 marked this pull request as ready for review October 6, 2026 15:42
@yosh20004 yosh20004 closed this Oct 6, 2026
@yosh20004 yosh20004 reopened this Oct 6, 2026
@vllm-omni-review-bot

Copy link
Copy Markdown

This PR appears to belong to: docs/design/module/diffusion/offloader.md, docs/design/module/diffusion/diffusion_model_integration.md, docs/design/module/diffusion/index.md.

Module owners: @david6666666 @wtomin @Isotr0py

Routing: @david6666666 via module of the changed files, module named in the PR description, semantic router, model owner; @wtomin via module of the changed files, module named in the PR description, CODEOWNERS; @Isotr0py via module of the changed files, module named in the PR description

@yosh20004, please review your own changes and leave a short self-review comment describing what you checked. PRs without author self-review may not be assigned a reviewer.

Please take a look when you have a chance. If you would like an automated review, mention @vllm-omni-review-bot in a comment.

@vllm-omni-review-bot

Copy link
Copy Markdown
Omni ReviewBot routing record

Assigned Strict on zcode (GLM-5.3-Flash) under experiment fleet-strict-cursor-grok46-zcode-glm53flash-5050-c5-z10-20261002.

@vllm-omni-review-bot

vllm-omni-review-bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Omni ReviewBot triage note

Automated triage of commit fcda8e45101d produced:

  • Priority: high. Prompt maintainer attention is suggested.

These are automated triage suggestions only — the final decision belongs to the maintainers.

@yosh20004

Copy link
Copy Markdown
Author

Self-review: The CUDA Graph output-lifetime failure with MINIMAX_H3_VAE_DECODER_VIT_ROPE_TORCH_COMPILE=1 is fixed. RoPE Q/K outputs were verified against eager within the test tolerances, including retention across subsequent calls, while compilation remained active. Full-model generation also completed successfully.

We expect #6607’s fused eager path to be preferable for performance, but have not performed a controlled comparison. The fix introduces intentional tensor copies. I expect their overhead to be small, but this has not been measured.

@hsliuustc0106 hsliuustc0106 added bug Something isn't working diffusion codes related to diffusion models labels Oct 6, 2026
@Dong1017

Dong1017 commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

The frozen merge-base (65699fe94c355e235f1acabddd866bce0bba1c02) still fails on the same one-step Ref2VA request: with native VAE FF/RoPE torch.compile(mode="reduce-overhead") enabled, the decoder raises accessing tensor output of CUDAGraphs that has been overwritten by a subsequent run while consuming the compiled RoPE output. The frozen head (bc1d560c555c7f584f3b4892520d83cdac97e155) completes the same request and emits a fully decodable 124-frame, 1024×576, 24-fps video with its audio track.

On the head, I also captured eight real VAE Q/K RoPE pairs at shape [1, 1797, 32, 64]. The compiled helper was selected for both Q and K on every pair; their returned storage was independent, and both outputs matched the eager RoPE formula within atol=4e-3, rtol=2e-3 (maximum absolute error 0.00390625). This supports the Q-output lifetime fix on the tested SM90 GPU/Ref2VA path. The base request failed before producing media, so this does not establish a base/head perceptual-quality or performance comparison.

@yosh20004

Copy link
Copy Markdown
Author

@Dong1017 Thanks for verifying this on SM90! Really appreciate the additional validation

@vllm-omni-review-bot

Copy link
Copy Markdown
Omni ReviewBot attempt record

Review attempt ended as failed (step 'review' (agent.review_diff): unhandled error: RuntimeError: zcode exited 1 without a result event: statusCode: undefined } Error: Turn execution failed (traceId: 39fef635-ab8d-4953-90c4-49e58d140dc2) — check zcode login and the CLI version; retrying strict/zcode/GLM-5.3-Flash in 120s (try ).

@vllm-omni-review-bot

Copy link
Copy Markdown
Omni ReviewBot attempt record

Review attempt ended as failed (step 'review' (agent.review_diff): unhandled error: RuntimeError: zcode exited 1 without a result event: statusCode: undefined } Error: Turn execution failed (traceId: 1472c83f-c73b-423b-a06c-8894ff605d2e) — check zcode login and the CLI version; retrying strict/zcode/GLM-5.3-Flash in 600s (try ).

@vllm-omni-review-bot

Copy link
Copy Markdown
Omni ReviewBot attempt record

Review attempt ended as failed (step 'review' (agent.review_diff): unhandled error: RuntimeError: zcode exited 1 without a result event: statusCode: undefined } Error: Turn execution failed (traceId: 05ac967e-d640-4f35-a4fa-8f05fd13f90a) — check zcode login and the CLI version; falling back to direct/cursor/auto).

@vllm-omni-review-bot vllm-omni-review-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Omni ReviewBot review

0 actionable finding(s).

CI at bc1d560c555c (2026-10-10T09:42:11.846811+00:00): required check(s) blocking: buildkite/vllm-omni (missing).

Note: The assigned review arm strict/zcode/GLM-5.3-Flash could not complete this review, so it was produced by the fallback arm direct/cursor/auto. It is excluded from the routing experiment.

Full review analysis

PR description

MiniMax-H3 video VAE decoding can crash when the checkpoint's optional native RoPE helper is compiled with torch.compile(mode="reduce-overhead"). Attention runs that helper for Q and then K, and the second CUDA Graph replay overwrites the first call's output before attention reads it. MiniMaxH3VideoVAE now installs a wrapper around the checkpoint's apply_rotary_pos_emb. The wrapper clones the result only when the live helper is the compiled cache, so Q and K keep independent storage; eager, disabled, and fallback calls still return the original tensor. RoPE math and compile settings are unchanged, and the fused eager VAE path is left in place.

Change flow

flowchart LR
  attn["[EXISTING] Decoder attention calls RoPE for Q then K"]:::existing
  init["[CHANGED] MiniMaxH3VideoVAE.__init__"]:::changed
  guard["[NEW] install_compiled_rope_output_guard"]:::new
  clone["[NEW] Clone only when compiled helper is selected"]:::new
  eager["[EXISTING] Eager, disabled, and fallback keep original tensor"]:::existing
  attn --> init
  init --> guard
  guard --> clone
  guard --> eager
  classDef existing fill:#e5e7eb,stroke:#6b7280,color:#111827
  classDef changed fill:#fef3c7,stroke:#d97706,color:#451a03,stroke-width:2px
  classDef new fill:#dcfce7,stroke:#16a34a,color:#052e16,stroke-width:2px
  classDef removed fill:#fee2e2,stroke:#dc2626,color:#450a0a,stroke-width:2px
Loading

No actionable findings.


🤖 This review was generated by InferMatrix Copilot, an open-source repo-maintenance agent for PR review, CI debugging and issue triage. Try it on your own repo, and ⭐ star it if it helped!

@vllm-omni-review-bot

Copy link
Copy Markdown

Omni ReviewBot: no human activity for 10 days

@yosh20004 this pull request has had no human commit, comment or review since 2026-10-07. Please confirm the current plan and next step. The author or a maintainer decides whether to change the PR state.

To keep it moving, any one of these is enough: push an update, reply to the open blocker, or post the current plan and timeline.

@yosh20004

Copy link
Copy Markdown
Author

This PR is still active and ready for maintainer review. Self-review, B300 validation, and independent SM90 validation are documented above. The automated review reported no actionable findings, and all reported CI checks are passing.

Could a maintainer please review when available and confirm whether the missing buildkite/vllm-omni check needs to be triggered? I’m available to address any review feedback or CI failures.

@vllm-omni-review-bot

Copy link
Copy Markdown

Omni ReviewBot: no human activity for 7 days

@yosh20004 this pull request has had no human commit, comment or review since 2026-10-17. Please confirm the current plan and next step. The author or a maintainer decides whether to change the PR state.

To keep it moving, any one of these is enough: push an update, reply to the open blocker, or post the current plan and timeline.

@hsliuustc0106 hsliuustc0106 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@yosh20004 Thanks for the compiled-RoPE lifetime reproducer and the SM90 follow-up. This is a readiness check, not a completed code review.

  • Resolve the current merge conflict. GitHub currently reports this open PR as not mergeable at bc1d560c555c7f584f3b4892520d83cdac97e155. Please update against the target branch and resolve the conflict without dropping the retained Q/K-output regression.
  • Confirm the updated head. Supply the resulting SHA and the regression command, environment and result. The acceptance condition is a mergeable PR with the compiled path still exercised and returned Q/K values retained correctly across later calls; keep the existing baseline-fails/head-passes evidence, and identify any part invalidated by conflict resolution.

Your existing full-model and component results are acknowledged, not treated as absent. Current-head project CUDA CI remains a reviewer/maintainer validation step after the update; no request to trigger unrelated platform jobs.

Signed-off-by: yosh20005 <2172622103@qq.com>
@yosh20004
yosh20004 force-pushed the fix/minimax-h3-vae-compiled-rope-lifetime branch from bc1d560 to fcda8e4 Compare October 24, 2026 13:09
@yosh20004

Copy link
Copy Markdown
Author

@hsliuustc0106 Updated to fcda8e4, rebased onto 7cbc776. GitHub now reports no merge conflicts.

The resolution preserves main’s NVFP4 decoder exclusion. The RoPE guard and retained-Q/K assertions are unchanged; test hardware markers were updated to the current convention.

Fresh B300 validation (Python 3.12.3, PyTorch 2.13.0+cu130, Triton 3.7.1): 6 tests passed, none skipped, using an isolated component harness. The real checkpoint RoPE helper reproduced the overwrite error before the fix at both tested shapes. After installing the guard, all 8 retained Q/K pairs matched eager within the existing tolerances, with compilation still active and no eager fallback. Applicable pre-commit checks also passed.

This rerun covers UT and GPU components, not end-to-end generation. Previous full-model and SM90 evidence remains tied to its original revisions; the conflict resolution does not change the tested native RoPE logic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working diffusion codes related to diffusion models

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants