LAMMPS 专题

LAMMPS ML-IAP神经网络势实操

使用公开铜SNA和硅SO3神经网络模型,从终端提交、读取逐原子能量与力,理解配套模型和描述符。

更新于 2026-11-11约 7 分钟阅读按任务与环境选择适用配置
阅读本篇目录

已有神经网络势的使用可以从小结构开始:准备结构,配对模型与描述符,运行固定结构的能量和力,再逐步加入自己的优化或MD设置。本篇使用LAMMPS随附的铜、硅模型,不重新训练,也没有将模型对真实材料的精度作验证。

1 下载并读取参考结果#

下载铜SNA与硅SO3神经网络势完整包,放到登录目录:

mkdir MLIAP-NN
python3 -m zipfile -e lammps-MLIAP-neural-*.zip MLIAP-NN
cd MLIAP-NN
bash analyze.sh
head -n 10 tables/energies-forces.csv

这一步只分析包内数据,生成CSV和四张图,不提交计算。reference/中有P100/V10016G、普通/Kokkos求力路径的32个参考条件。

模型 实际结构 描述符 网络 配套文件
铜 FCC常规胞3×3×3,108原子,a=3.615 Å SNA,30个分量 30→2→2→1 Cu.nn.mliap.model、Cu.snap.mliap.descriptor
硅 金刚石常规胞2×2×2,64原子,a=5.43 Å SO3,30个分量 30→16→16→1 Si.nn.mliap.model、Si.nn.mliap.descriptor

两者均为三维周期边界,分别比较晶格缩放0.98、1.00、1.02和随机扰动0.03 Å的结构。

实际铜和硅扰动结构的xy投影

颜色表示z坐标,同一xy位置可能有沿z方向重合的原子。结构由输入生成,没有用优化后的理想坐标替换实际输出。

2 提交自己的小算例#

bash run.sh

默认在有权限的核时P100分区申请1GPU、2个CPU核额度,顺序完成所选硬件的16个条件。V10016G用户将命令换为 bash run.sh v100。普通路径和Kokkos路径都在计算节点的同一个资源分配中运行,普通路径用于数值对照;没有拿它作为CPU性能测试。

脚本等待已提交作业,不必重复启动;可另开终端执行 squeue -u "$USER" 查看状态,提交号在 new-work/SUBMISSIONS.json。新结果保存在 new-work/,输出汇总为:

head -n 10 tables-new/your-energies-forces.csv

每个条件只有9次零步能量/力求值,没有MD积分。除了基准求值,还包括三个坐标各±δ的力差分,以及两个均匀晶格微应变条件的压力差分。重做时另建目录解压,保留已有数据。

3 势函数如何写进输入#

cat input-example.lmp

下面是实际铜SNA神经网络输入。model nn 读取网络权重,descriptor sna 读取邻域描述符;pair_coeff中的 Cu 完成原子类型映射。

units metal
atom_style atomic
boundary p p p
read_data ../models/Cu_sna-perturbed.data
pair_style mliap model nn ../potentials/Cu.nn.mliap.model descriptor sna ../potentials/Cu.snap.mliap.descriptor
pair_coeff * * Cu
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
compute e all pe/atom
compute b all sna/atom 5.0 0.99363 6 0.5 1 rmin0 0 bzeroflag 0 quadraticflag 0
thermo 1
thermo_style custom step atoms pe press vol pxx pyy pzz
thermo_modify norm no format float %.16g
dump d all custom 1 base.dump id type x y z fx fy fz c_e c_b[*]
dump_modify d sort id format float %.16g
run 0
undump d
print "base $(pe:%.16g) $(press:%.16g) $(vol:%.16g)" append properties.dat screen no
group probe id 1
displace_atoms probe move 1e-05 0 0 units box
run 0
print "FD 1 0 plus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move -2e-05 0 0 units box
run 0
print "FD 1 0 minus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 1e-05 0 0 units box
group probe delete
group probe id 17
displace_atoms probe move 0 1e-05 0 units box
run 0
print "FD 17 1 plus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 -2e-05 0 units box
run 0
print "FD 17 1 minus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 1e-05 0 units box
group probe delete
group probe id 43
displace_atoms probe move 0 0 1e-05 units box
run 0
print "FD 43 2 plus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 0 -2e-05 units box
run 0
print "FD 43 2 minus $(pe:%.16g)" append properties.dat screen no
displace_atoms probe move 0 0 1e-05 units box
group probe delete
change_box all x scale 1.00001 y scale 1.00001 z scale 1.00001 remap
run 0
print "strain plus $(pe:%.16g) $(vol:%.16g)" append properties.dat screen no
change_box all x scale 0.999980000199998 y scale 0.999980000199998 z scale 0.999980000199998 remap
run 0
print "strain minus $(pe:%.16g) $(vol:%.16g)" append properties.dat screen no

硅的配套设置为:

pair_style mliap model nn ../potentials/Si.nn.mliap.model descriptor so3 ../potentials/Si.nn.mliap.descriptor
pair_coeff * * Si

描述符和网络必须成套。相同的30维长度并不意味着SNA与SO3可以互换,也不能把铜的权重用到硅。网络文件头部的 NET 说明输入维数、层数和每层激活函数;本例隐藏层为tanh,输出层为linear。

Kokkos求解命令由作业脚本执行:mpirun -np 1 --bind-to none lmp -k on g 1 -sf kk -pk kokkos newton on neigh half gpu/aware off -in in.lmp。无需在登录节点直接运行LAMMPS。

4 看实际能量,再考虑自己的材料#

P100普通路径 每原子能量/eV 原生压力/bar
铜基准晶格 -4.093664915 857.736320
铜扰动结构 -4.086840208 3945.717166
硅基准晶格 -3.837637403 -10690.754034
硅扰动结构 -3.833995023 -9568.038302

铜SNA和硅SO3模型在三个固定晶格尺度的实际能量

三点折线连接实际固定结构,不是EOS拟合。硅模型在这三个尺度内的最低值落在扫描边界,也没有据此求平衡晶格。基准晶格未针对该势优化,压力不为零是需要注意的实际结果。

这些模型各自具有能量零点和训练范围,不能与另一份势的总能量直接混合。用于自己的优化或MD前,应了解势的训练来源,补充代表性构型、力和压力对照,再检查温度、应变及缺陷是否超出适用范围。MACE/PyTorch等接口还需要各自的Python支持和模型文件,不由这两个原生NN例子自动覆盖。

本例环境为LAMMPS 30 Sep 2026、GCC13.3、CUDA12.8、OpenMPI5.0.10、Kokkos5.2.1;分析用ASE3.29.0环境中的NumPy和Matplotlib。继续看神经网络势的力与压力分析;接口说明见官方ML-IAP文档。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