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 dockercurl -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.gitcd /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/alphafold3cd /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.04docker 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/alphafold3docker 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:latestSINGULARITY_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