部署指南#

本节提供有关 AlphaFold2 NIM 部署的更多详细信息。

查看可用的 NIM 容器信息#

可以使用以下命令查看容器镜像标签,类似于 NGC 上的其他容器镜像。

ngc registry image info nvcr.io/nim/deepmind/alphafold2:2.0.0

拉取容器镜像#

使用以下命令之一拉取容器镜像

NIMTools#

Docker#

docker pull nvcr.io/nim/deepmind/alphafold2:2.0.0

NGC SDK#

ngc registry image pull nvcr.io/nim/deepmind/alphafold2:2.0.0

运行容器#

如快速入门指南中所述,您可以运行以下命令来启动 AlphaFold2 NIM

export LOCAL_NIM_CACHE=~/.cache/nim
export NGC_API_KEY=<Your NGC CLI API Key>

docker run --rm --name alphafold2 --runtime=nvidia \
    -p 8000:8000 \
    -e NGC_API_KEY \
    -v $LOCAL_NIM_CACHE:/opt/nim/.cache \
    nvcr.io/nim/deepmind/alphafold2:2.0.0

以下是命令及其选项以及 NIM 启动时可用的其他选项的概述

  • docker run:此命令用于从 Docker 镜像运行新容器。

  • --rm:此标志告诉 Docker 在容器退出时自动删除它。此属性对于一次性运行或测试非常有用,因为它防止容器被遗留。

  • --name alphafold2:此标志为容器命名为 “alphafold2”。

  • --runtime=nvidia:此标志指定容器要使用的运行时。在本例中,它设置为 “nvidia”,用于 GPU 加速。

  • -e NGC_API_KEY:这会将 NGC_API_KEY 环境变量(以及父终端中设置的值)传递给容器。这用于 NVIDIA 的 NGC(NVIDIA GPU Cloud)服务的身份验证,包括下载模型数据(如果 NIM 缓存中不存在)。

  • -p 8000:8000:此标志将主机上的 8000 端口映射到容器中的 8000 端口。这允许您从主机访问容器的服务。

  • -v <source>:<dest>:将主机目录 /home/$USER/.cache/nim 挂载到容器中作为 /opt/nim/.cache,以便它可以用于存储和重用下载的模型。

可选的运行时变量和性能调优#

下面,我们详细介绍启动 AlphaFold2 NIM 的一些高级用法

docker run --rm --name alphafold2 --runtime=nvidia \
    -e CUDA_VISIBLE_DEVICES=0 \
    -e NGC_API_KEY \
    -e NIM_CACHE_PATH=/home/$USER/alphafold2-data \
    -e NIM_PARALLEL_MSA_RUNNERS=3 \
    -e NIM_PARALLEL_THREADS_PER_MSA=12 \
    -p 8000:8000 \
    -v $LOCAL_NIM_CACHE:/opt/nim/.cache \
    nvcr.io/nim/deepmind/alphafold2:2.0.0
  • -e CUDA_VISIBLE_DEVICES=0:此标志将环境变量 CUDA_VISIBLE_DEVICES 设置为值 “0”。此变量控制哪些 GPU 设备对容器可见。在本例中,它设置为 0,这意味着容器将仅使用第一个 GPU(如果可用)。

  • nvcr.io/nim/deepmind/alphafold2:2.0.0:这是 Docker 镜像名称和标签。该镜像托管在 NVIDIA 的容器注册表 (nvcr.io) 上,并命名为 alphafold2。标签 2.0.0 指定镜像的特定版本。

检查 AlphaFold2 NIM 的状态#

您可以使用以下命令查看系统上正在运行的 docker 容器

docker ps

如果 NIM 正在运行,这将返回如下所示的输出

CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS                                                                                                          NAMES
d114948j4f55   alphafold2   "/opt/nvidia/nvidia_…"   46 minutes ago   Up 46 minutes   6006/tcp, 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 8888/tcp, 0.0.0.0:50051->50051/tcp, :::50051->50051/tcp   test1

输出中的第一列是 docker 容器 ID,它对于与容器交互非常有用。其余字段描述了容器正在运行的镜像、命令(在本例中为 NIM 服务器软件)、容器构建时间、其状态、运行时间、任何开放端口,以及最后是其名称(由启动命令给出)。

如果 NIM 未运行,则只会返回标头。

终止正在运行的容器#

如果由于某种原因您的容器进入了您无法与之交互的状态,或者由于任何原因必须终止它,您可以使用以下命令和从 docker ps 命令获得的 ID。以下是使用上例中 ID 的示例

docker kill d114948j4f55

这将立即终止正在运行的容器。注意:任何正在进行的请求都将被取消,并且数据可能会丢失。

模型检查点缓存#

在初始启动时,容器将从 NGC 下载 AlphaFold2 参数和支持数据。您可以通过使用缓存目录在本地缓存模型权重来跳过将来运行中的此下载步骤,如下例所示。

# Create the cache directory on the host machine
export LOCAL_NIM_CACHE=~/.cache/nim
mkdir -p $LOCAL_NIM_CACHE

# Run the container with the cache directory mounted in the appropriate location
docker run --rm --name alphafold2 --runtime=nvidia \
    -e CUDA_VISIBLE_DEVICES=0 \
    -e NGC_API_KEY \
    -v $LOCAL_NIM_CACHE:/opt/nim/.cache \
    -p 8000:8000 \
    nvcr.io/nim/deepmind/alphafold2:2.0.0

注意

缓存模型检查点可以节省后续容器运行的大量时间。