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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单