DeePMD-kit’s documentation#
DeePMD-kit is a package written in Python/C++, designed to minimize the effort required to build deep learning-based models of interatomic potential energy and force field and to perform molecular dynamics (MD). This brings new hopes to addressing the accuracy-versus-efficiency dilemma in molecular simulations. Applications of DeePMD-kit span from finite molecules to extended systems and from metallic systems to chemically bonded systems.
Important
The project DeePMD-kit is licensed under GNU LGPLv3.0. If you use this code in any future publications, please cite the following publications for general purpose:
Han Wang, Linfeng Zhang, Jiequn Han, and Weinan E. “DeePMD-kit: A deep learning package for many-body potential energy representation and molecular dynamics.” Computer Physics Communications 228 (2018): 178-184.
Jinzhe Zeng, Duo Zhang, Denghui Lu, Pinghui Mo, Zeyu Li, Yixiao Chen, Marián Rynik, Li’ang Huang, Ziyao Li, Shaochen Shi, Yingze Wang, Haotian Ye, Ping Tuo, Jiabin Yang, Ye Ding, Yifan Li, Davide Tisi, Qiyu Zeng, Han Bao, Yu Xia, Jiameng Huang, Koki Muraoka, Yibo Wang, Junhan Chang, Fengbo Yuan, Sigbjørn Løland Bore, Chun Cai, Yinnian Lin, Bo Wang, Jiayan Xu, Jia-Xin Zhu, Chenxing Luo, Yuzhi Zhang, Rhys E. A. Goodall, Wenshuo Liang, Anurag Kumar Singh, Sikai Yao, Jingchao Zhang, Renata Wentzcovitch, Jiequn Han, Jie Liu, Weile Jia, Darrin M. York, Weinan E, Roberto Car, Linfeng Zhang, Han Wang. “DeePMD-kit v2: A software package for Deep Potential models.” J. Chem. Phys., 159, 054801 (2023).
Jinzhe Zeng, Duo Zhang, Anyang Peng, Xiangyu Zhang, Sensen He, Yan Wang, Xinzijian Liu, Hangrui Bi, Yifan Li, Chun Cai, Chengqian Zhang, Yiming Du, Jia-Xin Zhu, Pinghui Mo, Zhengtao Huang, Qiyu Zeng, Shaochen Shi, Xuejian Qin, Zhaoxi Yu, Chenxing Luo, Ye Ding, Yun-Pei Liu, Ruosong Shi, Zhenyu Wang, Sigbjørn Løland Bore, Junhan Chang, Zhe Deng, Zhaohan Ding, Siyuan Han, Wanrun Jiang, Guolin Ke, Zhaoqing Liu, Denghui Lu, Koki Muraoka, Hananeh Oliaei, Anurag Kumar Singh, Haohui Que, Weihong Xu, Zhangmancang Xu, Yong-Bin Zhuang, Jiayu Dai, Timothy J. Giese, Weile Jia, Ben Xu, Darrin M. York, Linfeng Zhang, Han Wang. “DeePMD-kit v3: A Multiple-Backend Framework for Machine Learning Potentials.” J. Chem. Theory Comput. 21 (2025): 4375-4385.
In addition, please follow this page to cite the methods you used.
Getting Started
Advanced
- 1. Backend
- 2. Installation
- 3. Data
- 4. Model
- 4.1. Overall
- 4.2. Descriptor
"se_e2_a" - 4.3. Descriptor
"se_e2_r" - 4.4. Descriptor
"se_e3" - 4.5. Descriptor
"se_atten" - 4.6. Descriptor DPA-2
- 4.7. Descriptor DPA3
- 4.8. Descriptor DPA4
- 4.8.1. Overview
- 4.8.2. Model scaffold
- 4.8.3. Descriptor construction
- 4.8.4. Angular representation
- 4.8.5. Radial basis and smooth cutoff
- 4.8.6. Attention and focus streams
- 4.8.7. Grid nonlinearities
- 4.8.8. Environment-seeded initial features
- 4.8.9. Zone bridging and ZBL
- 4.8.10. Fitting network
- 4.8.11. Configuration
- 4.8.12. Training modes
- 4.8.13. Spin
- 4.8.14. Performance and hardware recommendations
- 4.8.15. LoRA fine-tuning
- 4.8.16. Export
- 4.8.17. Data format
- 4.8.18. Limitations
- 4.8.19. Citation
- 4.9. Descriptor
"hybrid" - 4.10. Determine
sel - 4.11. Fit energy
- 4.12. Fit spin energy
- 4.13. Fit energy Hessian
- 4.14. Fit
tensorlikeDipoleandPolarizability - 4.15. Fit electronic density of states (DOS)
- 4.16. Fit other properties
- 4.17. Type embedding approach
- 4.18. Descriptor
"se_a_mask" - 4.19. Descriptor
"se_e3_tebd" - 4.20. Deep potential long-range (DPLR)
- 4.21. Deep Potential - Range Correction (DPRc)
- 4.22. Linear model
- 4.23. Interpolation or combination with a pairwise potential
- 4.24. Change the model output bias for trained model
- 4.25. Floating-point precision of the model
- 4.26. Use
dp showto show the model information - 4.27. Use
dp pretrainedto download built-in models
- 5. Training
- 6. Freeze and Compress
- 7. Test
- 8. Inference
- 9. Command line interface
- 10. Integrate with third-party packages
- 11. Agent Skills
- 12. Use NVNMD
- 13. Runtime environment variables
- 14. FAQs
- 14.1. How to tune Fitting/embedding-net size ?
- 14.2. How to control the parallelism of a job?
- 14.3. Do we need to set rcut < half boxsize?
- 14.4. How to set sel?
- 14.5. Installation
- 14.6. The temperature undulates violently during the early stages of MD
- 14.7. MD: cannot run LAMMPS after installing a new version of DeePMD-kit
- 14.8. Model compatibility
- 14.9. Why does a model have low precision?
Tutorial
Developer Guide
- Find DeePMD-kit C/C++ library from CMake
- Create a model in TensorFlow
- Create a model in other backends
- Atom Type Embedding
- Coding Conventions
- CI/CD
- Python API
- OP API
- op_module
AddFltNvnmd()AnnotatedAnyConvertForwardMap()CopyFltNvnmd()Descrpt()DescrptNorot()DescrptSeA()DescrptSeAEf()DescrptSeAEfPara()DescrptSeAEfVert()DescrptSeAMask()DescrptSeR()DotmulFltNvnmd()DprcPairwiseIdx()EwaldRecp()FltNvnmd()Gelu()GeluCustom()GeluGrad()GeluGradCustom()GeluGradGrad()GeluGradGradCustom()MapAparam()MapFltNvnmd()MatmulFitnetNvnmd()MatmulFlt2fixNvnmd()MatmulFltNvnmd()MulFltNvnmd()NeighborStat()PairTab()ParallelProdForceSeA()ProdEnvMatA()ProdEnvMatAMix()ProdEnvMatAMixNvnmdQuantize()ProdEnvMatANvnmdQuantize()ProdEnvMatR()ProdForce()ProdForceNorot()ProdForceSeA()ProdForceSeAMask()ProdForceSeR()ProdVirial()ProdVirialNorot()ProdVirialSeA()ProdVirialSeR()QuantizeNvnmd()SoftMinForce()SoftMinSwitch()SoftMinVirial()TabulateFusion()TabulateFusionGrad()TabulateFusionGradGrad()TabulateFusionSeA()TabulateFusionSeAGrad()TabulateFusionSeAGradGrad()TabulateFusionSeAtten()TabulateFusionSeAttenGrad()TabulateFusionSeAttenGradGrad()TabulateFusionSeR()TabulateFusionSeRGrad()TabulateFusionSeRGradGrad()TabulateFusionSeT()TabulateFusionSeTGrad()TabulateFusionSeTGradGrad()Tanh4FltNvnmd()UnaggregatedDy2Dx()UnaggregatedDy2DxS()UnaggregatedDyDx()UnaggregatedDyDxS()add_flt_nvnmd()convert_forward_map()copy_flt_nvnmd()descrpt()descrpt_norot()descrpt_se_a()descrpt_se_a_ef()descrpt_se_a_ef_para()descrpt_se_a_ef_vert()descrpt_se_a_mask()descrpt_se_r()dotmul_flt_nvnmd()dprc_pairwise_idx()ewald_recp()flt_nvnmd()gelu()gelu_custom()gelu_grad()gelu_grad_custom()gelu_grad_grad()gelu_grad_grad_custom()map_aparam()map_flt_nvnmd()matmul_fitnet_nvnmd()matmul_flt2fix_nvnmd()matmul_flt_nvnmd()mul_flt_nvnmd()neighbor_stat()pair_tab()parallel_prod_force_se_a()prod_env_mat_a()prod_env_mat_a_mix()prod_env_mat_a_mix_nvnmd_quantize()prod_env_mat_a_nvnmd_quantize()prod_env_mat_r()prod_force()prod_force_norot()prod_force_se_a()prod_force_se_a_mask()prod_force_se_r()prod_virial()prod_virial_norot()prod_virial_se_a()prod_virial_se_r()quantize_nvnmd()soft_min_force()soft_min_switch()soft_min_virial()tabulate_fusion()tabulate_fusion_grad()tabulate_fusion_grad_grad()tabulate_fusion_se_a()tabulate_fusion_se_a_grad()tabulate_fusion_se_a_grad_grad()tabulate_fusion_se_atten()tabulate_fusion_se_atten_grad()tabulate_fusion_se_atten_grad_grad()tabulate_fusion_se_r()tabulate_fusion_se_r_grad()tabulate_fusion_se_r_grad_grad()tabulate_fusion_se_t()tabulate_fusion_se_t_grad()tabulate_fusion_se_t_grad_grad()tanh4_flt_nvnmd()unaggregated_dy2_dx()unaggregated_dy2_dx_s()unaggregated_dy_dx()unaggregated_dy_dx_s()
- op_grads_module
AnnotatedAnyProdForceGrad()ProdForceSeAGrad()ProdForceSeAMaskGrad()ProdForceSeRGrad()ProdVirialGrad()ProdVirialSeAGrad()ProdVirialSeRGrad()SoftMinForceGrad()SoftMinVirialGrad()prod_force_grad()prod_force_se_a_grad()prod_force_se_a_mask_grad()prod_force_se_r_grad()prod_virial_grad()prod_virial_se_a_grad()prod_virial_se_r_grad()soft_min_force_grad()soft_min_virial_grad()
- op_module
- C++ API
- Class Hierarchy
- File Hierarchy
- Full API
- Namespaces
- Classes and Structs
- Enums
- Functions
- Function deepmd::convert_pbtxt_to_pb
- Function deepmd::get_backend
- Function deepmd::load_op_library
- Function deepmd::name_prefix
- Function deepmd::read_file_to_string
- Template Function deepmd::select_by_type
- Template Function deepmd::select_map(typename std::vector<VT>::iterator, const typename std::vector<VT>::const_iterator, const std::vector<int>&, const int&, const int&, const int&, const int&)
- Template Function deepmd::select_map_inv(typename std::vector<VT>::iterator, const typename std::vector<VT>::const_iterator, const std::vector<int>&, const int&)
- Template Function deepmd::select_real_atoms_coord
- Template Function deepmd::session_get_scalar
- Template Function deepmd::session_input_tensors(std::vector<std::pair<std::string, tensorflow::Tensor>>&, const std::vector<VALUETYPE>&, const int&, const std::vector<int>&, const std::vector<VALUETYPE>&, const double&, const std::vector<VALUETYPE>&, const std::vector<VALUETYPE>&, const deepmd::AtomMap&, const std::string, const bool)
- Template Function deepmd::session_input_tensors_mixed_type
- Typedefs
- C API
- Class Hierarchy
- File Hierarchy
- Full API
- Namespaces
- Classes and Structs
- Functions
- Specialized Template Function _DP_DeepPotCompute< double >
- Template Function _DP_DeepPotComputeMixedType
- Specialized Template Function _DP_DeepPotComputeMixedType< float >
- Specialized Template Function _DP_DeepPotComputeNList< double >
- Template Function _DP_DeepPotModelDeviCompute
- Specialized Template Function _DP_DeepPotModelDeviCompute< float >
- Specialized Template Function _DP_DeepPotModelDeviComputeNList< double >
- Template Function _DP_DeepSpinCompute
- Specialized Template Function _DP_DeepSpinCompute< float >
- Specialized Template Function _DP_DeepSpinComputeNList< double >
- Template Function _DP_DeepSpinModelDeviCompute
- Specialized Template Function _DP_DeepSpinModelDeviCompute< float >
- Specialized Template Function _DP_DeepSpinModelDeviComputeNList< double >
- Template Function _DP_DeepTensorCompute
- Specialized Template Function _DP_DeepTensorCompute< float >
- Specialized Template Function _DP_DeepTensorComputeNList< double >
- Template Function _DP_DeepTensorComputeTensor
- Specialized Template Function _DP_DeepTensorComputeTensor< float >
- Specialized Template Function _DP_DeepTensorComputeTensorNList< double >
- Template Function _DP_DipoleChargeModifierComputeNList
- Specialized Template Function _DP_DipoleChargeModifierComputeNList< float >
- Function _DP_Get_Energy_Pointer(double&, const int)
- Function deepmd::hpp::convert_pbtxt_to_pb
- Template Function deepmd::hpp::select_by_type
- Template Function deepmd::hpp::validate_charge_spin
- Function DP_DeepBaseModelCheckOK
- Function DP_DeepBaseModelDeviGetCutoff
- Function DP_DeepBaseModelDeviGetDimFParam
- Function DP_DeepBaseModelDeviGetNumbTypesSpin
- Function DP_DeepBaseModelDeviIsAParamNAll
- Function DP_DeepBaseModelGetDimAParam
- Function DP_DeepBaseModelGetNumbTypes
- Function DP_DeepBaseModelGetTypeMap
- Function DP_DeepBaseModelIsAParamNAll
- Function DP_DeepPotCompute
- Function DP_DeepPotCompute3
- Function DP_DeepPotComputef2
- Function DP_DeepPotComputeMixedType
- Function DP_DeepPotComputeNList
- Function DP_DeepPotComputeNList3
- Function DP_DeepPotComputeNListf2
- Function DP_DeepPotGetCutoff
- Function DP_DeepPotGetDimChgSpin
- Function DP_DeepPotGetNumbTypes
- Function DP_DeepPotGetTypeMap
- Function DP_DeepPotIsAParamNAll
- Function DP_DeepPotModelDeviCompute
- Function DP_DeepPotModelDeviCompute3
- Function DP_DeepPotModelDeviComputef2
- Function DP_DeepPotModelDeviComputeNList
- Function DP_DeepPotModelDeviComputeNList3
- Function DP_DeepPotModelDeviComputeNListf2
- Function DP_DeepPotModelDeviGetCutoff
- Function DP_DeepPotModelDeviGetDimChgSpin
- Function DP_DeepPotModelDeviGetNumbTypes
- Function DP_DeepPotModelDeviHasDefaultFParam
- Function DP_DeepSpinCheckOK
- Function DP_DeepSpinComputef2
- Function DP_DeepSpinComputeNListf2
- Function DP_DeepSpinGetDimAParam
- Function DP_DeepSpinGetNumbTypes
- Function DP_DeepSpinGetTypeMap
- Function DP_DeepSpinIsAParamNAll
- Function DP_DeepSpinModelDeviCompute2
- Function DP_DeepSpinModelDeviComputeNList2
- Function DP_DeepSpinModelDeviGetCutoff
- Function DP_DeepSpinModelDeviGetDimFParam
- Function DP_DeepSpinModelDeviGetNumbTypesSpin
- Function DP_DeepSpinModelDeviIsAParamNAll
- Function DP_DeepTensorCompute
- Function DP_DeepTensorComputeNList
- Function DP_DeepTensorComputeTensor
- Function DP_DeepTensorComputeTensorNList
- Function DP_DeepTensorGetCutoff
- Function DP_DeepTensorGetNumbTypes
- Function DP_DeepTensorGetSelTypes
- Function DP_DeleteChar
- Function DP_DeleteDeepBaseModelDevi
- Function DP_DeleteDeepPotModelDevi
- Function DP_DeleteDeepSpinModelDevi
- Function DP_DeleteDipoleChargeModifier
- Function DP_DipoleChargeModifierCheckOK
- Function DP_DipoleChargeModifierComputeNListf
- Function DP_DipoleChargeModifierGetNumbSelTypes
- Function DP_DipoleChargeModifierGetSelTypes
- Function DP_NewDeepPotModelDevi
- Function DP_NewDeepPotWithParam
- Function DP_NewDeepSpin
- Function DP_NewDeepSpinModelDeviWithParam
- Function DP_NewDeepTensor
- Function DP_NewDipoleChargeModifier
- Function DP_NewNlist
- Function DP_NlistCheckOK
- Function DP_NlistSetMask
- Function DP_ReadFileToChar
- Function DP_SelectByType
- Defines
- Typedefs
- Core API
- Class Hierarchy
- File Hierarchy
- Full API
- Namespaces
- Classes and Structs
- Struct deepmd_exception_oom
- Struct InputNlist
- Template Struct DescrptSeRGPUExecuteFunctor
- Template Struct GeluGradGPUExecuteFunctor
- Template Struct ProdForceSeAGPUExecuteFunctor
- Template Struct ProdVirialSeAGPUExecuteFunctor
- Template Struct TabulateCheckerGPUExecuteFunctor
- Template Struct TabulateFusionGradGPUExecuteFunctor
- Unions
- Functions
- Function build_nlist(std::vector<std::vector<int>>&, std::vector<std::vector<int>>&, const std::vector<double>&, const int&, const double&, const double&, const std::vector<int>&, const std::vector<int>&, const std::vector<int>&, const std::vector<int>&, const SimulationRegion<double>&, const std::vector<int>&)
- Function build_nlist(std::vector<std::vector<int>>&, std::vector<std::vector<int>>&, const std::vector<double>&, const std::vector<int>&, const std::vector<int>&, const double&, const double&, const std::vector<int>&, const SimulationRegion<double>&)
- Function compute_descriptor(std::vector<double>&, std::vector<double>&, std::vector<double>&, const std::vector<double>&, const int&, const std::vector<int>&, const SimulationRegion<double>&, const bool&, const int&, const std::vector<int>&, const std::vector<int>&, const std::vector<int>&, const std::vector<int>&, const int, const int, const int, const int)
- Function compute_descriptor_se_a_ef_para
- Function compute_descriptor_se_a_extf
- Function compute_dRdT_1
- Function copy_coord
- Template Function deepmd::build_nlist_gpu
- Function deepmd::convert_nlist
- Template Function deepmd::convert_to_inter_cpu
- Template Function deepmd::convert_to_phys_cpu
- Template Function deepmd::copy_coord_cpu
- Function deepmd::cos_switch(const double&, const double&, const double&)
- Template Function deepmd::cprod
- Template Function deepmd::delete_device_memory
- Template Function deepmd::dot2
- Template Function deepmd::dot4
- Function deepmd::DPGetDeviceCount
- Function deepmd::DPSetDevice
- Template Function deepmd::env_mat_a_nvnmd_quantize_cpu
- Template Function deepmd::env_mat_r_cpu
- Function deepmd::filter_ftype_gpu
- Template Function deepmd::format_nlist_cpu
- Template Function deepmd::gelu_cpu
- Template Function deepmd::gelu_grad_cpu
- Template Function deepmd::gelu_grad_grad_cpu
- Function deepmd::group_atoms_cpu
- Template Function deepmd::invsqrt
- Specialized Template Function deepmd::invsqrt< float >
- Template Function deepmd::malloc_device_memory(FPTYPE *&, const int)
- Template Function deepmd::malloc_device_memory_sync(FPTYPE *&, const std::vector<FPTYPE>&)
- Template Function deepmd::malloc_device_memory_sync(FPTYPE *&, std::vector<FPTYPE>&)
- Function deepmd::max_numneigh
- Template Function deepmd::memcpy_device_to_host(const FPTYPE *, FPTYPE *, const int)
- Template Function deepmd::memcpy_host_to_device(FPTYPE *, const FPTYPE *, const int)
- Template Function deepmd::memset_device_memory
- Template Function deepmd::normalize_coord_cpu
- Template Function deepmd::pair_tab_cpu
- Template Function deepmd::prod_env_mat_a_gpu
- Template Function deepmd::prod_env_mat_r_cpu
- Template Function deepmd::prod_force_a_cpu(FPTYPE *, const FPTYPE *, const FPTYPE *, const int *, const int, const int, const int, const int)
- Template Function deepmd::prod_force_a_gpu
- Template Function deepmd::prod_force_grad_a_gpu
- Template Function deepmd::prod_force_grad_r_gpu
- Template Function deepmd::prod_force_r_gpu
- Template Function deepmd::prod_virial_a_gpu
- Template Function deepmd::prod_virial_grad_a_gpu
- Template Function deepmd::prod_virial_grad_r_gpu
- Template Function deepmd::prod_virial_r_gpu
- Template Function deepmd::soft_min_switch_force_cpu
- Template Function deepmd::soft_min_switch_virial_cpu
- Function deepmd::spline3_switch
- Template Function deepmd::tabulate_fusion_se_a_cpu
- Template Function deepmd::tabulate_fusion_se_a_grad_cpu
- Template Function deepmd::tabulate_fusion_se_a_grad_grad_cpu
- Template Function deepmd::tabulate_fusion_se_r_cpu
- Template Function deepmd::tabulate_fusion_se_r_grad_cpu
- Template Function deepmd::tabulate_fusion_se_r_grad_grad_cpu
- Template Function deepmd::tabulate_fusion_se_t_cpu
- Template Function deepmd::tabulate_fusion_se_t_grad_cpu
- Template Function deepmd::tabulate_fusion_se_t_grad_grad_cpu
- Template Function deepmd::tabulate_fusion_se_t_tebd_cpu
- Template Function deepmd::tabulate_fusion_se_t_tebd_grad_cpu
- Template Function deepmd::tabulate_fusion_se_t_tebd_grad_grad_cpu
- Template Function deepmd::test_encoding_decoding_nbor_info_gpu
- Function deepmd::use_nei_info_gpu
- Template Function deepmd::volume_cpu
- Template Function dotmul_flt_nvnmd
- Function DPAssert(hipError_t, const char *, int, bool)
- Function env_mat_r
- Template Function find_max_expo(int64_t&, T *, int64_t, int64_t)
- Function format_nlist_i_fill_a
- Function nborAssert(cudaError_t, const char *, int, bool)
- Function omp_get_num_threads
- Template Function split_flt
- Variables
- Defines
- Typedefs
Project Details