配置#

Riva ASR 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 容器工具包文档

共享内存标志#

令牌化使用 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 ASR 服务发布到容器内指定的端口。确保调整传递给 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)