PSP - 蛋白质结构预测 OpenFold Multimer 模型训练参数与配置

本文主要是介绍PSP - 蛋白质结构预测 OpenFold Multimer 模型训练参数与配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/132575709

Img
OpenFold Multimer 是用于预测蛋白质多聚体结构的计算方法。基于OpenFold 的单体预测框架,利用深度学习技术,结合序列、进化和互作信息,来推断蛋白质之间的相互作用界面和空间排列。Openfold Multimer 可以处理不同类型的多聚体,包括同源二聚体、异源二聚体、同源多聚体和异源多聚体,优势在于可以在没有任何实验数据或模板的情况下,生成高质量的多聚体结构预测。

工程:GitHub: aqlaboratory/openfold

其他参考文章:

  • 蛋白质结构预测 OpenFold Multimer 训练过程的特征预处理
  • 开源框架 OpenFold 模版 (Template) 逻辑与 HHsearch 搜索模版
  • 基于开源框架 OpenFold Multimer 蛋白质复合物的结构预测与BugFix
  • 基于开源框架 OpenFold 训练的 Finetuning 模型与推理逻辑评估
  • 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

1. 预处理

准备已搜索完成的 MSA 文件,使用脚本 scripts/precompute_alignments.py

1.1 准备 mmcif_cache.json

使用 scripts/generate_mmcif_cache.py 脚本,处理 mmcif 文件的缓存:

