当前位置:网站首页>首个大众可用PyTorch版AlphaFold2复现,哥大开源OpenFold,star量破千
首个大众可用PyTorch版AlphaFold2复现,哥大开源OpenFold,star量破千
2022-06-24 19:02:00 【OpenCV学堂】
点击上方↑↑↑“OpenCV学堂”关注我来源:公众号 机器之心 授权AlphaFold2 是 2021 年 AI for Science 领域最耀眼的一颗星。现在,有人在 PyTorch 中复现了它,并已在 GitHub 上开源。这一复现在性能上媲美原版 AlphaFold2,且在算力、存储方面的要求对于大众来说更加友好。
刚刚,哥伦比亚大学系统生物学助理教授 Mohammed AlQuraishi 在推特上宣布,他们从头训练了一个名为 OpenFold 的模型,该模型是 AlphaFold2 的可训练 PyTorch 复现版本。Mohammed AlQuraishi 还表示,这是第一个大众可用的 AlphaFold2 复现。
AlphaFold2 可以周期性地以原子精度预测蛋白质结构,在技术上利用多序列对齐和深度学习算法设计,并结合关于蛋白质结构的物理和生物学知识提升了预测效果。它实现了 2/3 蛋白质结构预测的卓越成绩并在去年登上了《自然》杂志。更令人惊喜的是,DeepMind 团队不仅开源了模型,还将 AlphaFold2 预测数据做成了免费开放的数据集。
然而,开源并不意味着能用、好用。其实,AlphaFold2 软件系统的部署难度极大,并且对硬件的要求高、数据集下载周期长、占用空间大,每一条都让普通开发者望而却步。因此,开源社区一直在努力实现 AlphaFold2 的可用版本。
这次哥伦比亚大学 Mohammed AlQuraishi 教授等人实现的 OpenFold 总训练时间大约为 100000 A100 小时,但在大约 3000 小时内就达到了 90% 的准确率。
OpenFold 与原版 AlphaFold2 的准确率相当,甚至略胜一筹,可能因为 OpenFold 的训练集更大一点:
OpenFold 的主要优势是推理速度显著提升,对于较短的蛋白质序列,OpenFold 的推理速度可以达到 AlphaFold2 的两倍。另外,由于使用自定义的 CUDA 内核,OpenFold 使用更少的内存就能推理更长的蛋白质序列。
OpenFold 介绍
OpenFold 几乎再现了原始开源推理代码 (v2.0.1) 的所有功能,除了已趋于被淘汰的「模型集成」功能,该功能在 DeepMind 自己的消融测试中就表现不佳。
无论是否有 DeepSpeed,OpenFold 都能以全精度或 bfloat16 进行训练。为了实现 AlphaFold2 的原始性能,该团队从头开始训练 OpenFold,现已公开发布了模型权重和训练数据。其中,训练数据包含大约 400000 份 MSA 和 PDB70 模板文件。OpenFold 还支持使用 AlphaFold 的官方参数进行蛋白质推理。
与其他实现相比,OpenFold 具有以下优点:
- 短序列推理:加快了在 GPU 上推理少于 1500 个氨基酸残基的链的速度;
- 长序列推理:通过该研究实现的低记忆注意力(low-memory attention)对极长链进行推理,OpenFold 可以在单个 A100 上预测 超过 4000 个残基的序列结构,借助 CPU offload 甚至可以预测更长的序列;
- 内存高效在训练和推理期间,在 FastFold 内核基础上修改的自定义 CUDA 注意力内核,使用的 GPU 内存分别比等效的 FastFold 和现有的 PyTorch 实现少 4 倍和 5 倍;
- 高效对齐脚本:该团队使用原始 AlphaFold HHblits/JackHMMER pipeline 或带有 MMseqs2 的 ColabFold,已经生成了数百万个对齐。
Linux 系统下的安装与使用
开发团队提供了一个在本地安装 Miniconda、创建 conda 虚拟环境、安装所有 Python 依赖项并下载有用资源的脚本,包括两组模型参数。
运行以下命令:
scripts/install_third_party_dependencies.sh使用如下命令激活环境:
source scripts/activate_conda_env.sh停用命令:
source scripts/deactivate_conda_env.sh在激活环境下,编译 OpenFold 的 CUDA 内核
python3 setup.py install在 / usr/bin 路径下安装 HH-suite:
# scripts/install_hh_suite.sh使用如下命令可以下载用于训练 OpenFold 和 AlphaFold 的数据库:
bash scripts/download_data.sh data/如果要使用一组 DeepMind 的预训练参数对一个或多个序列进行推理,可以运行如下代码:
python3 run_pretrained_openfold.py \
fasta_dir \
data/pdb_mmcif/mmcif_files/ \
--uniref90_database_path data/uniref90/uniref90.fasta \
--mgnify_database_path data/mgnify/mgy_clusters_2018_12.fa \
--pdb70_database_path data/pdb70/pdb70 \
--uniclust30_database_path data/uniclust30/uniclust30_2018_08/uniclust30_2018_08 \
--output_dir ./ \
--bfd_database_path data/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--model_device "cuda:0" \
--jackhmmer_binary_path lib/conda/envs/openfold_venv/bin/jackhmmer \
--hhblits_binary_path lib/conda/envs/openfold_venv/bin/hhblits \
--hhsearch_binary_path lib/conda/envs/openfold_venv/bin/hhsearch \
--kalign_binary_path lib/conda/envs/openfold_venv/bin/kalign
--config_preset "model_1_ptm"
--openfold_checkpoint_path openfold/resources/openfold_params/finetuning_2_ptm.pt更多细节请参见 GitHub:https://github.com/aqlaboratory/openfold
参考链接:
https://cloud.tencent.com/developer/article/1861192
https://twitter.com/MoAlQuraishi
边栏推荐
- 苹果不差钱,但做内容“没底气”
- Unity移动端游戏性能优化简谱之 以引擎模块为划分的CPU耗时调优
- Information theory of popular science Shannon
- Teach you how to view the number of connected people on WiFi in detail how to view the number of connected people on WiFi
- Apache+php+mysql environment construction is super detailed!!!
- How does the video platform import the old database into the new database?
- SQL export CSV data, unlimited number of entries
- First understand redis' data structure - string
- Docker installing MySQL
- To open the registry
猜你喜欢

