跳转至

分子动力学与 AI 力场🔗

关键词: 分子动力学, 机器学习力场, MACE, DeePMD-kit, ANI, 增强采样, 通用力场, ASE
难度: ⭐⭐⭐
预计阅读时间: 50 分钟
最后更新: 2026-04-08


本章导读🔗

分子动力学(Molecular Dynamics, MD)模拟是计算化学和计算生物学中最核心的工具之一——通过数值求解牛顿运动方程,我们可以在原子层面观察分子的运动行为。然而,传统 MD 模拟的精度受限于力场(Force Field)的质量:经典力场速度快但精度有限,第一性原理方法(如 DFT)精度高但计算代价极其昂贵。

机器学习力场(Machine Learning Force Field, MLFF) 正在弥合这一鸿沟——通过从量子力学计算数据中学习势能面(Potential Energy Surface, PES),ML 力场可以以接近量子化学的精度运行接近经典 MD 速度的模拟,实现了"鱼与熊掌兼得"。

读完本章,你将能够:

  1. 理解传统力场的局限性以及 ML 力场的核心思想
  2. 了解主流 ML 力场工具(MACE、DeePMD-kit、ANI 等)的特点和适用场景
  3. 使用通用力场(Universal Force Field)直接进行模拟,无需自行训练
  4. 了解 AI 在增强采样领域的应用
  5. 动手安装 MACE 并运行一个简单的 ML 力场模拟

本章适合有基础分子动力学概念(知道什么是力场、能量最小化、MD 模拟)但不需要深度学习背景的研究生。重点在概念理解实操入门


1. 传统力场 vs ML 力场🔗

1.1 经典力场回顾🔗

在传统 MD 模拟中,原子间的相互作用由经典力场(Classical Force Field)描述。经典力场通过一组数学函数和参数来近似原子间的势能:

\[E_{\text{total}} = E_{\text{bond}} + E_{\text{angle}} + E_{\text{dihedral}} + E_{\text{vdW}} + E_{\text{electrostatic}}\]

其中各项分别描述键伸缩、键角弯曲、二面角扭转、范德华力和静电相互作用。

主流经典力场一览:

力场 主要应用领域 开发机构 特点
AMBER (Assisted Model Building with Energy Refinement) 蛋白质、核酸、药物分子 UCSF 生物大分子领域最广泛使用
CHARMM (Chemistry at HARvard Macromolecular Mechanics) 蛋白质、脂质、核酸 Harvard 脂质膜模拟的首选
OPLS (Optimized Potentials for Liquid Simulations) 有机小分子、蛋白质 Jorgensen Group 液相性质拟合好
GROMOS 生物分子、溶剂 ETH Zurich 联合原子力场
ReaxFF 反应性体系 Penn State / SCM 允许成键/断键

1.2 经典力场的局限性🔗

尽管经典力场在许多场景中表现良好,但它们存在根本性的局限:

1. 无法描述化学反应(成键/断键)

大多数经典力场采用固定拓扑结构——哪些原子之间有化学键在模拟开始前就确定了,模拟过程中不允许键的形成或断裂。这意味着酶催化反应、质子转移、材料降解等涉及化学反应的过程无法用普通经典力场模拟。

注意: ReaxFF 是一个例外——它可以描述反应过程,但参数化非常困难,且精度不如量子化学方法。

2. 固定电荷模型

经典力场通常给每个原子分配一个固定的部分电荷。但在真实体系中,原子的电荷分布会随化学环境变化(极化效应)。例如,水分子在不同溶剂环境中的偶极矩不同。虽然有极化力场(如 AMOEBA、Drude 模型),但它们计算代价更高且参数化更复杂。

3. 有限的可迁移性(Transferability)

力场参数通常基于特定类型的分子或特定热力学条件拟合。当应用于训练集之外的体系时,精度可能显著下降。例如,针对蛋白质优化的力场在模拟非天然氨基酸时可能不可靠。

4. 函数形式过于简单

经典力场使用简单的解析函数(谐振子、Lennard-Jones 势等),这限制了它们描述复杂相互作用的能力。真实的势能面往往具有更复杂的多体效应,而经典力场通常只考虑二体或简单多体项。

1.3 量子化学方法:精确但昂贵🔗

要获得更高精度,可以使用第一性原理方法(ab initio methods),如密度泛函理论(Density Functional Theory, DFT)。DFT 直接求解电子结构,理论上可以描述任意化学体系。

但问题在于计算代价

方法 标度关系 典型可处理体系大小 模拟时间尺度
经典 MD \(O(N)\) 数十万~百万原子 μs ~ ms
DFT-MD (AIMD) \(O(N^3)\) 数百原子 ~100 ps
MP2 \(O(N^5)\) 数十原子 单点计算
CCSD(T) \(O(N^7)\) ~20 原子 单点计算

