DeePMD模型格式与七种后端
用同一个Si64教学模型认识各后端格式,准备个人环境并读取结构与参考数据。
阅读本篇目录
本例适合已经有DeePMD模型、准备更换运行后端或检查模型格式的用户。先准备个人环境和四个结构,再运行同权重对照,最后了解CPU与GPU的操作差别。
1 下载与解压#
下载完整示例包,把ZIP放在自己的工作目录,再执行:
mkdir Si64-backends
python3 -m zipfile -e si64-deepmd-backends-*.zip Si64-backends
cd Si64-backends
示例包含原始模型、四个周期结构、原始参考数组、转换程序、Slurm脚本生成器和绘图程序。原始模型SHA256为 3624a5cfc4078b887c6be4ef706a475734f057f18427a1fa88bda243394547c3;ZIP自己的SHA256见本页末尾。
2 准备个人后端环境#
bash setup.sh
脚本在当前目录建立 .venv,继承集群 deepmd-kit/3.2.0 的基础环境,然后安装固定版本的个人依赖,不更改公共模块。首次安装需要联网和数GB空间,保留 requirements-lock.txt、requirements-gpu-lock.txt 即可核对版本及下载文件哈希。安装未结束时先查看终端报错,勿另开同目录重复安装。
本例使用Python3.12、DeePMD-kit3.2.0、PyTorch2.12.0、TensorFlow2.21.0、JAX0.12.0.1和Paddle3.3.0。公共源码版依托GCC13.3与CUDA12.9环境;个人JAX GPU组件使用CUDA12系列和cuDNN9.10.2.21。本例的Paddle依赖是CPU版。
3 四个真实输入结构#
python3 code/show_inputs.py
四个输入均有64个Si原子:scale0.98、scale1、scale1.02 和 perturbed。前三个是同一个周期金刚石结构的均匀缩放,立方盒边长依次为10.6428、10.8600、11.0772 Å;最后一个使用原盒子加小幅原子扰动。程序读取下载包内已经固定的坐标,不会每次重新随机生成。
source/*.xyz 是带晶胞信息的扩展XYZ,可用OVITO读取;source/GEOMETRIES.json 给Python接口提供坐标和九分量晶胞数组。本文沿用本站的硅势教学模型,比较同一个函数在各后端的表示,不用四个结构宣称生产硅势的材料精度。

4 后端名称、文件后缀与输出范围#
| 后端 | 本例文件 | 本例原生输出 |
|---|---|---|
| PyTorch | .pth |
能量、力、virial |
| NumPy / DPModel | .dp |
有限能量;力和virial返回NaN |
| TensorFlow 1 | .pb |
等价导出后为能量、力、virial |
| TensorFlow 2 | .savedmodeltf目录 |
能量、力、virial |
| JAX | .hlo |
能量、力、virial;按目标平台导出 |
| Paddle | .pd检查点 |
本例用CPU原生接口读出能量、力、virial |
| PyTorch Export | .pte |
能量、力、virial;按CPU或CUDA设备导出 |
这些是本例 se_e2_a 单元素能量模型的结果,不表示每一种描述符、张量模型或扩展都能任意跨后端转换。pretrained 用于解析预训练模型名称,不作为第八个独立数值引擎。NumPy的NaN表示该接口没有提供相应原生导数,不能用0代替。

5 先看附带结果,还是自己重新算?#
bash analyze.sh
这个命令只核对下载包中的参考文件和数组,并生成 tables-reference/backend-results.csv;没有重新训练模型,也没有重新执行原生后端。真正提交自己的新计算,接着运行下一篇的 bash run.sh。
模型转换及后端选择依据:DeePMD-kit3.2.0官方版本。ZIP SHA256:0fd10a35a6a95a2247eb5da77ba45e7e72a5c90c95784b5508afcaea81ee1146。