DeePMD-kit 是深度学习分子动力学(Deep Potential Molecular Dynamics,DeePMD)方法的开源实现,由王涵团队与 DeepModeling 社区共同开发。它用神经网络拟合第一性原理(DFT)计算得到的体系能量与原子力,得到一个可在分子动力学模拟中直接调用的「深度势能模型」:精度接近 DFT,速度接近经典力场,可将可模拟体系从数百原子、百皮秒量级扩展到数十万原子、纳秒量级。工具覆盖完整链路:dpdata 数据转换 → dp train 训练 → dp freeze 冻结 → dp compress 压缩 → LAMMPS/GROMACS/OpenMM 等引擎产线模拟,并配合 model deviation 与 DP-GEN 实现多模型误差估计与主动学习。本文从安装、训练、部署到选型逐一给出可执行的操作指南,所有命令与配置基于官方文档整理。

岗位关联

掌握 DeePMD-kit,你就能把量子化学精度接入大规模分子动力学产线,这是 AI for Science 方向计算材料、电池与药物研发岗位的核心技能之一。

目录
  1. 为什么需要 DeePMD-kit:第一性原理太慢、经典力场不准 → 神经网络势
  2. 安装与环境配置:4 步就绪
  3. 快速上手:10 分钟跑通「数据→训练→冻结→MD」
  4. 核心能力详解:5 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
深度学习分子动力学模拟框架(开源)
开发商
DeepModeling 开源社区(王涵团队发起)
开源协议
LGPL-3.0(可商用)
GitHub Stars
主要语言
C++ / Python
当前版本
v3.0.0(2025 年发布,PyTorch 后端)
安装方式
pip install deepmd-kit / conda
上手难度
★★★☆☆(中等)
适合人群
计算材料/化学工程师、AI for Science 工程师
同类工具
MACE、NequIP、SchNetPack
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 DeePMD-kit:第一性原理太慢、经典力场不准 → 神经网络势

第一性原理分子动力学(AIMD)每一步都要重复求解电子结构方程,DFT 计算 100–1000 原子体系单步耗时在秒到分钟级别,一天只能推进几皮秒,而研究相变、离子输运、化学反应通常需要数百皮秒以上的轨迹,算力成本极高。经典力场(如 LJ、EAM、CHARMM)虽然快,但把原子间相互作用固定为经验函数形式,无法描述化学键断裂、极化变化、电荷转移等过程,体系一旦发生反应或相变就失效。

DeePMD 用神经网络把「原子局部环境 → 原子能量/力」的映射学习出来。训练数据来自 DFT,因此精度由 DFT 决定;推理只是一串矩阵乘法,速度与经典力场同量级,在 GPU 上可模拟数十万原子达到纳秒级,比 AIMD 快约三个数量级。神经网络势天然可微,能同时输出能量、力与应力,满足 NPT、NVE 等系综需求。

与 MACE 等学术型 Python 势能工具相比,DeePMD-kit 更像一条「生产管线」:自带数据转换、训练、冻结、压缩与 LAMMPS/GROMACS/OpenMM/ABACUS 多引擎接口,二十分钟可以从零跑通全流程;代价是底层后端切换(v2 用 TensorFlow、v3 用 PyTorch)会带来版本迁移成本。

安装与环境配置:4 步就绪

1. 创建 conda 环境。DeepModeling 官方 conda 频道提供 CPU/GPU 预编译包,GPU 版使用 https://conda.deepmodeling.com 频道,CPU 版使用 .org 频道。GPU 机器请先确认驱动对应的 CUDA 版本。

2. 安装 LAMMPS 与 dpdata。官方频道提供内置 pair_style deepmd 的预编译 LAMMPS;dpdata 用于把 DFT 输出转换为训练数据。v3 走 pip 路线时先装好匹配 CUDA 的 PyTorch。

3. 验证安装。dp --version 能输出版本号即为成功;dp train -h 可查看训练命令帮助。GPU 可用性可用 nvidia-smi 确认。

4. 项目规划。训练需要的数据是「构型 + 对应的 DFT 能量与原子力」,可来自 VASP、ABACUS、QE、CP2K 等,也可直接用社区公开数据集。