Zadig + 洞态 IAST:让安全溶于持续交付

R for Data Science (notes) -- data transformation (used by filter)

Audio and video 2020 2021 2022 basic operation and parameter setting graphic tutorial

Test drive citus 11.0 beta (official blog)

Bytebase rejoint la communauté de base de données open source d'alicloud polardb

Making startup U disk -- Chinese cabbage U disk startup disk making tool V5.1
![[R tidyverse] use of select verb](/img/2d/768391bc6ec497432915024bc90842.jpg)
[R tidyverse] use of select verb

Kubernetes集群部署

An accident caused by a MySQL misoperation cannot be withstood by High Availability!

Error in Android connection database query statement
随机推荐
数字孪生行业案例:智慧港口数字化
Audio and video 2020 2021 2022 basic operation and parameter setting graphic tutorial
[cann document express issue 05] let you know what operators are
Predicate
Confirm whether the host is a large terminal or a small terminal
【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习
What is CNN (convolutional neural network)
Uninstall tool v3.5.10.5670 single file portable official version
The efficiency of okcc call center data operation
R for Data Science (notes) -- data transformation (used by filter)
Bytebase 加入阿里云 PolarDB 开源数据库社区
Based on STM32F103 0.96 inch OLED LCD driver (IIC communication)
Eureka source code shallow reading - automatic fault removal
[R tidyverse] use of select verb
Database index can improve query efficiency. Ask what will improve, what is the difference between inapplicable index and index use, and what will happen.
JMeter environment deployment
【CANN文档速递06期】初识TBE DSL算子开发
Docker installing MySQL
思源笔记工具栏中的按钮名称变成了 undefined,有人遇到过吗?
等等党们的胜利!挖矿退潮后,显卡价格全面暴跌