一 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
