microsoft/VibeVoice · error · NotImplementedError
{beta_schedule} is not implemented for {self.__class__}
Error message
{beta_schedule} is not implemented for {self.__class__} What it means
The DPM-Solver multistep scheduler constructor accepts only these beta_schedule values: `linear`, `scaled_linear`, `squaredcos_cap_v2` (alias `cosine`), `cauchy`, and `laplace` (dpm_solver.py:~238-247). Anything else raises NotImplementedError. This is a vendored copy of diffusers' DPMSolverMultistepScheduler, so configs written for other diffusers versions (e.g. `sigmoid`, which newer diffusers added) will fail here.
Source
Thrown at vibevoice/schedule/dpm_solver.py:247
deprecation_message = f"algorithm_type {algorithm_type} is deprecated and will be removed in a future version. Choose from `dpmsolver++` or `sde-dpmsolver++` instead"
deprecate("algorithm_types dpmsolver and sde-dpmsolver", "1.0.0", deprecation_message)
if trained_betas is not None:
self.betas = torch.tensor(trained_betas, dtype=torch.float32)
elif beta_schedule == "linear":
self.betas = torch.linspace(beta_start, beta_end, num_train_timesteps, dtype=torch.float32)
elif beta_schedule == "scaled_linear":
# this schedule is very specific to the latent diffusion model.
self.betas = torch.linspace(beta_start**0.5, beta_end**0.5, num_train_timesteps, dtype=torch.float32) ** 2
elif beta_schedule == "squaredcos_cap_v2" or beta_schedule == "cosine":
# Glide cosine schedule
self.betas = betas_for_alpha_bar(num_train_timesteps, alpha_transform_type="cosine")
elif beta_schedule == "cauchy":
self.betas = betas_for_alpha_bar(num_train_timesteps, alpha_transform_type="cauchy")
elif beta_schedule == "laplace":
self.betas = betas_for_alpha_bar(num_train_timesteps, alpha_transform_type="laplace")
else:
raise NotImplementedError(f"{beta_schedule} is not implemented for {self.__class__}")
if rescale_betas_zero_snr:
self.betas = rescale_zero_terminal_snr(self.betas)
self.alphas = 1.0 - self.betas
self.alphas_cumprod = torch.cumprod(self.alphas, dim=0)
if rescale_betas_zero_snr:
# Close to 0 without being 0 so first sigma is not inf
# FP16 smallest positive subnormal works well here
self.alphas_cumprod[-1] = 2**-24
# Currently we only support VP-type noise schedule
self.alpha_t = torch.sqrt(self.alphas_cumprod)
self.sigma_t = torch.sqrt(1 - self.alphas_cumprod)
self.lambda_t = torch.log(self.alpha_t) - torch.log(self.sigma_t)
self.sigmas = ((1 - self.alphas_cumprod) / self.alphas_cumprod) ** 0.5
View on GitHub (pinned to 94da20d98b)
Solutions
- Change beta_schedule to a supported value: "linear", "scaled_linear", "squaredcos_cap_v2" (or "cosine"), "cauchy", "laplace".
- If the checkpoint genuinely needs `sigmoid`, port that branch from upstream diffusers `scheduling_dpmsolver.py` into this local copy.
- Validate/normalize scheduler config keys before constructing the scheduler.
Example fix
# before sched = DPMSolverMultistepScheduler(..., beta_schedule="sigmoid") # after sched = DPMSolverMultistepScheduler(..., beta_schedule="scaled_linear")
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED_BETA = {"linear", "scaled_linear", "squaredcos_cap_v2", "cosine", "cauchy", "laplace"}
if beta_schedule not in SUPPORTED_BETA:
raise ValueError(f"beta_schedule {beta_schedule!r} unsupported; choose from {sorted(SUPPORTED_BETA)}")
sched = DPMSolverMultistepScheduler(..., beta_schedule=beta_schedule) Type guard
def is_supported_beta_schedule(v) -> bool:
return isinstance(v, str) and v in {
"linear", "scaled_linear", "squaredcos_cap_v2", "cosine", "cauchy", "laplace"
} Prevention
- Validate scheduler config dicts right after loading from JSON/YAML.
- Remember 'sigmoid' (newer diffusers) is not implemented in this vendored copy.
- Prefer 'squaredcos_cap_v2' over the 'cosine' alias for forward-compatible configs.
When it happens
Trigger: Constructing the scheduler with `beta_schedule="sigmoid"` (or any unsupported string), typically from a pipeline config dict / model card JSON that was authored against a different diffusers release.
Common situations: Loading a diffusers model config saved by a newer diffusers (sigmoid schedule exists there but not in this vendored copy); hand-written config with typos; porting pipelines between repos.
Related errors
- Unsupported alpha_transform_type: {alpha_transform_type}
- {algorithm_type} is not implemented for {self.__class__}
- {solver_type} is not implemented for {self.__class__}
- `final_sigmas_type` {final_sigmas_type} is not supported for
- Cannot use `timesteps` with `config.use_karras_sigmas = True
AI-assisted analysis of microsoft/VibeVoice@94da20d98b (2026-08-15).
Data as JSON: /api/errors/1c17bbfd2114bc58.
Report an issue: GitHub.