DFT-MD(也称 AIMD, Ab Initio MD)虽然精度高,但由于每一步都要做 DFT 计算,通常只能模拟几百个原子、几十皮秒的时间尺度——这远不能满足许多实际研究需求。

1.4 ML 力场:弥合精度与效率的鸿沟🔗

ML 力场的核心思想非常直接:

用机器学习模型来拟合量子化学计算的势能面——训练时用 DFT 或更高精度数据,推理时以远低于 DFT 的代价获得接近 DFT 的精度。

具体来说:

训练阶段:
  1. 准备一组分子构型(structures)
  2. 对每个构型做 DFT 计算 → 获得能量(E)、原子力(F)、应力(σ)
  3. 训练 ML 模型拟合: 构型 → (E, F, σ)

推理阶段:
  给定新构型 → ML 模型直接输出 E 和 F → 用于 MD 模拟

关键优势:

维度 经典力场 DFT-MD ML 力场
精度 中等(固定函数形式) 高(第一性原理) 接近 DFT
速度 非常快 非常慢 快(比 DFT 快 10³-10⁶ 倍)
可描述反应 否(大多数)
极化效应 否(大多数)
参数化 手工拟合 不需要 需要训练数据
可迁移性 有限 无限 取决于训练数据覆盖

1.5 ML 力场的技术路线🔗

ML 力场的发展经历了从简单到复杂的演进,主要技术路线可以归纳为以下几类:

1.5.1 基于描述符的方法(Descriptor-based)🔗

代表:Behler-Parrinello 神经网络势(BPNN)、GAP/SOAP

最早的 ML 力场采用手工设计的描述符来表征原子的化学环境:

  • 对称函数(Symmetry Functions):Behler 和 Parrinello 在 2007 年提出,通过径向和角度对称函数将原子周围的几何信息编码为固定长度的向量
  • SOAP(Smooth Overlap of Atomic Positions):通过原子密度的重叠来衡量两个原子环境的相似度,用于 GAP(Gaussian Approximation Potential)框架
原子环境 → [描述符计算] → 固定长度向量 → [神经网络/GPR] → 原子能量
体系总能量 = Σ 原子能量

优点:物理上有据可循,计算效率高。缺点:描述符的设计需要人工经验,难以系统地捕获所有多体效应。

1.5.2 消息传递神经网络(Message-Passing Neural Networks, MPNN)🔗

代表:SchNet、DimeNet、PaiNN

受图神经网络(Graph Neural Network, GNN)启发,将分子看作一个图:原子为节点,原子间相互作用为边。通过多轮"消息传递"实现信息交换:

初始: 每个原子有一个特征向量(embedding)
第 1 轮: 每个原子收集邻居信息,更新自己的特征
第 2 轮: 再次收集(此时邻居已经包含了二阶邻居的信息)
...
第 T 轮: 每个原子的特征包含了 T 阶邻域的信息
最终: 汇聚 → 预测 E 和 F
  • SchNet(2017):第一个基于连续卷积的 MPNN 力场,使用径向基函数
  • DimeNet(2020):引入方向信息(键角),提升精度
  • PaiNN(2021):引入等变向量特征,更好地编码方向性

1.5.3 等变神经网络(Equivariant Neural Networks)🔗

代表:NequIP、Allegro、MACE

这是目前最前沿的方法。核心思想是让模型天然地尊重物理对称性

  • 等变性(Equivariance):当分子旋转时,模型的内部表示也相应旋转(不仅仅是最终输出不变)
  • 基于球谐函数(Spherical Harmonics)和张量积(Tensor Product)操作
  • 相比于在数据增强中学习对称性,等变模型内置了这些对称性约束,因此数据效率更高、泛化能力更强
传统方法: 输入不变描述符 → 输出标量能量 (只保证了输出的不变性)
等变方法: 输入等变特征 → 等变消息传递 → 输出标量能量 + 等变力 (全程保持对称性)

类比理解: 好比你拍照片——传统方法是先把照片都旋转到同一方向再处理,等变方法是让模型本身理解"旋转"的概念,无论照片怎么拍都能正确识别。


2. 主流 ML 力场工具🔗

2.1 MACE(Multi-Atomic Cluster Expansion)🔗

  • 开发者: 剑桥大学 Csányi 课题组
  • 首次发布: 2022
  • GitHub: https://github.com/ACEsuit/mace
  • 核心特点: 等变消息传递 + 高阶多体相互作用

MACE 是目前精度最高的 ML 力场架构之一。它的创新之处在于将等变消息传递和原子聚类展开(Atomic Cluster Expansion, ACE)结合,能够高效地编码多体相互作用。

