PFD-kit专题

PFD-kit蒸馏:从教师标签到小学生势

真实44帧教师标签、SE学生输入,以及4000与16000步预算的对照。

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

下载输入、五个参考模型、真实数据与短命令脚本(ZIP)。蒸馏让较小网络学习教师模型的预测。它节省的是新增标签来源与模型推理成本的机会,质量和速度仍需实际测量。

1 教师标签来自哪里#

本例先把原32个训练几何去掉旧DFT标签,用微调教师重新计算能量、力与应力。随后以该教师再做300/600 K各0.1 ps探索,从42帧中选12帧并预测标签。

cat work/distill.json
cat work/DISTILL-INITIAL-TEACHER-LABELS.json
find work/distill-init-labels -name '*.extxyz'

总共44帧教师标签,学生训练使用32+9=41帧,三个新MD点作内部检查。这一步新增DFT次数为零。外部八帧DFT仍保留用于评价。

2 学生网络与完整训练输入#

SE学生的描述符层为4/8/16、拟合网络16/16,截断4.5 Å、邻居上限64,使用float64。查看完整模板:

cat configs/student-train.json
cat work/student-train.json

主要模型设置:

{
  "type_map": [
    "Si"
  ],
  "descriptor": {
    "type": "se_e2_a",
    "sel": [
      64
    ],
    "rcut_smth": 0.5,
    "rcut": 4.5,
    "neuron": [
      4,
      8,
      16
    ],
    "resnet_dt": false,
    "axis_neuron": 4,
    "precision": "float64",
    "seed": 449543222
  },
  "fitting_net": {
    "neuron": [
      16,
      16
    ],
    "resnet_dt": true,
    "precision": "float64",
    "seed": 507277234
  }
}

损失包含能量、力和总virial,文件中分别用pref_e、pref_f、pref_v设置随学习率变化的权重。它们控制拟合侧重,不能把训练损失直接当成压力GPa或生产精度。

3 为什么附件默认16000步#

我们保留了原4000步短预算学生,并用相同网络、相同标签、相同随机种子做16000步预算对照。学习率衰减随总预算变化,因此它是预算和相应衰减过程的比较,不声称逐步等同于未中断的同一训练轨迹。

模型 外部E / eV·atom⁻¹ 外部F / eV·Å⁻¹ 外部压力张量 / GPa
微调教师 0.050971 0.142766 2.172793
学生4000步 0.107738 0.398967 10.956555
学生16000步 0.050935 0.140930 2.196859

短预算模型能运行,但精度明显较差。增加训练预算后,本例学生接近教师的能量、力和压力误差。附件完整新算采用16000步,4000步模型作为参考对照保留。

相同外部DFT对照与实际冻结模型文件大小

模型文件更小不自动等于目标体系更快;本图文件大小是实际字节数,没有把它当成性能加速比。

4 自动完成后拿到学生势#

首次准备和提交:

bash prepare.sh
bash calculate.sh
bash status.sh

如果已经提交,后续只查询状态。结束后:

find work/final-distill/model -name '*.pb'
bash evaluate.sh
cat work/OWN-MODEL-ERRORS.json

这份pb是DeePMD TensorFlow模型,不是GPUMD的nep.txt,不能只改后缀就交给另一种势接口。实际接入LAMMPS或ASE时应使用匹配的DeePMD接口和元素type_map。

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

查看配图

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

100%查看原图 ↗