bash8 行
# conda 安装(推荐,官方频道预编译)conda create -n deepmd deepmd-kit --channel https://conda.deepmodeling.orgconda activate deepmd# 安装内置 pair_style deepmd 的 LAMMPS 与数据转换工具conda install lammps --channel https://conda.deepmodeling.orgpip install dpdata# 验证dp --version

快速上手:10 分钟跑通「数据→训练→冻结→MD」

最小可用流程的思路是:把一批带 DFT 能量/力的构型转成 DeepMD 数据格式,写一个 input.json 描述神经网络结构,训练后用 dp freeze 冻结成推理图模型 graph.pb,最后在 LAMMPS 中加载它跑分子动力学。以下以 VASP 输出(OUTCAR)为例:

1. 数据准备。用 dpdata 读取 OUTCAR,随机划分训练集与验证集,输出为 data/train、data/valid 两个 npy 目录。数据量建议至少数百条构型(水体系官方示例常用 5000+ 帧)。

2. 写 input.json。核心是 model 部分:type_map 列出元素(顺序即元素类型编号),descriptor 用 se_e2_a 描述符(把每个原子的近邻环境编码为网络输入),sel 按元素顺序给出截止半径内近邻原子数上限,fitting_net 是拟合原子能量的神经网络。

3. 训练。dp train input.json,日志写入当前目录 log 下。能量/力的损失权重通过 loss 控制:start_pref_f 取 1000、limit_pref_f 取 1,表示训练初期重点拟合力。

4. 冻结与验证。dp freeze -o graph.pb 输出推理图;dp test 在验证集上输出能量/力 RMSE(均方根误差)。水体系典型 f_rmse 在 0.1 eV/Å 量级。

5. 压缩(可选)。dp compress input.json 压缩嵌入网络,大体系推理提速明显,精度损失通常很小。

6. 跑 MD。LAMMPS 中写 pair_style deepmd graph.pb 即可。pair_coeff 第二行的作用是把 LAMMPS 原子类型映射到 type_map 中的元素。

进阶技巧:用不同随机种子训练 3–4 个模型,dp test -m graph.0.pb graph.1.pb graph.2.pb ... 计算 model deviation(多个模型预测力的标准差),这是官方推荐的误差估计手段;超大体系可改用 se_atten 注意力描述符,训练成本可控且长程精度更好。

python5 行
# 数据转换:用 dpdata 将 VASP 的 OUTCAR 转为 DeePMD 格式import dpdata, numpy as npsys = dpdata.LabeledSystem("OUTCAR", fmt="vasp/outcar")idx = np.random.choice(sys.get_nframes(), 6000, replace=False)sys.sub_system(idx).to_deepmd_npy("data/train")
json32 行
{  "model": {    "type_map": ["H", "O"],    "descriptor": {      "type": "se_e2_a",      "sel": [6, 12],      "rcut": 6.0,      "rcut_smth": 0.5    },    "fitting_net": {      "neuron": [240, 240, 240]    }  },  "learning_rate": {    "type": "exp",    "decay_steps": 5000,    "value": 0.001  },  "loss": {    "type": "ener",    "start_pref_e": 0.02,    "limit_pref_e": 1,    "start_pref_f": 1000,    "limit_pref_f": 1  },  "training": {    "training_data": { "systems": ["data/train"] },    "validation_data": { "systems": ["data/valid"] },    "numb_steps": 100000,    "batch_size": 4  }}
bash5 行
# 训练 → 冻结 → 压缩 → 验证dp train input.jsondp freeze -o graph.pbdp compress input.jsondp test -m graph.pb -s data/valid -n 100   # 输出 e_rmse / f_rmse
lammps9 行
units           metalatom_style      atomicboundary        p p pread_data       water.lmppair_style      deepmd graph.pbpair_coeff      * * graph.pb H Otimestep        0.0005fix             1 all nvt temp 300 300 0.1run             10000

核心能力详解:5 大支柱

支柱一·端到端训练管线。从 DFT 原始输出(VASP、ABACUS、QE、CP2K、Gaussian 等 50+ 格式)到可部署图模型,官方工具链全部打通:dpdata 负责格式转换与数据划分,dp train 支持训练/验证集分离、学习率衰减、随机种子复现,dp freeze 把 TensorFlow/PyTorch 训练产物冻结为单一 graph.pb,dp compress 再做推理优化。单一 input.json 控制全部超参数,便于版本管理。