核心设计:

  • 使用等变消息传递框架,基于 E(3) 群的不可约表示
  • 通过 ACE 体描述符捕获高阶(3 体、4 体)相互作用
  • 只需少量消息传递层(通常 2 层)即可达到很高精度
  • 支持周期性体系(固体、表面等)

亮点产品 — MACE-MP-0:

MACE-MP-0 是基于 Materials Project 数据训练的通用势能(Universal Potential),覆盖元素周期表中 89 种元素,可以直接使用,无需自行训练。详见 2.7 节

2.2 DeePMD-kit🔗

  • 开发者: 北京大学鄂维南院士课题组 / DP Technology(深势科技)
  • 首次发布: 2018
  • GitHub: https://github.com/deepmodeling/deepmd-kit
  • 核心特点: 深度势能(Deep Potential, DP)方法,国内生态强大

DeePMD-kit 是国内最活跃的 ML 力场框架,也是全球使用最广泛的工具之一。它采用 Deep Potential(DP)方法来构建势能面。

核心设计:

  • 使用局部描述符编码原子环境(DeepPot-SE: smooth edition)
  • 通过注意力机制增强(DPA-1、DPA-2 架构)
  • 与 LAMMPS 深度集成,可直接用于大规模 MD 模拟
  • 提供完整的主动学习(Active Learning)工作流:DP-GEN

生态系统 — DeepModeling 社区:

DeePMD-kit 是 DeepModeling 开源社区的核心项目,周边工具包括:

工具 功能
DP-GEN 自动化训练数据生成(主动学习)
DPGEN2 新一代数据生成工作流
ABACUS 国产 DFT 软件,可直接产出训练数据
Uni-Mol 分子表示学习框架
AIS-Square 模型和数据共享平台
Bohrium 云计算平台,提供 GPU 算力

提示: 如果你在国内高校做研究,DeePMD-kit 可能是最容易获得技术支持的选择——有中文文档、中文社区论坛、以及深势科技的支持。

2.3 ANI(Accurate NeurAl networK engINe for Molecular Energies)🔗

  • 开发者: 佛罗里达大学 Roitberg 课题组
  • 首次发布: 2017
  • GitHub: https://github.com/aiqm/torchani
  • 核心特点: 推理速度快,有机小分子表现优异

ANI 系列力场专注于有机分子,提供了一系列预训练模型:

模型 支持元素 训练数据
ANI-1x H, C, N, O ~5M DFT 构型
ANI-1ccx H, C, N, O CCSD(T)/CBS 外推
ANI-2x H, C, N, O, F, S, Cl 扩展元素覆盖

核心设计:

  • 基于 Behler-Parrinello 对称函数 + 神经网络
  • 使用模型集成(ensemble of 8 models)提供不确定性估计
  • 推理速度非常快(纯前馈网络,无消息传递)
  • TorchANI 提供 PyTorch 实现,易于与其他工具集成

适用场景: 药物分子构象搜索、有机反应路径探索、结合自由能计算等涉及有机小分子的场景。

局限: 不支持金属元素和周期性体系(固体、表面)。

2.4 NequIP 与 Allegro🔗

  • 开发者: 哈佛大学 Kozinsky 课题组
  • NequIP GitHub: https://github.com/mir-group/nequip
  • Allegro GitHub: https://github.com/mir-group/allegro

NequIP(Neural Equivariant Interatomic Potentials):

  • 第一个将E(3) 等变图神经网络应用于原子间势能的方法(2022)
  • 基于 e3nn 库实现等变操作
  • 在小数据量下表现极其出色(数据效率高)
  • 相比当时最先进方法,训练数据量减少到 1/1000 即可达到相同精度

Allegro:

  • NequIP 的扩展版本,设计用于大规模并行模拟
  • 将等变操作严格限制为局部的(strictly local),避免全局通信瓶颈
  • 已成功用于上亿原子的 MD 模拟(获 Gordon Bell 奖提名)

2.5 SchNet / DimeNet / PaiNN🔗

这三个模型代表了消息传递框架中逐步引入更丰富物理信息的发展脉络:

模型 年份 使用信息 创新点
SchNet 2017 原子间距离 连续卷积滤波器
DimeNet 2020 距离 + 角度 方向性消息传递
DimeNet++ 2020 同 DimeNet 提速版本
PaiNN 2021 距离 + 等变向量 标量 + 向量双通道

这些模型主要通过 SchNetPack 包统一提供:

  • GitHub: https://github.com/atomistic-machine-learning/schnetpack
  • 与 ASE(Atomic Simulation Environment)集成良好
  • 支持能量、力、偶极矩等多种性质预测

