超算上使用DeePMD

CH4CH_4CH4为例

1.原始数据处理

1.1 将VSAP得到得到OUTCAR文件将VSAP得到得到OUTCAR文件VSAP得到得到OUTCAR文件,用工具dpdatadpdatadpdata进行转变得到能被deepmd执行的训练集,

dpdatadpdatadpdata工具需要用pippippip命令下载,pippippip可以通过condacondaconda包管理工具使用

在这里插入图片描述
得到验证数据data/validation−datadata/validation-datadata/validationdata和训练数据data/training−datadata/training-datadata/trainingdata
在这里插入图片描述

set.000 是一个目录,包含压缩格式的数据(numpy 压缩数组)
type.raw 是一个文件,包含原子类型(以整数表示)
type_map.raw 是一个文件,包含原子类型名称

2.input.json

2.1 模型参数 model paramters

定义将原子构型映射到一组对称不变特征的描述符,以及将描述符作为输入并预测原子对目标物理性质贡献的拟合网

①type−map①type-maptypemap:给出每种类型原子的名称

"type_map": ["H", "C"]

②descriptor②descriptordescriptor:原子环境描述符

"descriptor":{
    "type":            "se_e2_a",    描述符类型
    "rcut":            6.00,         截止半径        
    "rcut_smth":       0.50,         开始平滑,1/r从rcut到rcut_smth                  
    "sel":             [4, 1],       给出所选的第i类邻居的数量
    "neuron":          [10, 20, 40], 嵌入网各隐藏层的神经元数量            
    "resnet_dt":       false,
    "axis_neuron":     4,            G 的子矩阵(嵌入矩阵)的大小                     
    "seed":            1,            用于参数初始化的随机种子
    "_comment":        "that's all"
},

sel−a[1]=4表示H原子的局部环境由4个近邻原子决定sel-a[1]=4表示H原子的局部环境由4个近邻原子决定sela[1]=4表示H原子的局部环境由4个近邻原子决定sel−a[2]=1表示C原子的局部环境由1个近邻原子决定sel-a[2]=1表示C原子的局部环境由1个近邻原子决定sela[2]=1表示C原子的局部环境由1个近邻原子决定
嵌入网络的大小为[10,20,40][10,20,40][10,20,40]

③fitting−net③fitting-netfittingnet:物理特性拟合

 "fitting_net":{
	        "neuron":          [100, 100, 100],   拟合网各隐藏层的神经元数量
	        "resnet_dt":       true,  
	        "seed":            1,                 用于参数初始化的随机种子
	        "_comment":        "that's all"
	    },

拟合网络大小为[100,100,100][100,100,100][100,100,100]

2.2 learning-rate 学习率

	"learning_rate" :{
	    "type":                "exp",              学习率类型
	    "decay_steps":         5000,               每训练这么多步,学习率衰减一次
	    "start_lr":            0.001,              训练起始的学习率
	    "stop_lr":             3.51e-8,            训练结束预期衰减到的学习率
	    "_comment":            "that's all"
	},

2.3 loss 损失函数

	"loss" :{
	    "type":                "ener",             函数类型
	    "start_pref_e":        0.02,               训练开始时能量损失的前置因子
	    "limit_pref_e":        1,                  训练极限时能量损失的前置因子
	    "start_pref_f":        1000,               训练开始时力损失的前置因子
	    "limit_pref_f":        1,                  训练极限时力损失的前置因子
	    "start_pref_v":        0,                  训练开始时的病毒损失前置因子
	    "limit_pref_v":        0,                  训练极限时的病毒损失前置因子
	    "_comment":            "that's all"
	},

DeePMD的损失函数是通过对力、能量和病毒项进行加权而确定的。
在损失函数中,prefepref_eprefe0.020.020.02 逐步增加到 111preffpref_fpreff100010001000 逐步减少到 111,意味着力项在开始时占主导地位,而能量和病毒项在最后变得重要。prefvpref_vprefv 设置为 0,表示训练过程中不包含病毒数据

