{"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-a-fast-ode-solver-for-diffusion","title":"DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps","arxiv_id":"2206.00927","date":"2022-06-02","proceeding":null,"authors":["Cheng Lu","Yuhao Zhou","Fan Bao","Jianfei Chen","Chongxuan Li","Jun Zhu"],"abstract":"Diffusion probabilistic models (DPMs) are emerging powerful generative models. Despite their high-quality generation performance, DPMs still suffer from their slow sampling as they generally need hundreds or thousands of sequential function evaluations (steps) of large neural networks to draw a sample. Sampling from DPMs can be viewed alternatively as solving the corresponding diffusion ordinary differential equations (ODEs). In this work, we propose an exact formulation of the solution of diffusion ODEs. The formulation analytically computes the linear part of the solution, rather than leaving all terms to black-box ODE solvers as adopted in previous works. By applying change-of-variable, the solution can be equivalently simplified to an exponentially weighted integral of the neural network. Based on our formulation, we propose DPM-Solver, a fast dedicated high-order solver for diffusion ODEs with the convergence order guarantee. DPM-Solver is suitable for both discrete-time and continuous-time DPMs without any further training. Experimental results show that DPM-Solver can generate high-quality samples in only 10 to 20 function evaluations on various datasets. We achieve 4.70 FID in 10 function evaluations and 2.87 FID in 20 function evaluations on the CIFAR10 dataset, and a $4\\sim 16\\times$ speedup compared with previous state-of-the-art training-free samplers on various datasets.","url_abs":"https://arxiv.org/abs/2206.00927v3","url_pdf":"https://arxiv.org/pdf/2206.00927v3.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-a-fast-ode-solver-for-diffusion","repo_url":"https://github.com/luchengthu/dpm-solver","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":null},{"paper_slug":"dpm-solver-a-fast-ode-solver-for-diffusion","repo_url":"https://github.com/astra-vision/LiDPM","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"dpm-solver-a-fast-ode-solver-for-diffusion","repo_url":"https://github.com/thomaskerdreux/pdm_sar_insar_generation","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"dpm-solver-a-fast-ode-solver-for-diffusion","repo_url":"https://github.com/MaximeVandegar/Papers-in-100-Lines-of-Code/tree/main/DPM_Solver_A_Fast_ODE_Solver_for_Diffusion_Probabilistic_Model_Sampling_in_Around_10_Steps","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"dpm-solver-a-fast-ode-solver-for-diffusion","repo_url":"https://github.com/probabilists/azula","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2206.00927","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2206.00927"}},"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/LuChengTHU/dpm-solver","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/probabilists/azula","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/thomaskerdreux/pdm_sar_insar_generation","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/luchengthu/dpm-solver","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/astra-vision/LiDPM","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MaximeVandegar/Papers-in-100-Lines-of-Code/tree/main/DPM_Solver_A_Fast_ODE_Solver_for_Diffusion_Probabilistic_Model_Sampling_in_Around_10_Steps","reach":null}],"summary":{"ran":2,"ran_draft_wrong":2,"ran_violates":1,"unverified":19},"by_repo_kind":{"official":{"samples":4,"ran":1,"repositories":1},"listed":{"samples":17,"ran":3,"repositories":3},"community":{"samples":3,"ran":1,"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":0,"samples":[{"code_sha256_prefix":"18673fd093501c14","entry":"DPM_Solver","repo":"luchengthu/dpm-solver","repo_kind":"official","path":"dpm_solver_pytorch.py","file_url":"https://github.com/luchengthu/dpm-solver/blob/HEAD/dpm_solver_pytorch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"18673fd093501c14"}},{"code_sha256_prefix":"aeb2f4987825e6b3","entry":"DiffusionModel","repo":"MaximeVandegar/Papers-in-100-Lines-of-Code","repo_kind":"listed","path":"DPM_Solver_A_Fast_ODE_Solver_for_Diffusion_Probabilistic_Model_Sampling_in_Around_10_Steps/dpm_solver.py","file_url":"https://github.com/MaximeVandegar/Papers-in-100-Lines-of-Code/blob/HEAD/DPM_Solver_A_Fast_ODE_Solver_for_Diffusion_Probabilistic_Model_Sampling_in_Around_10_Steps/dpm_solver.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aeb2f4987825e6b3"}},{"code_sha256_prefix":"b68777351ff35e18","entry":"expand_dims","repo":"thomaskerdreux/pdm_sar_insar_generation","repo_kind":"listed","path":"utils/utils_sample_DPM.py","file_url":"https://github.com/thomaskerdreux/pdm_sar_insar_generation/blob/HEAD/utils/utils_sample_DPM.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b68777351ff35e18"}},{"code_sha256_prefix":"522ab9ee79479d93","entry":"index_list","repo":"thu-ml/DPM-Solver-v3","repo_kind":"community","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":"522ab9ee79479d93"}},{"code_sha256_prefix":"75f87754036e8581","entry":"interpolate_fn","repo":"thomaskerdreux/pdm_sar_insar_generation","repo_kind":"listed","path":"utils/utils_sample_DPM.py","file_url":"https://github.com/thomaskerdreux/pdm_sar_insar_generation/blob/HEAD/utils/utils_sample_DPM.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"75f87754036e8581"}},{"code_sha256_prefix":"c92037e529d03d02","entry":"DPM_Solver","repo":"thomaskerdreux/pdm_sar_insar_generation","repo_kind":"listed","path":"utils/utils_sample_DPM.py","file_url":"https://github.com/thomaskerdreux/pdm_sar_insar_generation/blob/HEAD/utils/utils_sample_DPM.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":"c92037e529d03d02"}},{"code_sha256_prefix":"c1dc4eb5c194ce8d","entry":"NoiseScheduleVP","repo":"thomaskerdreux/pdm_sar_insar_generation","repo_kind":"listed","path":"utils/utils_sample_DPM.py","file_url":"https://github.com/thomaskerdreux/pdm_sar_insar_generation/blob/HEAD/utils/utils_sample_DPM.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":"c1dc4eb5c194ce8d"}},{"code_sha256_prefix":"87d3711ace93ad00","entry":"convert_inf","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/callbacks.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/callbacks.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"87d3711ace93ad00"}},{"code_sha256_prefix":"2844790a72cc7fd1","entry":"cosine_beta_schedule","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/scheduling.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/scheduling.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2844790a72cc7fd1"}},{"code_sha256_prefix":"5de61fe60d41eb55","entry":"expand_dims","repo":"LuChengTHU/dpm-solver","repo_kind":"official","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":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5de61fe60d41eb55"}},{"code_sha256_prefix":"b8a1f3b1f37f7fde","entry":"feats_to_coord","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/collations.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/collations.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b8a1f3b1f37f7fde"}},{"code_sha256_prefix":"8f6335e1c872cedc","entry":"interpolate_fn","repo":"LuChengTHU/dpm-solver","repo_kind":"official","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":"8f6335e1c872cedc"}},{"code_sha256_prefix":"84a1879c66fb8e8b","entry":"linear_beta_schedule","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/scheduling.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/scheduling.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"84a1879c66fb8e8b"}},{"code_sha256_prefix":"33bdf42966c6d6f3","entry":"load_config","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/configs.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/configs.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"33bdf42966c6d6f3"}},{"code_sha256_prefix":"dd375501c42dd070","entry":"load_poses","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/pcd_preprocess.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/pcd_preprocess.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"dd375501c42dd070"}},{"code_sha256_prefix":"aafc0d7013851789","entry":"model_wrapper","repo":"LuChengTHU/dpm-solver","repo_kind":"official","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":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aafc0d7013851789"}},{"code_sha256_prefix":"b39e1616e4146e48","entry":"parse_calibration","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/pcd_preprocess.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/pcd_preprocess.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b39e1616e4146e48"}},{"code_sha256_prefix":"f9097d641770f184","entry":"quadratic_beta_schedule","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/scheduling.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/scheduling.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f9097d641770f184"}},{"code_sha256_prefix":"418cad3868631abf","entry":"random_flip_point_cloud","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/pcd_transforms.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/pcd_transforms.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"418cad3868631abf"}},{"code_sha256_prefix":"0fb3faa4f806ee7a","entry":"rotate_perturbation_point_cloud","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/pcd_transforms.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/pcd_transforms.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0fb3faa4f806ee7a"}},{"code_sha256_prefix":"a9f27fc650c1d8ce","entry":"rotate_point_cloud","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/pcd_transforms.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/pcd_transforms.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a9f27fc650c1d8ce"}},{"code_sha256_prefix":"22c48367db1c5906","entry":"smart_config","repo":"astra-vision/LiDPM","repo_kind":"listed","path":"lidpm/utils/configs.py","file_url":"https://github.com/astra-vision/LiDPM/blob/HEAD/lidpm/utils/configs.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"22c48367db1c5906"}},{"code_sha256_prefix":"62681c73cc1d446e","entry":"weighted_cumsumexp_trapezoid","repo":"thu-ml/DPM-Solver-v3","repo_kind":"community","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":"unverified","verification_level":0,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"62681c73cc1d446e"}},{"code_sha256_prefix":"510b207c6841a775","entry":"weighted_cumsumexp_trapezoid_torch","repo":"thu-ml/DPM-Solver-v3","repo_kind":"community","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":"unverified","verification_level":0,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"510b207c6841a775"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}