乐于分享
好东西不私藏

PACE 与 Pacemaker 教程文档(AI中文译稿)

PACE 与 Pacemaker 教程文档(AI中文译稿)

PACE 与 Pacemaker 教程文档(中文译稿)

仓库说明

本仓库包含 PACE 与 Pacemaker 拟合工具的教程文件。

教程幻灯片 见此链接


环境准备

通过超算仪表盘 (https://www.puhti.csc.fi/pun/sys/dashboard/) 启动 Jupyter:

  • 分区:interactive(交互式)
  • 资源:32 核(推荐)/ 16 核(尚可)
  • 时长:4 小时
  • 环境设置:Python - tensorflow
  • Jupyter 类型:Lab
  • 工作目录/user/[你的用户名]

连接至 Jupyter 后,在 JupyterLab 中打开终端(Ctrl+Shift+L → Terminal)。


安装 Pacemaker(含 python-ace 与 tensorpotential)

echo'export PYTHONPATH=$HOME/.local/lib/python3.9/site-packages/:$PYTHONPATH' >> ~/.bashrc 
source ~/.bashrc
cd
mkdir tools

1. 安装 python-ace

cd ~/tools
git clone https://github.com/ICAMS/python-ace.git
cd python-ace
pip install . --user
cd lib/maxvolpy
pip install . --user

2. 安装 TensorPotential

cd ~/tools
git clone https://github.com/ICAMS/TensorPotential.git
cd TensorPotential
pip install . --user

3. 编译支持 PACE 的 LAMMPS

cd ~/tools/
git clone --depth 1 --branch develop https://github.com/lammps/lammps.git lammps
cd lammps/
mkdir build && cd build/
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MPI=ON -DPKG_ML-PACE=ON ../cmake
cmake --build . -- -j 
make install

获取教程数据

cd ~
git clone https://github.com/yury-lysogorskiy/pace-tutorial.git
cd pace-tutorial
tar zxvf AlLi_vasp_data.tar.gz

教程正文

一、DFT 数据收集

cd AlLi_vasp_data
pace_collect --free-atom-energy auto --output-dataset-filename AlLi.pkl.gz

二、Pacemaker:自动生成输入文件

准备文件夹并复制数据集:

cd ~/pace-tutorial
mkdir AlLi_fit && cd AlLi_fit
cp ../AlLi_vasp_data/AlLi.pkl.gz .

运行自动配置:

pacemaker -t

按提示依次输入:

Generating 'input.yaml'
Enter training dataset filename: AlLi.pkl.gz
Enter testset fraction or size: 0.05
Please enter list of elements: [回车,自动识别]
Enter number of functions per element: 300
Enter cutoff (Angstrom, default:7.0): 6.0
Enter weighting scheme type - `uniform` or `energy`: energy
Input file is written into `input.yaml`

三、Pacemaker:拟合势函数

若当前目录已有 input.yaml,直接执行:

pacemaker

运行结束后,若成功则生成 output_potential.yaml;无论成功与否都会生成 interim_potential_0.yaml(始终保存最新版本)。建议将其重命名:

mv interim_potential_0.yaml AlLi.yaml

四、pace_activeset:计算活性集(Active Set)

pace_activeset -d fitting_data_info.pckl.gzip AlLi.yaml

五、LAMMPS:运行含不确定性指示的分子动力学

进入 AlLi-LAMMPS 目录并执行:

cd ~/pace-tutorial/AlLi-LAMMPS
lmp -in in.lammps

检查输出:

  • 若 extrapolative_structures.dump 为空,说明未发生外推;
  • 查看 log.lammps 中的 c_max_pace_gamma 列。

可尝试增大超胞、调整温度曲线、切换 NPT 系综或改变原子类型以触发外推。注意:LAMMPS 会覆盖 extrapolative_structures.dump,请提前备份。

六、pace_select:为主动学习选取结构

pace_select -p AlLi.yaml -a AlLi.asi -e "Al Li" -m 20 -o selected/POSCAR extrapolative_structures.dump

七、(选做)主动探索(Active Exploration)

参考 ~/tools/python-ace/examples/Active_Exploration.ipynb,将其适配至 Al/Li 体系及你的 AlLi.yaml/asi 势函数。


延伸阅读

  • 在线文档
  • Lysogorskiy Y. 等, Active learning strategies for atomic cluster expansion models, Phys. Rev. Materials 7, 043801 (2023)
  • Bochkarev A. 等, Efficient parametrization of the atomic cluster expansion, Phys. Rev. Materials 6(1), 013804 (2022)
  • Lysogorskiy Y. 等, Performant implementation of the atomic cluster expansion (PACE), npj Comput. Mater. 7, 1-12 (2021)
  • Drautz R., Atomic cluster expansion for accurate and transferable interatomic potentials, Phys. Rev. B 99, 014104 (2019)

博导点评

总体评价:这是一份来自 Ruhr-Universität Bochum ICAMS 团队的高质量技术教程,覆盖了从第一性原理数据收集 → 机器学习势拟合 → 分子动力学验证 → 主动学习迭代的完整闭环。对于从事材料计算、尤其是数据驱动势函数开发方向的研究生而言,这是入门 ACE/PACE 框架不可多得的实操材料。


一、值得肯定的方面

1. 流程设计完整,体现了现代 MLIP(机器学习原子间势)开发的标准范式

该教程并非简单的"跑一个例子",而是完整呈现了当代 MLIP 研究的四大核心环节:

  • 数据工程pace_collect 打包 DFT 数据)
  • 模型训练pacemaker 自动调参与拟合)
  • 不确定性量化pace_activeset + c_max_pace_gamma 外推检测)
  • 主动学习闭环pace_select 选取新结构补充训练集)

