sgl-project/sglang · error · NotImplementedError
Scheduler type '{self.config.scheduler_type}' not implemente
Error message
Scheduler type '{self.config.scheduler_type}' not implemented What it means
HeliusScheduler.step() dispatches on self.config.scheduler_type and only implements specific solver types (e.g. the UniPC branch above); any other string hits the NotImplementedError. The scheduler_type string in the config does not match a compiled-in branch.
Source
Thrown at python/sglang/multimodal_gen/runtime/models/schedulers/scheduling_helios.py:718
return_dict=return_dict,
)
elif self.config.scheduler_type == "unipc":
return self.step_unipc(
model_output=model_output,
timestep=timestep,
sample=sample,
return_dict=return_dict,
)
elif self.config.scheduler_type == "dmd":
return self.step_dmd(
model_output=model_output,
timestep=timestep,
sample=sample,
return_dict=return_dict,
**kwargs,
)
else:
raise NotImplementedError(
f"Scheduler type '{self.config.scheduler_type}' not implemented"
)
def reset_scheduler_history(self):
self.model_outputs = [None] * self.config.solver_order
self.timestep_list = [None] * self.config.solver_order
self.lower_order_nums = 0
self.disable_corrector = self.config.disable_corrector
self.solver_p = None
self.last_sample = None
self._step_index = None
self._begin_index = None
def set_shift(self, shift: float):
"""Update the shift parameter (called by SchedulerLoader after loading)."""
self.config.shift = shift
self.shift = shift
View on GitHub (pinned to 0132848349)
Solutions
- Check the exact value of config.scheduler_type in your model config and align it with one of the types handled in step() (read the if/elif chain just above the raise)
- If you intended a standard diffusers scheduler, use that scheduler class directly instead of HeliosScheduler
- If the type should be supported, add an elif branch or fix the config string (watch for trailing spaces / case)
Example fix
# before
scheduler = HeliosScheduler.from_config({"scheduler_type": "euler"})
scheduler.step(...) # NotImplementedError
# after
scheduler = HeliosScheduler.from_config({"scheduler_type": "unipc"}) # a supported type
scheduler.set_timesteps(50)
scheduler.step(...) Defensive patterns
Strategy: type-guard
Validate before calling
supported = {b.comparators[0].value for ...} # or hard-code from step()
assert config.scheduler_type in SUPPORTED_TYPES, f"unsupported scheduler_type {config.scheduler_type!r}" Type guard
SUPPORTED_SCHEDULER_TYPES = {"unipc"} # keep in sync with step()
def is_supported_scheduler_type(name: str) -> bool:
return name.strip().lower() in SUPPORTED_SCHEDULER_TYPES Try / catch
try:
scheduler.step(...)
except NotImplementedError as e:
raise RuntimeError(f"Config uses unsupported scheduler {config.scheduler_type!r}; switch to a supported type") from e Prevention
- Validate scheduler_type at config-load time, not at first step
- Pin the library version that supports your scheduler type
When it happens
Trigger: Loading a model/pipeline whose config.json sets scheduler_type to a value with no branch in step() (e.g. 'euler', 'ddim', or a typo like 'unipcmultistepscheduler ').
Common situations: Swapping scheduler configs between diffusion models; version upgrades that rename scheduler types; typos or wrong-casing in a custom config.
Related errors
- {output_batch.error}
- action policy returned no output
- Expected {request_count} outputs, got {output_count} from sc
- Subclasses of BaseScheduler must define '{attr}' property
- denoising_strength must be positive
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/db795cd939e3e6a1.
Report an issue: GitHub.