MACE(Multi-Atomic Cluster Expansion,多原子簇展开)是剑桥大学 Gábor Csányi 课题组提出的机器学习原子间势能模型(MLIP,即用机器学习替代经验势函数来预测原子间相互作用),核心思路是把消息传递神经网络(MPNN,图神经网络的一种,节点间逐层交换信息)与原子簇展开(ACE,一种以多体基函数表示原子环境的方法)结合,从第一性原理(DFT)数据学习原子能量与受力,推理成本比 DFT 低三到四个数量级。2022 年论文发布后,MACE 团队于 2023 年底推出覆盖 89 种元素的基础模型 MACE-MP-0,2025 年迭代出 MACE-MP-1;配合开源的 mace-torch 包(提供 ASE、LAMMPS、i-PI 等接口),研究者可以零样本推理或小样本微调完成能量预测、几何优化、分子动力学与高通量材料筛选。本篇按「安装 → 跑通 → 训练 → 部署」的顺序,给出基于官方文档的操作指南,并附选型对比、常见误区与面试题。

岗位关联

掌握 MACE 意味着你能直接调用覆盖 89 种元素的开放基础势能模型,把 DFT 级别的材料模拟成本降低数个量级——这是 AI for Science 领域最具生产力的核心技能之一。

目录
  1. 为什么需要 MACE:从 DFT 瓶颈到通用原子间势
  2. 安装与环境配置:3 步就绪
  3. 快速上手:5 分钟跑通 MACE-MP 单点能与结构优化
  4. 核心能力详解:5 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
工具类型
等变消息传递原子间势能模型(MLIP,开源)
开发商
剑桥大学 Csányi 课题组(MACE 社区维护)
开源协议
MIT(代码);基础模型权重 CC-BY-4.0
GitHub Stars
github.com/ACEsuit/mace(以仓库实时数据为准)
主要语言
Python(PyTorch 实现)
当前版本
v1.x(2025 年,基础模型已迭代至 MACE-MP-1)
安装方式
pip install mace-torch(先装与 CUDA 匹配的 PyTorch)
上手难度
★★★☆☆(中等,需 PyTorch/ASE 基础)
适合人群
材料/化学计算研究者、AI for Science 算法工程师
同类工具
NequIP、DeepMD-kit(DP)、GAP
托管服务
无

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

为什么需要 MACE:从 DFT 瓶颈到通用原子间势

传统材料模拟依赖 DFT,每一步能量计算的复杂度约为 O(N³)(N 为电子数),千原子体系跑纳秒级分子动力学(MD)动辄数月;而吸附、扩散、热输运等性质恰恰需要纳米尺度、数百皮秒到微秒的轨迹。经验势(如 EAM、Lennard-Jones)虽快,但精度不足以描述化学键断裂与电荷转移。

MLIP 的解法是把 DFT 数据训练成可微模型:推理单点能量与力的速度比 DFT 快三到四个数量级,且保持接近 DFT 的精度。MACE 是其中数据效率领先的方案——消息经 ACE 线性展开后显式携带任意体阶的相互作用,小样本即可逼近 DFT 精度;更关键的是,MACE-MP 基础模型覆盖 Materials Project 中 89 种元素,免去了「从零攒数据」的冷启动成本。

与同类工具的气质差异:相比 DeepMD-kit 这类描述子型深度势,MACE 更强调数据效率与跨体系迁移;相比 NequIP 这类等变 GNN(仅显式三体消息),MACE 的显式高体阶消息表达能力更强。它是少数同时提供开源实现、开放基础模型权重与 LAMMPS 生产接口的 MLIP。

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

安装顺序很关键:mace-torch 依赖 PyTorch,若本机没有 torch,pip 会默认拉取 CPU 版,导致训练与推理跑在 CPU 上,速度差一个数量级以上。建议先按官方指引装好与 CUDA 匹配的 PyTorch,再装 mace-torch;建议 Python ≥ 3.9。

步骤一:创建虚拟环境并安装 PyTorch。在有 NVIDIA GPU 的机器上,可指定 CUDA wheel 索引(如 cu121),无 GPU 时直接 pip install torch 即可。

