悠扬随风 发表于 2024-10-30 16:15:10

Ubuntu22.04+GPU4090 的 esmfold+openfold 安装全流程

前言

  呆板学习的各种软件版本对应真的是深度学习初学者(我)的一生之敌啊,继上一次部署了一周的colabfold后,如今我又开始和esmfold的安装在掰头了,还好这次只花了两天就取得了阶段性胜利。本文重要纪录一下设置的全流程以及重要问题的解决。
关键词

esmfold安装全流程,GPU设置和部署,github克隆和安装
重要参考



[*]esmfold 参考
1. https://blog.csdn.net/weixin_40192882/article/details/136178381/
2. https://github.com/facebookresearch/esm/
[*]openfold 参考
3. https://github.com/aqlaboratory/openfold/tree/f434a2786b5a6b39171f358fb3470ad9f4fd2a58/
4. https://openfold.readthedocs.io/en/latest/Installation.html#%22https://github.com/conda-forge/miniforge/releases/latest/download/
一、conda设置esmfold基础环境

step1. 将以下内容保存为:conda_environment.yml

name: esmfold
channels:
- conda-forge
- bioconda
- pytorch
dependencies:
- conda-forge::python=3.7
- conda-forge::setuptools=59.5.0
- conda-forge::pip
- conda-forge::openmm=7.5.1
- conda-forge::pdbfixer
- conda-forge::cudatoolkit==11.3.*
- conda-forge::cudatoolkit-dev==11.3.*
- conda-forge::einops==0.6.1
- conda-forge::fairscale
- conda-forge::omegaconf
- conda-forge::hydra-core
- conda-forge::pandas
- conda-forge::pytest
- bioconda::hmmer==3.3.2
- bioconda::hhsuite==3.3.0
- bioconda::kalign2==2.04
- pytorch::pytorch=1.12.*
step2. 构建conda环境

conda env create -f conda_environment.yml ##创建esmfold环境
step3. 检查conda安装包的版本号

conda env list ##查看刚构建的conda环境
conda activate esmfold ##进入构建的conda环境
conda list ##列出此conda环境的所有软件包
step4. 将以下内容保存为:pip_requirements.txt

biopython==1.79
deepspeed==0.5.9
dm-tree==0.1.6
ml-collections==0.1.0
numpy==1.21.2
PyYAML==5.4.1
requests==2.26.0
scipy==1.7.1
tqdm==4.62.2
typing-extensions==3.10.0.2
pytorch_lightning==1.5.10
wandb==0.12.21
biotite==0.39.0
matplotlib
joblib
step5. pip更新安装包版本

pip install -r pip_requirements.txt
二、esmfold安装

按照官网教程,下一步就应该跑这几个pip,然后就完善收官了!BUT!以我半年来装带显卡的深度学习软件履向来看,设置可能还会和本机原有设置辩论,果不其然,openfold就是怎么也装不上。
pip install fair-esm# latest release,OR
pip install git+https://github.com/facebookresearch/esm.git# bleeding edge, current repo main branch
pip install "fair-esm"
# OpenFold and its remaining dependency
pip install 'dllogger @ git+https://github.com/NVIDIA/dllogger.git'
pip install 'openfold @ git+https://github.com/aqlaboratory/openfold.git@4b41059694619831a7db195b7e0988fc4ff3a307'
如果有小伙伴在这一步就完善通关了,恭喜你,可以直接跳过第三部分openfold的曲折安装直接调用程序了!
三、openfold安装

> 由于实在不清楚git+https://github.com/aqlaboratory/openfold.git@4b41059694619831a7db195b7e0988fc4ff3a307是openfold的哪个版本号,所以下文安装的是现在最新的openfoldv.2.1.0
   更正:由于后续发现只有openfoldv.1才能正常使用esmfold模拟,下文重新介绍如何安装openfoldv.1
(备注:使用openfoldv.2.1.0时模拟出现的问题:Keys ‘trunk.structure_module.ipa.linear_q_points.linear.weight, trunk.structure_module.ipa.linear_q_points.linear.bias, trunk.structure_module.ipa.linear_kv_points.linear.weight, trunk.structure_module.ipa.linear_kv_points.linear.bias’ are missing.)
(建议:step2-5是我安装时碰到的问题及解决办法,给大家提供个参考。建议大家运行完step1后根据自己安装的报错信息找相应的问题,无需按照我的序次安装)
step1:Github克隆特定版本openfold并安装

https://blog.csdn.net/qq_45961101/article/details/130384117
https://blog.csdn.net/weixin_44789022/article/details/138523343
重新再看这段信息,会发现救赎之道就在其中。所有pip install ‘git’ 失败的都可以尝试下以下方法。
https://i-blog.csdnimg.cn/direct/30c1e4ab0cb844f4a5eb16ef1a37f8f0.png#pic_center
## 下载最新版本的openfold(弃用)
# git clone --depth=1 https://github.com/aqlaboratory/openfold.git
## 下载指定版本的openfold
git clone --filter=blob:none --quiet https://github.com/aqlaboratory/openfold.git ./openfold
cd ./openfold/
git rev-parse -q --verify 'sha^4b41059694619831a7db195b7e0988fc4ff3a307'
git fetch -q https://github.com/aqlaboratory/openfold.git 4b41059694619831a7db195b7e0988fc4ff3a307
git checkout -q 4b41059694619831a7db195b7e0988fc4ff3a307
运行完这几步,会发现在./openfold/setup.py里version由原来的2.0.0变成了1.0.0,阐明指定版本openfold下载成功。
https://i-blog.csdnimg.cn/direct/8565f109cb544fa39eaf562b478db94a.png#pic_center
## 安装
pip install -e .
step2:mkl版本问题