这与我们组里强调的 "DFT-data → model → MD-validation → active learning → DFT" 迭代范式完全一致。能把这个流程走通的学生,基本上就具备了独立开展 MLIP 研究的能力。

2. 对超算环境的考虑较为务实

教程基于 CSC 的 Puhti/Mahti 超算编写,明确给出了 Jupyter Lab 的启动配置(32 核、TensorFlow 环境、4 小时交互式分区)。对于刚接触超算的学生来说,这种"手把手"式的环境配置指导能显著降低入门门槛。pip install . --user 和 PYTHONPATH 的设置也体现了在无 root 权限环境下部署科学软件的成熟经验。

3. 关键参数给出了合理的默认值,同时保留了可调空间

例如:

  • 截断半径 6.0 Å(对于 Al-Li 这类金属体系是合理的)
  • 基函数数量 300(在精度与计算成本之间取了平衡)
  • 能量加权(energy weighting)而非均匀加权,这对于能量景观复杂的合金体系尤为重要

这些默认值的选取反映了开发团队对 ACE 势函数参数化经验的积累。


二、需要提醒与深化理解的地方

1. 不要停留在"跑通例子",要理解每一步的物理与数学内涵

  • pace_collect 中的 --free-atom-energy auto:这里涉及的是原子参考能的选取问题。ACE 势通常以孤立原子能量为参考,但不同元素的单原子能量如何定义(spin-polarized or not?)会直接影响拟合的绝对能量值。建议你去读 Drautz 2019 的原文,理解 ACE 的多体展开是如何从原子基态出发构建的。
  • 活性集(Active Set)与 B 矩阵pace_activeset 计算的是设计矩阵(design matrix)中一组线性无关的基函数组合,其物理意义是确定模型在哪些化学环境上有可靠的数据支撑c_max_pace_gamma 本质上是一种杠杆值(leverage score)Mahalanobis 距离的变体,用于衡量新结构是否落在训练分布之外。这不是简单的"阈值判断",而是涉及统计学习理论中的外推(extrapolation)概念。

2. 对拟合质量的评估不能只看"跑完了"

教程中 pacemaker 运行结束后只提到重命名输出文件,但没有详细说明如何诊断拟合质量。作为导师,我要求你至少检查以下几点:

  • 训练集与测试集的 RMSE/MAE(能量、力、应力)
  • 能量-体积曲线(EOS)与 DFT 的对比
  • 声子谱是否出现虚频(这是势函数稳定性的硬指标)
  • 对已知缺陷(如空位、层错)形成能的预测精度

3. LAMMPS 编译环节是常见的"卡脖子"点

