部署指南#
本节提供有关 AlphaFold2-Multimer NIM 部署的更多详细信息。
查看可用的 NIM 容器信息。#
容器镜像标签可以使用以下命令查看,类似于 NGC 上的其他容器镜像。
ngc registry image info nvcr.io/nim/deepmind/alphafold2-multimer:1.0.0
从 NGC 拉取容器镜像。#
使用以下命令之一拉取容器镜像
Docker#
docker pull nvcr.io/nim/deepmind/alphafold2-multimer:1.0.0
NGC SDK#
ngc registry image pull nvcr.io/nim/deepmind/alphafold2-multimer:1.0.0
运行容器。#
如快速入门指南中所述,您可以运行以下命令来启动 AlphaFold2-Multimer NIM
export LOCAL_NIM_CACHE=~/.cache/nim
export NGC_CLI_API_KEY=<Your NGC CLI API Key>
docker run -it --rm --name alphafold2-multimer --runtime=nvidia \
-p 8000:8000 \
-e NGC_CLI_API_KEY \
-v $LOCAL_NIM_CACHE:/opt/nim/.cache \
nvcr.io/nim/deepmind/alphafold2-multimer:1.0.0
以下列表显示了启动 NIM 容器的常用选项
docker run
: 这是从 Docker 镜像运行新容器的命令。-it
:-i
标志允许访问容器的 STDIN,-t
分配一个伪 TTY 来解释命令,例如Ctrl+C
用于停止/杀死 NIM 容器。--rm
: 此标志告诉 Docker 在容器退出时自动删除它。此属性对于一次性运行或测试非常有用,因为它防止容器被遗留下来。--name alphafold2-multimer
: 此标志为容器命名为 “alphafold2-multimer”。--runtime=nvidia
: 此标志指定用于容器的运行时。 在这种情况下,它设置为 “nvidia”,用于 GPU 加速。-e NGC_CLI_API_KEY
: 这会将 NGC_CLI_API_KEY 环境变量(以及父终端中设置的值)传递给容器。 这用于通过 NVIDIA 的 NGC(NVIDIA GPU Cloud)服务进行身份验证,包括在 NIM 缓存中不存在模型权重和数据库时下载它们。-p 8000:8000
: 此标志将主机上的端口 8000 映射到容器中的端口 8000。 这允许您从主机访问容器的服务。-v <source>:<dest>
: 将主机目录/home/$USER/.cache/nim
挂载到容器中作为/opt/nim/.cache
,以便它可以用于存储和重用下载的模型。-e NIM_IGNORE_MODEL_DOWNLOAD_FAIL=true
: 忽略模型下载和检测错误,例如当从本地缓存将模型挂载到没有访问 NGC 权限的脱机设备上托管的 NIM 容器时。 需要本地缓存和挂载的模型才能在 NIM 中获得预期的行为。 有关更多信息或替代方案,请参阅气隙 NIM 部署。-e NIM_CACHE_PATH=<dest>
: 更改在 NIM 容器的文件系统中挂载模型的位置。 默认值为/opt/nim/.cache
。 与-v <source>:<dest>
关联,有关更多信息,请参阅配置 NIM 缓存位置。-e NIM_HTTP_API_PORT=<port>
: 更改用于向 NIM 发送查询的 HTTP API 端口。 默认值为8000
。 与-p <host_port>:<server_port>
关联,有关更多信息,请参阅为 NIM 查询/请求使用备用端口。-e NIM_PARALLEL_MSA_RUNNERS=<int>
和-e NIM_PARALLEL_THREADS_PER_MSA=<int>
: 更改 MSA 的并行运行程序数量和每个运行程序的线程数。 有关更多信息,请参阅调整 MSA 运行程序和线程。
可选的运行时参数和性能调优#
以下示例命令显示了用于启动 AlphaFold2-Multimer NIM 的性能调优选项
docker run -it --rm --name alphafold2-multimer --runtime=nvidia \
-e CUDA_VISIBLE_DEVICES=0 \
-e NGC_CLI_API_KEY \
-e NIM_CACHE_PATH=/opt/nim/.cache \
-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-multimer:1.0.0
-e CUDA_VISIBLE_DEVICES=0
: 此标志将环境变量CUDA_VISIBLE_DEVICES
设置为值0
。 此变量控制哪些 GPU 设备对容器可见。 在这种情况下,它设置为0
,这意味着容器将仅使用第一个 GPU(如果可用)。nvcr.io/nim/deepmind/alphafold2-multimer:1.0.0
: 这是 Docker 镜像名称和标签。 该镜像托管在 NVIDIA 的容器注册表 (nvcr.io
) 上,名为alphafold2-multimer
。 标签1.0.0
指定镜像的特定版本。
检查 AlphaFold2-Multimer NIM 的状态#
您可以使用以下命令查看系统上正在运行的 Docker 容器
docker ps
如果 NIM 正在运行,这将返回如下所示的输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d114948j4f55 alphafold2-multimer "/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 未运行,则只会返回标头。
杀死正在运行的 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, i.e. -v $LOCAL_NIM_CACHE:/opt/nim/.cache
docker run -it --rm --name alphafold2-multimer --runtime=nvidia \
-e CUDA_VISIBLE_DEVICES=0 \
-e NGC_CLI_API_KEY \
-v $LOCAL_NIM_CACHE:/opt/nim/.cache \
-p 8000:8000 \
nvcr.io/nim/deepmind/alphafold2-multimer:1.0.0
注意
缓存模型检查点可以节省后续运行的大量时间。