跳至主要内容

dpgen数据收集分类续算

dpgen 推荐安装升级方法:删除之前工作目录的dpgen文件夹

  • Install from source code: git clone https://github.com/deepmodeling/dpgen && pip install ./dpgen


想收集TL的数据集且按化学成分分类:/work/qan/kluo/NaSPO/run/TransL

dpgen collect ./ ./collect -p simplify.json -m 不起作用,只能用param.json格式

所以单独新建文件夹,构造虚拟的param.json其中初始数据集地址,直接复制最后一个train的input.json.再用dpgen collect ./ ./collect -p param.json -m就可以收集初始的数据了,但是这时候没有分类,尽管dpgen collect -m有这个功能但没有作用。

所以,构建虚拟的simplify任务,记住是精简过程,所以

     "labeled": true,
     "init_pick_number":0,
     "iter_pick_number":0,
.....
     "training_init_model": false,

运行之后,第一步就得到了 所有的分类数据集。

Q: /work/qan/kluo/NaSPO/run 最近几轮的准确率上不去,猜测是数据集太大232334 batch,而每一代的学习步长step只有50万,以及不够了。所以出现了:一些模型的准确率一直上不去,就算修改上下限也没有改观。或者一些模型学好了,另一些模型就被遗忘了,很明显是学习步长不够了。

A: 解决办法如下:将现有数据收集分类,分拣出确实学习率低的重写单独重点学习。其次,以后用dpgen自动采样产生数据集的时候,时刻关注准确率的变化,一旦上不去了赶紧分家。

D:

1.       收集数据

a.       $ dpgen collect ./ ./collect -p param.json
from https://wiki.cheng-group.net/wiki/%E8%BD%AF%E4%BB%B6%E4%BD%BF%E7%94%A8/DP-GEN

b.       或者用笨方法$ find . -name "data.0*" -type d -print -exec cp --parents -rf {} ../collect2/ \;
收集所有的data数据集https://blog.csdn.net/recher_He1107/article/details/123175582

c.       $ mkdir collect92

d.       $ dpgen collect ./ ./collect92 -p param.json
init.*是初始训练集与param"init_data_sys"对应,sys.*是后来DP-GEN生成的训练集,与param"sys_configs"对应。

2.       确定学习率确实低的模型

a.       "init.006","init.011","init.015","init.018","init.019","init.020","init.021","init.022","sys.009","sys.011","sys.015","sys.016","sys.020","sys.021","sys.022","sys.023","sys.026","sys.027","sys.037","sys.039","sys.043","sys.044","sys.048","sys.049","sys.050","sys.051","sys.054","sys.055"

b.       确定需要学习的模型初始结构编号: 37,39,43,44,48,49,50,51,54,55

3.       新建工作目录/work/qan/kluo/NaSPO/run01

a.       collect92  dp.sh  INCAR_scf  indata  lmp  lmp36.sh  machine.json  param.json  POTCAR_Na  POTCAR_O  POTCAR_P  POTCAR_S

4.       修改param.json

a.            "init_data_prefix": "./collect92/",
     "init_data_sys": ["init.006","init.011","init.015","init.018","init.019","init.020","init.021","init.022","sys.009","sys.011","sys.015","sys.016","sys.020","sys.021","sys.022","sys.023","sys.026","sys.027","sys.037","sys.039","sys.043","sys.044","sys.048","sys.049","sys.050","sys.051","sys.054","sys.055"],