2.4 traing-controls 调用训练数据

	 "training" : {
		"training_data": {        配置训练数据
			"systems":            ["../data/training_data"],      用于训练的数据    
			"batch_size":         "auto",          自动确定批次大小,使 batch_size 乘以系统中的原子数不小于 32             
			"_comment":           "that's all"     
		},
		"validation_data":{       配置验证数据
			"systems":            ["../data/validation_data/"],   用于验证的数据
			"batch_size":         "auto",              同上       
			"numb_btch":          1,                   一个整数,用于指定每个验证期的采样系统数量
			"_comment":           "that's all"
		},
		"numb_steps":             100000,              训练批次数,每次训练使用一批数据             
		"seed":                   10,
		"disp_file":              "lcurve.out",        打印学习曲线文件
		"disp_freq":              1000,                印刷学习曲线的频率
		"save_freq":              10000,               保存检查点的频率
	}

学习曲线每 100010001000 步写入 lcurve.out,模型相关文件每 100001000010000 步保存一次。

3.DP训练模型

3.1 配置deepmd环境

在这里插入图片描述

3.2申请计算节点(登陆节点没dcu加速卡)

在这里插入图片描述
在这里插入图片描述

3.3登录计算节点

在这里插入图片描述

3.4配置DP环境和加载相关的dtk后运行input.json

在这里插入图片描述

3.5出现DeePMDDeePMDDeePMD界面

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.6 每1000步输出一次,每10000步保存一次检查点文件

在这里插入图片描述

3.7 观测lcurve.out文件

在这里插入图片描述

lcurve.out 包含 8 列,
从左到右依次为
stepstepstep:训练步骤
rmse−valrmse-valrmseval:验证损失
rmse−trnrmse-trnrmsetrn:训练损失
rmse−e−valrmse-e-valrmseeval:能量的均方根验证误差
rmse−e−trnrmse-e-trnrmseetrn:能量的均方根训练误差
rmse−f−valrmse-f-valrmsefval:力的均方根验证误差
rmse−f−trnrmse-f-trnrmseftrn:力的均方根训练误差
lrlrlr:学习率
能量的均方根误差(RMSE)按系统中原子的数量进行归一化。结果表明,经过10510^5105步训练后,能量测试误差小于 1 meV,力测试误差约为 120 meV/Å。还可以观察到,力测试误差系统地(但略微)大于训练误差,这意味着对相当小的数据集进行了轻微的过度拟合

3.8 可视化处理

编写可视化pythonpythonpython代码
在这里插入图片描述

配置condacondaconda
在这里插入图片描述

配置python23.1.2配置python 23.1.2配置python23.1.2,要用到图表化模块matplotlibmatplotlibmatplotlib
在这里插入图片描述

3.9 查错

在训练过程中,模型每 10000 步会保存在 TensorFlow model.ckpt* 文件中,最后保存的模型名称会记录在检查点文件中
在这里插入图片描述
当训练过程异常停止时,我们可以从提供的检查点重新开始训练(在计算节点)
在这里插入图片描述
在这里插入图片描述

input.json 必须与之前的一致

3.10 冻结模型

训练结束后冻结模型 ,将 TensorFlow 检查点文件中保存的模型参数冻结为模型文件
在这里插入图片描述
在这里插入图片描述

3.11 压缩模型

压缩后的 DP 模型通常会将基于 DP 的计算速度提高一个数量级,内存消耗也会减少一个数量级
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.12测试压缩模型

在这里插入图片描述

在这里插入图片描述
当前目录下会有结果文件
在这里插入图片描述

4.使用LAMMPS运行MD

4.1打开目录并将训练目录下的输出模型链接过来

在这里插入图片描述
在这里插入图片描述
conf.lmpconf.lmpconf.lmp 给出了气相甲烷 MD 模拟的初始配置

in.lammpsin.lammpsin.lammps 如下,是 LAMMPS 输入脚本,pair−stylepair-stylepairstyle作用是调用了deepmddeepmddeepmd并提供了冻结模型文件,意味着原子交互将使用储存在冻结模型文件中的DPDPDP模型计算

# gas phase methane

units           metal
boundary        p p p
atom_style      atomic

