Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
Bohrium 帮助文档|DP-GEN init
Bohrium 帮助文档
LBG Utility
DP-GEN
Bohrium 帮助文档LBG UtilityDP-GEN
Bohrium
MileAway
发布于 2023-10-16
推荐镜像 :Basic Image:bohrium-notebook:2023-04-07
推荐机型 :c2_m4_cpu
3
DP-GEN init
步骤1:准备输入文件
关于INCAR
关于param.json和machine.json
步骤 2:DP-GEN init
步骤3:监测任务状态与运行结果

DP-GEN init

本教程基于 Bohrium 演示如何进行DP-GEN init。

init有三个子命令,init_bulk,init_surf与init_reaction

  • init_bulk : Generating initial data for bulk systems.
  1. Relax in folder 00.place_ele
  2. Perturb and scale in folder 01.scale_pert
  3. Run a short AIMD in folder 02.md
  4. Collect data in folder 02.md.
  • init_surf : Generating initial data for surface systems.
  1. Build specific surface in folder 00.place_ele
  2. Pertub and scale in folder 01.scale_pert
  • init_reaction : Generating initial data for reactive systems.
  1. Exploring: LAMMPS
  2. Sampling: MDDatasetBuilder
  3. Labeling: Gaussian

介绍与参数说明详见DP-GEN's doc

这里以Li-Si晶体结构为例,详细讲解init_bulk的用法。

步骤1:准备输入文件

输入文件清单

  • INCAR文件: INCAR_md INCAR_rlx
  • POTCAR(每个元素指定一个文件)
  • POSCAR (不一定需要)
  • param.json
  • machine.json

关于INCAR

在init需要两个INCAR文件,分别是INCAR_md, INCAR_rlx,分别对应原子弛豫,分子动力学计算两种任务类型。

本例中INCAR文件如下:

代码
文本
INCAR_rlx
#Parameters
SYSTEM = dpgen_rlx
PREC = A
ISTART = 0
ICHARG = 2
#Electronic Relaxation
ENCUT = 650
NELM = 100
NELMIN = 6
NELMDL = -5
EDIFF = 1e-06
LREAL = .False.
ALGO = Fast # or Normal
#Ionic Relaxation
IBRION = 2
POTIM = 0.2
ISIF = 3
EDIFFG = -0.01
ISYM = 0
NSW = 100
ISMEAR = 0
SIGMA = 0.1
# Write flags
LWAVE = .False.
LCHARG = .False.
KSPACING = 0.16
KGAMMA = .False.
#KPAR = 1
#NPAR = 1
PSTRESS = 0.0
NCORE = 4
代码
文本

INCAR_md

代码
文本
#Parameters
SYSTEM = dpgen_md
PREC = A
ISTART = 0
ICHARG = 2
#Electronic Relaxation 
ENCUT = 650 
NELM = 100 
NELMIN = 6
NELMDL = -5 
EDIFF = 1e-06
LREAL = False
ALGO = Fast # or normal
#Ionic relaxation
IBRION = 0
ISIF = 2
#EDIFFG = -0.01 in
ISYM = 0
NSW = 10 
ISMEAR = 0
SIGMA = 0.1 
# MD related
SMASS = 0 
POTIM = 2
TEBEG = 100
TEEND = 100
NBLOCK = 1
KBLOCK = 100
# Write flags
LWAVE = False
LCHARG = False
#parallel related
#KPAR = 4
#NPAR = 1
KSPACING = 0.16
KGAMMA = False
PSTRESS = 0.0
NCORE = 4
代码
文本

关于param.json和machine.json

param.jsonmachine.json是dpgen运行的关键参数文件。param.json是告诉dpgen这个计算任务是什么样的,而machine.json是告诉dpgen你在一个什么样的环境,用着什么机器在计算。

本例param.json

