diffusion: Fix silent override of explicit guidance_scale=0 (#4999)

Signed-off-by: Harenome Ranaivoarivony-Razanajato <harenome.razanajato1@huawei.com>
This commit is contained in:
Harenome 安仁 Ranaivoarivony-Razanajato authored and GitHub committed 2026-08-01 03:19:21 +00:00
1 parent 0a03359224
commit 8cb79308c6
6 files changed
+48 -9

No files matched your search

+37
View File
@@ -72,3 +72,40 @@ def test_tp_seed_same_across_ranks_and_varies_across_requests():
# Seeds must vary across requests (non-determinism preserved).
assert len(set(seeds)) == n_requests, f"Expected {n_requests} unique seeds but got {len(set(seeds))}: {seeds}"
def _request_with_guidance(**sampling_kwargs) -> OmniDiffusionRequest:
return OmniDiffusionRequest(
prompt={"prompt": "a cup of coffee on a table"},
sampling_params=OmniDiffusionSamplingParams(num_inference_steps=1, **sampling_kwargs),
request_id="request-test",
)
def test_omitted_guidance_scale_is_unset_and_resolved_to_one():
# No guidance_scale passed: the caller did not set it, so it must NOT count as
# "provided" (each pipeline applies its own default), and __post_init__ resolves the
# None "unset" sentinel to a concrete float so no consumer ever observes None.
req = _request_with_guidance()
assert req.sampling_params.guidance_scale_provided is False
assert req.sampling_params.guidance_scale == 1.0
def test_explicit_zero_guidance_scale_is_honored():
# Regression (#4998): an explicit guidance_scale=0 (disable CFG) must be honored,
# not mistaken for "unset" and overridden by the pipeline's model default. This is
# the sentinel collision that the None default + ``is not None`` check fixes.
req = _request_with_guidance(guidance_scale=0.0)
assert req.sampling_params.guidance_scale_provided is True
assert req.sampling_params.guidance_scale == 0.0
@pytest.mark.parametrize("value", [0.999, 1.0, 5.0])
def test_explicit_nonzero_guidance_scale_is_honored(value):
# Any explicitly-set value (truthy or not) is honored as provided and preserved.
req = _request_with_guidance(guidance_scale=value)
assert req.sampling_params.guidance_scale_provided is True
assert req.sampling_params.guidance_scale == value