AlphaFold 3 的安装指南
跟我一起来探索 AlphaFold3 的世界吧!
原文
https://github.com/google-deepmind/alphafold3/blob/main/docs/installation.md
安装和运行您的第一个预测
您需要一台运行Linux的机器;AlphaFold 3不支持其他操作系统。完整的安装需要高达1 TB的磁盘空间来保存基因数据库(建议使用SSD存储),以及具有8.0或更高计算能力的 NVIDIA GPU(具有更多内存的GPU可以预测更大的蛋白质结构)。我们已经验证了最多 5,120 个token的输入可以适应单卡 NVIDIA A100 80 GB或单卡 NVIDIA H100 80 GB。我们已经在NVIDIA A100和H100 GPU上验证了数值精度。
特别是对于长目标,遗传搜索阶段可能会消耗大量RAM - 我们建议至少运行 64 GB的RAM。
我们为配备NVIDIA A100 80 GB GPU和干净的Ubuntu 22.04 LTS安装的机器提供了安装说明,并期望这些说明能够为具有不同设置的其他人提供帮助。
下面提供的说明描述了如何:
在GCP上配置一台机器。 安装Docker。 安装A100的NVIDIA驱动程序。 获得基因数据库。 获得模型参数。 构建AlphaFold 3 Docker容器或Singularity映像。
配置机器
在Google Cloud、AWS、Azure和其他主要平台上都有可用的Clean Ubuntu映像。
我们首先使用以下命令在Google Cloud Platform上配置了一台新机器。我们使用的是一个已经设置好的Google Cloud项目。
我们建议使用 --machine-type a2-ultragpu-1g
,但如果您选择--machine-type a2-highgpu-1g
用于较小的预测,也请随意。如果需要,将 --zone us-central1-a
替换为您选择的机器有配额的区域。请参见gpu-regions-zones(https://cloud.google.com/compute/docs/gpus/gpu-regions-zones)。
gcloud compute instances create alphafold3 \
--machine-type a2-ultragpu-1g \
--zone us-central1-a \
--image-family ubuntu-2204-lts \
--image-project ubuntu-os-cloud \
--maintenance-policy TERMINATE \
--boot-disk-size 1000 \
--boot-disk-type pd-balanced
这将在A2 Ultra
(https://cloud.google.com/compute/docs/accelerator-optimized-machines#a2-vms)
机器上配置一个裸机Ubuntu 22.04 LTS映像,附带12个CPU、170 GB RAM、1 TB磁盘和NVIDIA A100 80 GB GPU。我们从这一点开始验证了以下安装步骤。
安装Docker
这些指令适用于无根Docker。
1. 在主机上安装Docker
注意,这些指令仅适用于Ubuntu映像,见上文。
添加Docker的官方GPG密钥。官方Docker指令在这里
(https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository)。
我们运行的命令是:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
将仓库添加到apt源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
2. 启用无根(Rootless) Docker
官方Docker指令在这里
(https://docs.docker.com/engine/security/rootless/#distribution-specific-hint)。
我们运行的命令是:
sudo apt-get install -y uidmap systemd-container
sudo machinectl shell $(whoami)@ /bin/bash -c 'dockerd-rootless-setuptool.sh install && sudo loginctl enable-linger $(whoami) && DOCKER_HOST=unix:///run/user/1001/docker.sock docker context use rootless'
安装GPU支持
1. 安装NVIDIA驱动程序
官方Ubuntu指令在这里
(https://documentation.ubuntu.com/server/how-to/graphics/install-nvidia-drivers/)。
我们运行的命令是:
sudo apt-get -y install alsa-utils ubuntu-drivers-common
sudo ubuntu-drivers install
sudo nvidia-smi --gpu-reset
nvidia-smi # 检查驱动程序是否已安装。
如果出现“待处理的内核升级”对话框,请接受。
如果您看到以下警告,请使用sudo reboot now
重启实例以重置GPU:
NVIDIA-SMI 失败是因为它无法与NVIDIA驱动程序通信。
确保已安装并运行最新的NVIDIA驱动程序。
只有在nvidia-smi
有合理的输出时才继续。
2.安装Docker的NVIDIA支持
官方NVIDIA指令在这里。我们运行的命令是:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker --config=$HOME/.config/docker/daemon.json
systemctl --user restart docker
sudo nvidia-ctk config --set nvidia-container-cli.no-cgroups --in-place
检查您的容器是否可以看见GPU:
docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi
输出应该类似于这样:
2024年11月11日 星期一
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.120 驱动程序版本:550.120 CUDA版本:12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU 名称 持久性-M | Bus-Id Disp.A | 易失性非校正ECC |
| 风扇 温度 性能 Pwr:Usage/Cap | 内存使用 | GPU-Util 计算M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A100-SXM4-80GB 关闭 | 00000000:00:05.0 关闭 | 0 |
| N/A 34C P0 51W / 400W | 1MiB / 81920MiB | 0% 默认 |
| | | 禁用 |
+-----------------------------------------+------------------------+----------------------+
| 进程:|
| GPU GI CI PID 类型 进程名称 GPU内存使用 |
| ID ID 使用 |
|=========================================================================================|
| 未找到运行中的进程 |
+-----------------------------------------------------------------------------------------+
获取AlphaFold 3源代码
您需要安装git
来下载AlphaFold 3仓库:
git clone https://github.com/google-deepmind/alphafold3.git
获取基因数据库
这一步需要您的机器上安装了curl
和zstd
。
AlphaFold 3需要多个基因(序列)蛋白质和RNA数据库才能运行:
BFD小型: https://bfd.mmseqs.com/ MGnify: https://www.ebi.ac.uk/metagenomics/ PDB: https://www.rcsb.org/(mmCIF格式的结构) PDB seqres: https://www.rcsb.org/ UniProt: https://www.uniprot.org/uniprot/ UniRef90: https://www.uniprot.org/help/uniref NT: https://www.ncbi.nlm.nih.gov/nucleotide/ RFam: https://rfam.org/ RNACentral: https://rnacentral.org/
我们提供了一个Python程序fetch_databases.py
,可以用来下载和设置所有这些数据库。如果不在本地SSD上安装,这个过程大约需要45分钟。我们建议在screen
或tmux
会话中运行以下命令
cd alphafold3 # 导航到克隆的AlphaFold 3仓库目录。python3 fetch_databases.py --download_destination=<DATABASES_DIR>
,因为下载和解压缩数据库需要一些时间。
cd alphafold3 # 导航到克隆的AlphaFold 3仓库目录。
python3 fetch_databases.py --download_destination=<DATABASES_DIR>
这个脚本从一个托管在GCS上的镜像下载数据库,所有版本都与AlphaFold 3论文中使用的相同。
:ledger: 注意:下载目录<DATABASES_DIR>
不应该是AlphaFold 3仓库目录的子目录。如果是,Docker构建将会很慢,因为大型数据库将在镜像创建过程中被复制。
:ledger: 注意:完整数据库的总下载大小约为252 GB,解压缩后的总大小为630 GB。请确保您有足够的硬盘空间、带宽和时间来下载。我们建议使用SSD以获得更好的基因搜索性能,以及fetch_databases.py
的更快运行时间。
:ledger: 注意:如果下载目录和数据集没有完全的读写权限,可能会导致MSA工具出现错误,错误消息不明确。请确保应用了所需的权限,例如使用sudo chmod 755 --recursive <DATABASES_DIR>
命令。
脚本完成后,您应该拥有以下目录结构:
pdb_2022_09_28_mmcif_files.tar # ~200k PDB mmCIF文件在此tar中。
bfd-first_non_consensus_sequences.fasta
mgy_clusters_2022_05.fa
nt_rna_2023_02_23_clust_seq_id_90_cov_80_rep_seq.fasta
pdb_seqres_2022_09_28.fasta
rfam_14_9_clust_seq_id_90_cov_80_rep_seq.fasta
rnacentral_active_seq_id_90_cov_80_linclust.fasta
uniprot_all_2021_04.fa
uniref90_2022_05.fa
获取模型参数
要请求访问AlphaFold 3模型参数,请完成此表格。访问权限将由Google DeepMind自行决定授予。我们将在2-3个工作日内回复请求。您只能直接从Google获得AlphaFold 3模型参数。使用受这些使用条款的约束。
构建将运行AlphaFold 3的Docker容器
然后,构建Docker容器。这将构建一个包含所有正确Python依赖项的容器:
docker build -t alphafold3 -f docker/Dockerfile .
您现在可以运行AlphaFold 3了!
docker run -it \
--volume $HOME/af_input:/root/af_input \
--volume $HOME/af_output:/root/af_output \
--volume <MODEL_PARAMETERS_DIR>:/root/models \
--volume <DATABASES_DIR>:/root/public_databases \
--gpus all \
alphafold3 \
python run_alphafold.py \
--json_path=/root/af_input/fold_input.json \
--model_dir=/root/models \
--output_dir=/root/af_output
:ledger: 注意:在上面的示例中,数据库已经被放置在持久磁盘上,这很慢。如果您想要更好的基因和模板搜索性能,请确保所有数据库都放置在本地SSD上。
如果您遇到以下错误,请确保模型和数据在路径(上面标志--volume
)中的正确位置。
docker: 错误响应来自守护程序:创建挂载源路径'/srv/alphafold3_data/models'时出错:mkdir /srv/alphafold3_data/models:权限被拒绝。
使用Singularity而不是Docker运行
您可能更喜欢在Singularity中运行AlphaFold 3。您仍然需要从Docker容器构建Singularity映像。之后,您将不必依赖Docker(在结构预测时)。
1. 安装Singularity
官方Singularity指令在这里。我们运行的命令是:
wget https://github.com/sylabs/singularity/releases/download/v4.2.1/singularity-ce_4.2.1-jammy_amd64.deb
sudo dpkg --install singularity-ce_4.2.1-jammy_amd64.deb
sudo apt-get install -f
从Docker映像构建Singularity容器
在上述使用docker build -t
构建Docker容器后,启动一个本地Docker注册表并将您的映像alphafold3
上传到其中。Singularity的指令在这里。我们运行的命令是:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
docker tag alphafold3 localhost:5000/alphafold3
docker push localhost:5000/alphafold3
然后构建Singularity容器:
SINGULARITY_NOHTTPS=1 singularity build alphafold3.simg docker://localhost:5000/alphafold3:latest
您可以通过启动一个shell并检查环境来确认您的构建。例如,您可能想要确保Singularity映像可以访问您的GPU。如果您遇到问题,您可能需要重启计算机。
singularity exec --nv alphafold3.simg sh -c 'nvidia-smi'
您现在可以运行AlphaFold 3了!
singularity exec --nv alphafold3.simg <<args>>
例如:
singularity exec \
--nv alphafold3.simg \
--bind $HOME/af_input:/root/af_input \
--bind $HOME/af_output:/root/af_output \
--bind <MODEL_PARAMETERS_DIR>:/root/models \
--bind <DATABASES_DIR>:/root/public_databases \
python alphafold3/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