“第25届北京科音初级量子化学培训班” 将于6月11至14日于北京举办,是初学者真正从头一次性完整、系统性学习量子化学计算,从而能很快上手量子化学研究的重要机会,比起自己摸索、鼓捣能少走无数弯路。报名正在进行中,请点击此链接查看,欢迎参加!

计算化学公社

 找回密码 Forget password
 注册 Register
Views: 31|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] MPSCF:基于GPU4PYSCF为金属蛋白体系生成力场参数

[复制链接 Copy URL]

51

帖子

1

威望

704

eV
积分
775

Level 4 (黑子)

本帖最后由 Chris——szk 于 2026-6-9 16:26 编辑

一.前言
由于最近有空闲的GPU资源,所以整了一个框架来算金属蛋白/酶的力场参数,按照之前gpu4pyscf本身的框架(版本1.7.0)去计算,在结构优化部分其实不会太爆显存,但是在进行hessian计算的时候,往往会爆显存,最初在24GB单卡上测试68原子体系大小的hessian的时候就爆显存了,所以这次针对这方面进行了调整,同时发现gpu4pyscf本身在计算hessian的时候似乎是默认在单卡上进行,没有考虑在多卡情况下计算hessian的时候多卡之间的显存分配问题,所以一直爆显存。就目前来说的话,基本的单离子体系,同类型多离子体系,和简单配体和同类型离子体系都是能进行计算的,不过在含有配体的体系下还有一点不完善的地方,还在持续跟进,然后像有些复杂的体系,比如金属离子桥接体系,或者HOMO-LUMO gap较小的体系,需要提高一定的level-shift实现收敛,但是个人感觉这类体系对于初始结构的要求还是挺高的,所以也整合了一下tblite的pyberny,外加写了一下ANCopt去通过GFN2-XTB进行预优化。对于一般的简单金属酶体系可以不用开启这个开关,自己测试下来的话单一金属离子模型还是比较好算的,复杂体系的话在下面的json文件中自定义一下是否开启GFN2-XTB进行预优化或者采用哪一个优化器即可。
二.运行
因为整体的逻辑还是基于MCPB本身,所以后续还会考虑整合modseminario方法进行参数生成等。目前的运行效率的话在结构优化部分的速度还能接受,当然肯定是比不了MLIP的速度hh,主要耗时的还是计算hessian的时候CPHF部分,MPSCF框架针对hessian计算过程中的几个阶段进行了优化,详情可以参考MPSCF链接的相应notice/日志:MPSCF
自己一个人可能对于一些问题考虑的不是特别全面,如果各位感兴趣使用的话,可以给我提一些建议或者issue,我会尽力修改,下面是简单的使用方法:
2.1.自定义模版文件:
  1. {
  2.     "basis":                "def2-svp",
  3.     "auxbasis":             "def2-svp-jkfit",
  4.     "xc":                   "tpssh",

  5.     "device":               "auto",
  6.     "cuda_visible_devices": "0,1,2,3",

  7.     "max_cycle":            300,
  8.     "conv_tol":             1e-8,
  9.     "grid_level":           5,
  10.     "damp":                 0,
  11.     "level_shift":          0.4,

  12.     "maxsteps":             1,

  13.     "hessian":              true,
  14.     "hessian_device":       "gpu",
  15.     "hessian_patch":        true,
  16.     "cphf_grid_level":      null,

  17.     "output_dir":           "outputs",

  18.     "disp":                 "d3bj",

  19.     "verbose":              4,

  20.     "write_fchk":           true,

  21.     "resp_a1":              5e-4,
  22.     "resp_a2":              1e-3,
  23.     "resp_b":               0.1,
  24.     "hfree":                true,

  25.     "chgmod":               1,

  26.     "scalef":               1.0,
  27.     "bond_avg":             true,
  28.     "angle_avg":            true,

  29.     "paraset":              "12_6",

  30.     "ligand_metal_bond":    {"L01": true},
  31.     "ligand_charge":         {"L01": -1},

  32.     "optimizer":            "ancopt",
  33.     "optimizer_maxsteps":   1000,
  34.     "conv_tol_grad":        1e-3
  35. }
复制代码
如果体系中没有配体分子的话,后面的ligand_metal_bond和ligand_charge部分就不需要自定义了,或者直接注释掉就行,optimizer的话对应的是GFN2-XTB预优化所采用的优化器,主要有两个参数可选,一个是“berny”,一个是上述模版中的“ancopt”,其实还可以加上ase的FIRE,后续考虑情况可能会加。其他的像level-shift之类的就不多赘述了,如果是简单的单离子体系直接设置为“0”就可以了,不影响正常收敛,damp几乎用不到设置(就目前自己遇到的案例来说),下面是关于gpu.json文件的模版:
  1. {
  2.   "cphf_subspace_frac": 0.80,
  3.   "cphf_est_cycles": 15,

  4.   "_make_h1": "make_h1 / _get_jk_ip device-0 peak control.",
  5.   "make_h1_pinned_frac": 0.40,
  6.   "make_h1_avail_div": 4,
  7.   "make_h1_stream_tile_frac": 0.08,

  8.   "_partial_hess": "Multi-GPU partial_hess_elec block sizing and load balancing.",
  9.   "split_min_frac": 0.55,
  10.   "hk_ao_aux_budget_frac": 0.30,
  11.   "hk_ip1_ip1_budget_frac": 0.35,
  12.   "aux_aux_budget_frac": 0.20,

  13.   "_df": "DF JK-loop block sizing.",
  14.   "df_blksize_factor": 0.05
  15. }
复制代码
主要可供修改的就是df_blksize_factor,如果在您的显卡上出现了OOM,那么把它适当调低即可,但是不建议这么做,因为还是会增加一定的耗时,目前0.05对于大多数24GB显卡够用了,前提是显卡数量大于等于3,所以其实感觉就性价比来说不算特别高吧,但是最起码能用,个人觉得还是像个可以使用的玩具。
2.2.运行方式以及解释:
  1. python main.py input.pdb output_H.pdb \
  2.     --metal-charge ZN:2 \
  3.     --step1 --step2 --step3 --step4 --step5 \
  4.     --json scf_params.json --gpu-json gpu.json
复制代码
总共是5步,可以各自独立运行,没有强制性的先后顺序要求:
steps job describe
--step1 build MCPB MODEL input/geometry
--step2 QM calculation hessian
--step3 RESP RESP2
--step4 FRCMOD GENERATION Seminario
--step5 tleap leap
在amber官网上的1okl金属蛋白,测试是通过的没有问题,同时欢迎各位老师指教)
下面是框架的链接:
https://github.com/KeithTab/MPSCF


忘记提了一下测试的情况,原先的96原子体系的hessian计算预计要125GB左右,用这个框架做的话差不多峰值显存需求约为40GB左右,感觉有两张或者三张显卡还是能算一算的

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-6-9 20:43 , Processed in 0.185968 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list