nohup python3 -u scripts/generate_mmcif_cache.py [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ mmcif_cache.json --no_workers 128 > nohup.mmcif_cache.out &tail -f nohup.mmcif_cache.out

其中, generate_mmcif_cache.py 运行耗时大约 40min,mmcif_cache.json 的 size 是252M。mmcif_cache.json 输出结果,包括PDB信息,即:

{"4ewn": {"release_date": "2012-12-05","chain_ids": ["D"],"seqs": ["MLAKRI..."],"no_chains": 1,"resolution": 1.9},"5m9r": {"release_date": "2017-02-22","chain_ids": ["A", "B"],"seqs": ["MQDNS...","MQDNS..."],"no_chains": 2,"resolution": 1.44},
# ...

1.2 准备 chain_data_cache.json

使用 scripts/generate_chain_data_cache.py 脚本,处理 mmcif chain 文件的缓存:

nohup python3 -u scripts/generate_chain_data_cache.py [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ chain_data_cache.json --cluster_file clusters-by-entity-40.txt --no_workers 128 > nohup.chain_data_cache.out &tail -f nohup.chain_data_cache.out

其中,generate_chain_data_cache.py 运行耗时大约 2h,chain_data_cache.json 的 size 是 292 M。chain_data_cache.json 输出结果,包括单链信息,即:

{"1p2g_A": {"release_date": "2003-09-02","seq": "SRPLS...","resolution": 2.3,"cluster_size": -1},"7u5p_A": {"release_date": "2022-06-22","seq": "MGAAA...","resolution": 3.14,"cluster_size": -1},
# ...

2. 配置训练脚本

基础训练脚本 train_openfold.py

python3 train_openfold.py mmcif_dir/ alignment_dir/ template_mmcif_dir/ output_dir/ \2021-10-10 \ --template_release_dates_cache_path mmcif_cache.json \ --precision bf16 \--gpus 8 \--replace_sampler_ddp=True \--seed 4242022 \ # in multi-gpu settings, the seed must be specified--deepspeed_config_path deepspeed_config.json \--checkpoint_every_epoch \--resume_from_ckpt ckpt_dir/ \--train_chain_data_cache_path chain_data_cache.json \--obsolete_pdbs_file_path obsolete.dat

具体参数如下:

具体参数:

  • mmcif_dir[your folder]/af2-data-v230/pdb_mmcif/mmcif_files/
  • alignment_dir:特征文件夹
  • template_mmcif_dir[your folder]/af2-data-v230/pdb_mmcif/mmcif_files/
  • output_dir/:输出文件夹
  • max_template_date:默认2021-10-10,模版时间
  • template_release_dates_cache_path:预处理完成
  • precision:精度
  • gpus:GPU数量
  • replace_sampler_ddp:参数
  • seed:种子
  • deepspeed_config_path:deepspeed 配置,工程配置为主
  • checkpoint_every_epoch:缓存
  • resume_from_ckpt:训练恢复,初次训练不需设置
  • train_chain_data_cache_path:预处理完成
  • obsolete_pdbs_file_path[your folder]/af2-data-v230/pdb_mmcif/obsolete.dat

其中,obsolete.dat (过时的) 主要是 PDB 的一些更新与映射,即:

 LIST OF OBSOLETE COORDINATE ENTRIES AND SUCCESSORS
OBSLTE    31-JUL-94 116L     216L
OBSLTE    15-APR-98 125D     1AW6
OBSLTE    20-SEP-99 14PS     1QJB
OBSLTE    30-OCT-78 151C     251C
OBSLTE    15-JAN-91 156B     256B
# ...

更新之后的训练逻辑 train_openfold.py (Monomoer),如下:

python3 train_openfold.py \--train_data_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \--train_alignment_dir mydata/alignment_dir/ \--template_mmcif_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \--output_dir mydata/output_dir/ \--max_template_date "2021-10-10" \--template_release_dates_cache_path mmcif_cache.json \--precision bf16 \--gpus 1 \--replace_sampler_ddp=True \--seed 42 \--deepspeed_config_path deepspeed_config.json \--checkpoint_every_epoch \--train_chain_data_cache_path chain_data_cache.json \--obsolete_pdbs_file_path [your folder]/af2-data-v230/pdb_mmcif/obsolete.dat

训练日志:

# ...
Loading extension module utils...
Time to load utils op: 0.0003807544708251953 seconds| Name  | Type          | Params
----------------------------------------
0 | model | AlphaFold     | 93.2 M
1 | loss  | AlphaFoldLoss | 0     
----------------------------------------
93.2 M    Trainable params
0         Non-trainable params
93.2 M    Total params
372.916   Total estimated model params size (MB)
/opt/conda/envs/openfold/lib/python3.9/site-packages/torch/utils/data/dataloader.py:563: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 10, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.warnings.warn(_create_warning_msg(
/opt/conda/envs/openfold/lib/python3.9/site-packages/pytorch_lightning/trainer/data_loading.py:489: UserWarning: One of given dataloaders is None and it will be skipped.rank_zero_warn("One of given dataloaders is None and it will be skipped.")
Epoch 0:   0%|                   | 54/10000 [26:31<81:25:01, 29.47s/it, loss=132, v_num=]

Multimer 的 train_openfold.py 参数配置,额外增加参数如下:

  • --config_preset "model_1_multimer_v3",Multimer 配置
  • --train_mmcif_data_cache_path mmcif_cache.json,PDB 配置

即:

python3 train_openfold.py \--train_data_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \--train_alignment_dir mydata/alignment_dir/ \--train_mmcif_data_cache_path mmcif_cache.json \--template_mmcif_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \--output_dir mydata/output_dir/ \--max_template_date "2021-10-10" \--config_preset "model_1_multimer_v3" \--template_release_dates_cache_path mmcif_cache.json \--precision bf16 \--gpus 1 \--replace_sampler_ddp=True \--seed 42 \--deepspeed_config_path deepspeed_config.json \--checkpoint_every_epoch \--train_chain_data_cache_path chain_data_cache.json \--obsolete_pdbs_file_path [your folder]/af2-data-v230/pdb_mmcif/obsolete.dat

3. Bug

Bug: docker shared memory limit

日志:

RuntimeError: DataLoader worker (pid 30285) is killed by signal: Bus error. It is possible that dataloader's workers are out of shared memory. Please try to raise your shared memory limit.

修改之后的 Docker 启动程序,添加 --shm-size 参数:

nvidia-docker run -it --name openfold-v3 --shm-size 72G -v [nfs]:[nfs] openfold:v1.03

缓存 Docker

docker ps -a | grep openfold# 提交 Tag
docker ps -l
docker commit [container id] openfold:v1.03# 准备远程 Tag
docker tag openfold:v1.03 harbor.[ip].com/openfold:v1.03
docker images | grep "openfold"# 推送至远程
docker push harbor.[ip].com/openfold:v1.03

参考:

  • CSDN - Docker之通过资源控制来限制风险
  • 知乎 - Dataloader中的num_workers设置与docker的shared memory相关问题

这篇关于PSP - 蛋白质结构预测 OpenFold Multimer 模型训练参数与配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/810627

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal