PFD-kit专题

PFD-kit MatterSim微调与独立测试

个人目录补充训练依赖,用32个真实Si标签微调8轮,并如实比较8个独立测试结构。

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

下载结构、实际扰动结果、Si数据、预训练/微调模型和脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd pfd-entrypoint-examples
bash results.sh
bash plot.sh

PFD-kit使用集群0.10.13版,Python3.12.14。参考结构和DFT标签来自本站已有小Si例子,这次没有重新计算DFT。

1. 先准备本例的个人依赖#

集群PFD默认环境已提供DeePMD路径;MatterSim训练例子另外把依赖安装到本包 .private-deps,不修改公共环境。实际使用MatterSim1.2.5、PyTorch2.12.0、NumPy2.5.3、ASE3.29.0、e3nn0.6.0。以下只覆盖本次已运行的M3GNet训练和预测入口,不代表MatterSim全部可选工具都已配置。

cat private-requirements.txt
bash setup.sh

脚本复用PFD环境的PyTorch等基础包,用 --no-deps --target .private-deps增加精确版本。不要对公共环境直接执行无约束升级。已有 .private-deps 时脚本停止覆盖,请保留已工作的环境,或在新解压目录安装。

预训练模型为官方MatterSim-v1.0.0-1M,源码与模型按MIT许可发布;包中保留LICENSE和MODEL_CARD,校验值写在SOURCE-NOTICE。模型使用范围见官方模型卡。

2. 看清数据划分#

cat data/SPLIT.json
cat train-config.json

32个训练结构、8个验证结构、8个独立测试结构均为此前实际计算的Si真PBE标签。这次只把32训练结构交给优化器,独立测试8个从不参与训练。

安装版PFD MatterSim入口当前没有把 valid_data接入原生验证dataloader,因此不能声称已经根据这8个验证结构完成早停或最佳模型选择。本例固定8轮训练,随后单独读取测试8个评估。include_stresses保持false;若要训练应力,需先核对当前入口的多帧应力数据处理。

{
  "device": "cpu",
  "epochs": 8,
  "batch_size": 8,
  "lr": 0.0002,
  "include_forces": true,
  "include_stresses": false,
  "save_checkpoint": true,
  "ckpt_interval": 8,
  "seed": 74331,
  "re_normalize": false,
  "finetune_mode": true
}

完整JSON还包含输出目录和其他配置,见 train-config.json。这次是全模型小规模微调,不把 finetune_mode标志解释成已经冻结所有底层参数。

3. 提交训练和测试#

cat scripts/train.py
cat train.slurm
sbatch train.slurm
squeue -u "$USER"

脚本在 work/mattersim中调用原生 MatterSim().run_train(...),不是自写一套替代优化器。训练后立即执行独立测试。为避免本地分布式初始化端口冲突,脚本为当前进程选择空闲本地端口,结束后销毁进程组。

参考训练8轮完成,包含890034个可训练参数;源计算用兼容CPU运行,本例不比较CPU/GPU性能,也不宣称GPU后端已经过这套依赖组合测试。

4. 训练损失下降,测试误差却变大#

cat reference-results/native-train-metrics.txt
bash results.sh
模型 独立测试能量RMSE/eV·atom⁻¹ 力分量RMSE/eV·Å⁻¹
官方1M预训练 0.061554 0.053549
本次8轮Si微调 0.083112 0.138459

真实训练损失下降,但独立测试能量和力误差变大

力RMSE对所有原子三个笛卡尔分量统计,能量先除每帧原子数再统计。训练损失从约0.0102下降到0.0018,但两项独立测试误差都变大。这个微调模型只用来学习流程,不应替代预训练模型用于生产计算。

要改进模型,应使用训练/验证数据选择学习率、训练轮数和数据覆盖,再用未参与选择的测试集做最终评估;不要反复用同一测试集挑参数。三个坐标方向的力有限差分最大差约2.11×10⁻⁵ eV/Å,说明当前模型的能量与力接口一致;这不等于对DFT具有同样精度。

5. 单独评估已有模型#

在已分配的计算资源中,可以直接评估随包微调模型;该操作只做预测,不再训练:

module purge
module load pfd-kit/0.10.13
export PYTHONPATH="$PWD/.private-deps${PYTHONPATH:+:$PYTHONPATH}"
python3 scripts/evaluate.py
cat evaluation/summary.json

评价自己新模型时,增加 --model work/mattersim/model/last_model.pth。参考数据、自己的计算和evaluation分目录,避免把参考模型的误差误认成自己训练的结果。PFD的DeePMD微调与蒸馏完整循环另见微调和蒸馏。

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

查看配图

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

100%查看原图 ↗