2.6 CHGNet(Crystal Hamiltonian Graph Neural Network)🔗

  • 开发者: UC Berkeley Persson 课题组
  • 首次发布: 2023
  • GitHub: https://github.com/CederGroupHub/chgnet
  • 核心特点: 材料科学通用力场,考虑磁性

CHGNet 的独特之处在于它同时预测能量、力、应力和磁矩,这对于含过渡金属的材料体系尤为重要。

核心设计:

  • 基于原子图网络 + 角度信息
  • 训练数据来自 Materials Project(约 150 万 DFT 计算)
  • 预训练模型覆盖元素周期表中绝大多数元素
  • 可预测原子磁矩(对研究磁性材料至关重要)

适用场景: 固体材料、电池材料、催化剂、合金等周期性体系。

2.7 通用力场(Universal Force Fields)🔗

通用力场(Universal Potential / Foundation Model for Atomistic Simulation)是最近最令人兴奋的进展之一——一个预训练模型覆盖大量化学空间,用户无需自行训练即可直接使用。

MACE-MP-0🔗

  • 训练数据: Materials Project 中约 15 万个无机结构的 DFT 数据
  • 覆盖: 89 种化学元素
  • 精度: 对于大多数体系,能量 MAE < 30 meV/atom,力 MAE < 80 meV/Å
  • 使用方式: pip install mace-torch 后直接加载预训练模型
  • 适用: 无机材料、合金、氧化物等晶体/非晶体系

MACE-OFF(MACE for Organic Force Fields)🔗

  • 训练数据: 大规模有机分子 DFT 数据集
  • 覆盖: H, C, N, O, F, P, S, Cl, Br, I 等有机分子常见元素
  • 特点: 专门针对有机分子优化,在药物分子、蛋白质-配体体系上表现优异
  • 适用: 药物设计、有机化学、生物分子模拟

CHGNet(通用材料力场)🔗

  • 训练数据: Materials Project 中约 150 万条 DFT 数据
  • 覆盖: 元素周期表大部分元素
  • 特点: 可预测磁矩,适合含磁性元素体系
  • 适用: 电池材料、催化剂、磁性材料

SevenNet、ORB、ALIGNN 等🔗

ML 力场领域发展极快,还有许多其他通用力场值得关注:

通用力场 开发者 特点
SevenNet KAIST 基于 NequIP 架构的通用力场
ORB Orbital Materials 基于 Graph Transformer 的通用力场
ALIGNN-FF NIST 基于线图神经网络
M3GNet UC San Diego MaterialsProject 早期通用力场

通用力场的局限🔗

通用力场虽然方便,但并非万能:

  • 精度上限: 对于特定体系,专门训练的力场通常精度更高
  • 训练数据偏差: 如果你的体系在训练数据中代表不足(如高温高压极端条件),精度可能不够
  • 长程相互作用: 大多数 ML 力场使用截断半径(cutoff),长程静电和色散可能处理不佳
  • 罕见元素/化合物: 训练数据中稀少的化学组合可能不够准确

建议: 先用通用力场做初步探索,如果对精度要求高或发现通用力场表现不佳,再针对你的体系训练专用力场。

2.8 主流工具综合对比🔗

工具 架构 精度 推理速度 易用性 支持元素 周期性体系 活跃度
MACE 等变消息传递 + ACE ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ 全周期表(MP-0) 🔥🔥🔥
DeePMD-kit 描述符 + 注意力 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ 自行训练决定 🔥🔥🔥
ANI 对称函数 + NN ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ H,C,N,O,F,S,Cl 🔥🔥
NequIP E(3) 等变 GNN ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ 自行训练决定 🔥🔥
Allegro 局部等变 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ 自行训练决定 🔥🔥
SchNetPack MPNN ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ 自行训练决定 🔥🔥
CHGNet 图网络 + 角度 ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ 全周期表 🔥🔥🔥

如何选择? - 有机小分子(药物、配体): ANI-2x 最简单,MACE-OFF 精度更高 - 无机材料(电池、催化剂): MACE-MP-0 或 CHGNet 直接用,精度不够再自行训练 - 国内用户 / 需要 LAMMPS 集成: DeePMD-kit 生态最完善 - 追求最高精度: MACE 或 NequIP 自行训练 - 大规模模拟(百万原子): Allegro 或 DeePMD-kit


3. AI 增强采样🔗

3.1 为什么需要增强采样?🔗

即使使用了 ML 力场加速模拟,时间尺度仍然是分子动力学的核心瓶颈。许多重要的生物和化学过程发生在微秒甚至更长的时间尺度上,而 MD 模拟受限于积分步长(通常 1-2 fs),要覆盖这些时间尺度需要天文数字的步数。