步骤二:安装 mace-torch,该包同时提供训练/评估命令行与 ASE 计算器。

步骤三:验证安装。导入 mace.calculators.mace_mp 模块成功且 torch.cuda.is_available() 为 True(GPU 环境)即就绪;首次调用计算器时才会自动下载权重文件。

bash9 行
# 1) 安装 PyTorch(官方建议先装,避免拉取 CPU 版)python -m venv .venv && source .venv/bin/activatepip install torch --index-url https://download.pytorch.org/whl/cu121  # 按本机 CUDA 版本调整 # 2) 安装 MACEpip install mace-torch # 3) 验证python -c "import torch; from mace.calculators import mace_mp; print('CUDA:', torch.cuda.is_available(), '| MACE OK')"

快速上手:5 分钟跑通 MACE-MP 单点能与结构优化

最小可用流程:创建一个 ASE 的 Atoms 对象(非周期水分子),用 mace_mp() 加载 MACE-MP-0 基础模型(默认 medium 尺寸),把计算器挂到结构上即可得到能量与力,再交给 ASE 的优化器做几何弛豫。第一次运行会自动下载约几十 MB 的权重文件,需联网。

操作步骤:

1. 将以下脚本保存为 mace_first.py。

2. 运行 python mace_first.py,观察输出的总能量与原子受力。

3. 若没有 NVIDIA GPU,将 device="cuda" 改为 device="cpu";几何优化与 MD 场景务必使用 default_dtype="float64"。

注意:MACE-MP 的能量零点是训练集中各元素平均原子能的加权和,孤立分子的绝对能量值不具化学意义,用能量差(如吸附能、形成能)与受力做判断。

进阶:若想用 2025 年的 MACE-MP-1,把导入改为 from mace.calculators.foundations_models import mace_mp,其余代码不变。

python18 行
from ase import Atomsfrom ase.optimize import BFGSfrom mace.calculators import mace_mp # 水分子(非周期性,大盒子隔离)atoms = Atoms("H2O",              positions=[[0, 0, 0], [0.958, 0, 0], [0, 0.958, 0]],              cell=[15, 15, 15]) calc = mace_mp(model="medium", default_dtype="float64", device="cuda")atoms.calc = calc print("能量 (eV):", atoms.get_potential_energy())print("力 (eV/A):\n", atoms.get_forces()) opt = BFGS(atoms, logfile=None)opt.run(fmax=0.01)print("优化后能量 (eV):", atoms.get_potential_energy())

核心能力详解:5 大支柱

支柱一 · 等变消息传递架构。MACE 的消息以张量积(tensor product)方式在 SO(3) 群下等变(即旋转原子坐标后,特征按相应表示旋转,保证物理对称性),网络叠加多个消息层后对节点特征做对称约化得到原子能量与力,天然满足能量平移、旋转不变性与力的合力为零等物理约束。

支柱二 · 显式多体消息(ACE 展开)。与 NequIP 等「两体消息」模型不同,MACE 每条消息都经过 ACE 基函数展开,可显式包含三体、四体及更高体阶的相互作用(默认相关阶数为 3),这是它在小数据集上精度领先的结构性原因。

支柱三 · 通用基础模型。MACE-MP-0 在 Materials Project 弛豫轨迹上训练,覆盖 89 种元素;官方发布 small/medium/large 三档权重,零样本即可用于能量/力预测,也可用少量自有数据微调。MACE-MP-1 在此基础上修正并扩充了训练数据,改善了稀有元素与带电体系的精度。

支柱四 · 训练与评估工具链。mace_run_train 命令行从 XYZ 格式的(结构,能量,力)数据训练自定义势,支持 SWA(随机权重平均,提升模型稳健性)与 torchrun 多卡并行;mace_eval 可在独立测试集上批量输出逐结构能量/力误差,便于筛选最优模型。

支柱五 · 生态与接口。mace-torch 提供 ASE 计算器,可无缝接入 ASE 的优化器与 MD 模块;官方文档同时提供 LAMMPS 与 i-PI(路径积分 MD)接口;周期性与非周期性体系均支持,可输出能量、力与应力(virial),满足晶格弛豫和弹性性质计算需求。

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

