Bohrium
robot
新建

空间站广场

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

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
Bohrium 帮助文档|DeePMD-kit
Bohrium 帮助文档
LBG Utility
DeePMD-kit
Bohrium 帮助文档LBG UtilityDeePMD-kit
Bohrium
MileAway
发布于 2023-10-14
推荐镜像 :Basic Image:bohrium-notebook:2023-04-07
推荐机型 :c2_m4_cpu
赞 1
1
-kit(v1)

软件案例|DeePMD-kit

本文介绍如何使用 LBG Utility 在 Bohrium 上运行 DeePMD-kit 任务。

简介

DeePMD-kit:是一款基于神经网络拟合第一性原理数据得到势能模型,用于分子动力学模拟的软件。无需人工干预,其可以端对端地将用户提供的数据在数个小时内转化为深度势能模型,该模型可以与常见分子动力学模拟软件( LAMMPS,OpenMM 和 GROMACS 等)无缝衔接。DeePMD-kit 可以保持量子力学精度准确性的基础上,将分子动力学的计算速度提升数个量级。已被国内外物理、化学、材料、生物等方向上千课题组使用。

本文以 DeePMD-kit 2.1.5 与 LAMMPS 的搭配使用为例进行介绍。DeePMD-kit 的 LAMMPS 分为三部分:第一部分构建邻居表,该部分已经 GPU 化;第二部分是调用 DP 模型算力场,这一部分同样在 GPU 上进行,第三部分是根据牛顿第二定律跑 MD ,这一部分在 CPU 上运行。本例使用的软件 registry.dp.tech/dptech/deepmd-kit:2.1.5-cuda11.6 预装了 DeePMD-kit 2.1.5 和 LAMMPS 且支持 PLUMED。

如何在 Bohrium 上运行 DeePMD-kit 任务

本案例任务运行约需 10 min

步骤一,准备输入数据

DeePMD-kit 的输入文件均已存储至 Bohrium_DeePMD-kit_example 文件夹内,(你可以在左侧点击数据集查看相应文件):

代码
文本
[1]
# 出于安全考虑,我们没有数据集所在文件夹的写入权限,因此我们将其复制到 `/data/` 目录下:
! cp -nr /bohr/ /data/

# 我们在这里定义一些路径,并切换到工作路径,方便后续调用:
import os

bohr_dataset_url = "/bohr/bohrium-deepmd-zjfi/v1/" # url 可从左侧数据集复制
work_path = os.path.join("/data", bohr_dataset_url[1:])
os.chdir(work_path)
print(f"当前路径为:{os.getcwd()}")
当前路径为:/data/bohr/bohrium-deepmd-zjfi/v1
代码
文本

步骤二,准备配置文件

代码
文本
[4]
# 进入 Bohrium_ABACUS_example 文件夹
try:
os.chdir("./Bohrium_DeePMD-kit_example")
print(f"当前路径为:{os.getcwd()}")
except:
print(f"当前路径{os.getcwd()}\n请检查工作路径是否正确或数据集是否已复制。")
当前路径为:/data/bohr/bohrium-deepmd-zjfi/v1/Bohrium_DeePMD-kit_example
代码
文本

文件夹内已经包含配置文件 job.json,您也可以通过以下 Python 代码创建或编辑 job.json

代码
文本
[5]
import json

# 设置 job.json 的参数
job_params = {
"job_name": "DeePMD-kit test",
"command": " cd se_e2_a && dp train input.json > tmp_log 2>&1 && dp freeze -o graph.pb",
"log_file": "se_e2_a/tmp_log",
"backward_files": ["se_e2_a/lcurve.out","se_e2_a/graph.pb"],
"project_id": 0000,
"platform": "ali",
"machine_type": "c4_m15_1 * NVIDIA T4",
"job_type": "container",
"image_address": "registry.dp.tech/dptech/deepmd-kit:2.1.5-cuda11.6"
}

# 写入 job.json 文件
with open("job.json", "w") as f:
json.dump(job_params, f, indent=4, ensure_ascii=False)

print(f"已生成 {os.path.join(os.getcwd(), 'job.json')}, \n参数为:\n{json.dumps(job_params, indent=4, ensure_ascii=False)}")
已生成 /data/bohr/bohrium-deepmd-zjfi/v1/Bohrium_DeePMD-kit_example/job.json, 
参数为:
{
    "job_name": "DeePMD-kit test",
    "command": " cd se_e2_a && dp train input.json > tmp_log 2>&1 && dp freeze -o graph.pb",
    "log_file": "se_e2_a/tmp_log",
    "backward_files": [
        "se_e2_a/lcurve.out",
        "se_e2_a/graph.pb"
    ],
    "project_id": 1234,
    "platform": "ali",
    "machine_type": "c4_m15_1 * NVIDIA T4",
    "job_type": "container",
    "image_address": "registry.dp.tech/dptech/deepmd-kit:2.1.5-cuda11.6"
}
代码
文本

注意:所有 "project_id": 后的 0000 均需替换为您自己的项目 ID ,可在“项目管理”页查看。json 文件的格式要求 {} 内最后一个字段后不要添加逗号,否则会有语法错误。

代码
文本

步骤三,提交任务

第一次使用 Lebesgue Utility 需要配置,若您还未配置,请参阅 Bohrium 帮助文档|Lebesgue Utility

使用 Lebesgue Utility 提交任务(Lebesgue Utility 是 Bohrium 平台的作业管理系统):

代码
文本
[ ]
os.system("lbg job submit -i job.json -p ./")
代码
文本

其中:

  • -i 指定任务的配置文件,本案例中是 job.json
  • -p 指定输入文件所在的目录,Bohrium 会将指定的目录打包上传,在计算节点上解压后,将工作目录切换为该目录。本案例中是 ./

在命令行看到如下输出即表示提交成功。同时可以看到任务的 JOB ID,后续可用此 ID 追踪任务进度。

Submit job succeed. JOB GROUP ID: <JOB GROUP ID>, JOB ID: <JOB ID>
代码
文本

查看任务

您可以在监控任务文档中了解如何在 Bohrium 平台查看任务状态。

下载结果

您可以在结果下载文档中了解如何在 Bohrium 平台下载任务结果。

代码
文本
Bohrium 帮助文档
LBG Utility
DeePMD-kit
Bohrium 帮助文档LBG UtilityDeePMD-kit
已赞1
本文被以下合集收录
Bohrium 帮助文档|软件案例
MileAway
更新于 2024-05-12
14 篇7 人关注
DeepMD-kit与lammps
bohrb27761
更新于 2024-06-19
13 篇3 人关注
推荐阅读
公开
Bohrium 帮助文档|LAMMPS
Bohrium 帮助文档LBG UtilityLAMMPS
Bohrium 帮助文档LBG UtilityLAMMPS
Bohrium
发布于 2023-10-14
1 赞6 转存文件
公开
刘晓琳-第10天-2403-计算材料学原理
《计算材料学》组队共读
《计算材料学》组队共读
bohrfdf396
发布于 2024-03-16