AlphaFold 3 安装指南

文摘   2024-11-12 00:23   广东  

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安装的机器提供了安装说明,并期望这些说明能够为具有不同设置的其他人提供帮助。

下面提供的说明描述了如何:

  1. 在GCP上配置一台机器。
  2. 安装Docker。
  3. 安装A100的NVIDIA驱动程序。
  4. 获得基因数据库。
  5. 获得模型参数。
  6. 构建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

获取基因数据库

这一步需要您的机器上安装了curlzstd

AlphaFold 3需要多个基因(序列)蛋白质和RNA数据库才能运行:

  • BFD小型https://bfd.mmseqs.com/
  • MGnifyhttps://www.ebi.ac.uk/metagenomics/
  • PDBhttps://www.rcsb.org/(mmCIF格式的结构)
  • PDB seqreshttps://www.rcsb.org/
  • UniProthttps://www.uniprot.org/uniprot/
  • UniRef90https://www.uniprot.org/help/uniref
  • NThttps://www.ncbi.nlm.nih.gov/nucleotide/
  • RFamhttps://rfam.org/
  • RNACentralhttps://rnacentral.org/

我们提供了一个Python程序fetch_databases.py,可以用来下载和设置所有这些数据库。如果不在本地SSD上安装,这个过程大约需要45分钟。我们建议在screentmux会话中运行以下命令 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


AI4Protein
读书破万卷juǎn,专注于AI蛋白相关的学术搬运。
 最新文章