{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/dpm-solver-v3-improved-diffusion-ode-solver-1","title":"DPM-Solver-v3: Improved Diffusion ODE Solver with Empirical Model Statistics","arxiv_id":"2310.13268","date":"2023-10-20","proceeding":"NeurIPS 2023 11","authors":["Kaiwen Zheng","Cheng Lu","Jianfei Chen","Jun Zhu"],"abstract":"Diffusion probabilistic models (DPMs) have exhibited excellent performance for high-fidelity image generation while suffering from inefficient sampling. Recent works accelerate the sampling procedure by proposing fast ODE solvers that leverage the specific ODE form of DPMs. However, they highly rely on specific parameterization during inference (such as noise/data prediction), which might not be the optimal choice. In this work, we propose a novel formulation towards the optimal parameterization during sampling that minimizes the first-order discretization error of the ODE solution. Based on such formulation, we propose DPM-Solver-v3, a new fast ODE solver for DPMs by introducing several coefficients efficiently computed on the pretrained model, which we call empirical model statistics. We further incorporate multistep methods and a predictor-corrector framework, and propose some techniques for improving sample quality at small numbers of function evaluations (NFE) or large guidance scales. Experiments show that DPM-Solver-v3 achieves consistently better or comparable performance in both unconditional and conditional sampling with both pixel-space and latent-space DPMs, especially in 5$\\sim$10 NFEs. We achieve FIDs of 12.21 (5 NFE), 2.51 (10 NFE) on unconditional CIFAR10, and MSE of 0.55 (5 NFE, 7.5 guidance scale) on Stable Diffusion, bringing a speed-up of 15%$\\sim$30% compared to previous state-of-the-art training-free methods. Code is available at https://github.com/thu-ml/DPM-Solver-v3.","url_abs":"https://arxiv.org/abs/2310.13268v3","url_pdf":"https://arxiv.org/pdf/2310.13268v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"dpm-solver-v3-improved-diffusion-ode-solver-1","repo_url":"https://github.com/thu-ml/dpm-solver-v3","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"dpm-solver-v3-improved-diffusion-ode-solver-1","repo_url":"https://github.com/nvlabs/ddo","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-generation","task_name":"Image Generation"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2310.13268","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.13268"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/thu-ml/DPM-Solver-v3","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/thu-ml/dpm-solver-v3","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/nvlabs/ddo","reach":null}],"summary":{"ran_draft_wrong":6,"ran":1,"ran_violates":2,"ran_fixture":3,"unverified":8},"by_repo_kind":{"official":{"samples":7,"ran":5,"repositories":1},"listed":{"samples":1,"ran":1,"repositories":1},"community":{"samples":4,"ran":3,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":9,"samples":[{"code_sha256_prefix":"758116407dad6dd9","entry":"expand_dims","repo":"luchengthu/dpm-solver","repo_kind":"community","path":"examples/score_sde_jax/dpm_solver.py","file_url":"https://github.com/luchengthu/dpm-solver/blob/HEAD/examples/score_sde_jax/dpm_solver.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"758116407dad6dd9"}},{"code_sha256_prefix":"6a35b62fbc80f70a","entry":"interpolate_fn","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"6a35b62fbc80f70a"}},{"code_sha256_prefix":"062dc87e7fb97885","entry":"DPM_Solver_v3","repo":"nvlabs/ddo","repo_kind":"listed","path":"EDM2_sample.py","file_url":"https://github.com/nvlabs/ddo/blob/HEAD/EDM2_sample.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"062dc87e7fb97885"}},{"code_sha256_prefix":"e6110366588c5c65","entry":"expand_dims","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"e6110366588c5c65"}},{"code_sha256_prefix":"674eca7b9e1b6439","entry":"format_time","repo":"thu-ml/DPM-Solver-v3","repo_kind":"official","path":"codebases/edm/dnnlib/util.py","file_url":"https://github.com/thu-ml/DPM-Solver-v3/blob/HEAD/codebases/edm/dnnlib/util.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"674eca7b9e1b6439"}},{"code_sha256_prefix":"32af001972a0699f","entry":"format_time_brief","repo":"thu-ml/DPM-Solver-v3","repo_kind":"official","path":"codebases/edm/dnnlib/util.py","file_url":"https://github.com/thu-ml/DPM-Solver-v3/blob/HEAD/codebases/edm/dnnlib/util.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"32af001972a0699f"}},{"code_sha256_prefix":"522ab9ee79479d93","entry":"index_list","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"522ab9ee79479d93"}},{"code_sha256_prefix":"89c07036a17ac182","entry":"index_list","repo":"thu-ml/DPM-Solver-v3","repo_kind":"official","path":"codebases/score_sde/samplers/dpm_solver_v3.py","file_url":"https://github.com/thu-ml/DPM-Solver-v3/blob/HEAD/codebases/score_sde/samplers/dpm_solver_v3.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"89c07036a17ac182"}},{"code_sha256_prefix":"6108b0e6e6095e2e","entry":"model_wrapper","repo":"luchengthu/dpm-solver","repo_kind":"community","path":"examples/score_sde_jax/dpm_solver.py","file_url":"https://github.com/luchengthu/dpm-solver/blob/HEAD/examples/score_sde_jax/dpm_solver.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6108b0e6e6095e2e"}},{"code_sha256_prefix":"0e68c8747f1cfcd9","entry":"model_wrapper","repo":"luchengthu/dpm-solver","repo_kind":"community","path":"examples/score_sde_pytorch/dpm_solver.py","file_url":"https://github.com/luchengthu/dpm-solver/blob/HEAD/examples/score_sde_pytorch/dpm_solver.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0e68c8747f1cfcd9"}},{"code_sha256_prefix":"8d1e60bffa17bbac","entry":"weighted_cumsumexp_trapezoid","repo":"thu-ml/DPM-Solver-v3","repo_kind":"official","path":"codebases/score_sde/samplers/dpm_solver_v3.py","file_url":"https://github.com/thu-ml/DPM-Solver-v3/blob/HEAD/codebases/score_sde/samplers/dpm_solver_v3.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8d1e60bffa17bbac"}},{"code_sha256_prefix":"7b4e53ebea16a9ea","entry":"weighted_cumsumexp_trapezoid_torch","repo":"thu-ml/DPM-Solver-v3","repo_kind":"official","path":"codebases/score_sde/samplers/dpm_solver_v3.py","file_url":"https://github.com/thu-ml/DPM-Solver-v3/blob/HEAD/codebases/score_sde/samplers/dpm_solver_v3.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7b4e53ebea16a9ea"}},{"code_sha256_prefix":"3c602c42a715bc18","entry":"DPM_Solver_v3","repo":"thu-ml/dpm-solver-v3","repo_kind":"official","path":"dpm_solver_v3.py","file_url":"https://github.com/thu-ml/dpm-solver-v3/blob/HEAD/dpm_solver_v3.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3c602c42a715bc18"}},{"code_sha256_prefix":"9d31d2c4cd16bb2d","entry":"ask_yes_no","repo":"thu-ml/DPM-Solver-v3","repo_kind":"official","path":"codebases/edm/dnnlib/util.py","file_url":"https://github.com/thu-ml/DPM-Solver-v3/blob/HEAD/codebases/edm/dnnlib/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9d31d2c4cd16bb2d"}},{"code_sha256_prefix":"5de61fe60d41eb55","entry":"expand_dims","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"unverified","verification_level":0,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"5de61fe60d41eb55"}},{"code_sha256_prefix":"8f6335e1c872cedc","entry":"interpolate_fn","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"8f6335e1c872cedc"}},{"code_sha256_prefix":"f2534952711dcca5","entry":"interpolate_fn","repo":"luchengthu/dpm-solver","repo_kind":"community","path":"examples/score_sde_jax/dpm_solver.py","file_url":"https://github.com/luchengthu/dpm-solver/blob/HEAD/examples/score_sde_jax/dpm_solver.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f2534952711dcca5"}},{"code_sha256_prefix":"aafc0d7013851789","entry":"model_wrapper","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"unverified","verification_level":0,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"aafc0d7013851789"}},{"code_sha256_prefix":"62681c73cc1d446e","entry":"weighted_cumsumexp_trapezoid","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"unverified","verification_level":0,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"62681c73cc1d446e"}},{"code_sha256_prefix":"510b207c6841a775","entry":"weighted_cumsumexp_trapezoid_torch","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"unverified","verification_level":0,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"510b207c6841a775"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}