代码
文本
{
    "stages" : [1,2,3,4],
    "elements": ["Li","Si"],
    "cell_type": "diamond",
    "latt": 10.0,
    "super_cell": [1, 1, 1],
    "potcars":  ["..../POTCAR_Li","..../POTCAR_Si"], 
    "relax_incar": "./INCAR_rlx",
    "md_incar" : "./INCAR_md",
    "skip_relax": false,
    "scale": [0.990,1.00,1.01],
    "pert_numb": 10,
    "pert_box": 0.03,
    "pert_atom": 0.01,
    "md_nstep" : 10,
    "coll_ndata": 5000,
    "type_map" : ["Li","Si"],
    "_comment": "that's all"
}
代码
文本

说明:

  1. 检查路径 请检查"potcars""relax_incar""md_incar"要改为用户指定的文件的路径(绝对路径或相对路径)。

  2. 指定构象 如果想用POSCAR来做init步骤,需要添加两个参数来指定POSCAR文件

代码
文本
   "from_poscar": true,
   "from_poscar_path": "<your-POSCAR>",
代码
文本

而在本例的参数文件中,用"cell_type""latt"参数说明构象类型,自动生成 diamond类型的LiSi合金。DP-GEN 0.10.6及以上的版本支持的"cell_type""hcp""fcc""diamond""sc""bcc",请根据具体需要或文献中的说明选择构象。

  1. 指定步骤 相比于dpgen run中用record.dpgen记录步骤,init并没有这一文件。指定步骤的方式是在dpgen.log中查看目前哪一步骤,用"stages"参数指定开始到结束步骤。init_bulk有[1, 2, 3, 4]四个步骤,init_surf有[1, 2]两个步骤。比如init_bulk中,成功进行了弛豫,但在第二步做扰动的时候报错了,就可以把"stages"设为[2, 3, 4],从第二步开始跑。

machine.json:

代码
文本
{
  "api_version": "1.0",
  "deepmd_version": "2.1.0",
  "train" :[
    {
      "command": "dp",
      "machine": {
        "batch_type": "Lebesgue",
        "context_type": "LebesgueContext",
        "local_root" : "./",
        "remote_profile":{
          "email": "",
          "password": "",
          "program_id": ,
            "keep_backup":true,
            "input_data":{
                "job_type": "indicate",
                "log_file": "00*/train.log",
                "grouped":true,
                "job_name": "dpgen_train_job",
                "disk_size": 100,
                "scass_type":"c4_m15_1 * NVIDIA T4",
                "checkpoint_files":["00*/checkpoint","00*/model.ckpt*"],
                "checkpoint_time":30,
                "platform": "ali",
                "job_type": "container",
                "image_name": "registry.dp.tech/dptech/deepmd-kit:2.1.5-cuda11.6" , # 此处填写DeePkit镜像名
                "on_demand":0
            }
        }
      },
      "resources": {
        "number_node": 1,
        "cpu_per_node": 4,
        "gpu_per_node": 1,
        "queue_name": "T4_4_15",
        "group_size": 1
      }
    }
  ],
  "model_devi":
    [{
      "command": "lmp -i input.lammps -v restart 0",
      "machine": {
        "batch_type": "Lebesgue",
        "context_type": "LebesgueContext",
        "local_root" : "./",
        "remote_profile":{
          "email": "",
          "password": "",
          "program_id": ,
            "keep_backup":true,
            "input_data":{
              "job_type": "indicate",
              "log_file": "*/model_devi.log",
              "grouped":true,
              "job_name": "dpgen_model_devi_job",
              "disk_size": 200,
              "scass_type":"c4_m15_1 * NVIDIA T4",
              "platform": "ali",
              "job_type": "container",
              "image_name": "registry.dp.tech/dptech/deepmd-kit:2.1.5-cuda11.6" ,   # 此处填写Deepkit镜像名,lammps已接入
              "on_demand":0
            }
        }
      },
      "resources": {
        "number_node": 1,
        "cpu_per_node": 4,
        "gpu_per_node": 1,
        "queue_name": "T4_4_15",
        "group_size": 50
      }
    }
  ],
  "fp":
    [{
      "command": "limit -m unlimited; ulimit -s unlimited; mpirun vasp_std",
      "machine": {
        "batch_type": "Lebesgue",
        "context_type": "LebesgueContext",
        "local_root" : "./",
        "remote_profile":{
          "email": "",
          "password": "",
          "program_id": ,
            "input_data":{
              "api_version":2,
              "job_type": "indicate",
              "log_file": "task*/fp.log",
              "grouped":true,
              "job_name": "dpgen_fp_job",
              "disk_size": 100,
              "scass_type":"c16_m32_cpu",
              "platform": "ali",
                  "job_type": "container",
              "image_name":"# 此处填写VASP镜像名",   
              "on_demand":0
            }
        }
      },
      "resources": {
        "number_node": 1,
        "cpu_per_node": 16,
        "gpu_per_node": 0,
        "queue_name": "CPU",
        "group_size": 50, 
        "source_list": ["/opt/intel/oneapi/setvars.sh"]
      }
    }
  ]
}
代码
文本

