Skip to content

LTX-2.5 guided denoiser: two comments name RetakePipeline as the one upstream caller that sets force_uncond_pass, and no upstream caller sets it at fd4ded7f #1528

Description

@localai-bot

Two comments in the LTX-2.5 guided denoiser name RetakePipeline as an upstream caller that sets force_uncond_pass. No upstream caller sets it, at the pin or anywhere in the tree.

The two claims:

  • include/vllm/model_executor/models/ltx2_denoisers.h:144-146 — "force_uncond_pass (:76, read at :102-103). RetakePipeline is the one upstream caller that sets it (retake.py:305-311)."
  • src/vllm/model_executor/models/ltx2_denoisers.cpp:111-113 — ":102-109. force_uncond_pass adds the pass for a modality that is PRESENT even when its own guider does not ask (retake.py:305-311 is the one upstream caller that sets it)."

Both landed in daeff67f2 (row LTX25-GUIDED-VIDEO, #1092, PR #1102).

Measured at the pinned revision. Lightricks/LTX-2 at fd4ded7f2d88d3da713abcdd4ad41ecc4a9314ca, the revision .agents/specs/ltx25-retake.md:12 and .agents/specs/ltx25-guided-video.md:6 both pin, read at the local checkout /home/mudler/_git/LTX-2 whose git rev-parse HEAD is that SHA:

  1. packages/ltx-pipelines/src/ltx_pipelines/retake.py:305-311 constructs GuidedDenoiser(v_context=..., a_context=..., video_guider=..., audio_guider=...) and passes no force_uncond_pass argument. GuidedDenoiser.__init__ declares it force_uncond_pass: bool = False (utils/denoisers.py:267), so retake takes the False default. grep -n GuidedDenoiser retake.py returns the import at :33 and that one construction at :305 — retake has no second site.
  2. grep -rn 'force_uncond_pass' --include='*.py' over the whole upstream tree returns 10 hits, all inside utils/denoisers.py plus one in utils/samplers.py. Every denoisers.py hit is a declaration or a pass-through: :74 (the _guided_denoise keyword parameter), :102-103 (the two reads), :267,273,297 (GuidedDenoiser stores it and forwards it), :313,319,357 (FactoryGuidedDenoiser, the same). The samplers.py:692 hit is the substring "or force_uncond_pass=True and a negative_context." inside a raised error message, not an assignment. No upstream caller enables it.
  3. Its actual purpose, per packages/ltx-pipelines/CLAUDE.md:76: GuidedDenoiser and FactoryGuidedDenoiser accept force_uncond_pass=True to run the uncond pass even when cfg_scale=1.0, "required by CFG++ when the guidance scale is 1 but the uncond prediction is still needed for the ODE derivative". It is a CFG++ affordance, and upstream ships the plumbing without turning it on.

A second, smaller error rides along: the header cites the declaration as :76, and :76 is the docstring. The declaration is denoisers.py:74.

Behavior is correct and no code change is owed. Ltx2GuidedDenoiseInputs::force_uncond_pass defaults to false (ltx2_denoisers.h:146), and grep -rn 'force_uncond_pass' src/ include/ tests/ finds exactly two reads (ltx2_denoisers.cpp:115,117) and no assignment anywhere. Our port therefore matches upstream, where nothing enables it either. This is a documentation defect only.

Why it matters. The false anchor is load-bearing rather than cosmetic. A reader who trusts it concludes that our retake path is missing a flag upstream sets, and "repairs" retake by setting it. That would create a real divergence: force_uncond_pass adds an uncond pass for every present modality, which doubles retake's DiT forward count from 8 to 16 and changes its output. The comment invites the exact defect it appears to describe.

Fix, in the same flow as this filing: both comments state what holds at fd4ded7f — the field mirrors upstream's declared-and-threaded-but-unused CFG++ plumbing, cited at denoisers.py:74, :102-103 and packages/ltx-pipelines/CLAUDE.md:76, with retake.py:305-311 named as a site that takes the False default rather than one that sets the flag. No behavior changes.

Specs checked and left alone: .agents/specs/ltx25-retake.md never mentions the field, and .agents/specs/ltx25-guided-video.md:198 states the condition (uncond when either guider asks or force_uncond_pass) without claiming a caller, which is true at the pin.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions