docker镜像之RoseTTAFold运用

一 RoseTTAFold简介

官方介绍:RoseTTAFold能够解决具有挑战性的X射线晶体学和低温电镜建模问题,在缺乏实验确定的结构的情况下提供对蛋白质功能的洞察力,并迅速生成准确的蛋白质-蛋白质复合体模型。

用另一种方式来说,就是可以更精确的描绘复合物模型,从而加速了药物开发。

二 调用

首先,介绍一下迷你服务器的linux配置吧

一张3060Ti的显卡, 二十核心的CPU,系统是ubuntu-server20.04。显卡的信息如下:

NVIDIA-SMI 515.65.01    Driver Version: 515.65.01    CUDA Version: 11.7

奇怪的是这里显示的cuda版本是11.7,然而当我安装新版本的pytorch时却显示我的cuda版本是10.2。所以我接下来的安装都是以10.2作为参考进行后续的安装。pytorch安装的网址:

https://pytorch.org/get-started/locally/

所以,当你不确定你的cuda版本时,建议随意安装最新的pytorch版本,此时当你进行后续安装的时候总会有一个环节告诉你正确的版本(哈哈,这是一个傻办法)。

确定好版本之后,将配置设置好,后按照所给的pip提示命令进行pytorch的安装。如针对本电脑


安装的命令如下

pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio===0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102

只是,奇怪的是,在清华源中似乎找不到1.8.2的版本,所以我最终选择了1.8.1的版本进行安装。

之后,可以用python命令查看你的cuda版本以及当前系统的pytorch和cuda版本是否匹配,如果为ture则表示匹配,可以正常使用。

python -c 'import torch; print(torch.__version__);print(torch.version.cuda);print(torch.cuda.is_available())'

需要注意的事,如果你安装的pytorch版本错误,则很有可能出现以下报错

collect2: error: ld returned 1 exit statu

接下来,开始运行我的RoseTTAFold程序

运行程序

../run_pyrosetta_ver.sh input.fa

这里会报错

realpath: missing operand - running the run_[pyrosetta, e2e]_ver.sh

报错的原因是因为你运行程序的时候并未指定输出的路径。

../run_pyrosetta_ver.sh input.fa tempdir/

需要注意的是,这一步还需要安装其他依赖才能实现,所以我这里选择了一个简单的一个测试程序尝试如何使用GPU运行程序。

这里我选择的是predict_complex程序测试。

python network/predict_complex.py -i paired.a3m -o complex -Ls 218 310

对了,运行这一程序以及安装后续pytorch其他依赖包(需要编译)的运行时,都需要提前安装pytest-runner包,这里提前安装上

pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn

报错:

The detected CUDA version (11.0) mismatches the version that was used to compile PyTorch (10.2). Please make sure to use the same CUDA versions.

解决方法

nvcc -version

报错:

command ':/usr/local/cuda/bin/nvcc' failed with exit status 1

error: command ‘/usr/bin/gcc‘ failed with exit code 1

这是因为你系统中本应该在文件夹/usr/local/cuda-11.0/中的cuda现在在文件夹外(/usr/local/)

解决的办法,将cuda移动到/usr/local/cuda-11.0/中即可

pip3 install torch==1.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn

pip install torch-scatter==2.0.6 torch-sparse==0.6.10 torch-cluster==1.5.9 torch-spline-conv==1.2.1 torch-geometric -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn

只是这样安装包会报错

error: 'NoneType' object has no attribute 'origin'

所以还需要用下面的安装方式

查询下载包的网址

https://pytorch-geometric.com/whl/

卸载原有的包对相应的包进行安装,其中以orch-spline-conv为例。注意,下载时会调用多个源。直到最后几个源才能够安装

pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.8.0+cu102.html

此时pip可能会查找相关源,并且前面几个被墙,不过不要气馁,后面会有一个源可以安装对应驱动。

需要注意,RoseTTAFold运行需要借助神经网络包dgl,而我一开始则打算直接安装对应版本的dgl。

pip install dgl==0.6.1 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn

然而报错。这是因为cuda版本和一般的dgl包安装有差异。

gl._ffi.base.DGLError: Operator Range does not support cuda device.

查询版本安装的网址

https://www.dgl.ai/pages/start.html

需要重新安装新版本

pip install dgl-cu102 dglgo -f https://data.dgl.ai/wheels/repo.html

安装后运行,仍然会报错。这是因为动态库并未链接到dgl中


libcublas.so.10: cannot open shared object file: No such file or directory

解决办法,查找所需的头文件,接着链接到dgl库中。

find / -name libcublas.so.10

export LD_LIBRARY_PATH=/opt/conda/envs/folding/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

到了这一步,终于可以快乐的运行RoseTTAFlod了,然而,算力才是最大的限制


哎。。。。。。。。。。。。。。。。还是用CPU版本老老实实的跑吧!!


三 惯例小结

哎,虽说docker不会造成环境污染,但是想在docker上使用英伟达显卡则着实有些不容易。不过看完的读者相当于重新踩过了这些坑,减少了时间的浪费,也不枉费我这记录一场。

另外,进一步推广一下我开发的相关软件,Multi-omics Hammer软件和Multi-omics Visual软件,也欢迎大家关注并多提意见,详细的话可以见个人主页介绍。

以下为自研软件地址:

Multi-omics Hammer软件地址:https://github.com/wangjun258/Multi-omics-Hammer

Multi-omics Visual软件地址:https://github.com/wangjun258/Multi_omics_Visual


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容