支柱二·描述符与拟合网络。描述符(descriptor)把原子局部环境编码为神经网络输入特征。se_e2_a 是两体嵌入平滑描述符,是默认与最常用的选择;se_e3 支持三体环境;se_atten 引入注意力机制,适合大体系与长程相互作用;hybrid 可混合多种描述符。拟合网络(fitting_net)除能量(可同时输出力与应力)外,还支持偶极矩、极化率等性质,可用于光谱性质预测。

支柱三·多引擎生产接口。同一份 graph.pb 可直接被 LAMMPS(pair_style deepmd)、GROMACS、OpenMM、ABACUS、ASE 调用,无需改模型、无需导出其他格式。LAMMPS 配合内置 pair_style 即可跑 NVT/NPT/NVE,该接口由官方随 LAMMPS 发布维护。

支柱四·不确定度与主动学习。model deviation 用多个独立训练模型对同一构型预测力的标准差来量化「模型有多不确定」。当偏差超过阈值时说明构型超出训练分布,需补充 DFT 数据。DP-GEN 把「采样 → 标注 → 训练」自动化,可在无人干预下迭代构建高可靠势能模型,这是 DeePMD 方法在工业落地中最受认可的部分。

支柱五·v3 的 PyTorch 后端与 DP Compiler。v3 将训练后端从 TensorFlow 切换为 PyTorch,训练 API 与分布式扩展能力提升;DP Compiler 可把冻结模型编译为独立 C++ 代码,部署时不再依赖任何深度学习框架运行时,适合嵌入大规模产线。

生产部署与监控:从上线到运维

LAMMPS 产线部署。最直接的部署方式是 conda 安装官方频道预编译 LAMMPS(内置 pair_style deepmd),在生产机上执行 dp test -m graph.pb -s 验证集 -n 100 复核模型精度,确认 f_rmse 达标后即可接入批量 MD 作业。大体系建议先 dp compress,再把压缩模型路径写入 LAMMPS 输入。多 GPU 可并行跑多个副本或分区块采样,注意 LAMMPS 的 MPI 划分与 deepmd 的 GPU 卡绑定(如 CUDA_VISIBLE_DEVICES)。

编译接入部署。v3 的 DP Compiler 面向高吞吐场景:把训练好的模型编译成 C++ 源码,与 LAMMPS 或自研模拟器静态链接,去掉 Python 与 PyTorch 运行时,单机推理开销与启动时间显著下降,适合大规模参数扫描与高通量筛选作业。

可观测性。训练阶段盯 dp test 输出的 e_rmse/f_rmse,而非只盯训练 loss;运行阶段用 2–4 个独立模型对轨迹定期计算 model deviation,max_devi_f 超过预设阈值(通常在 0.1–0.3 eV/Å 量级)时标记构型并触发 DFT 补算。DP-GEN 流水线可将这一闭环自动化,并记录每轮数据分布变化,形成势模型的可追溯版本记录。

<p class="para-label">避坑清单:</p>

<ul class="dash-list"><li>外推风险:DP 是插值模型,训练数据未覆盖的化学环境会给出无物理意义结果,务必用多模型 model deviation 监控运行轨迹。</li><li>版本与依赖:v2 基于 TensorFlow 2、v3 基于 PyTorch,GPU 安装必须匹配 CUDA 版本;v3 对 input.json 部分字段有调整,升级后先做回归测试。</li><li>sel 参数:descriptor 的 sel 是近邻原子数上限,取得小于实际配位数会漏邻居,导致力预测错误,按体系配位数合理配置并用 dp test 复核。</li><li>损失权重:start_pref_f 初值 1000 是官方默认,随意调小会导致力拟合不足,MD 轨迹在几十步内发散。</li></ul>

