配置#

Riva TTS NIM 在底层使用 Docker 容器。每个 NIM 都有其自己的 Docker 容器,并且有几种配置方法。本节的剩余部分将介绍如何配置 NIM 容器。

GPU 选择#

在具有两个或更多 GPU 的环境中,不支持将 --gpus all 传递给 docker run。

在具有 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 ...

环境变量#

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

ENV

必需?

默认值

注释

NGC_API_KEY

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

NIM_CACHE_PATH

/opt/nim/.cache

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

NIM_HTTP_API_PORT

9000

将 NIM 服务发布到容器内指定的端口。确保调整传递给 docker run 的 -p/--publish 标志的端口以反映这一点(例如:-p $NIM_HTTP_API_PORT:$NIM_HTTP_API_PORT)。此 : 的左侧是您的主机地址:端口,并且不必与 $NIM_HTTP_API_PORT 匹配。 : 的右侧是容器内的端口,该端口必须与 NIM_HTTP_API_PORT (或未设置时的 9000 )匹配。 支持的端点为 /v1/license(返回许可证信息)、/v1/metadata(返回元数据,包括资产信息、许可证信息、模型信息和版本)和 /v1/metrics(通过 ASGI 应用程序端点公开 Prometheus 指标)。

NIM_GRPC_API_PORT

50051

通过 GRPC 将 Riva TTS 服务发布到容器内指定的端口。确保调整传递给 docker run 的 -p/--publish 标志的端口以反映这一点(例如:-p $NIM_GRPC_API_PORT:$NIM_GRPC_API_PORT)。此 : 的左侧是您的主机地址:端口,并且不必与 $NIM_GRPC_API_PORT 匹配。 : 的右侧是容器内的端口,该端口必须与 NIM_GRPC_API_PORT (或未设置时的 50051 )匹配。

#

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

容器路径

必需

注释

Docker 参数示例

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

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

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

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