训练阶段:用 mace_run_train 配置好数据集与超参,先在小模型(small/medium)上验证收敛,再用 torchrun 在单机多卡上训练。多卡启动方式与单卡命令一致,仅需在最前方加 torchrun 前缀:

推理与 MD 部署:训练好的 .model 权重通过 ASE 计算器加载,嵌入到 NPT/NVT 分子动力学脚本;更大规模的生产计算走 LAMMPS 接口。需要微调基础模型时,将 --model="foundation" --foundation_model="medium" 传入 mace_run_train,用数百到数千条自有数据即可显著改善目标体系精度,是「基础模型 + 行业数据」的标准落地姿势。

可观测性:训练脚本按 epoch 输出训练/验证集能量与力的 MAE(平均绝对误差,误差的直观度量),并保存表现最好的 checkpoint(含 SWA 后的模型);用 mace_eval 在独立盲测集上做最终验收。上线后建议记录每个体系单点能、力范数与优化收敛曲线,异常偏大的力或能量往往对应训练分布外的结构,应触发人工检查或主动学习补充采样。

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

<ul class=“dash-list“><li>PyTorch 版本不匹配:未先按 CUDA 版本装 torch,pip 会拉 CPU 版,训练慢一个数量级以上;安装后先验证 torch.cuda.is_available()。</li><li>训练未做能量移位:数据绝对能量大而各元素 E0s(原子平均能)未设置时,能量损失主导训练甚至发散;用 --E0s=”average“ 或显式给元素值。</li><li>float32 精度不足:几何优化与长 MD 下力噪声累积导致轨迹漂移,官方明确建议使用 default_dtype=”float64”。</li><li>基础模型外推误用:MACE-MP 对训练分布外的电荷态、缺陷、稀有元素组合误差显著增大;先做小验证集误差测试,再决定微调或补充数据。</li><li>周期设置遗漏:ASE 中未设置 pbc/cell 时晶格弛豫与应力结果无意义;晶体体系显式 atoms.set_pbc(True) 并核对晶胞。</li></ul>

bash15 行
torchrun --nproc_per_node=4 $(which mace_run_train) \  --name="MACE_bulk_Si" \  --train_file="train.xyz" \  --valid_fraction=0.1 \  --model="MACE" \  --num_interactions=2 \  --num_channels=128 \  --max_L=2 \  --r_max=5.0 \  --batch_size=10 \  --max_num_epochs=200 \  --swa \  --energy_weight=1000 \  --force_weight=100 \  --device="cuda"
维度MACENequIPDeepMD-kit(DP)GAP
定位高阶等变消息传递 MLIP等变张量积消息 GNN描述子型深度势(嵌入网络+力场)SOAP 描述子+高斯过程核回归
编排范式消息经 ACE 展开,显式含 ≥3 体相互作用消息为两体张量积组合,隐式高体阶逐元素嵌入+局部描述子,无显式体阶概念基于相似性核,稀疏 GP 逼近
类型约束元素不限,周期/非周期均支持,有 89 元素基础模型元素与化学环境需自定义训练需为每个元素定义嵌入网络,数据量大时效果好外推依赖训练集覆盖,元素组合受限
学习曲线中等:命令行 CLI + ASE 接口较高:需自建训练管线较低:文档成熟、社区大较高:核方法与 QUIP 环境
生态集成ASE、LAMMPS、i-PI、PyTorchASE、LAMMPSLAMMPS、ASE、DP-GEN 主动学习闭环QUIP、LAMMPS、ASE
生产部署torchrun 多卡训练,权重导出,基础模型微调单卡训练为主,GNN 部署成本高大规模 MD 成熟,主动学习流水线完善核矩阵随训练集增大,适合中小体系
LicenseMIT(代码);权重 CC-BY-4.0MITLGPL-3.0GPL-3.0
适合谁想开箱即用、覆盖多元素体系的材料计算团队做等变网络方法研究的研究者工业大规模 MD 与主动学习团队追求小体系极高精度与可解释性的用户