说明:

  1. 镜像

在本次示例中我们指定了训练部分使用LBG_DeePMD-kit_2.0.1_v1,探索部分使用LBG_DeePMD-kit_2.0.1_v1镜像(该镜像中也包含了与DeePMD-kit结合的LAMMPS程序),标记部分使用了 VASP镜像(如需使用VASP镜像,请提供您的VASP授权凭证至 bohrium@dp.tech 邮箱)。

假如您希望更换计算镜像,可通过machine.json文件中的image_name指定,如希望使用DeePMD-kit 2.1.3版本,只需要将镜像名更改为 LBG_DeePMD-kit_2.1.3_v1 。镜像名可在“镜像中心”页面查看。

  1. 请注意检查fp的"command"部分,以及"resouce"下的"source_list"。如果出现软件调用权限方面的报错,很可能与这两个参数有关。

准备完成,文件夹目录如下

代码
文本
[ ]
! ls
代码
文本
INCAR_md  INCAR_rlx  INCAR_scf  POTCAR_Li  machine.json  param.json  POTCAR_Si
代码
文本

步骤 2:DP-GEN init

在放有准备文件的文件夹目录下运行

代码
文本
[ ]
!nohup dpgen init_bulk param.json machine.json 1>log 2>err&
代码
文本

打开 Bohrium-任务管理 你可以看到刚刚成功提交的任务。init_bulk会做两次fp步骤,分别是弛豫与分子动力学模拟。

任务完成后,检查目录:

看目录结构使用tree命令,需要apt install tree安装tree,然后在文件目录下用tree命令即可看到树状图

