DeePMD冻结、压缩与模型转换对照
对同一模型比较原生pth、压缩、CPU与GPU,说明转换适用范围。
阅读本篇目录
下载结构、标签、完整JSON、冻结模型、参考结果和脚本。解压到自己的工作目录,以下命令从附件根目录开始。预处理可交互操作;训练、批量预测和MD在申请的计算资源内运行。所有新结果进入work,不覆盖reference。
1. 冻结模型#
cd work/dpa1-500
dp --pt freeze -o model.pth
cd ../..
公开附件已有冻结参考权重;续训检查点由自己的训练产生,不能从冻结文件恢复优化器。
2. 压缩se_e2_a模型#
在已申请资源中,从附件根目录复制到新目录,保持输入中的数据相对路径:
module load deepmd-kit/3.2.0
mkdir -p work/compress
cp reference/se_e2_a/model.pth work/compress/model.pth
cp inputs/se_e2_a/input.json work/compress/input.json
cd work/compress
dp --pt compress -i model.pth -o model-compressed.pth -t input.json
dp --pt test -m model.pth -s ../../data/test -n 3 -d original
dp --pt test -m model-compressed.pth -s ../../data/test -n 3 -d compressed
cd ../..
实际原模型与压缩模型在3帧上:总能最大差0eV、力约4.1E-16eV/Å、virial约1.6E-14eV;这是同一模型的数值对照,不是对DFT的精度。小体系时间受加载和启动影响,不据此宣称加速倍数。
3. CPU与GPU数值#
本例原生pth在CPU和P100预测最大差:能量0、力8.84E-17eV/Å、virial3.56E-15eV。CPU/GPU差异极小,但模型对DFT的力误差仍约1.31eV/Å,不能把后端一致误认为模型准确。
4. 转换后必须重测#
原生命令形式为:
dp convert-backend model.pth model.pb
dp convert-backend model.pth model.dp
dp convert-backend model.pth model.pt2
这些格式有后端和描述符条件。本例当前3.2.0源码构建中,se_e2_a转换成TF后同权重测试并不等价,最大总能差0.231665eV、力差0.061570eV/Å、virial差3.396001eV;portable格式能量一致但F/W出现非有限值。因此继续用已验证的原生pth,或在TensorFlow中直接训练/测试自己的pb,不能把这些转换产物用于MD。
DPA1/2/3的P100 pt2 GPU导出依赖Triton,当前要求计算能力至少7.0,而P100是6.0;普通pth训练/推断可用。隐藏CUDA可以生成CPU pt2文件,但该构建导出的力/virial图依赖CUDA算子,CPU推断也不适用。这里提供可用的pth路线,附件不分发pt2。
reference/backend保留实际数组供对照;任何新模型和新环境都应重新检查E/F/W及应力符号,不能只依据文件已生成。