维度DeePMD-kitMACENequIPSchNetPack
定位生产级 DP 势训练与 MD 产线集成等变图神经网络势(前沿精度)等变消息传递神经势通用 ML 势 PyTorch 工具包
训练后端v3 为 PyTorch(v2 为 TF2)PyTorchPyTorchPyTorch
模型架构se_e2_a / se_atten 嵌入描述符MACE 等变消息传递E3 等变卷积连续滤波卷积
数据效率大样本稳健,工业验证多小样本表现突出小样本表现突出中等
MD 集成LAMMPS/GROMACS/OpenMM/ABACUS/ASELAMMPS/ASEASE 为主ASE/OpenMM
生产部署freeze/compress 图模型;v3 DP Compiler需 PyTorch 运行时需 PyTorch 运行时需 PyTorch 运行时
LicenseLGPL-3.0MITMITMIT
适合谁材料/化学生产团队、MD 产线小数据高精度科研团队方法学研究快速原型与教学

选型建议:需要跑大规模产线 MD、要求 LAMMPS 无缝衔接、希望一条命令完成冻结与压缩部署,选 DeePMD-kit;小数据集上追求精度上限、做方法学研究,优先试 MACE 或 NequIP;想快速做势函数原型并复用通用 PyTorch 生态,选 SchNetPack。

版本迭代

DeePMD-kit 从 2017 年发布以来经历了三个主要阶段——v0/v1 确立「数据→训练→冻结→LAMMPS」标准工作流;v2 重构后端为 TensorFlow 2,补齐注意力描述符、偶极/极化率拟合与 GROMACS/OpenMM 接口;v3 以 PyTorch 重写训练后端并引入 DP Compiler 编译部署。以下版本与日期按官方 Release 记录整理(截至训练数据,可能已有更新版本)。

版本时间变化提升
v1.0.02020首个稳定版确立 dp train/freeze/test 命令与 LAMMPS 接口标准流程,软件论文发表于 Comput. Phys. Commun.
v2.0.02021后端迁移至 TensorFlow 2训练/推理管线重构,新增 se_atten 注意力描述符,支持偶极矩、极化率拟合
v2.2.02023效率与生态扩展引入 type embedding 与混合描述符,新增 GROMACS/OpenMM/ASE 接口,混合精度支持
v2.2.92024稳定维护版数值稳定性修复、CUDA 兼容与打包更新,大量生产环境沿用此线
v3.0.02025PyTorch 后端重构训练后端由 TF 切换为 PyTorch,新增 DP Compiler 编译部署,分布式训练能力提升
结论

该领域没有类似 MMLU 的公开榜单,版本间的核心差异在工程架构而非精度基准——官方论文与文档公布的典型水平是 DP 模型相对 DFT 的能量 RMSE 约 1 meV/atom、原子力约 0.1 eV/Å 量级(如水的 DPMD 模型,Phys. Rev. Lett. 120, 143001 (2018)),这一精度量级在 v2→v3 中保持稳定。选型建议:新项目直接用 v3 起步;已有成熟 v2.2.x 生产链路的团队不必急于迁移,待回归测试通过后再升级。

AI 应用场景

电池材料离子输运模拟

阶段:势能面学习 / 材料模拟

解决的问题:锂离子在固态电解质中的迁移需要纳秒级轨迹与 DFT 级精度,AIMD 一步 1–2 分钟、只能跑几百皮秒,无法统计离子扩散系数;经典力场又无法刻画 Li+ 迁移中的极化效应。

具体案例:对石榴石型电解质(如 Li7La3Zr2O12)的 DFT 数据进行 DP 训练后,在 LAMMPS 中跑 NVT 轨迹计算 Li+ 均方位移与电导率,模拟规模从 AIMD 的数百原子/百皮秒提升至数万原子/纳秒,时间成本下降约三个数量级,电导率预测与实验同量级。

含能材料分解与催化反应机理模拟

阶段:反应动力学 / 断键成键建模

解决的问题:高能材料热分解涉及化学键断裂,经典力场无法描述反应路径;DFT-MD 又因高温、大体系而算不动。

具体案例:对炸药分子及其分解产物的 DFT 反应轨迹构建 DP 势,在高温 NVE 下模拟毫秒?—实际为纳秒尺度历程?—的分解路径,可统计首键断裂时间与产物分布,反应势垒误差控制在几十 meV 量级,支撑配方筛选,单条轨迹成本仅为 DFT-MD 的千分之一。

