microsoft/VibeVoice · error · ValueError

`final_sigmas_type` {final_sigmas_type} is not supported for

Error message

`final_sigmas_type` {final_sigmas_type} is not supported for `algorithm_type` {algorithm_type}. Please choose `sigma_min` instead.

What it means

`final_sigmas_type="zero"` forces the last sigma to 0 (full denoising at the final step), which is only mathematically implemented for the DPM-Solver++ family where the update is expressed in x0-space. Requesting it with plain `dpmsolver` or `sde-dpmsolver` (epsilon-space updates) raises ValueError at construction. Use `final_sigmas_type="sigma_min"` instead.

Source

Thrown at vibevoice/schedule/dpm_solver.py:283

        # standard deviation of the initial noise distribution
        self.init_noise_sigma = 1.0

        # settings for DPM-Solver
        if algorithm_type not in ["dpmsolver", "dpmsolver++", "sde-dpmsolver", "sde-dpmsolver++"]:
            if algorithm_type == "deis":
                self.register_to_config(algorithm_type="dpmsolver++")
            else:
                raise NotImplementedError(f"{algorithm_type} is not implemented for {self.__class__}")

        if solver_type not in ["midpoint", "heun"]:
            if solver_type in ["logrho", "bh1", "bh2"]:
                self.register_to_config(solver_type="midpoint")
            else:
                raise NotImplementedError(f"{solver_type} is not implemented for {self.__class__}")

        if algorithm_type not in ["dpmsolver++", "sde-dpmsolver++"] and final_sigmas_type == "zero":
            raise ValueError(
                f"`final_sigmas_type` {final_sigmas_type} is not supported for `algorithm_type` {algorithm_type}. Please choose `sigma_min` instead."
            )

        # settable values
        self.num_inference_steps = None
        timesteps = np.linspace(0, num_train_timesteps - 1, num_train_timesteps, dtype=np.float32)[::-1].copy()
        self.timesteps = torch.from_numpy(timesteps)
        self.model_outputs = [None] * solver_order
        self.lower_order_nums = 0
        self._step_index = None
        self._begin_index = None
        self.sigmas = self.sigmas.to("cpu")  # to avoid too much CPU/GPU communication

    @property
    def step_index(self):
        """
        The index counter for current timestep. It will increase 1 after each scheduler step.
        """

View on GitHub (pinned to 94da20d98b)

Solutions

  1. Set `final_sigmas_type="sigma_min"` when using algorithm_type "dpmsolver" or "sde-dpmsolver".
  2. Or switch to "dpmsolver++"/"sde-dpmsolver++" if you specifically need the zero final sigma behavior.
  3. If you want zero terminal SNR behavior generally, keep `rescale_betas_zero_snr=True` — that is independent of this check.

Example fix

# before
DPMSolverMultistepScheduler(algorithm_type="dpmsolver", final_sigmas_type="zero")

# after
DPMSolverMultistepScheduler(algorithm_type="dpmsolver", final_sigmas_type="sigma_min")
Defensive patterns

Strategy: validation

Validate before calling

if final_sigmas_type == "zero" and algorithm_type not in {"dpmsolver++", "sde-dpmsolver++"}:
    final_sigmas_type = "sigma_min"  # or raise, per your policy
sched = DPMSolverMultistepScheduler(
    algorithm_type=algorithm_type, final_sigmas_type=final_sigmas_type, ...
)

Type guard

def zero_final_sigma_allowed(algorithm_type: str) -> bool:
    return algorithm_type in {"dpmsolver++", "sde-dpmsolver++"}

Prevention

When it happens

Trigger: `DPMSolverMultistepScheduler(algorithm_type="dpmsolver", final_sigmas_type="zero")` (or `sde-dpmsolver`), a combination upstream diffusers also rejects.

Common situations: Copying a config from a DPM-Solver++ pipeline and changing only algorithm_type; enabling zero-terminal-SNR tricks (`rescale_betas_zero_snr=True`) together with the classic solver.

Related errors


AI-assisted analysis of microsoft/VibeVoice@94da20d98b (2026-08-15). Data as JSON: /api/errors/ec2e2e4a8eeccb35. Report an issue: GitHub.