sgl-project/sglang · error · ValueError
SANA-WM generator list length must match latent batch size;
Error message
SANA-WM generator list length must match latent batch size; got {len(generator)} generators for batch {shape[0]}. What it means
Raised by _prepare_noise_latents when a list of generators has length > 1 but != latent batch size shape[0]. Per-sample reproducible noise requires one generator per sample.
Source
Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/sana_wm/base.py:1171
def _prepare_noise_latents(
self,
shape: tuple,
dtype: torch.dtype,
device: torch.device,
generator: (
torch.Generator | list[torch.Generator] | tuple[torch.Generator, ...]
),
) -> torch.Tensor:
if isinstance(generator, (list, tuple)):
if not generator:
raise ValueError("SANA-WM generator list must not be empty.")
if len(generator) == 1:
return randn_tensor(
shape, generator=generator[0], device=device, dtype=dtype
)
if len(generator) != shape[0]:
raise ValueError(
"SANA-WM generator list length must match latent batch size; "
f"got {len(generator)} generators for batch {shape[0]}."
)
sample_shape = (1, *shape[1:])
return torch.cat(
[
randn_tensor(
sample_shape,
generator=sample_generator,
device=device,
dtype=dtype,
)
for sample_generator in generator
],
dim=0,
)
return randn_tensor(shape, generator=generator, device=device, dtype=dtype)
View on GitHub (pinned to 0132848349)
Solutions
- Build exactly one generator per sample: len(generators) == batch_size
- Or pass a single generator to share across the whole batch
- Derive generators from the same source that determined shape[0]
Example fix
# before gens = gens[:3] # batch is 4 # after gens = [g for _, g in zip(range(batch), gens)] # match batch size
Defensive patterns
Strategy: validation
Validate before calling
assert not isinstance(generator, (list, tuple)) or len(generator) in (1, shape[0])
Type guard
def generators_match(g, batch: int) -> bool:
return not isinstance(g, (list, tuple)) or len(g) in (1, batch) Prevention
- Derive generator count from the same batch size used to build latents
- Prefer a single generator unless per-sample reproducibility is required
When it happens
Trigger: Passing e.g. 3 generators for a latent tensor with batch 4 (or 2 for batch 1, which is not the single-generator shortcut).
Common situations: Request batch size changed after generators were built; seeds list filtered/deduplicated; off-by-one when slicing a generator list.
Related errors
- SANA-WM generator list must not be empty.
- SANA-WM seed list length must be 1 or match latent batch siz
- You have passed a list of generators of length {len(generato
- You have passed a list of generators of length {len(generato
- You have passed a list of generators of length {len(generato
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/52fbe9123fe37fb2.
Report an issue: GitHub.