主动学习自动化构建可迁移势(DP-GEN)

阶段:主动学习 / 数据集迭代

解决的问题:人工挑选训练数据容易漏掉相空间的高风险区域,导致势模型在界面、缺陷等关键环境失效。

具体案例:DP-GEN 自动循环执行「分子动力学采样 → 多模型 model deviation 筛选 → DFT 补标 → 重训练」,把原先工程师数周的势构建迭代压缩到小时级;该方法已用于高熵合金、氧化物等多组元体系的势构建,产出模型的适用范围(化学环境覆盖)显著大于人工选样。

常见误区

误区我手里有几千条 DFT 构型,全部丢进去训练,模型一定更准。

正解覆盖度比数量更重要。DP 是插值模型,若大部分数据来自相近的化学环境,冗余样本边际收益很低;而训练数据未覆盖的区域(如新的键长、高价态、断键构型)仍会预测失真。官方推荐配合 model deviation 检查数据空缺,用 DP-GEN 主动采样补充「模型最不确定」的构型,性价比远高于盲目加数据。

为何常见:直观上数据越多越好是机器学习的一般直觉,但分子动力学对「分布外」极为敏感,人们容易忽略势能面的高维稀疏性。

误区只要把势训练好,不同温度、压强、组分都能直接拿来算。

正解神经网络势没有物理约束,超出训练数据分布后会给出无物理意义的结果。官方工作流要求用多个独立模型的 model deviation 监控:当 max_devi_f 超过阈值(通常在 0.1–0.3 eV/Å 量级)时,说明当前构型超出势的适用域,需要补充 DFT 数据重新训练。迁移到新工况前,必须在目标状态附近采样验证。

为何常见:经典力场具有解析形式、可推测外推行为,而神经网络势的「记忆区间」不直观,新手容易把拟合能力当作泛化能力。

误区v2 写的 input.json 和 dp 命令,装好 v3 后原样照跑就行。

正解v3 将训练后端从 TensorFlow 切换为 PyTorch,部分配置字段、输出日志格式与命令行为有调整,属于后端级重构而非小版本延续。官方提供升级说明,但本质上是需要回归测试的迁移:升级后先在测试集上对比 v2/v3 的 e_rmse、f_rmse 与 MD 轨迹一致性,再切换生产任务。

为何常见:版本号「3.0」容易让人以为是 2.x 的延续,而包名相同(deepmd-kit)也掩盖了底层依赖差异。

误区训练损失降到很小,模型一定能复现 DFT 的动力学行为。

正解训练 loss 是能量、力损失的加权平均,权重由 start_pref 控制;loss 低只代表在训练集上拟合好,不能代表长程动力学稳定与分布外可靠。官方实践是先 dp test 看验证集 f_rmse(通常应在 0.1 eV/Å 量级,视体系而定),再跑 100 ps 以上 MD 检查能量漂移与构型合理性,最后用 model deviation 评估适用边界。

为何常见:深度学习中 loss 是唯一优化目标,但在势函数场景下「拟合误差小」与「动力学可迁移」之间还有很长的验证距离。

面试题

Q1. 训练 DeePMD-kit 势能模型时,标准配置文件通常命名为什么?

单选题 · easy

  • A.input.json← 正确答案
  • B.config.yaml
  • C.settings.ini
  • D.setup.toml

答案:A。DeePMD-kit 所有官方示例与文档均以 input.json 为训练配置文件,包含 model、learning_rate、loss、training 四大部分;修改后运行 dp train input.json 启动训练。其他文件名无法被默认命令识别。

Q2. 训练完成后通过 dp freeze 得到的部署模型文件是什么?

单选题 · easy

  • A.graph.pb← 正确答案
  • B.best.pth
  • C.frozen.ckpt
  • D.model.h5

答案:A。dp freeze 将训练好的权重打包为推理图模型 graph.pb(默认输出名),它是后续 LAMMPS pair_style deepmd、dp test、dp compress 的统一输入文件;best.pth 等是其他框架习惯的命名。

Q3. 以下哪些软件可以直接调用 DeePMD 训练好的势模型进行模拟?

多选题 · mid

  • A.LAMMPS← 正确答案
  • B.GROMACS← 正确答案
  • C.ABACUS← 正确答案
  • D.VMD

