DeePMD-kit
关于 DeePMD-kit
DeePMD-kit 是一个用 Python/C++ 编写的软件包,旨在最大限度地减少构建基于深度学习的原子间势能和力场模型以及执行分子动力学(MD)所需的努力。这为应对分子模拟中精度与效率之间的两难困境带来了新的希望。DeePMD-kit 的应用范围从有限分子到扩展体系,从金属体系到化学键合体系。
如需更多信息,请参阅文档。
主要特性
- 与多个后端接口对接,包括 TensorFlow、PyTorch、JAX 和 Paddle,这些是最流行的深度学习框架,使训练过程高度自动化且高效。
- 与高性能经典 MD 和量子(路径积分)MD 软件包接口对接,包括 LAMMPS、i-PI、AMBER、CP2K、GROMACS、OpenMM 和 ABACUS。
- 实现了 Deep Potential 系列模型,这些模型已成功应用于有限和扩展系统,包括有机分子、金属、半导体、绝缘体等。
- 实现了 MPI 和 GPU 支持,使其在高性能并行和分布式计算中效率极高。
- 高度模块化,易于适配基于深度学习的势能模型的不同描述符。
- 通过 DPA-ADAPT 将预训练的 DPA 模型适配到下游原子性质预测任务,这是一个新的 Python API 和 CLI,支持冻结描述符的 scikit-learn 头、冻结性质头训练、完全端到端微调以及带有辅助力场任务的多任务微调。DPA-ADAPT 在
deepmd/npy系统上进行训练,并提供通过 dpdata 处理的 SMILES 表格以及结构或计算文件的转换管道。请参阅 DPA-ADAPT 指南 和受支持的 输入格式。
许可证与致谢
DeePMD-kit 项目根据 GNU LGPLv3.0 授权。 如果您在任何未来的出版物中使用此代码,请引用以下通用用途出版物:
- 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 (2023): 054801.
- 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.
此外,请遵循 the bib file 来引用你所使用的方法。
主要版本亮点
初始版本
Deep Potential 的目标是运用深度学习技术,实现一个通用、精确、计算高效且可扩展的原子间势能模型。其关键组件在于通过为每个原子分配局部参考系和局部环境,来尊重势能模型的广延性和对称不变性。每个环境包含有限数量的原子,其局部坐标以对称保持的方式排列。随后,这些局部坐标通过一个子网络被转换为所谓的 atomic energy。对所有 atomic energy 求和,即得到系统的势能。
最初的验证性概念在 Deep Potential 论文中提出,该论文采用了一种专门设计用于仅使用势能训练神经网络模型的方法。对于典型的 ab initio 分子动力学 (AIMD) 数据集,这不足以重现轨迹。Deep Potential Molecular Dynamics (DeePMD) 模型克服了这一局限性。此外,得益于引入了一组灵活的损失函数,DeePMD 中的学习过程相比 Deep Potential 方法有了显著改进。以这种方式构建的 NN 势能够准确重现 AIMD 轨迹,无论是经典还是量子(路径积分)轨迹,在扩展和有限系统中均如此,其计算成本随系统规模线性增长,且始终比等效的 AIMD 模拟低几个数量级。
尽管效率极高,但原始的 Deep Potential 模型在引入不连续性的代价下,满足了势能模型的广延性和对称不变性。这对来自正则采样的轨迹影响微乎其微,但对于动力学和力学性质的计算可能并不足够。这些观点促使我们开发了 Deep Potential-Smooth Edition (DeepPot-SE) 模型,该模型用平滑且自适应的嵌入网络取代了非平滑的局部坐标系。DeepPot-SE 在建模物理学、化学、生物学和材料科学领域中感兴趣的多种系统方面表现出强大的能力。
除了构建势能模型外,DeePMD-kit 还可用于构建粗粒化模型。在这些模型中,我们想要参数化的量是粗粒化粒子的自由能,即粗粒化势。有关更多细节,请参阅 DeePCG 论文。
v1
- 代码重构,使其高度模块化。
- 描述符的 GPU 支持。
v2
- 模型压缩。将模型推理效率提升 4-15 倍。
- 新描述符。包括
se_e2_r、se_e3和se_atten(DPA-1)。 - 描述符混合。由多个描述符拼接构建的混合描述符。
- 原子类型嵌入。启用原子类型嵌入以降低训练复杂度并提升性能。
- 偶极矩(向量)和极化率(矩阵)的训练与推理。
- 训练集与验证集的划分。
- GPU 上的优化训练,包括 CUDA 和 ROCm。
- 非冯·诺依曼架构。
- 用于与第三方包交互的 C API。
详见 我们的 v2 论文,其中包含截至 v2.2.3 的所有功能详情。
v3
- 支持多种后端。新增 PyTorch 和 JAX 后端。
- DPA2 和 DPA3 模型。
- 用于外部模型的插件机制。
有关 v3.0 之前所有功能的详细信息,请参阅我们的 v3 论文。
安装和使用 DeePMD-kit
只需复制粘贴,1 秒搞定,然后让它运行。
curl -fsSL https://dp1s.deepmodeling.com | bash
请阅读在线文档以了解详细信息和替代安装方法。
然后,继续阅读以了解 DeePMD-kit 用法的简要概述。您可以从第一步开始:
dp
代码结构
代码组织如下:
examples:示例。deepmd:DeePMD-kit Python 模块。dpa_adapt:用于适配预训练 DPA 模型的 DPA-ADAPT 包;请参阅指南和输入格式。source/lib:核心库的源代码。source/op:算子(OP)实现。source/api_cc:DeePMD-kit C++ API 的源代码。source/api_c:C API 的源代码。source/nodejs:Node.js API 的源代码。source/ipi:i-PI 客户端的源代码。source/lmp:LAMMPS 模块的源代码。
贡献
请参阅DeePMD-kit 贡献指南成为贡献者!🤓