配置#

本节介绍配置 NIM 容器的各种方法。

GPU 选择#

在具有一个或多个相同 GPU 的同构环境中,将 --gpus all 传递给 docker run 是可以接受的。

在具有 GPU 组合的异构环境中,例如 A6000 + GeForce 显示 GPU,工作负载应仅在具有计算能力的 GPU 上运行。使用以下任一方法在容器内公开特定 GPU

  • --gpus 标志(例如:--gpus="device=1"

  • 环境变量 NVIDIA_VISIBLE_DEVICES(例如:-e NVIDIA_VISIBLE_DEVICES=1

要用作输入的设备 ID 在 nvidia-smi -L 的输出中列出

GPU 0: Tesla H100 (UUID: GPU-b404a1a1-d532-5b5c-20bc-b34e37f3ac46)
GPU 1: NVIDIA GeForce RTX 3080 (UUID: GPU-b404a1a1-d532-5b5c-20bc-b34e37f3ac46)

有关更多说明,请参阅 NVIDIA Container Toolkit 文档

共享内存标志#

令牌化使用 Triton 的 Python 后端 功能,该功能可随着可用 CPU 核心数量的增加而扩展。您可能需要增加提供给微服务容器的共享内存

提供 1g 共享内存的示例

docker run ... --shm-size=1g ...

环境变量#

下表描述了可以传递到 NIM 中的环境变量,作为添加到 docker run 命令的 -e 参数

ENV

必需?

默认值

注释

NGC_API_KEY

您必须将此变量设置为您的个人 NGC API 密钥的值。

NIM_CACHE_PATH

/opt/nim/.cache

容器缓存模型工件的位置(在容器中)。

NIM_HTTP_TRITON_PORT

8080

设置 triton 后端服务器的 HTTP API 端口。Triton 默认为端口 8000,这也是 NIM 的 FastAPI 前端服务器 logging 使用的默认端口。

NIM_LOG_LEVEL

INFO

容器镜像的日志记录阈值。接受表示以下任何值的字符串(严重性递减,不区分大小写):CRITICAL、ERROR、WARNING、WARN、INFO、DEBUG。有关更多详细信息,请参阅 Python 日志记录

NIM_HTTP_API_PORT

8000

将 NIM HTTP API 端口发布到容器内规定的端口。确保调整传递给 docker run 的 -p/--publish 标志的端口以反映这一点(例如:-p YOU_DESIRED_API_PORT:$NIM_HTTP_API_PORT)。此 : 的左侧是您的主机地址:端口,并且不必与 $NIM_HTTP_API_PORT 匹配。: 的右侧是容器内的端口,该端口必须与 NIM_HTTP_API_PORT (或 8000 如果未设置)匹配。

#

下表描述了容器内的路径,可以将本地路径挂载到这些路径中。

容器路径

必需

注释

Docker 参数示例

/opt/nim/.cache(或 NIM_CACHE_PATH 如果存在)

不是必需的,但如果未挂载此卷,则容器每次启动时都会全新下载模型。

这是在容器内下载模型的目录。非常重要的是,可以从容器内部访问此目录。这可以通过向 docker run 命令添加选项 -u $(id -u) 来实现。例如,要使用 ~/.cache/nim 作为主机目录来缓存模型,请先执行 mkdir -p ~/.cache/nim,然后再运行 docker run ... 命令。

-v ~/.cache/nim:/opt/nim/.cache -u $(id -u)