DP-GEN专题

DP-GEN上手与数据准备

用真实Si标签认识并发学习,先重画结果,再准备初始结构和训练数据。

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

下载完整输入、教学模型、实算数据和操作脚本(ZIP)。本专题按操作拆成五篇:数据准备 → 完整训练循环 → 模型偏差与筛选 → 三种DFT标注入口 → 查看任务与续算。

1 先把结果画出来#

unzip dpgen-practical-wave261-*.zip
cd dpgen-practical-wave261
bash run.sh

这个入口读取附件中的真实参考数据,生成六张PNG和七张CSV,不启动DFT、训练或MD。实际计算请继续使用后文的Slurm入口。

ls figures
ls analysis
cat README.txt

DP-GEN负责组织“训练多个势函数 → 用势函数探索结构 → 找出模型分歧较大的构型 → 用DFT重新标注 → 加回训练集”的循环。它不是另一套DFT程序,也不会自动保证训练出的势适用于任意体系。

本例在鸢算科技集群实际运行:四个独立DeePMD模型、四个短NPT探索任务、四个VASP新标签,再训练四个模型;另外用同一个候选结构演示ABACUS和CP2K。完整短流程在独立工作目录又实际运行一遍,下载包中给出的入口可以直接跟着操作。

2 先认识数据和适用范围#

初始数据来自48个真实PBE-DFT构型:24个Si二原子晶胞、24个Si八原子晶胞,含小应变和小位移。32个训练、8个验证、8个独立测试,结构编号不交叉。测试集没有传给训练器。

Si结构、候选构型与原生初始扰动结果

这个小数据集适合学习操作。原模型的NPT体积漂移很大;增加virial训练权重后仍有18.9%体积漂移。因此附件模型不用于生产模拟,短轨迹也不能给出可靠的Si平衡体积、热膨胀或输运性质。

ls data/train
ls data/valid
ls data/test
cat data/FRAME-MAP.json

每个系统目录采用DeePMD数据格式,type.raw/type_map.raw 描述元素,set.000 中有坐标、晶胞、能量、力和virial的NumPy数组。不同原子数分别放在Si2、Si8系统中。

量 本例约定
坐标、晶胞 Å
能量 eV/整个构型,取VASP自由能F
力 eV/Å
virial eV;与ASE拉伸为正的应力关系为 −Vσ
数据拆分 两种原子数各16训练、4验证、4测试

换成自己的体系时,应统一泛函、赝势、能量定义、截断和k点精度。不能把其他程序的绝对能量直接混进这组VASP标签。

3 初始结构长什么样#

完整起始 inputs/Si8.POSCAR 如下;这是用于单点标注的扰动结构,不宣称已经弛豫到平衡。

Si
 1.0000000000000000
     5.3058697433035791    0.0000000000000000    0.0000000000000000
     0.0055851353951275    5.3391001067849837    0.0000000000000000
     0.0105110273798546    0.0192626566917539    5.3201582235905791
 Si 
   8
Cartesian
  5.3118431476942618  5.3410085887471386  5.3017422206790048
  1.3032473746995079  1.3364369228675974  1.2960315511289651
  5.2728227042976865  2.7428353065609468  2.6111441360193601
  1.3567508755463908  4.0132542941091254  4.0555532636584584
  2.6705299004867116  5.3311731397583797  2.5937845602407075
  4.0108826238470385  1.3488995213572761  3.9927884875297988
  2.7069402212560809  2.6796342335588550  5.3202563595707533
  3.9384333212150513  4.0427377270033986  1.3026110239058297

周期性坐标可以位于晶胞边界附近。不要只看笛卡尔坐标是否接近盒长就判断原子重叠,应结合周期性最小距离检查。

4 生成初始扰动结构#

bash initialize.sh
ls init

入口调用原生 dpgen init_bulk 的第1、2阶段:1×1×1复制,晶格缩放0.98、1.00、1.02,每种缩放保留原构型并生成两个扰动构型,共九个Si8结构。晶胞扰动幅度0.005、原子位移幅度0.01 Å。

find init -name POSCAR
cat init_native.py

这里设置 skip_relax=true,只演示建模和扰动;没有在此入口做结构优化或AIMD。九个生成结构也没有冒充九组新增DFT标签。真正的训练标签已在 data/,下一篇从它们开始训练。原生初始化说明可用于扩展到更多初始化阶段。

5 使用哪个软件环境#

本专题采用DP-GEN 0.14.0、DPDispatcher 1.1.0、Python 3.12、DeePMD-kit 3.2.0 TensorFlow,以及与该DeePMD接口匹配的LAMMPS。每个阶段脚本单独装载模块;不要在一个计算进程中混用不同MPI/CUDA环境。

module purge
module load dpgen/0.14.0
dpgen --help

控制器在登录节点组织文件和提交任务;训练、MD和DFT计算均通过Slurm运行。后文用短脚本完成参数路径替换和模块选择,无需手写长命令。

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

查看配图

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

100%查看原图 ↗