[*]报错:“undefined symbol: iJIT_NotifyEvent”
https://i-blog.csdnimg.cn/blog_migrate/6a20205a3f923d0551d7fcebb5ad15c5.png#pic_center
解决方法:对mkl进行降级
https://blog.csdn.net/mr_hore/article/details/138961434
conda uninstall mkl
conda install mkl=2018 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/
step3:pytorch+gcc+cuda对应问题

提供一下我多次尝试安装成功的设置(网上也有许多提到设置pytorch和cuda设置的问题,但很少会提到偶尔也会出现的gcc设置问题):pytorch1.12.1+cuda11.3+cudnn8.9+gcc7
(备注:偶尔候不改gcc版本也可安装成功)
##cuda和cudnn只能在nvidia下载,conda下载cuda环境对openfold不管用
#https://blog.csdn.net/ksws0292756/article/details/80120561
##conda下载gcc和gxx
conda install -c moussi gcc_impl_linux-64=7.3.0
conda install -c moussi gxx_impl_linux-64=7.3.0
cd /home/line2/anaconda3/envs/esmfold_env/bin
##链接到gcc和gxx(进入自己的bin看叫gcc和gxx什么名字)
ln -s ./x86_64-conda_cos6-linux-gnu-gcc ./gcc
ln -s ./x86_64-conda_cos6-linux-gnu-g++ ./g++
到此为止,在自己的conda环境下检查cuda和gcc应该都是对应新安装的版本
nvcc -V ##cuda版本
gcc -v ##gcc版本
https://i-blog.csdnimg.cn/blog_migrate/c0aa5f998139afa8d318ce1d26913b4e.png#pic_center
step4:torch-gpu未安装



[*]报错:“No CUDA runtime is found, using CUDA_HOME=‘/usr/local/cuda’”
https://i-blog.csdnimg.cn/blog_migrate/f18a8a9efc0b9c63e88af3ae499d3ce8.png#pic_center解决办法:安装对应的torch
https://pytorch.org/get-started/previous-versions/
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 -f https://mirror.sjtu.edu.cn/pytorch-wheels/torch_stable.html
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
step5: setup.py更改



[*] 报错:“subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1”
https://i-blog.csdnimg.cn/direct/17ddd3ea116f48649fbdb330be4cb641.png#pic_center
解决办法:https://blog.csdn.net/fq9200/article/details/125362088
将setup.py中的"cmdclass={‘build_ext’: BuildExtension}”这一行改为“cmdclass={‘build_ext’: BuildExtension.with_options(use_ninja=False)}"
https://i-blog.csdnimg.cn/direct/076b9baa8cbb47d4ab60dd4af34233fb.png#pic_center
[*] 报错:“nvcc fatal : Unsupported gpu architecture ‘compute_89’”
https://i-blog.csdnimg.cn/direct/1b5f537da5384f3290b645233ec47c94.png#pic_center
解决办法:将setup.py中"f’arch=compute_{major}{minor},code=sm_{major}{minor}‘,"改为"f’arch=compute_70,code=sm_70’,"(备注:理论上替换成你的nvcc支持的compute构架就行,详见后文小TIPS-2)
https://i-blog.csdnimg.cn/direct/df91eff09e2849a4a61e4c6ed45420d7.png#pic_center
step6:openfold成功安装

https://i-blog.csdnimg.cn/direct/12cacaeefced40c699b7216b54e2de56.png#pic_center
四、成功调用测试

将以下内容保存为:test.fasta
>test
MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG
运行测试代码
esm-fold -i test.fasta -o ./
https://i-blog.csdnimg.cn/direct/38306c6104474aeeac50ee8f6211bead.png#pic_center
恭喜!完结撒花!
五、其他可行方案和小TIPS

小TIPS-1:miniforge的mamba

我发现用miniforge3构建esmfold的conda环境比用anaconda3构建的少许多报错(本来openfold官网保举的也是miniforge的mamba安装哈哈),保举大家尝试miniforge3安装。
mkdir miniforge
cd miniforge
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge-pypy3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
小TIPS-2:如何查看自己显卡构架信息

网页搜索:NVIDIA Ada(替换成自己显卡架构名字) GPU Architecture Compatibility
nvidia-smi -q | grep -i arch ##方法一:查看显卡构架名字
nvcc --list-gpu-arch ##方法二:直接查看支持的compute构架
其他可行方案

所有步骤运行下来会发现esmfold安装的焦点在于精确安装openfoldv.1.0.0,既然如此我们打蛇打七寸,直接先参考openfold安装步骤安装openfoldv.1.0.0,然后在openfoldv.1.0.0环境中补充安装esmfold即可(两者给出的environment.yml基本是一样的)
cd openfold
## 安装完成openfold
/home/line2/miniforge3/bin/mamba env create -n openfold_venv -f environment.yml
#conda config --show envs_dirs
#conda config --append envs_dirs /home/line2/miniforge3/envs
conda activate openfold_venv
bash scripts/install_third_party_dependencies.sh
pip install -e .
## 安装完成esmfold
pip install fair-esm# latest release,OR
pip install git+https://github.com/facebookresearch/esm.git# bleeding edge, current repo main branch
pip install "fair-esm"
## 成功
六、更新信息

20240730 第一次更新:更正安装openfold版本,增加调用数据测试。
总结

世上无难事,只怕故意人。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Ubuntu22.04+GPU4090 的 esmfold+openfold 安装全流程