hiPhive专题

hiPhive 截断与阶数实测

用同一组Si温度轨迹比较五种力常数空间,分开报告训练、验证和独立种子测试误差。

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

做力常数拟合时,先保持数据划分一致,再比较截断和阶数。本例用相同600K Si64轨迹,比较三个二阶截断和两个二加三阶组合,避免把数据差异误当成模型改进。

实际模型大小和三类数据误差

1. 固定参考结构和训练划分#

Si金刚石常规晶胞2×2×2,共64原子,晶胞边长10.86Å。两条轨迹使用不同初速度种子,每条5ps准备、20ps生产,每0.1ps输出,拟合每1ps抽一帧。

用途 轨迹来源 构型数
训练 种子1,生产1–12ps 12
参数选择的验证 种子1,生产13–20ps 8
最后报告的测试 种子2,生产1–20ps 20

每个构型的全部3N个力分量归到同一部分。相隔1ps并不自动意味着统计独立,相关性示意另见有限温度拟合。

2. 按阶数定义截断#

from ase.io import read
from hiphive import ClusterSpace
ref = read('Si-reference.xyz')
spaces = ([3.0], [4.2], [5.0], [3.0, 3.0], [4.2, 3.0])
for cutoffs in spaces:
    cs = ClusterSpace(ref, cutoffs)
    print(cutoffs, cs.n_dofs)

列表只含一个数是二阶;两个数分别为二阶、三阶截断。本例5Å小于晶胞半边长5.43Å,但这个几何条件只帮助避免当前截断的明显周期重复问题,不证明超胞已收敛。三阶项仍可含同一个原子的重复位移因子,见簇空间。

3. 拟合并提取对照#

六条轨迹完成后,在已分配的计算资源内:

bash fit.sh
bash analyze.sh work fit static-checks
head -n 8 work/analysis/fit-comparison.csv
cat fit/600K-c4p2-3p0/SELECTION.json

fit_models.py 为600K的五个空间各做OLS和四个Ridge强度,还为300/900K各做一个固定5Å谐模型;fit_replicates.py 再独立拟合三个种子2谐模型。这里先比较OLS,力误差单位都是eV/Å:

FC2/FC3截断/Å 最高阶 参数数 训练RMSE 验证RMSE 独立种子测试RMSE
3 2 2 0.206641 0.207567 0.206667
4.2 2 6 0.187802 0.190305 0.185791
5 2 10 0.187190 0.190808 0.185726
3/3 3 5 0.102975 0.098506 0.109198
4.2/3 3 9 0.062725 0.058457 0.062836

4. 怎样判断结果#

二阶截断从3增到4.2Å,测试RMSE从约0.20667降到0.18579;继续增到5Å只降到0.18573,说明在这个数据和二阶模型中该段截断收益已很小。它不是所有性质、温度或超胞都收敛的证明。

加入三阶项的4.2/3Å模型测试RMSE约0.06284,比当前谐模型明显低。这是有限振幅下非谐力表达能力的改善,不能只用“参数越多越好”解释。应继续查看矩阵秩、验证误差和物理结果;本例各训练矩阵均满秩。

5. 换成自己的数据#

先准备一致晶胞和原子对应,再扩大超胞、截断、阶数或训练构型数中的一个量。验证集用于选参数,测试集留到最后。若连续多次看测试误差再修改模型,这个测试集也参与了选择,应增加真正独立的数据。不要只以训练误差下降为依据。

下载与运行#

下载Si64轨迹、输入、拟合模型与绘图脚本。解压后先看随包结果:

bash analyze.sh

结果位于 reference/analysis/,图片位于 reference/figures/。在新的解压目录重新运行全部六个温度/种子条件、拟合和声子处理:

sbatch run.slurm

默认一张P100、一个CPU核、30分钟,分区为 gpu-8p100-hs;套餐用户按自己的权限改为例如 gpu-8p100-tc。也可将六个条件并行提交:

bash submit.sh

并行入口在 submit.py 中修改分区;只生成脚本用 bash submit.sh --dry-run。全部完成后:

bash analyze.sh work fit static-checks

bash run.sh si-600K-seed1 是已经分配GPU资源后的单例入口,会做该条MD和三个末态抽查;拟合需要六条轨迹齐全,再用 bash fit.sh。不要在登录节点直接运行MD。重跑请重新解压,脚本不会覆盖已有work/fit/jobs目录。

本例环境为GPUMD5.9.1 P100构建(GCC13.3、CUDA12.9)、hiPhive1.5与Phonopy4.8.3,入口已配置所需Python工具环境。力标签由 Si_2022_NEP4_5body.txt 产生,不是DFT力;它用于低成本演示拟合与判断参数。64原子、每条20ps生产轨迹和两个种子不足以给出收敛材料频移、完整稳定性或精度排名。

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

查看配图

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

100%查看原图 ↗