.
├── dpdispatcher.log
├── dpgen.log
├── err
├── INCAR_md
├── INCAR_rlx
├── INCAR_scf
├── lisi.diamond.01x01x01
│   ├── 00.place_ele
│   │   ├── 备份文件等
│   │   ├── INCAR
│   │   ├── POSCAR
│   │   ├── POSCAR.unit
│   │   ├── POTCAR
│   │   ├── run_1659588706.sh
│   │   ├── run_1659589787.sh
│   │   ├── run_1659590393.sh
│   │   ├── sys-0001-0001
│   │   │   ├── 806905fcd0a0ce5b7a072c7ce7e3c1dcfd497471_task_tag_finished
│   │   │   ├── CHG
│   │   │   ├── CHGCAR
│   │   │   ├── CONTCAR
│   │   │   ├── DOSCAR
│   │   │   ├── EIGENVAL
│   │   │   ├── fp.log
│   │   │   ├── IBZKPT
│   │   │   ├── INCAR -> ../INCAR
│   │   │   ├── OSZICAR
│   │   │   ├── OUTCAR
│   │   │   ├── PCDAT
│   │   │   ├── POSCAR
│   │   │   ├── POTCAR -> ../POTCAR
│   │   │   ├── REPORT
│   │   │   ├── vasprun.xml
│   │   │   ├── WAVECAR
│   │   │   └── XDATCAR
│   │   └── tmp_log
│   ├── 01.scale_pert
│   │   └── sys-0001-0001
│   │       └── scale-1.000
│   │           ├── 000000
│   │           │   └── POSCAR
│   │           ├── 000001
│   │           │   └── POSCAR
│   │           ├── 000002
│   │           │   └── POSCAR
│   │           ├── 000003
│   │           │   └── POSCAR
│   │           ├── 000004
│   │           │   └── POSCAR
│   │           └── POSCAR
│   ├── 02.md
│   │   ├── 备份文件等
│   │   ├── INCAR
│   │   ├── POTCAR
│   │   ├── run_1659604259.sh
│   │   ├── sys-0001-0001
│   │   │   ├── deepmd
│   │   │   │   ├── box.raw
│   │   │   │   ├── coord.raw
│   │   │   │   ├── energy.raw
│   │   │   │   ├── force.raw
│   │   │   │   ├── set.000
│   │   │   │   │   ├── box.npy
│   │   │   │   │   ├── coord.npy
│   │   │   │   │   ├── energy.npy
│   │   │   │   │   ├── force.npy
│   │   │   │   │   └── virial.npy
│   │   │   │   ├── type_map.raw
│   │   │   │   ├── type.raw
│   │   │   │   └── virial.raw
│   │   │   └── scale-1.000
│   │   │       ├── 000000
│   │   │       │   ├── 00af13e72478f19ea730f67a982bb9c29dcd0c04_task_tag_finished
│   │   │       │   ├── CHG
│   │   │       │   ├── CHGCAR
│   │   │       │   ├── CONTCAR
│   │   │       │   ├── DOSCAR
│   │   │       │   ├── EIGENVAL
│   │   │       │   ├── fp.log
│   │   │       │   ├── IBZKPT
│   │   │       │   ├── INCAR -> ../../../INCAR
│   │   │       │   ├── OSZICAR
│   │   │       │   ├── OUTCAR
│   │   │       │   ├── PCDAT
│   │   │       │   ├── POSCAR
│   │   │       │   ├── POTCAR -> ../../../POTCAR
│   │   │       │   ├── REPORT
│   │   │       │   ├── vasprun.xml
│   │   │       │   ├── WAVECAR
│   │   │       │   └── XDATCAR
│   │   │       ├── 000001
│   │   │       │   └── ...
│   │   │       ├── 000002
│   │   │       │   └── ...
│   │   │       ├── 000003
│   │   │       │   └── ...
│   │   │       └── 000004
│   │   │           └── ...
│   │   └── tmp_log
│   └── param.json
├── log
├── machine.json
├── param.json
├── POTCAR_Li
└── POTCAR_Si

步骤3:监测任务状态与运行结果

监测任务状态参考监控任务

运行结果获取参考DP-GEN结果获取

至此,通过DPGEN init_bulk过程获取了DP训练所需的数据数据集,下一步就可以运行DPGEN run,进行iteration,探索整个势能面的样本空间。

代码
文本
Bohrium 帮助文档
LBG Utility
DP-GEN
Bohrium 帮助文档LBG UtilityDP-GEN
点个赞吧
本文被以下合集收录
Bohrium 帮助文档|软件案例
MileAway
更新于 2024-05-12
14 篇7 人关注
平台实现
yuxiangc22
更新于 2024-04-01
8 篇0 人关注
推荐阅读
公开
Bohrium 帮助文档|DeePMD-kit
Bohrium 帮助文档LBG UtilityDeePMD-kit
Bohrium 帮助文档LBG UtilityDeePMD-kit
Bohrium
发布于 2023-10-14
1 赞
公开
Bohrium 帮助文档|DP-GEN
Bohrium 帮助文档LBG UtilityDP-GEN
Bohrium 帮助文档LBG UtilityDP-GEN
Bohrium
发布于 2023-10-14
2 赞12 转存文件