稀有事件问题(Rare Events Problem):

许多重要过程——蛋白质折叠、配体结合/解离、化学反应、相变——涉及跨越高自由能垒的过渡。体系大部分时间在局部能量最小值附近振荡,只有极少数时刻"恰好"获得足够能量越过势垒。

自由能
  |     ╱╲
  |    ╱  ╲        ← 自由能垒 ΔG‡
  |   ╱    ╲  ╱╲
  |  ╱      ╲╱  ╲
  | ╱  A         ╲  B
  |╱               ╲
  +-------------------→ 反应坐标

  体系在 A 态 → 越过势垒 → 到达 B 态
  常规 MD: 可能需要模拟 ms 才能观察到一次跃迁
  增强采样: 通过施加偏置势加速跃迁

3.2 经典增强采样方法简述🔗

在引入 AI 之前,已有多种增强采样方法:

方法 核心思想 典型工具
Metadynamics 在集体变量(CV)空间中逐步填充势能,阻止体系回到已访问区域 PLUMED
Umbrella Sampling 在 CV 空间的多个点施加约束势,采样后组合 PLUMED, WHAM
Replica Exchange MD (REMD) 不同温度的多个副本并行模拟,交换构型 GROMACS, AMBER
Steered MD 沿 CV 方向施加外力,拉动体系从 A 到 B NAMD, GROMACS

这些方法的共同挑战:需要预先定义合适的集体变量(Collective Variables, CVs)。CV 的选择是增强采样中最关键也最困难的步骤——选择不当的 CV 会导致采样效率低下甚至结果不可靠。

3.3 AI 驱动的集体变量发现🔗

AI 在增强采样领域最重要的贡献之一是自动发现最优集体变量

自编码器方法(Autoencoder-based CVs)🔗

使用自编码器(Autoencoder)将高维构型空间压缩到低维潜在空间,该潜在空间的坐标即可作为 CV:

原子坐标 (3N 维) → [Encoder] → 潜在变量 z (2-3 维) → [Decoder] → 重建坐标
                           这就是学到的 CV

时间延迟自编码器(Time-lagged Autoencoder, TAE)🔗

在普通自编码器基础上引入时间信息——不是重建当前帧,而是预测未来某个时间步的帧:

\[\text{Loss} = ||x(t+\tau) - \text{Decoder}(\text{Encoder}(x(t)))||^2\]

这迫使潜在变量捕获慢运动模式——正是最重要的自由度。

其他 AI-CV 方法🔗

方法 思路 代表工作
TICA + 深度学习 用深度网络替代线性 TICA Deep TICA
变分方法 变分自由能最小化 VDE(Variational Dynamics Encoder)
对比学习 区分不同亚稳态 Contrastive learning CVs
扩散模型 学习转移概率 Score-based CVs

3.4 机器学习增强采样方法🔗

除了学习 CV,AI 还直接改进了采样算法本身:

1. 基于 ML 力场的增强采样

ML 力场使得以 QM 精度进行增强采样成为可能。传统上,Metadynamics + DFT-MD 因计算代价过高而不切实际,但 ML 力场 + Metadynamics 可以在可接受的时间内完成。

2. Reinforcement Learning (RL) for Sampling

使用强化学习来指导采样过程——将发现新构型/跨越势垒作为奖励信号,训练 agent 高效地探索构型空间。

3. Normalizing Flow for Free Energy

使用 Normalizing Flow 等生成模型直接学习自由能面的玻尔兹曼分布,从而绕过传统 MD 采样:

\[p(\mathbf{x}) = \frac{1}{Z} e^{-\beta U(\mathbf{x})}\]

3.5 工具与集成🔗

实际使用中,增强采样通常需要将多个工具组合:

工具 角色 说明
PLUMED 增强采样引擎 提供 Metadynamics、Umbrella Sampling 等方法,可与几乎所有 MD 引擎集成
OpenMM MD 引擎 Python 友好的 MD 引擎,易于与 ML 力场集成
GROMACS MD 引擎 高性能 MD 引擎,支持 PLUMED 插件
LAMMPS MD 引擎 通用 MD 引擎,DeePMD-kit 紧密集成
ASE 原子模拟框架 Python 接口,几乎所有 ML 力场都支持
i-PI 路径积分 MD 通用 MD 驱动程序,可与各种力场后端对接

典型工作流示例:ML 力场 + Metadynamics

DeePMD-kit / MACE → (提供力和能量) → LAMMPS / ASE
                                       PLUMED (施加 Metadynamics 偏置势)
                                    自由能面 (FES) 结果

