欢迎光临散文网 会员登陆 & 注册

alphafold2安装记录230610, Docker法安装运行

2023-06-10 22:23 作者:张张的科研笔记  | 我要投稿

接下来是安装docker,

  其实之前公司帮忙安好了conda版的,可以通过module模式加载af2环境,类似deepEM_hancer_dev。就是没下载Database,我一开始下载Database失败,以为他没装好,一怒之下把所有alphafold相关的文件夹都删干净了,自然啥都没有了。

        为了不破坏集群环境,一开始尝试使用conda版安装,但是后面被我把conda环境搞坏了,报错逐渐加重,一开始是少数几条命令报错,搞到第二天,几乎所有conda命令都报错,而且也不弹出报错信息了,就卡住。  应该是conda的python,user site-packages没有隔离时,运行了pip install导致,但是我解决不了。看了下conda环境目录的cryosparc还能正常运行,deepEMhancer和Topaz现在都可以依赖cryosparc运行,应该也没问题。还好,不算搞砸。

        那只能用docker安装了。docker我报了很多错,查了许多教程,所以下面的命令可能是冗余的。

一开始列出可安装的docker版本号

yum list docker-ce --showduplicates | sort -r

没结果

需要设置镜像仓库。

sudo yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

显示:都安装好的

设置稳定版仓库:

sudo yum-config-manager \

  --add-repo \

  https://download.docker.com/linux/centos/docker-ce.rep

然后再运行上述命令,

yum list docker-ce --showduplicates | sort -r

可以的,就挑了一个版本安装

 sudo yum install docker-ce-24.0.2-1 docker-ce-cli-24.0.2-1 containerd.io

报错

yum clean all

yum makecache

再运行上面的安装特定版本,成功安装

启动docker

systemctl start docker

启动不了,报错

上面的命令可能有些是有用的,但我不清楚哪些有用。

yum update -y

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce

启动docker

systemctl start docker

docker run hello-world

成功!

接下来设置非root启动docker

官方文档

https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user

 sudo usermod -aG docker spuser

spuser是用户名

应用更改

newgrp docker

测试

 docker run hello-world

成功

接下来在docker中安装 NVIDIA Container Toolkit for GPU support. 我们集群是CentOS7.9,就按官方文档安装。

Setup the repository and the GPG key:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \

   curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

sudo yum-config-manager --enable libnvidia-container-experimental

sudo yum clean expire-cache

sudo yum install -y nvidia-container-toolkit

sudo nvidia-ctk runtime configure --runtime=docker

sudo systemctl restart docker

sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi

上面的命令是检查是否成功,命令输入的版本号和自己版本号是不一样的。

我输入上述命令失败后,又使用alphafold教程里的命令

docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

虽然我的cuda版本是11.2,高于11.0,还是失败。当时以为没装好,又反复找教程卸了重装。

后来发现

sudo docker run --gpus all --rm nvidia/cuda:10.0-base nvidia-smi

输入这个成功,看来检测时也不能用版本太高的命令。

docker build -f docker/Dockerfile -t alphafold .

pip3 install -r docker/requirements.txt

等一两个小时吧,就好了。

有教程改脚本,更改输出目录,但其实运行alphafold时命令里可以添加输出位置,不需要在脚本里改,但我还是改了

 cd alphafold/docker

 vim alphafold/docker/run_docker.py

output_dir后面改为输出结果的绝对路径

运行官方命令报错,索性用下面这个命令(所以改非管理员权限运行docker改了个寂寞,最后还得管理员才不报错)

sudo python3 /绝对路径alphafold/docker/run_docker.py \

  --fasta_paths=/绝对路径/linker.fasta \

  --max_template_date=2023-06-09(当天或者当天前一天,我倾向于前一天) \

  --model_preset=monomer(多条链的复合物就是multimer) \

  --data_dir=/绝对路径/Database \

  --gpu_devices=0,1(GPU编号) \

  --output_dir=/绝对路径/prediction/test

运行上,会有报错消息,不影响运行

 

TPU是谷歌创建的专用集成电路,可配合tensorflow使用

rocm是AMD显卡加速

plugin那个可能跟tensorflow有关,不管了。

运行jackhmmer时间久了会报错,断开ssh

client_loop: send disconnect: Connection reset

但是我们服务器不是这样的,就算好几天不运行任务也不会自动断开。只能是脚本运行时出问题所以断开。

另外确实输出了文件,但是不确定是什么时候生成的

使用stat ranked_0.pdb查看生成时间,但系统时间是乱的(换算一下是次日上午八点,但凌晨2点不到就已经断开ssh了),也不能确定。(这个如果有人知道为什么,是否需要解决,希望评论告知,不胜感谢)

为了测试运行是否靠谱,使用colab运行相同序列

AlphaFold.ipynb - Colaboratory (google.com)

This Colab notebook allows you to easily predict the structure of a protein using a slightly simplified version of AlphaFold v2.3.2.

       这个版本运行到第五步会出错,不过在jackhmmer这一步进行序列比对时,花费的时间和我在本地进行的相似,1h42min,从而说明jackhmmer运行时间久是正常的。

AlphaFold2.ipynb - Colaboratory (google.com)

ColabFold v1.5.2-patch: AlphaFold2 using MMseqs2,这个可能更轻量化。运行成功了。

值得注意的是,选取预测的结果时,看文件名的rank值,rank0最可信。而不是根据model数,以前我用的都是model5。

比较colab和我本地运行的结果,发现跨膜区基本相似,但都和未发表结构差别不小。

        胞外有两部分,一个相对稳定,第二部分取向不定。colab的简化的模型预测的5种结果取向角度范围窄。本地运行的范围宽,而且rank0和colab相比,第二部分灵活区差别非常大,没有重合。根据一个低分辨率的电子云密度来放的话,他们似乎可以分别放进成filp的两个map中。这部分的取向和我凭感觉往密度里搭的完全不同。有一定参考意义,真实什么样子还要靠继续计算电子云密度。

        随后又从github issues 区找了一个jackhmmer fail的话题,copy了解决办法提供的fasta文件的一段序列,进行本地运行,确保输入没问题。也运行成功了。

运行没问题,alphafold应该是搭成了。接下来把database拷到另一台集群,再搭建应该快很多。


alphafold2安装记录230610, Docker法安装运行的评论 (共 条)

分享到微博请遵守国家法律