教程中的 LAMMPS 编译命令看似简单,但在实际超算环境中,学生经常遇到:

  • CMake 版本过低(需要 ≥3.16)
  • MPI 库与编译器不匹配(GCC vs Intel vs Cray)
  • 缺少 yaml-cpp 或 Eigen3 依赖

建议:在正式用于科研前,先用 lmp -h | grep pace 确认 PACE 包已正确加载,并用一个小体系(如 32 原子的 FCC Al)跑 100 步 NVE 验证能量守恒。

4. 主动学习(Active Learning)策略需要批判性思考

教程最后提到了 pace_select 和 Active Exploration,但主动学习的效率高度依赖于"选择策略"pace_select 基于外推指标(gamma 值)选结构,这是一种不确定性驱动的策略。然而:

  • 如果初始训练集覆盖不足,早期外推可能是系统性的,而非随机的;
  • 对于多元合金,成分空间的采样是否充分?
  • 是否考虑了动力学稳定性?有些结构虽然 gamma 值高,但可能是动力学不稳定的(如虚假的高能构型),直接做 DFT 会浪费机时。

建议结合 query-by-committee 或 dynamics-based exploration(如元动力学、超平面约束)来丰富采样策略,不要单一依赖 gamma 值。


三、给你的学习建议

阶段
任务
预期成果
第 1-2 周
在超算上完整跑通 AlLi 教程,记录每一步的输出与报错
一份详细的安装与运行日志
第 3-4 周
将体系迁移至你自己的研究对象(如 Mg-Y、Ti-Al 等),重复数据收集与拟合
至少一个可运行的 input.yaml 和初步势函数
第 5-6 周
用 LAMMPS 计算该体系的基本性质(晶格常数、弹性常数、缺陷能),并与 DFT/实验对比
一份势函数验证报告
第 7-8 周
实现 2-3 轮主动学习迭代,观察测试集 RMSE 随迭代的变化
收敛的主动学习曲线与外推结构分析
长期
阅读 Lysogorskiy 2021 (npj) 和 Bochkarev 2022 (PRM) 的原文,理解 PACE 的算法优化(稀疏矩阵、并行策略)
能够向组会报告 PACE 与 SNAP、GAP、NEP 等方法的技术差异

四、总结

这份教程是入门的优质地图,但不是科研的终点。它能带你快速建立"数据 → 模型 → 模拟 → 迭代"的工程能力,但真正的科研突破来自于对原子团簇展开(ACE)数学结构的深刻理解,以及对材料物理问题的敏锐把握。

下一步:跑通后,不要急着发文章。先回答我三个问题:

  1. 为什么 ACE 的基函数数量(300)和截断半径(6.0 Å)对 Al-Li 体系是足够的?如果换成含有长程相互作用的离子体系,你需要如何调整?
  2. c_max_pace_gamma 的数值大小与外推风险之间是线性关系吗?如果不是,你如何建立一个更可靠的"外推警报"机制?
  3. 如果你的主动学习迭代 5 轮后测试集误差不再下降,是数据饱和了,还是模型表达能力(basis size)到了瓶颈?

把这三个问题想清楚了,你才算真正"学会"了这个教程,而不仅仅是"跑完"了它。


参考链接🔗点击阅读原文可跳转:https://github.com/yury-lysogorskiy/pace-tutorial

导师签字(Kimi-AI)
2026年8月

Further reading

  • Online documentation
  • Lysogorskiy Y., Bochkarev A., Mrovec M., Drautz R., Active learning strategies for atomic cluster expansion models, Phys. Rev. Materials 7, 043801 (2023)
  • Bochkarev, A., Lysogorskiy, Y., Menon, S., Qamar, M., Mrovec, M. and Drautz, R. Efficient parametrization of the atomic cluster expansion. Physical Review Materials 6(1) 013804 (2022)
  • Lysogorskiy, Y., Oord, C. v. d., Bochkarev, A., Menon, S., Rinaldi, M., Hammerschmidt, T., Mrovec, M., Thompson, A., Csányi, G., Ortner, C. and  Drautz, R. Performant implementation of the atomic cluster expansion (PACE) and application to copper and silicon. npj Computational Materials 7(1), 1-12 (2021)
  • Drautz, R. Atomic cluster expansion for accurate and transferable interatomic potentials. Physical Review B, 99(1), 014104 (2019)