提示: PLUMED 是增强采样的"瑞士军刀",几乎支持所有主流增强采样方法。如果你要做增强采样,强烈建议先学习 PLUMED 的基本使用——官方教程(https://www.plumed.org/doc-v2.9/user-doc/html/tutorials.html)非常全面。


4. 实操入门🔗

4.1 环境准备🔗

推荐使用 conda 管理环境。以下安装命令基于 Python 3.10+。

安装 MACE🔗

# 创建新环境
conda create -n mlff python=3.10 -y
conda activate mlff

# 安装 PyTorch(根据你的 CUDA 版本选择)
# CPU 版本:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

# CUDA 12.1 版本(推荐有 GPU 时使用):
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 安装 MACE
pip install mace-torch

# 安装 ASE(Atomic Simulation Environment)
pip install ase

# 验证安装
python -c "import mace; print('MACE version:', mace.__version__)"
python -c "import ase; print('ASE version:', ase.__version__)"

安装 DeePMD-kit🔗

# 方法 1:conda 安装(最简单)
conda create -n deepmd python=3.10 -y
conda activate deepmd
conda install deepmd-kit=*=*cpu libdeepmd=*=*cpu lammps -c https://conda.deepmodeling.com -y

# 方法 2:pip 安装
pip install deepmd-kit

# 验证
dp --version
python -c "import deepmd; print('DeePMD-kit installed successfully')"

安装 ANI(TorchANI)🔗

# 在已有环境中安装
pip install torchani

# 验证
python -c "import torchani; print('TorchANI version:', torchani.__version__)"

安装 CHGNet🔗

pip install chgnet

# 验证
python -c "from chgnet.model import CHGNet; print('CHGNet installed successfully')"

4.2 使用 MACE-MP-0 进行结构优化(通用力场示例)🔗

以下示例展示如何用 MACE-MP-0 通用力场对一个水分子团簇进行能量最小化和简单 MD 模拟。

示例 1:单点能计算🔗

from ase import Atoms
from ase.build import molecule
from mace.calculators import mace_mp

# 加载 MACE-MP-0 通用力场(第一次运行会自动下载模型)
calc = mace_mp(model="medium", dispersion=False, device="cpu")
# model 选项: "small", "medium", "large" 对应不同大小/精度

# 构建一个水分子
water = molecule("H2O")
water.calc = calc

# 计算能量和力
energy = water.get_potential_energy()
forces = water.get_forces()

print(f"能量: {energy:.4f} eV")
print(f"原子力 (eV/Å):")
for i, (symbol, force) in enumerate(zip(water.get_chemical_symbols(), forces)):
    print(f"  {symbol}: [{force[0]:.4f}, {force[1]:.4f}, {force[2]:.4f}]")

示例 2:结构优化(能量最小化)🔗

from ase import Atoms
from ase.build import molecule
from ase.optimize import BFGS
from mace.calculators import mace_mp

# 加载力场
calc = mace_mp(model="medium", dispersion=False, device="cpu")

# 构建乙醇分子(初始结构可能不是最优的)
ethanol = molecule("CH3CH2OH")
ethanol.calc = calc

print(f"优化前能量: {ethanol.get_potential_energy():.4f} eV")

# BFGS 优化器
opt = BFGS(ethanol, logfile="optimization.log")
opt.run(fmax=0.01)  # 收敛标准:最大原子力 < 0.01 eV/Å

print(f"优化后能量: {ethanol.get_potential_energy():.4f} eV")
print(f"优化步数: {opt.nsteps}")

示例 3:分子动力学模拟🔗

from ase import Atoms, units
from ase.build import molecule
from ase.md.langevin import Langevin
from ase.io.trajectory import Trajectory
from mace.calculators import mace_mp
import numpy as np

# 加载力场
calc = mace_mp(model="medium", dispersion=False, device="cpu")

# 构建一个小的水团簇(4 个水分子)
from ase.build import molecule
from ase.collections import g2

water = molecule("H2O")
# 创建 4 个水分子的团簇
from ase import Atoms
positions = []
symbols = []
for i in range(2):
    for j in range(2):
        w = molecule("H2O")
        w.translate([i * 3.0, j * 3.0, 0])
        positions.extend(w.positions.tolist())
        symbols.extend(w.get_chemical_symbols())

cluster = Atoms(symbols=symbols, positions=positions)
cluster.center(vacuum=5.0)  # 添加真空层
cluster.calc = calc

# 设置 Langevin 动力学(NVT 系综, 300 K)
dyn = Langevin(
    cluster,
    timestep=1.0 * units.fs,       # 时间步长 1 fs
    temperature_K=300,               # 温度 300 K
    friction=0.01 / units.fs,       # 摩擦系数
    logfile="md.log",
    loginterval=10,
)

# 保存轨迹
traj = Trajectory("md_water.traj", "w", cluster)
dyn.attach(traj.write, interval=10)

# 运行 1000 步 MD
print("开始 MD 模拟...")
dyn.run(steps=1000)
print("MD 模拟完成!")

# 读取轨迹信息
traj_read = Trajectory("md_water.traj")
print(f"轨迹帧数: {len(traj_read)}")
print(f"最终能量: {traj_read[-1].get_potential_energy():.4f} eV")

4.3 使用 ANI 计算有机分子能量🔗

import torch
import torchani

# 加载 ANI-2x 预训练模型
model = torchani.models.ANI2x(periodic_table_index=True)

# 构建甲烷分子 (CH4)
from ase.build import molecule
from ase import units

methane = molecule("CH4")

# 使用 ASE calculator 接口
calc = model.ase()
methane.calc = calc

energy = methane.get_potential_energy()
forces = methane.get_forces()

print(f"ANI-2x 计算的甲烷能量: {energy:.4f} eV")
print(f"原子力最大值: {abs(forces).max():.6f} eV/Å")

# 模型集成不确定性估计
# ANI-2x 使用 8 个模型集成,标准差反映预测不确定性
# 不确定性高 → 该构型可能在训练数据覆盖范围之外

4.4 使用 CHGNet 进行材料模拟🔗

from chgnet.model import CHGNet
from chgnet.model.dynamics import MolecularDynamics
from pymatgen.core import Structure

# 加载预训练的 CHGNet 模型
chgnet = CHGNet.load()

# 构建一个简单的 NaCl 岩盐结构
structure = Structure.from_spacegroup(
    "Fm-3m",
    lattice=[[5.64, 0, 0], [0, 5.64, 0], [0, 0, 5.64]],
    species=["Na", "Cl"],
    coords=[[0, 0, 0], [0.5, 0.5, 0.5]],
)

# 单点预测
prediction = chgnet.predict_structure(structure)
print(f"能量: {prediction['e']:.4f} eV/atom")
print(f"磁矩: {prediction['m']}")

# 使用 CHGNet 做 MD
md = MolecularDynamics(
    atoms=structure,
    model=chgnet,
    ensemble="nvt",
    temperature=300,
    timestep=2,       # 2 fs
    trajectory="chgnet_md.traj",
    logfile="chgnet_md.log",
    loginterval=100,
)
md.run(1000)  # 运行 1000 步

注意: CHGNet 使用 pymatgen 的 Structure 对象(而非 ASE 的 Atoms),因为它主要面向周期性材料体系。不过也可以通过 ASE 接口使用。

4.5 使用 DeePMD-kit 基础流程🔗

DeePMD-kit 的典型工作流比直接使用预训练模型更复杂,因为它主要被设计为训练自定义力场的框架:

准备训练数据 → 配置训练参数 → 训练模型 → 冻结模型 → 部署到 MD 引擎

准备训练数据格式🔗

DeePMD-kit 使用特定的目录结构存储训练数据:

training_data/
├── set.000/
│   ├── coord.npy     # 原子坐标 (nframes, natoms*3)
│   ├── energy.npy    # 能量 (nframes,)
│   ├── force.npy     # 原子力 (nframes, natoms*3)
│   ├── box.npy       # 盒子信息 (nframes, 9)
│   └── virial.npy    # 应力张量 (可选)
├── set.001/
│   └── ...
└── type.map          # 原子类型映射, 如 ["O", "H"]

配置训练参数(input.json 示例)🔗

{
    "model": {
        "type_map": ["O", "H"],
        "descriptor": {
            "type": "se_e2_a",
            "sel": [46, 92],
            "rcut_smth": 0.5,
            "rcut": 6.0,
            "neuron": [25, 50, 100],
            "resnet_dt": false,
            "axis_neuron": 16
        },
        "fitting_net": {
            "neuron": [240, 240, 240],
            "resnet_dt": true
        }
    },
    "learning_rate": {
        "type": "exp",
        "decay_steps": 5000,
        "start_lr": 0.001,
        "stop_lr": 3.51e-8
    },
    "loss": {
        "type": "ener",
        "start_pref_e": 0.02,
        "limit_pref_e": 1,
        "start_pref_f": 1000,
        "limit_pref_f": 1,
        "start_pref_v": 0,
        "limit_pref_v": 0
    },
    "training": {
        "training_data": {
            "systems": ["./training_data"],
            "batch_size": "auto"
        },
        "numb_steps": 1000000,
        "disp_file": "lcurve.out",
        "disp_freq": 1000,
        "save_freq": 10000
    }
}

训练与部署🔗

# 训练模型
dp train input.json

# 冻结模型(导出为可部署格式)
dp freeze -o frozen_model.pb

# 测试模型精度
dp test -m frozen_model.pb -s ./test_data -n 100

# 在 LAMMPS 中使用
# pair_style  deepmd frozen_model.pb
# pair_coeff  * *

使用 ASE 接口🔗

from deepmd.calculator import DP
from ase.io import read

# 加载 DeePMD 模型
calc = DP(model="frozen_model.pb")

# 读取结构
atoms = read("structure.xyz")
atoms.calc = calc

energy = atoms.get_potential_energy()
forces = atoms.get_forces()
print(f"DP 能量: {energy:.4f} eV")

4.6 性能参考对比🔗

以下数据基于典型基准测试,仅供参考(实际性能取决于硬件、体系大小和模型大小):

方法 体系示例 速度(步/秒) 精度(力 MAE, meV/Å) 硬件
经典 AMBER 蛋白质 10k 原子 ~1,000,000 N/A(不直接可比) CPU
DFT-MD (VASP) 64 水分子 ~0.1 参考(ground truth) GPU
MACE-MP-0 (medium) 64 水分子 ~1,000 ~50 GPU
DeePMD (DP) 64 水分子 ~5,000 ~30-50 GPU
ANI-2x 有机分子 ~50 原子 ~10,000 ~40-60(有机分子) GPU
CHGNet 材料 ~100 原子 ~500 ~50 GPU
NequIP 自行训练 ~200 ~10-20(特定体系) GPU
MACE (自行训练) 自行训练 ~500 ~5-15(特定体系) GPU

注意: 以上数据为粗略参考。ML 力场的精度高度依赖于训练数据的质量和覆盖范围。"自行训练"的力场在目标体系上通常精度更高,但需要投入准备训练数据的时间。


本章小结🔗

  • 经典力场 vs ML 力场:经典力场(AMBER、CHARMM 等)速度快但精度受限于固定函数形式,无法描述化学反应;ML 力场通过学习量子化学数据实现接近 DFT 精度、接近经典 MD 速度的模拟
  • 技术路线演进:从基于描述符的方法(BPNN)→ 消息传递网络(SchNet, DimeNet)→ 等变网络(NequIP, MACE),模型精度和数据效率不断提升
  • 主流工具选择:MACE 精度最高,DeePMD-kit 国内生态最好,ANI 有机小分子最方便,CHGNet 材料科学首选
  • 通用力场:MACE-MP-0 和 CHGNet 等通用力场可直接使用,覆盖大量化学元素,适合初步探索
  • AI 增强采样:AI 可以自动发现集体变量(自编码器方法)、改进采样策略,PLUMED 是最核心的采样工具
  • 实操入门:通过 ASE + MACE/ANI/CHGNet 可以快速上手 ML 力场模拟

延伸阅读🔗


参考文献🔗


  1. Behler, J. & Parrinello, M., "Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces", Physical Review Letters, 2007. https://doi.org/10.1103/PhysRevLett.98.146401 

  2. Zhang, L. et al., "Deep Potential Molecular Dynamics: A Scalable Model with the Accuracy of Quantum Mechanics", Physical Review Letters, 2018. https://doi.org/10.1103/PhysRevLett.120.143001 

  3. Smith, J.S. et al., "ANI-1: an extensible neural network potential with DFT accuracy at force field computational cost", Chemical Science, 2017. https://doi.org/10.1039/C6SC05720A 

  4. Schütt, K.T. et al., "SchNet: A continuous-filter convolutional neural network for modeling quantum interactions", NeurIPS, 2017. https://arxiv.org/abs/1706.08566 

  5. Batatia, I. et al., "MACE: Higher Order Equivariant Message Passing Neural Networks for Fast and Accurate Force Fields", NeurIPS, 2022. https://arxiv.org/abs/2206.07697 

  6. Musaelian, A. et al., "Learning local equivariant representations for large-scale atomistic dynamics", Nature Communications, 2023. https://doi.org/10.1038/s41467-023-36329-y 

  7. Deng, B. et al., "CHGNet as a pretrained universal neural network potential for charge-informed atomistic modelling", Nature Machine Intelligence, 2023. https://doi.org/10.1038/s42256-023-00716-3 

  8. Batatia, I. et al., "A foundation model for atomistic simulation", arXiv:2401.00096, 2024. — MACE-MP-0 论文 

  9. Bartók, A.P. et al., "Gaussian Approximation Potentials: The Accuracy of Quantum Mechanics, without the Electrons", Physical Review Letters, 2010. https://doi.org/10.1103/PhysRevLett.104.136403 

  10. The PLUMED consortium, "Promoting transparency and reproducibility in enhanced molecular simulations", Nature Methods, 2019. https://doi.org/10.1038/s41592-019-0506-8