答案:ABC。LAMMPS 通过 pair_style deepmd 直接加载 graph.pb;GROMACS、ABACUS 均提供 DeePMD 接口;VMD 是轨迹可视化与渲染工具,不执行分子动力学模拟。

Q4. DeePMD-kit v3 相比 v2 最核心的技术变化是什么?

单选题 · mid

  • A.训练后端由 TensorFlow 切换为 PyTorch← 正确答案
  • B.取消了对 LAMMPS 的接口支持
  • C.彻底移除了能量与力的训练功能
  • D.改用 Fortran 语言重写核心计算

答案:A。v3 的核心变化是用 PyTorch 重写训练后端,并推出 DP Compiler 编译部署能力;LAMMPS 接口与能量/力训练能力均保留。B、C、D 与官方发布说明相反,均不成立。

Q5. 下列哪些性质可以通过 DeePMD-kit 的 fitting_net 进行拟合?

多选题 · mid

  • A.体系能量(ener)← 正确答案
  • B.偶极矩(dipole)← 正确答案
  • C.极化率(polar)← 正确答案
  • D.电子波函数相因子

答案:ABC。官方 fitting_net 支持能量(同时输出原子力与应力)、偶极矩、极化率等可观测性质;波函数相因子不在 DeepMD 势函数的输出范围内。

Q6. 判断训练好的 DP 模型对某个新构型的预测是否可信(是否处于适用域),官方推荐的做法是?

单选题 · hard

  • A.比较多个独立模型的 model deviation← 正确答案
  • B.观察训练 loss 是否降到足够小
  • C.增大 rcut 之后重新做预测
  • D.降低体系温度再试算一次

答案:A。单个模型无法给出不确定度,model deviation(多个独立模型预测力的标准差)是官方主动学习流程的核心判据;偏差超过阈值即认为构型超出训练分布。loss 只反映训练集拟合,不能用于判断新构型的可信度。

Q7. input.json 中 descriptor 的 "sel" 取 [6, 12] 表示什么?

单选题 · hard

  • A.H、O 两种元素截止半径内的最大近邻原子数← 正确答案
  • B.嵌入网络与拟合网络的隐藏层宽度
  • C.训练集与验证集的构型数量
  • D.rcut 与 rcut_smth 之间的插值点数

答案:A。sel 为按 type_map 元素顺序排列的近邻原子数上限列表,[6, 12] 对应 H 最多取 6 个近邻、O 最多 12 个。设置小于实际配位数会截断邻居导致力预测错误,应结合体系配位数确定。

Q8. 关于 dp compress 压缩模型,下列说法正确的是?

多选题 · mid

  • A.可降低模型推理开销← 正确答案
  • B.精度损失通常很小← 正确答案
  • C.只在 v2 版本中可用
  • D.对大体系 MD 提速明显← 正确答案

答案:ABD。dp compress 通过精简嵌入网络参数减少推理计算量,压缩后精度损失通常很小,大体系单步 MD 提速明显;v3 同样支持压缩能力,「只在 v2 可用」表述错误。

Q9. dpdata 包在 DeePMD 工作流中的主要作用是?

单选题 · hard

  • A.将 DFT 计算输出转为 DeePMD 数据← 正确答案
  • B.负责深度势模型的训练
  • C.生成 MD 轨迹文件
  • D.可视化原子结构文件

答案:A。dpdata 负责把 VASP、ABACUS、QE、Gaussian 等 50+ 种第一性原理输出格式统一转换为 DeePMD 所需的 npy 数据集并支持训练/验证集划分;模型训练由 dp train 完成,轨迹生成与可视化由 MD 引擎和 VMD 等完成。

Q10. LAMMPS 中加载 DeePMD 势模型需要设置哪种 pair_style?

单选题 · mid

  • A.pair_style deepmd graph.pb← 正确答案
  • B.pair_style lj/cut 势阱
  • C.pair_style eam/alloy
  • D.pair_style meam/spline

答案:A。pair_style deepmd 后跟模型文件路径即可加载图模型,配合 pair_coeff 完成元素类型映射;其余选项均为经典力场形式,无法加载神经网络势。

参考来源