b.            "model_devi_jobs": [{"sys_idx":[37,39,43,44,48,49,50,51,54,55],"trj_freq": 10, "template":{"lmp":"./lmp/nvt.lammps"}, "rev_mat":{"lmp":{"lmpfq": [10],"nsteps": [20000], "temps1": [10],"temps2": [2000]}}, "_idx": "93-1"}

5.       (base) [kluo@nova run01]$ nohup dpgen run param.json machine.json 1>log 2>err &

6.       一切正常,出现警告,修改重提Run
DEEPMD INFO    training data with min nbor dist: 1.083750224728927

DEEPMD INFO    training data with max nbor size: [9, 8, 5, 17]

DEEPMD WARNING sel of type 3 is not enough! The expected value is not less than 17, but you set it to 13. The accuracy of your model may get worse.

评论

  1. 结果反馈:确实有效果,其他的照搬改善

    回复删除

发表评论

此博客中的热门博文

lammps 压痕划痕模拟设置参考

  Molecular dynamics study on the effect of electric current on electrically-assisted scratching for crystal copper - IOPscience 原因深入分析如下: ✅ 切削 / 摩擦 / 划痕:局部剧烈变形 → 热量集中 这类过程模拟的是工具与材料 接触区域的强烈局部非平衡过程 ; 如果对整个系统控温,会 严重抹平局部发热、滑移带的应变能耗散 等重要现象; 所以 只在边界区域(如底部、侧边)设 thermostat,起到“热沉”作用 ; 文献经典设置就是: 底部固定 ; 边缘 slab 控温 ; 接触区完全不控温,自由演化 。 ✅ 拉伸 / 压缩 / 剪切:全局加载 → 热传导充分 是材料整体在受力,不存在特别“集中”的能量输入区域; 局部发热相对温和,且在 bulk 系统中可以通过自身结构进行导热 ; 实验中常常是等温加载(准静态过程); 所以 很多文献就直接用整体 fix nvt 控温 ,保持恒温环境,简化模拟; 注意有些更精细的研究会改为: 只在两端 slab 控温,中间 Newtonian 自由演化 。 📚 二、典型模拟场景下的控温策略总览 场景类别 控温方式 控温范围 控温方法 控温目的 注意事项 ✅ 平衡态热力学性质 (如热容、扩散、应力) 整体控温 全体系 fix nvt , fix npt 模拟室温等温状态 标准EMD方法 ✅ 热导率(Green-Kubo) 整体控温 全体系 fix nvt (前期平衡), 后期 nve 采集能流自相关函数 采样期不能控温 ✅ 热导率(NEMD) 区域控温 热源/热沉 fix langevin , fix heat 人为施加温差形成热流 中间区自由演化 ✅ 拉伸 / 压缩 / 剪切 整体控温(常用)或局部控温 全体系或上下 slab fix nvt 或 langevin slab 保持恒温,避免非真实升温 全控温可抹平热应变 ✅ 应力松弛 / 加热冷却过程 整体控温 全体系 fix nvt 或温度渐变 等温退火、升温或冷却 控温方式决定退火速率 ✅ 位错运动 / 缺陷扩散 局部控温 边界或部分 slab ...

dpgen训练经验

最新的dpgen参考PtCuP /work/qan/kluo/PtCuP 0.1K的第0代采样很重要 可以多重复几次确保99以上的准确率,它是后续高温的基础 单点能计算  ISYM = 2 nohup dpgen run param.json machine.json 1>log 2>err& nohup dpgen init_bulk param.json machine.json  1>log 2>err& 初始数据集产生,只能一个POSCAR的计算 但是可以同时提多个任务,但是每个任务都需要 POTCAR POSCAR 一 一对应才行。  elements 和POSCAR POTCAR保持一致。 " type_map " : [ "Ti" , "C" , "V" , "Cr" , "Nb" , "Mo" ],都写全才行 POSCAR 不需要 改成特定顺序 程序最终生成数据集的时候会根据 type_map自动统一匹配 usage: dpgen [-h] {init_surf,init_bulk,auto_gen_param,init_reaction,run,run/report,collect,simplify,autotest,db,gui} ... dpgen is a convenient script that uses DeepGenerator to prepare initial data, drive DeepMDkit and analyze results. This script works based on several sub-commands with their own options. To see the options for the sub-commands, type "dpgen sub-command -h". positional arguments:   {init_surf,init_bulk,auto_gen_param,init_reaction,run,run/report,collect,simpli...

lammps Pdamp,Tdamp的设置经验

 一张小抄(固体/位错/二维材料都适用) fix             11    all npt temp 0.1 0.1 0.5 tri 0.0 0.0 5   drag 2 tchain 3 pchain 3 保持 Pdamp ≫ Tdamp(通常 10× 左右)。 固体/低温:Tdamp 取 0.5–1 ps,Pdamp 取 5–15 ps;需要更稳就再加大 Pdamp。 所以推荐如下: 0.1K 用1 10 300K 固体 用0.5 5  高温用0.2 2 液体用0.1 1 液体/高温:Tdamp 0.2–0.5 ps,Pdamp 2–5 ps 往往够。 2D(石墨烯等,只控平面 x/y):Pdamp 常用 10–20 ps 起步,z 固定或 z NULL。 观察到体积/压力振荡大:增加 Pdamp 或加 drag 2–3,必要时把 dt 临时降到 0.5 fs。 drag 2、tchain/pchain 3 保留没坏处,确实能再抑制一点振荡;不是硬性必须,但在固体+低温+(可能还有 tri 或剪切)的组合里,“更稳”>“更快”,我一般会开着。