选型建议:短期验证与多元素通用场景首选 MACE——免费基础模型零样本即可出结果,小样本微调链路完整;工业级大规模 MD 与主动学习闭环选 DeepMD-kit 更成熟;方法学研究和极致小样本精度可在 NequIP 与 GAP 之间选择,但二者没有开箱即用的通用势。

版本迭代

MACE 的演进主线是「方法 → 通用模型 → 生产级工具」。2022 年论文提出等变消息传递 + ACE 多体展开框架;2023 年底发布 MACE-MP-0 基础模型,使零样本跨体系预测成为现实;2024 年 v1.0 核心重写(离子基组),支持带电与离子体系;2025 年 MACE-MP-1 在修正扩充后的训练数据上重新训练,进一步降低能量与力误差。(截至训练数据,可能已有更新版本,请以官方 Release 为准)

版本时间变化提升
MACE 初版(v0.1.x)2022-06NeurIPS 2022 论文配套开源提出等变消息传递 + ACE 显式多体消息框架
MACE-MP-02023-12首个通用基础模型Materials Project 轨迹训练,89 元素,发布 small/medium/large 三档权重与 ASE 接口
MACE v1.02024核心模型重写(离子基组)支持带电/离子体系;API 相对 v0.x 有破坏性变更
MACE-MP-12025新一代基础模型修正并扩充训练数据,改善稀有元素与带电体系精度
结论

公开评测中,MACE 系模型在 rMD17 等分子基准上报告了优于同期等变基准的能量/力误差,在 WBM 等外部晶体数据集上能量误差接近 DFT 数值噪声量级,具体数值以官方论文图表为准。选型建议:新项目直接使用 v1.x 与 MACE-MP-1;沿用 v0.x 老脚本时注意 API 与参数迁移,尤其是训练命令与基础模型加载方式。

AI 应用场景

高通量材料筛选与吸附剂发现

阶段:MLIP 零样本推理 → 候选结构排序 → DFT 复核

解决的问题:DFT 逐结构筛选数万个 MOF/晶体候选耗时数月;MACE-MP 基础模型可直接批量预测形成能、吸附能,把候选空间缩小到可做完整 DFT 验证的量级,成本降低三到四个数量级。

具体案例:MACE 团队在基础模型论文中对 MOF 数据库进行 Xe/Kr 分离相关筛选,找到了纯 DFT 流程难以直接观测到的候选材料(论文中称为 non-DFT-observable),随后用 DFT 验证了预测的有效性。

大尺度分子动力学模拟

阶段:自定义势训练 → ASE/LAMMPS MD 生产

解决的问题:DFT-MD 只能覆盖数十原子、皮秒尺度;用 mace_run_train 在目标体系上训练或微调势函数后,可在 LAMMPS 中跑数万原子、纳秒级轨迹,用于电解液-电极界面、熔化/结晶、热输运等研究。

具体案例:某电池材料团队用数千条 DFT 数据微调 MACE-MP,在保持能量误差约 1 meV/原子量级的前提下,实现界面 MD 轨迹长度增加两个数量级以上,支撑离子扩散系数与界面稳定性分析。

自定义力场的小样本训练

阶段:数据生成 → 模型训练 → 结构搜索

解决的问题:针对无公开势函数的新材料体系,传统做法需要人工拟合经验势,周期长且泛化差;MACE 用小样本(数百至数千条 DFT 计算)即可训练出接近 DFT 精度的可微势,接入随机结构搜索(如 AIRSS)与过渡态搜索(NEB)。

具体案例:研究团队用约 2000 条 DFT 数据训练 128 通道 MACE 模型,对合金表面吸附构型做全局结构搜索,找到的能量最低构型与后续完整 DFT 验证结果一致,计算消耗仅为纯 DFT 搜索的约 1%。

常见误区

误区MACE-MP 覆盖 89 种元素,任何材料直接算,结果跟 DFT 一样可信。

正解MACE-MP 只在 Materials Project 弛豫轨迹的统计分布内严格可靠;对训练分布之外的电荷态、高缺陷浓度、稀有元素新组合等构型,误差可能显著高于论文报道值。官方论文同样采用微调与主动学习策略来控制外推风险,生产使用前应在目标体系的小验证集上实测能量/力误差。

