{"record":{"id":"f021c0c2bf3621f5","repo":"microsoft/VibeVoice","slug":"algorithm-type-is-not-implemented-for-self-cl","errorCode":null,"errorMessage":"{algorithm_type} is not implemented for {self.__class__}","messagePattern":"(.+?) is not implemented for (.+?)","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"vibevoice/schedule/dpm_solver.py","lineNumber":274,"sourceCode":"            # Close to 0 without being 0 so first sigma is not inf\n            # FP16 smallest positive subnormal works well here\n            self.alphas_cumprod[-1] = 2**-24\n\n        # Currently we only support VP-type noise schedule\n        self.alpha_t = torch.sqrt(self.alphas_cumprod)\n        self.sigma_t = torch.sqrt(1 - self.alphas_cumprod)\n        self.lambda_t = torch.log(self.alpha_t) - torch.log(self.sigma_t)\n        self.sigmas = ((1 - self.alphas_cumprod) / self.alphas_cumprod) ** 0.5\n\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","sourceCodeStart":256,"sourceCodeEnd":292,"githubUrl":"https://github.com/microsoft/VibeVoice/blob/94da20d98b2fa7688e9cbfaf7692ddb4954f7600/vibevoice/schedule/dpm_solver.py#L256-L292","documentation":"The scheduler accepts algorithm_type in {`dpmsolver`, `dpmsolver++`, `sde-dpmsolver`, `sde-dpmsolver++`}; the legacy value `deis` is silently remapped to `dpmsolver++`. Every other string raises NotImplementedError at construction time. The algorithm choice decides whether the model output is converted to x0-prediction (++) or epsilon-prediction, so it must be one of the implemented solvers.","triggerScenarios":"Constructing the scheduler with `algorithm_type=\"deis++\"`, `\"dpmsolver+++\"`, or any typo — `deis` alone is accepted and remapped, but `deis++` and everything else are not.","commonSituations":"Hand-editing scheduler configs, copying `deis++` from DEIS papers/other repos, or case/spacing typos in YAML pipeline configs.","solutions":["Use one of: \"dpmsolver\", \"dpmsolver++\", \"sde-dpmsolver\", \"sde-dpmsolver++\" (use the sde- variants only if your step function passes noise for the SDE).","If you typed \"deis\", that works (remapped); if you typed \"deis++\", change it to \"dpmsolver++\".","Sanity-check config strings loaded from files before scheduler construction."],"exampleFix":"# before\nsched = DPMSolverMultistepScheduler(..., algorithm_type=\"deis++\")\n\n# after\nsched = DPMSolverMultistepScheduler(..., algorithm_type=\"dpmsolver++\")","handlingStrategy":"validation","validationCode":"ALGOS = {\"dpmsolver\", \"dpmsolver++\", \"sde-dpmsolver\", \"sde-dpmsolver++\", \"deis\"}\nassert algorithm_type in ALGOS, f\"algorithm_type must be one of {sorted(ALGOS)}\"\nsched = DPMSolverMultistepScheduler(..., algorithm_type=algorithm_type)","typeGuard":"def is_supported_algorithm_type(v) -> bool:\n    return isinstance(v, str) and v in {\n        \"dpmsolver\", \"dpmsolver++\", \"sde-dpmsolver\", \"sde-dpmsolver++\", \"deis\"\n    }","tryCatchPattern":null,"preventionTips":["Use exact strings: 'dpmsolver++' with two plus signs, no spaces.","'deis' is accepted but silently remapped to 'dpmsolver++' — be aware when reproducing results.","sde- variants require passing noise into step(); only select them if your sampler provides it."],"tags":["python","diffusion","scheduler","config","solver"],"backgroundTag":null,"analyzedSha":"94da20d98b2fa7688e9cbfaf7692ddb4954f7600","analyzedAt":"2026-08-15T04:12:07.418Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}