microsoft/VibeVoice · error · ValueError

prediction_type given as {self.config.prediction_type} must

Error message

prediction_type given as {self.config.prediction_type} must be one of `epsilon`, `sample`, or `v_prediction` for the DPMSolverMultistepScheduler.

What it means

Under DPM-Solver++ (`algorithm_type` in {dpmsolver++, sde-dpmsolver++}) the model output is converted to an x0 prediction, and the conversion formula depends on `config.prediction_type`. This scheduler implements `epsilon`, `sample`, and `v_prediction`; anything else raises ValueError during `step()` (via `_convert_model_output`). prediction_type must match how the underlying diffusion model was trained.

Source

Thrown at vibevoice/schedule/dpm_solver.py:586

            )

        # DPM-Solver++ needs to solve an integral of the data prediction model.
        if self.config.algorithm_type in ["dpmsolver++", "sde-dpmsolver++"]:
            if self.config.prediction_type == "epsilon":
                # DPM-Solver and DPM-Solver++ only need the "mean" output.
                if self.config.variance_type in ["learned", "learned_range"]:
                    model_output = model_output[:, :3]
                sigma = self.sigmas[self.step_index]
                alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma)
                x0_pred = (sample - sigma_t * model_output) / alpha_t
            elif self.config.prediction_type == "sample":
                x0_pred = model_output
            elif self.config.prediction_type == "v_prediction":
                sigma = self.sigmas[self.step_index]
                alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma)
                x0_pred = alpha_t * sample - sigma_t * model_output
            else:
                raise ValueError(
                    f"prediction_type given as {self.config.prediction_type} must be one of `epsilon`, `sample`, or"
                    " `v_prediction` for the DPMSolverMultistepScheduler."
                )

            if self.config.thresholding:
                x0_pred = self._threshold_sample(x0_pred)

            return x0_pred

        # DPM-Solver needs to solve an integral of the noise prediction model.
        elif self.config.algorithm_type in ["dpmsolver", "sde-dpmsolver"]:
            if self.config.prediction_type == "epsilon":
                # DPM-Solver and DPM-Solver++ only need the "mean" output.
                if self.config.variance_type in ["learned", "learned_range"]:
                    epsilon = model_output[:, :3]
                else:
                    epsilon = model_output
            elif self.config.prediction_type == "sample":

View on GitHub (pinned to 94da20d98b)

Solutions

  1. Set prediction_type to "epsilon" (standard noise prediction), "sample" (direct x0), or "v_prediction".
  2. Match it to the model's training objective — if the checkpoint is flow-matching, this scheduler family is the wrong choice; use a flow-matching/Euler scheduler.
  3. Check the original model card / training config for the parameterisation before overriding.

Example fix

# before
sched = DPMSolverMultistepScheduler(..., prediction_type="v")

# after
sched = DPMSolverMultistepScheduler(..., prediction_type="v_prediction")
Defensive patterns

Strategy: validation

Validate before calling

PT = {"epsilon", "sample", "v_prediction"}
assert scheduler.config.prediction_type in PT, (
    f"prediction_type {scheduler.config.prediction_type!r} unsupported; "
    f"match the model's training objective ({sorted(PT)})"
)

Type guard

def is_supported_prediction_type(v) -> bool:
    return isinstance(v, str) and v in {"epsilon", "sample", "v_prediction"}

Prevention

When it happens

Trigger: Loading a scheduler config with `prediction_type="v"` or `"epsilon_v"` (some repos use short names), or a flow-matching model (`prediction_type="flow_prediction"`) sampled with this scheduler, then calling `scheduler.step()`.

Common situations: Mismatched model/scheduler checkpoints (e.g. trying to sample a rectified-flow or v-parameterised checkpoint with DPM-Solver settings from an epsilon model); config hand-edits; short-name conventions from other codebases.

Related errors


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