为何常见:论文与模型卡强调「基础模型」「接近 DFT」,容易让读者忽略机器学习模型固有的外推边界。

误区`pip install mace-torch` 会自动装好一切,装完就能用 GPU 训练。

正解mace-torch 依赖 PyTorch,若本机没有 torch,PyPI 默认解析到 CPU 版,GPU 加速失效且训练极慢。必须先按 CUDA 版本安装 PyTorch(或指定 PyTorch 官方的 CUDA wheel 索引),再装 mace-torch,并用 torch.cuda.is_available() 验证。

为何常见:pip 的依赖自动解析让多数包「装完即用」,用户容易忽略 PyTorch 这种有 CPU/CUDA 分支的特殊依赖。

误区深度学习默认 float32,MACE 训练和推理也用 float32 没问题。

正解官方文档明确建议对几何优化、MD 与能量比较使用 default_dtype="float64"。float32 下能量与力的数值噪声会累积,导致能量差失真、优化轨迹漂移;在低对称、弱相互作用体系中尤其明显。代价是显存占用与计算时间增加,但物有所值。

为何常见:float32 是深度学习默认配置,且部分其他 MLIP 包并未强制要求 float64,用户习惯使然。

误区MACE 在晶体数据上训练,只能用于周期性结构,分子和团簇算不了。

正解MACE 同时支持周期性与非周期性体系,由 ASE Atoms 的 pbc 与 cell 自动决定;原始论文的基准就包含 rMD17 等分子数据集。非周期体系用 pbc=False(或大盒子隔离)的 Atoms 对象即可。

为何常见:MACE-MP 的宣传材料以晶体筛选为主,基础模型训练数据也来自 Materials Project,容易让人误以为只覆盖晶体领域。

误区想用自己数据训练势函数只能加载官方权重推理,训练得自己写网络代码。

正解mace_run_train 命令行内置完整训练流程,只需准备 XYZ 格式的(结构,能量,力)数据并指定若干超参数即可训练;还支持 --model="foundation" 从 MACE-MP 基础模型继续微调,小样本即可改进目标体系精度,无需任何自定义网络代码。

为何常见:多数用户最先接触的是 ASE 计算器接口(推理场景),没注意到仓库自带的训练 CLI 与官方文档 Training 章节。

面试题

Q1. 下列关于 MACE 模型的类型描述,正确的是?

单选题 · easy

  • A.基于消息传递与原子簇展开的等变 MLIP← 正确答案
  • B.基于贝叶斯优化的分子动力学软件
  • C.一种基于 DFT 的电子结构求解器
  • D.用于晶体生成的扩散生成式模型

答案:A。MACE 属于机器学习原子间势(MLIP),用消息传递神经网络加 ACE 展开学习 DFT 能量与力;它不是 DFT 求解器,也不做生成或优化调度,B/C/D 均把工具类型归属错了。

Q2. 调用 MACE-MP-0 计算单点能的正确入口是?

单选题 · easy

  • A.mace.calculators 的 mace_mp 函数← 正确答案
  • B.ase.calculators 的 MACE 计算器
  • C.import mace 后调用 potential()
  • D.命令行 mace-cli --calc

答案:A。官方 ASE 计算器入口是 from mace.calculators import mace_mp,返回一个 ASE 计算器对象;B 是常见混淆(ASE 不内置 MACE),C/D 的命令和函数并不存在。

Q3. MACE-MP-0 基础模型的训练数据主要来自?

单选题 · easy

  • A.MP 弛豫轨迹(覆盖 89 种元素)← 正确答案
  • B.ImageNet 图像分类数据集
  • C.天文光谱与巡天观测数据库
  • D.随机生成的空白晶胞集合

答案:A。MACE-MP-0 在 Materials Project 的弛豫轨迹数据集上训练,覆盖 89 种元素,因此具备跨体系零样本能力;其余选项均与原子模拟无关,属于干扰项。

