跳至主要内容

dpgen,deepmd,lammps,vasp 报错记录

2024/05/20 VASP 加压优化报错: | ZBRENT: fatal error in bracketing | | please rerun with smaller EDIFF, or copy CONTCAR | | to POSCAR and continue | | | | ----> I REFUSE TO CONTINUE WITH THIS SICK JOB ... BYE!!! <----

其实是EDIFFG = 由-0.01 改成-0.02就可以了

2024/04/04

nohup dpgen init_bulk param.json machine.json  1>log 2>err&
报如下错误,解决办法,重新手动写出上面的命令搞定了

    elements = jdata["elements"]

KeyError: 'elements'

2024/01/20

dpgen Simplify dp采样报错: /work/qan/kluo/anaconda3/envs/deepmd221/lib/python3.10/importlib/__init__.py:169: UserWarning: The NumPy module was reloaded (imported a second time). This can in some cases result in small but subtle issues and is discouraged. _bootstrap._exec(spec, module) usage: dp [-h] [--version] {config,transfer,train,freeze,test,compress,doc-train-input,model-devi,convert-from,neighbor-stat,train-nvnmd} ... dp: error: unrecognized arguments: --real_error

对比发现可能是用了deepmd221导致的 改成deepmd227 正常了

2024/1/2

/anvil/projects/x-phy220096/kluo/anaconda3/envs/deepmd227/bin/lmp: line 11: 1742149 Killed                  /anvil/projects/x-phy220096/kluo/anaconda3/envs/deepmd227/bin/_lmp "$@"

slurmstepd: error: Detected 1 oom_kill event in StepId=4201973.0. Some of the step tasks have been OOM Killed.

srun: error: a977: task 1: Out Of Memory

srun: Job step aborted: Waiting up to 32 seconds for job step to finish.

解决办法就是改小核数,128核可以算4ns,64核8ns,现在改成27核应该可以算16ns

官方(RCAC - Knowledge Base: Anvil User Guide: OpenMP job in wholenode queue (purdue.edu))也是这样建议的If an OpenMP program uses a lot of memory and 128 threads use all of the memory of the compute node, use fewer processor cores (OpenMP threads) on that compute node.

2023/12/29

/anvil/projects/x-phy220096/kluo/anaconda3/envs/deepmd221/bin/lmp: line 11: 2894955 Segmentation fault      /anvil/projects/x-phy220096/kluo/anaconda3/envs/deepmd221/bin/_lmp "$@"

猜测解决办法是升级deepmd到最新版本2.2.7.,结果并不是,最后发现原因是 region不能和前面的fix脚本连用只能分割使用.

还有一种常见情况就是势文件train版本和lammps(deempmd版本不匹配导致了),保持一直不会出这种错误,有时候不一致也能用,分情况了。Segmentation fault这种报错一般是版本问题。可以重新freeze+compress

但是压缩后的力场还是这个报错 现在猜测可能是少了一个元素的原因:未找到的张量: 错误消息表明模型中指定的张量 spin_attr/ntypes_spin:0 未在图中找到。这可能是因为模型预期第六个元素的张量但未训练该元素。

图结构: 定义机器学习模型的图时,所有预期的输入及其形状需要一致。如果某个元素缺失或未训练,会导致预期张量的匹配失败,从而引发错误。 压缩影响: 压缩模型通常通过修剪冗余部分来减小其大小,但它仍然依赖于基础结构的完整性。如果模型结构包括未训练的元素,在压缩和后续使用过程中可能会导致不一致。所以快速测试一下80w试试.确实解决了


conda create -n deepmd deepmd-kit=*=*cpu libdeepmd=*=*cpu lammps -c https://conda.deepmodeling.com -c defaults

dp freeze -o graph.pb

dp compress -i graph.pb -o graph-compress.pb

/work/qan/kluo/TiCdpgen/Run/iter.000298 由于新添加5种元素,导致压缩模型由14.1MB暴涨到161MB,所以下面这种四连用报错,估计单独的应该可以用,最后手动压缩吧

pair_style      deepmd ../graph.001.pb ../graph.002.pb ../graph.003.pb ../graph.000.pb  out_freq ${THERMO_FREQ} out_file model_devi.out

2023/12/26

