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