DeePMD-kit
关于 DeePMD-kit
DeePMD-kit 是一个使用 Python/C++ 编写的软件包,旨在最大限度地减少构建基于深度学习的原子间势能和力场模型及进行分子动力学(MD)所需的工作量。这为解决分子模拟中的精度与效率矛盾带来了新的希望。DeePMD-kit 的应用范围从有限分子到扩展系统,从金属系统到化学键合系统。
更多信息,请查看文档。
主要特性
- 与 TensorFlow 接口对接,使训练过程高度自动化和高效。
- 与高性能经典分子动力学和量子(路径积分)分子动力学软件包对接,包括 LAMMPS、i-PI、AMBER、CP2K、GROMACS、OpenMM 和 ABUCUS。
- 实现 Deep Potential 系列模型,这些模型已成功应用于有限和扩展系统,包括有机分子、金属、半导体、绝缘体等。
- 实现 MPI 和 GPU 支持,高度高效的高性能并行和分布式计算。
- 高度模块化,易于适应不同的深度学习势能模型描述符。
许可和贡献
DeePMD-kit 项目在 GNU LGPLv3.0 许可下发布。 如果您在未来的出版物中使用此代码,请引用以下出版物以表明对本项目的贡献:
- Han Wang, Linfeng Zhang, Jiequn Han, 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.
此外,请参考 bib 文件 引用您所使用的方法。
主要版本亮点
初始版本
Deep Potential 的目标是利用深度学习技术实现一个通用、准确、计算效率高且可扩展的原子间势能模型。关键组件是通过为每个原子分配一个局部参考框架和局部环境来尊重势能模型的扩展性和对称性不变性。每个环境包含有限数量的原子,这些原子的局部坐标以对称保持的方式排列。然后通过子网络将这些局部坐标转换为所谓的原子能量。将所有的原子能量相加,即得到系统的势能。
概念验证的初步结果在 Deep Potential 文章中进行了验证,该方法仅利用势能来训练神经网络模型。对于典型的 ab initio 分子动力学(AIMD)数据集,这种方法不足以重现轨迹。Deep Potential 分子动力学(DeePMD)模型克服了这一局限。此外,由于引入了灵活的一类损失函数,DeePMD 的学习过程比 Deep Potential 方法显著改进。通过这种方式构建的神经网络势能准确地重现了在有限和扩展系统中的 AIMD 轨迹,成本随系统规模线性扩展,总是比等效的 AIMD 模拟低几个数量级。
尽管原始的 Deep Potential 模型非常高效,为了满足势能模型的扩展性和对称性不变性,引入了模型的不连续性。这对从典型取样角度看轨迹影响微不足道,但可能不足以计算动态和机械特性。这些问题促使我们开发了 Deep Potential-Smooth Edition(DeepPot-SE)模型,该模型用平滑且自适应的嵌入网络代替了非平滑的局部框架。DeepPot-SE 在物理、化学、生物学和材料科学领域中对多种系统的建模展示了极大的能力。
除了建立势能模型外,DeePMD-kit 还可用于建立粗粒化模型。在这些模型中,我们要参数化的量是粗粒化粒子的自由能或粗粒化势能。有关更多详细信息,请参阅 DeePCG 文章。
版本 v1
- 重构代码,使其高度模块化。
- 支持 descriptor 的 GPU 计算。
版本 v2
- 模型压缩。加速模型推理效率 4-15 倍。
- 新描述符。包括
se_e2_r
,se_e3
和se_atten
(DPA-1)。 - 描述符的混合。由几个描述符连接而成的混合描述符。
- 原子类型嵌入。使原子类型嵌入以减少训练复杂性并改进性能。
- 偶极子(向量)和极化率(矩阵)的训练和推理。
- 训练和验证数据集的分离。
- 优化 GPU 上的训练,包括 CUDA 和 ROCm。
- 非冯·诺依曼。
- 提供 C API 接口以对接第三方包。
有关 v2.2.3 之前所有特性的详细信息,请参阅 我们的最新文章。
安装和使用 DeePMD-kit
有关如何安装和使用 DeePMD-kit,请阅读在线文档。
代码结构
代码结构如下:
examples
: 示例。deepmd
: DeePMD-kit Python 模块。source/lib
: 核心库代码。source/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 模块代码。source/gmx
: Gromacs 插件代码。
贡献
参见 DeePMD-kit 贡献指南 来成为贡献者! 🤓