Q4. mace_run_train 中 --max_L 参数的作用是?

单选题 · mid

  • A.控制球谐最高阶数与角分辨能力← 正确答案
  • B.控制消息传递层数(层数参数)
  • C.控制最大训练轮数与早停
  • D.控制原子截断半径 r_max

答案:A。--max_L 是等变特征中球谐函数的最大阶数,决定角向分辨能力与计算开销;层数由 --num_interactions 控制,截断由 --r_max 控制,轮数由 --max_num_epochs 控制。

Q5. MACE 相对 NequIP 的核心差异是?

单选题 · mid

  • A.消息经 ACE 展开含更高体阶相互作用← 正确答案
  • B.采用非等变 MLP 直接输出力场
  • C.无需任何训练数据即开箱使用
  • D.仅支持单元素体系的简单势函数

答案:A。两者都是等变消息传递网络,但 MACE 将消息通过原子簇展开线性化,可显式构造三体及以上多体消息,这是其小样本精度领先的关键;B/C/D 均与事实不符。

Q6. --energy_weight=1000 --force_weight=100 的含义是?

单选题 · mid

  • A.训练损失中能量项与力项的加权系数← 正确答案
  • B.数据集里能量样本数和力样本数
  • C.学习率为 1000,批量大小为 100
  • D.能量收敛阈值 1000,力收敛阈值 100

答案:A。MACE 训练损失是能量项与力项 MSE 的加权和,因能量误差(eV/原子)与力误差(eV/Å)数值尺度不同,需要按物理单位调节权重;官方示例常用 1000/100 组合,B/C/D 是对参数的错误解读。

Q7. 关于 MACE 基础模型的使用边界,正确的是?

单选题 · hard

  • A.分布外结构需先验证或微调再用← 正确答案
  • B.89 元素内任意体系均可做到零误差
  • C.截断半径只能取大于 5 Å 的值
  • D.只能在 Nvidia GPU 上进行推理

答案:A。MACE-MP 虽覆盖 89 种元素,但仅在训练分布内可靠;对电荷态、缺陷、稀有元素组合等未见构型,误差可能显著上升,正确做法是在小验证集上实测误差,必要时用 --model=foundation 微调。MACE 支持 CPU 推理,截断半径也可自由设置。

Q8. MACE 官方文档提供哪些计算生态接口?(多选)

多选题 · mid

  • A.ASE 计算器接口← 正确答案
  • B.LAMMPS 对接← 正确答案
  • C.i-PI 路径积分 MD 接口← 正确答案
  • D.VASP 内置模块调用 MACE

答案:ABC。官方文档提供 ASE、LAMMPS 与 i-PI 三类接口,覆盖优化、经典 MD 与路径积分 MD;VASP 是独立的商业 DFT 软件,不内置 MACE,D 错误。

Q9. 安装与使用 MACE 的注意点有哪些?(多选)

多选题 · mid

  • A.先按 CUDA 版本装 PyTorch 再装 mace-torch← 正确答案
  • B.几何优化模拟推荐使用 float64← 正确答案
  • C.无需 Python 环境即可独立运行
  • D.首次调用 mace_mp 会自动下载权重← 正确答案

答案:ABD。先装匹配的 PyTorch 可避免拉取 CPU 版导致 GPU 失效;float64 是官方对优化/MD 的建议;首次调用 mace_mp() 会从 GitHub Releases 下载权重;MACE 是 Python 包,必须运行在 Python 环境中,C 错误。

Q10. 训练 MACE 自定义势时,正确的做法是?(多选)

多选题 · hard

  • A.num_channels 与 max_L 控制模型容量← 正确答案
  • B.开启 SWA 提升鲁棒性与精度← 正确答案
  • C.用 foundation 模型继续微调减少数据需求← 正确答案
  • D.跳过能量移位直接训练保证收敛

答案:ABC。--num_channels 与 --max_L 决定模型表达能力,--swa 通过随机权重平均提升稳健性,--model="foundation" 支持从 MACE-MP 微调、显著降低数据需求;跳过能量移位(即不设置 --E0s)会让能量损失主导训练甚至发散,D 错误。