neighbor        1.0 bin
neigh_modify    every 10 delay 0 check no

read_data	conf.lmp
mass 		1 1
mass		2 12

pair_style	deepmd graph-compress.pb     
pair_coeff	* *

velocity        all create 50.0 23456789
fix             1 all nvt temp 50.0 50.0 0.5
timestep        0.001

thermo_style    custom step pe ke etotal temp press vol
thermo          100
dump		1 all custom 100 ch4.dump id type x y z 

run             5000

4.2 执行lammps

在这里插入图片描述
MD模拟结束生成 log.lammpslog.lammpslog.lammpsch4.dumpch4.dumpch4.dump 文件,分别存储了热力学信息和分子轨迹

4.3 模型推理

可以使用 DPDPDP 模型来评估 LAMMPSLAMMPSLAMMPS 轨迹中每一帧的能量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### DeepMD-kit 深势科技与深度学习分子动力学 DeepMD-kit 是一个基于深度学习的开源软件包,旨在通过人工智能技术提升分子动力学模拟的效率和精度。它结合了深度学习模型与传统分子动力学方法,解决了长期以来在效率与精度之间难以兼顾的问题[^1]。 #### 1. DeepMD-kit 的核心功能 DeepMD-kit 提供了一种端到端的解决方案,能够构建具有高精度和高效计算能力的分子动力学模型。其主要特点包括: - **线性扩展性**:DeepMD-kit 能够实现线性增长的计算复杂度和内存使用量,从而支持大规模原子体系的模拟[^4]。 - **高精度**:通过深度学习技术,DeepMD-kit 可以达到与第一性原理分子动力学(AIMD)相当的精度,同时显著降低计算成本[^4]。 - **灵活性**:DeepMD-kit 支持从有限分子体系到周期性材料体系的广泛应用场景,涵盖金属系统、化学键系统等复杂体系。 #### 2. 技术背景与优势 传统的分子动力学方法依赖于牛顿力学来模拟分子体系的运动,但其时间复杂度较高,通常仅限于研究数千量级的原子体系[^3]。而 DeepMD-kit 通过引入深度神经网络(DNN)来表示多体势能面,使得模拟上亿原子体系成为可能[^3]。这种方法不仅提升了计算效率,还为科学研究提供了更多可能性。 #### 3. 应用领域 DeepMD-kit 在多个领域展现出巨大潜力,具体应用包括但不限于: - **复杂化学反应设计与合成**:加速新化学反应路径的探索。 - **材料老化与失效分析**:研究材料在极端条件下的行为。 - **新材料研发与工艺优化**:支持纳米晶体材料、电化学电池等领域的研究。 #### 4. 使用步骤 为了充分利用 DeepMD-kit,用户需要准备训练数据并进行模型训练。以下是基本流程概述: 1. **准备训练数据**:收集或生成高质量的分子动力学数据集,例如通过密度泛函理论(DFT)计算获得的数据[^5]。 2. **构建描述符**:定义用于表征分子体系特征的描述符,如 `se_e2_a` 描述符[^5]。 3. **训练神经网络力场**:通过损失函数优化,拟合神经网络力场以最小化预测误差。 4. **执行分子动力学模拟**:利用训练好的模型进行大规模分子动力学模拟。 以下是一个简单的代码示例,展示如何运行 DeepMD-kit 的训练过程: ```python # 配置训练参数 config = { "model": { "descriptor": { "type": "se_e2_a", "sel": [100, 100], "rcut": 6.0, }, "fitting_net": { "neuron": [256, 256, 256], }, }, "training": { "systems": ["data/system_1", "data/system_2"], "set_prefix": "set", "batch_size": 32, "numb_steps": 100000, }, } # 启动训练 from deepmd import Train train = Train(config) train.run() ``` #### 5. 深势科技的角色 深势科技是一家专注于将人工智能技术应用于科学领域的公司,其开发的 DeePMD-kit 已成为分子动力学模拟的重要工具之一。通过将 AI 技术与分子动力学相结合,深势科技为科学研究提供了全新的解决方案[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值