Skip to content

AlphaFold 3 安装与使用

安装前提

安装 AlphaFold 3 前需先安装好显卡驱动,并且本地安装好 Docker 环境与 NVIDIA Container Toolkit。

NVIDIA Container Toolkit安装

bash
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
sudo yum install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
sudo yum install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

拉取源码

使用 Git 将 AlphaFold 3的最新源码拉取到本地:

bash
cd /share/apps
git clone https://github.com/google-deepmind/alphafold3.git
cd /share/apps
git clone https://github.com/google-deepmind/alphafold3.git

基因数据库下载

使用源码中提供的下载脚本将需要用到的基因数据库下载到本地,数据库大小约为526G左右,最好将数据库单独存放到SSD或者NVME硬盘中,以提升性能。下载脚本使用 wget 进行下载,并且文件服务器在国外,因此强烈推荐配置 wget 代理用于提升数据库文件下载速度。其中 fetch_databases.sh 可以提供一个目录参数,用于存放下载的数据库,下面示例中使用 /share/data/alphafold3 路径来存放数据库。

bash
cd /share/apps/alphafold3
bash fetch_databases.sh /share/data/alphafold3
cd /share/apps/alphafold3
bash fetch_databases.sh /share/data/alphafold3

等待数据库文件下载完成即可。下载完成的数据库文件如下:

(base) [root@sonmi alphafold3]# ll -alh
total 293G
drwxr-xr-x 3 root root 4.0K Feb 15 03:41 .
drwxr-xr-x 4 root root   40 Feb 17 09:41 ..
-rw-r--r-- 1 root root  17G Feb 14 14:39 bfd-first_non_consensus_sequences.fasta
-rw-r--r-- 1 root root 120G Feb 14 14:17 mgy_clusters_2022_05.fa
drwxr-x--- 2 root root 4.6M Oct 11 21:38 mmcif_files
-rw-r--r-- 1 root root  76G Feb 14 18:44 nt_rna_2023_02_23_clust_seq_id_90_cov_80_rep_seq.fasta
-rw-r--r-- 1 root root 223M Feb 14 18:06 pdb_seqres_2022_09_28.fasta
-rw-r--r-- 1 root root 218M Feb 14 18:44 rfam_14_9_clust_seq_id_90_cov_80_rep_seq.fasta
-rw-r--r-- 1 root root  13G Feb 14 18:15 rnacentral_active_seq_id_90_cov_80_linclust.fasta
-rw-r--r-- 1 root root  67G Nov  6 04:14 uniref90_2022_05.fa
(base) [root@sonmi alphafold3]# ll -alh
total 293G
drwxr-xr-x 3 root root 4.0K Feb 15 03:41 .
drwxr-xr-x 4 root root   40 Feb 17 09:41 ..
-rw-r--r-- 1 root root  17G Feb 14 14:39 bfd-first_non_consensus_sequences.fasta
-rw-r--r-- 1 root root 120G Feb 14 14:17 mgy_clusters_2022_05.fa
drwxr-x--- 2 root root 4.6M Oct 11 21:38 mmcif_files
-rw-r--r-- 1 root root  76G Feb 14 18:44 nt_rna_2023_02_23_clust_seq_id_90_cov_80_rep_seq.fasta
-rw-r--r-- 1 root root 223M Feb 14 18:06 pdb_seqres_2022_09_28.fasta
-rw-r--r-- 1 root root 218M Feb 14 18:44 rfam_14_9_clust_seq_id_90_cov_80_rep_seq.fasta
-rw-r--r-- 1 root root  13G Feb 14 18:15 rnacentral_active_seq_id_90_cov_80_linclust.fasta
-rw-r--r-- 1 root root  67G Nov  6 04:14 uniref90_2022_05.fa

获取模型参数

用户使用前需要通过该链接填写谷歌的在线表单,获取授权的模型参数文件下载链接。

将模型文件下载到该路径中:/share/data/alphafold3_model_params

构建Docker镜像

bash
docker build -t alphafold3 -f docker/Dockerfile .
docker build -t alphafold3 -f docker/Dockerfile .

如果在构建过程无法从 docker.io 中下载镜像的话,可以先提前拉取需要用的镜像,之后再执行上面的构建命令:

shell
docker pull nvidia/cuda:12.6.0-base-ubuntu22.04
docker pull nvidia/cuda:12.6.0-base-ubuntu22.04

构建singularity镜像

在超算中,使用 singularity 来运行 AlphaFold 更加简便,因此可以根据已经构建好的Docker容器来构建 singularity 镜像。

运行本地镜像托管仓库并上传已构建镜像

shell
docker run -d -p 5000:5000 --restart=always --name registry registry:2
docker tag alphafold3 localhost:5000/alphafold3
docker push localhost:5000/alphafold3
docker run -d -p 5000:5000 --restart=always --name registry registry:2
docker tag alphafold3 localhost:5000/alphafold3
docker push localhost:5000/alphafold3

从本地仓库构建Singularity容器

shell
SINGULARITY_NOHTTPS=1 singularity build alphafold3.sif docker://localhost:5000/alphafold3:latest
SINGULARITY_NOHTTPS=1 singularity build alphafold3.sif docker://localhost:5000/alphafold3:latest

运行AlphaFold3的Singularity容器

按上面的流程构建好singularity的容器后,运行singularity容器测试是否正常调用显卡:

shell
singularity exec --nv alphafold3.sif sh -c 'nvidia-smi'
singularity exec --nv alphafold3.sif sh -c 'nvidia-smi'

如果一切正常就可以直接使用下面的命令进行调用 AlphaFold3:

shell
# 参数说明
# $HOME/af_input: 请设置为输入文件所在目录
# $HOME/af_output: 请设置为输出文件所在目录
# <MODEL_PARAMETERS_DIR>: AlphaFold3 模型权重所在目录,该示例为 /share/data/alphafold3_model_params
# <DB_DIR>: 基因数据库所在目录,该示例为 /share/data/alphafold3
# 注意:singularity.sif 请替换为绝对路径

singularity exec \
     --nv \
     --bind $HOME/af_input:/root/af_input \
     --bind $HOME/af_output:/root/af_output \
     --bind <MODEL_PARAMETERS_DIR>:/root/models \
     --bind <DB_DIR>:/root/public_databases \
     alphafold3.sif \
     python run_alphafold.py \
     --json_path=/root/af_input/fold_input.json \
     --model_dir=/root/models \
     --db_dir=/root/public_databases \
     --output_dir=/root/af_output
# 参数说明
# $HOME/af_input: 请设置为输入文件所在目录
# $HOME/af_output: 请设置为输出文件所在目录
# <MODEL_PARAMETERS_DIR>: AlphaFold3 模型权重所在目录,该示例为 /share/data/alphafold3_model_params
# <DB_DIR>: 基因数据库所在目录,该示例为 /share/data/alphafold3
# 注意:singularity.sif 请替换为绝对路径

singularity exec \
     --nv \
     --bind $HOME/af_input:/root/af_input \
     --bind $HOME/af_output:/root/af_output \
     --bind <MODEL_PARAMETERS_DIR>:/root/models \
     --bind <DB_DIR>:/root/public_databases \
     alphafold3.sif \
     python run_alphafold.py \
     --json_path=/root/af_input/fold_input.json \
     --model_dir=/root/models \
     --db_dir=/root/public_databases \
     --output_dir=/root/af_output

参考链接

  1. AlphaFold3官方仓库
  2. AlphaFold3官方安装流程

本站内容未经授权禁止转载
联系邮箱: [email protected]