sgl-project/sglang · error · RuntimeError
SANA-WM Triton camera GDN backend unavailable: {precheck_rea
Error message
SANA-WM Triton camera GDN backend unavailable: {precheck_reason} What it means
The camera-GDN Triton path runs prechecks (eval/inference mode, CUDA tensor). With gdn_backend='triton' forced, failing a precheck raises this RuntimeError; with auto it falls back by returning None.
Source
Thrown at python/sglang/multimodal_gen/runtime/models/dits/sana_wm_components.py:2254
beta: torch.Tensor,
decay: torch.Tensor,
HW: Tuple[int, int, int],
) -> Optional[torch.Tensor]:
global _SANA_WM_TRITON_CAM_GDN_DISABLED_REASON
precheck_reason = None
if self.gdn_backend == "torch":
precheck_reason = "gdn_backend=torch"
elif _SANA_WM_TRITON_CAM_GDN_DISABLED_REASON is not None:
precheck_reason = _SANA_WM_TRITON_CAM_GDN_DISABLED_REASON
elif self.training or torch.is_grad_enabled():
precheck_reason = "requires eval/inference mode"
elif not q.is_cuda:
precheck_reason = "requires CUDA tensor"
if precheck_reason is not None:
if self.gdn_backend == "triton":
raise RuntimeError(
"SANA-WM Triton camera GDN backend unavailable: "
f"{precheck_reason}"
)
return None
q = q.float().contiguous()
k = k.float().contiguous()
v = v.float().contiguous()
reason = self._triton_cam_gdn_unavailable_reason(q, k, v, beta, decay, HW)
if reason is not None:
if self.gdn_backend == "triton":
raise RuntimeError(
f"SANA-WM Triton camera GDN backend unavailable: {reason}"
)
return None
try:
from sglang.kernels.ops.diffusion import cam_scan_bidi_chunkwiseView on GitHub (pinned to 0132848349)
Solutions
- Use gdn_backend='auto' to get automatic torch fallback
- Wrap inference in torch.no_grad() and call .eval(); move tensors to CUDA
- Verify q/k/v/beta/decay are CUDA tensors before calling
Example fix
# before
model.gdn.gdn_backend = "triton"
out = model(latent, t, ehs, camera_conditions=cam)
# after
model.eval()
with torch.no_grad():
out = model(latent.to("cuda"), t, ehs, camera_conditions=cam.to("cuda")) Defensive patterns
Strategy: fallback
Validate before calling
model.eval(); assert q.is_cuda; run under torch.no_grad() before forcing triton
Try / catch
try:
out = cam_gdn(...)
except RuntimeError as e:
if "camera GDN backend unavailable" in str(e) and "eval" in str(e):
model.eval(); out = cam_gdn(...)
else: raise Prevention
- Always eval()+no_grad in inference wrappers; use auto backend
When it happens
Trigger: Setting gdn_backend='triton' and invoking the camera GDN with grad enabled, model in train mode, or CPU tensors.
Common situations: Running the camera branch under autograd/training; unit tests that forget eval(); forcing triton on a CPU-only box.
Related errors
- SANA-WM Triton camera GDN backend unavailable: {reason}
- Unsupported SANA-WM cam_update_rule: {self.cam_update_rule}
- SANA-WM Triton GDN backend unavailable: {reason}
- combined_history=True requires direction=0 (bidi)
- Unsupported SANA-WM update_rule: {self.update_rule}
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/5da7742e039833ed.
Report an issue: GitHub.