{"record":{"id":"ec2e2e4a8eeccb35","repo":"microsoft/VibeVoice","slug":"final-sigmas-type-final-sigmas-type-is-not-sup","errorCode":null,"errorMessage":"`final_sigmas_type` {final_sigmas_type} is not supported for `algorithm_type` {algorithm_type}. Please choose `sigma_min` instead.","messagePattern":"`final_sigmas_type` (.+?) is not supported for `algorithm_type` (.+?)\\. Please choose `sigma_min` instead\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vibevoice/schedule/dpm_solver.py","lineNumber":283,"sourceCode":"\n        # standard deviation of the initial noise distribution\n        self.init_noise_sigma = 1.0\n\n        # settings for DPM-Solver\n        if algorithm_type not in [\"dpmsolver\", \"dpmsolver++\", \"sde-dpmsolver\", \"sde-dpmsolver++\"]:\n            if algorithm_type == \"deis\":\n                self.register_to_config(algorithm_type=\"dpmsolver++\")\n            else:\n                raise NotImplementedError(f\"{algorithm_type} is not implemented for {self.__class__}\")\n\n        if solver_type not in [\"midpoint\", \"heun\"]:\n            if solver_type in [\"logrho\", \"bh1\", \"bh2\"]:\n                self.register_to_config(solver_type=\"midpoint\")\n            else:\n                raise NotImplementedError(f\"{solver_type} is not implemented for {self.__class__}\")\n\n        if algorithm_type not in [\"dpmsolver++\", \"sde-dpmsolver++\"] and final_sigmas_type == \"zero\":\n            raise ValueError(\n                f\"`final_sigmas_type` {final_sigmas_type} is not supported for `algorithm_type` {algorithm_type}. Please choose `sigma_min` instead.\"\n            )\n\n        # settable values\n        self.num_inference_steps = None\n        timesteps = np.linspace(0, num_train_timesteps - 1, num_train_timesteps, dtype=np.float32)[::-1].copy()\n        self.timesteps = torch.from_numpy(timesteps)\n        self.model_outputs = [None] * solver_order\n        self.lower_order_nums = 0\n        self._step_index = None\n        self._begin_index = None\n        self.sigmas = self.sigmas.to(\"cpu\")  # to avoid too much CPU/GPU communication\n\n    @property\n    def step_index(self):\n        \"\"\"\n        The index counter for current timestep. It will increase 1 after each scheduler step.\n        \"\"\"","sourceCodeStart":265,"sourceCodeEnd":301,"githubUrl":"https://github.com/microsoft/VibeVoice/blob/94da20d98b2fa7688e9cbfaf7692ddb4954f7600/vibevoice/schedule/dpm_solver.py#L265-L301","documentation":"`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.","triggerScenarios":"`DPMSolverMultistepScheduler(algorithm_type=\"dpmsolver\", final_sigmas_type=\"zero\")` (or `sde-dpmsolver`), a combination upstream diffusers also rejects.","commonSituations":"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.","solutions":["Set `final_sigmas_type=\"sigma_min\"` when using algorithm_type \"dpmsolver\" or \"sde-dpmsolver\".","Or switch to \"dpmsolver++\"/\"sde-dpmsolver++\" if you specifically need the zero final sigma behavior.","If you want zero terminal SNR behavior generally, keep `rescale_betas_zero_snr=True` — that is independent of this check."],"exampleFix":"# before\nDPMSolverMultistepScheduler(algorithm_type=\"dpmsolver\", final_sigmas_type=\"zero\")\n\n# after\nDPMSolverMultistepScheduler(algorithm_type=\"dpmsolver\", final_sigmas_type=\"sigma_min\")","handlingStrategy":"validation","validationCode":"if final_sigmas_type == \"zero\" and algorithm_type not in {\"dpmsolver++\", \"sde-dpmsolver++\"}:\n    final_sigmas_type = \"sigma_min\"  # or raise, per your policy\nsched = DPMSolverMultistepScheduler(\n    algorithm_type=algorithm_type, final_sigmas_type=final_sigmas_type, ...\n)","typeGuard":"def zero_final_sigma_allowed(algorithm_type: str) -> bool:\n    return algorithm_type in {\"dpmsolver++\", \"sde-dpmsolver++\"}","tryCatchPattern":null,"preventionTips":["Treat (algorithm_type, final_sigmas_type) as a pair and validate them together.","Default final_sigmas_type='sigma_min' is safe with every algorithm.","rescale_betas_zero_snr is a separate knob and does not require final_sigmas_type='zero'."],"tags":["python","diffusion","scheduler","config","sigma"],"backgroundTag":null,"analyzedSha":"94da20d98b2fa7688e9cbfaf7692ddb4954f7600","analyzedAt":"2026-08-15T04:12:07.418Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}