(base) [kluo@nova run]$ dpgen collect ./ ./collect -p param.json 报错

  File "/work/qan/kluo/anaconda3/lib/python3.9/site-packages/dpdata/system.py", line 421, in append
    raise RuntimeError(
RuntimeError: systems with inconsistent formula could not be append: S32Zn32 v.s. S36Zn36

找到原因了 因为中途更改过002config 由各向同性的Zn32S32 diamond 结构改成了 三个晶格不同的Zn36S36结构 所以不匹配了。解决办法就是将这些有问题的数据文件夹重命名,到时候单独收集

还有个解决办法:dpgen collect ./ ./collect -p param.json -m #自动分类功能也许可以绕过

Data002 21-35
Data015 51-55
Data012 52-55
#!/bin/bash

# 起始和结束的迭代编号
start=52
end=55

# 循环遍历每个迭代
for i in $(seq -f "%06g" $start $end)
do
  # 构建原始文件夹路径
  old_folder="iter.$i/02.fp/data.012"
  # 构建新的文件夹路径
  new_folder="iter.$i/02.fp/data.012a"

  # 检查原始文件夹是否存在
  if [ -d "$old_folder" ]; then
    # 执行重命名
    mv -f "$old_folder" "$new_folder"
    echo "Renamed $old_folder to $new_folder"
  else
    echo "Directory $old_folder does not exist"
  fi
done

#####

将这段代码保存为一个文件,比如叫做rename_folders.sh。然后,你可以通过在命令行中运行以下命令来执行这个脚本:

bash
chmod +x rename_folders.sh ./rename_folders.sh

这个脚本做了以下几件事:

  1. 定义了起始和结束的迭代编号。
  2. 使用seq命令和格式化选项-f来生成固定宽度的序列号(这里使用%06g确保序列号是六位数字,例如000021)。
  3. 为每个迭代构建了旧文件夹和新文件夹的路径。
  4. 检查旧文件夹是否存在,如果存在则执行重命名,并打印出一条确认信息。
  5. 如果旧文件夹不存在,打印出一条错误信息。

在运行这个脚本之前,请确保你在脚本所在的目录下,或者提供脚本中文件夹路径的绝对路径。此外,请确保你对这些文件夹有足够的权限来执行重命名操作。

2023/11/11

lammps计算 浮点异常(核心转储) /work/qan/kluo/anaconda3/envs/deepmd221/bin/lmp: line 11: 22434 Floating point exception(core dumped) /work/qan/kluo/anaconda3/envs/deepmd221/bin/_lmp "$@" /work/qan/kluo/anaconda3/envs/deepmd221/bin/lmp: line 11: 22462 Floating point exception(core dumped) /work/qan/kluo/anaconda3/envs/deepmd221/bin/_lmp "$@" srun: error: nova18-49: tasks 4,22: Exited with exit code 136

通过与chatGPT沟通最后解决办法是用最新版本的deepmd227解决了。

但是在training的时候又碰到新的问题,而且确认是deepmd227带来的,221没问题 packages/typing_extensions.py", line 152, in _check_generic raise TypeError(f"{cls} is not a generic class") TypeError: typing.List[str] is not a generic class

折腾了一圈 还是妥协了 改成221training 227lammps能跑起来就行

总结:版本更新确实能解决一些问题,但是又会有新的问题出现,因为机器的配置特别是库文件都不一样。

真实原因是drags版本太低导致的(需要0.4以上)Deepmd-kit2.2.7 version errors during training · deepmodeling/deepmd-kit · Discussion #2965 (github.com)

pip list | grep dargs查看当前环境的版本

pip install --upgrade dargs 更新



train.log报错显示tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [4,832] rhs shape= [4,1008] [[{{node save/Assign_2}}]]

原因是(transfer Learning)初始化旧模型的时候,sel我用的是自动挡"sel": "auto:1.01",这个在新数据集的基础上生存的具体sel 与旧模型的sel不匹配导致的。shape= [4,1008] 代表[元素种类,sel加合*元素种类]=[4, 4*(52+60+36+104)].所以找到旧模型的tran.log 推测出具体的sel(被4整除的最小数),就可以了。

/work/qan-free/kluo/HEMC/dpgen/iter.000185/00.train/000 一直报错 无法继续 raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 之前猜测是磁盘空间不够的问题,现在想想 很可能是压缩的模型197.22MB太大导致的,所以果断关闭compress 试试


lammps计算有表面的结构时 势能 温度 压力 都出现周期性震荡 很难平衡,一般用drag 0.3
在某些情况下(譬如固体),当向系统施加Nose/Hoover控压和控温器的时候,系统的压强(体积)和温度会意料之外的剧烈振荡。此时,采用关键词drag可以阻缓这些振荡的发生,但是这将修改Nose/Hoover方程。当drag值设定为0.0时,意味着Nose/Hoover方程不发生改变。当采用非零值时,此时会向方程添加一个drag项;drag值设定的越大,阻尼效应越明显。短期执行并监视压强和温度是确定阻尼项是否起作用的最佳方法。 通常,介于0.2到2.0之间的值足以抑制几个周期后的振荡。 请注意,使用drag关键词将干扰能量守恒,并且还将更改位置和速度的分布,以使其与名义上的NVT,NPT或NPH系综不完全相符。这是为了平衡后期produce阶段 不用这个关键词
还有就是可以用很大的timestep(10fs可以试试,只要不报错就行)长时间平衡就好了

File "/data/gpfs/home/kluo/.local/lib/python3.8/site-packages/dpgen/generator/run.py", line 691, in expand_matrix_values

    for ii in target_list[cur_idx]:

TypeError: 'int' object is not iterable

Int integer 整数的意思 list of integer 不一样。

原因是:param等脚本文件里的数据类型没有区分 List of integer 需要[10], Integer 不需要。

注意自己模板里定义的变量需要括号[],而外部数据根据手册来,不统一的

  File "/data/gpfs/home/kluo/.local/lib/python3.8/site-packages/dpdispatcher/submission.py", line 241, in handle_unexpected_submission_state

    raise RuntimeError(

RuntimeError: Meet errors will handle unexpected submission state.

Debug information: remote_root==/data/gpfs/assoc/matersimul/kunluo/dpgentestlmp/work/1f1c9b7b10698827bb7aa53772c3c17b2b7c1c0a.

Debug information: submission_hash==1f1c9b7b10698827bb7aa53772c3c17b2b7c1c0a.

Please check the dirs and scripts in remote_rootThe job information mentioned above may help

这个很可能是节点问题导致任务提上run20s内掉了,可以单独提交简单对应的lmp或者vasp任务验证 如果没问题

就按提示仔细检查所有log文件 有收获 我出现过版本不对应问题 需要激活环境换高版本的,在.bashrc里注释掉老版本重新进入系统

nohup dpgen init_bulk param.json machine.json > log 2> err 在最后一步数据转格式的时候出错。询问chaGPT发现可能是vasp升级成6.2导致的。但是发现之前的dpgen run 都是正常的 那只有一种可能,qmd的数据不行,单独的一帧数据的outcar可以识别??正在测试中
nohup: ignoring input
Traceback (most recent call last):
  File "/home/kluo/.local/bin/dpgen", line 8, in <module>
    sys.exit(main())
  File "/home/kluo/.local/lib/python3.9/site-packages/dpgen/main.py", line 185, in main
    args.func(args)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpgen/data/gen.py", line 1497, in gen_init_bulk
    coll_vasp_md(jdata)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpgen/data/gen.py", line 1005, in coll_vasp_md
    _sys = dpdata.LabeledSystem(oo, type_map= type_map)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpdata/system.py", line 227, in __init__
    self.from_fmt(file_name, fmt, type_map=type_map, begin= begin, step=step, **kwargs)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpdata/system.py", line 253, in from_fmt
    return self.from_fmt_obj(load_format(fmt), file_name, **kwargs)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpdata/system.py", line 1013, in from_fmt_obj
    data = fmtobj.from_labeled_system(file_name, **kwargs)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpdata/plugins/vasp.py", line 68, in from_labeled_system
    = dpdata.vasp.outcar.get_frames(file_name, begin=begin, step=step, ml=ml)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpdata/vasp/outcar.py", line 71, in get_frames
    coord, cell, energy, force, virial, is_converge = analyze_block(blk, ntot, nelm, ml)
  File "/home/kluo/.local/lib/python3.9/site-packages/dpdata/vasp/outcar.py", line 134, in analyze_block
    virial[0][2] = tmp_v[5]
IndexError: list index out of range

结果发现是加入vdW修正导致的

[BUG] OUTCAR transformation · Issue #347 · deepmodeling/dpdata · GitHub

需要最新的dpdata就可以了。
pip install --upgrade dpdata





评论

此博客中的热门博文

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 simplify 数据精简二次处理

问题: 1.        Carbon 的势能文件无法准确描述石墨层间距 共有 204,200 bch 2.        NaSPO 的势能文件无法压缩 共有 242,423 bch 都可能是 data 太臃肿导致的,所以决定精简用 simplify 命令试试(感觉是重新采样的过程,只是节省了 lammps 的时间用 dp test 代替了,还是需要 fp 过程(也可以注释掉,如果需要新的 VASP 参数可以启用),更适合需要换 fp 参数的计算)。第一次取样是随机的, dp 采样过程有点慢 压缩的 pb 需要 6 小时。 还可以重新 fp 改善数据集 https://tutorials.deepmodeling.com/en/latest/CaseStudies/Transfer-learning/Transfer-learning.html https://docs.deepmodeling.com/projects/dpgen/en/latest/simplify/simplify-jdata.html https://zhuanlan.zhihu.com/p/456504860 http://bohrium-doc.dp.tech/docs/software/DP-GEN_simplify Simplify — DP-GEN documentation 先做,动起来在看 1.        收集所有数据 https://hikunluo.blogspot.com/2022/12/dpgen.html 2.        准备 simplify 的两个 json 文件。      nohup dpgen simplify simplify.json machine.json 1 > log 2 > err &      (base) [kluo@condo2017 SimCarbon]$ cat simplify.json { ...

python相关

 在IDLE中运行pip install pandas是不行的。你需要在命令提示符(Command Prompt)或终端(Terminal)中运行该命令。下面是详细步骤: 使用命令提示符安装 pandas 打开命令提示符: 按 Win + R 键打开运行窗口,输入 cmd,然后按回车键。 或者你可以在开始菜单中搜索“命令提示符”并打开它。 而且运行python脚本的一般步骤: 1. 打开IDLE shell这是个交互窗口 不能直接将脚本内容直接复制到这里,但是应该可以用python +脚本路径运行 2. File -new file-粘贴脚本内容 3.这个窗口上有run