配置#

NeMo 文本检索器 NIM 在底层使用 Docker 容器。每个 NIM 都是其自己的 Docker 容器,并且有多种配置方式。本节的剩余部分描述了配置 NIM 容器的各种方法。

GPU 选择#

NIM 容器是 GPU 加速的,并使用 NVIDIA Container Toolkit 来访问主机上的 GPU。

如果主机具有一个或多个相同的 GPU 型号,则可以为 docker run 命令指定 --gpus all 命令行参数。如果主机具有 GPU 组合,例如 A6000 和 GeForce 显示 GPU,请仅在具有计算能力的 GPU 上运行容器。

通过使用以下任一方法将特定 GPU 暴露给容器

  • 指定 --gpus 参数,例如 --gpus="device=1"

  • 设置 NVIDIA_VISIBLE_DEVICES 环境变量,例如 -e NVIDIA_VISIBLE_DEVICES=1

运行 nvidia-smi -L 命令以列出设备 ID,以便在参数或环境变量中指定

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 文档中的 GPU 枚举

共享内存标志#

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

提供 1g 共享内存的示例

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

环境变量#

下表标识了容器中使用的环境变量。使用 -e 命令行参数为 docker run 命令设置环境变量。

名称

描述

默认值

NGC_API_KEY

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

NIM_CACHE_PATH

指定容器中已下载模型的完全限定路径。

/opt/nim/.cache

NIM_GRPC_API_PORT

指定容器中用于 gRPC 访问微服务的网络端口号。

50051

NIM_HTTP_API_PORT

指定容器中用于 HTTP 访问微服务的网络端口号。

有关主机和容器网络端口的更多信息,请参阅 Docker 文档中的 发布端口

${nim_http_api_port}

NIM_HTTP_MAX_WORKERS

指定为 HTTP 请求启动的工作线程数。

1

NIM_HTTP_TRITON_PORT

指定容器中用于 NVIDIA Triton 推理服务器的网络端口号。

8080

NIM_IGNORE_MODEL_DOWNLOAD_FAIL

当设置为 true 并且微服务无法从 NGC 下载模型时,微服务将继续运行而不是退出。此环境变量在气隙环境中有用。

false

NIM_LOGGING_JSONL

当设置为 true 时,微服务以 JSONL 格式创建日志记录。

false

NIM_LOG_LEVEL

指定日志记录级别。微服务支持以下值:DEBUG、INFO、WARNING、ERROR 和 CRITICAL。

INFO

NIM_MANIFEST_PATH

指定容器中模型清单 YAML 文件的完全限定路径。

/opt/nim/etc/default/model_manifest.yaml

NIM_MODEL_PROFILE

指定要用于容器的模型配置文件 ID。默认情况下,容器尝试自动将主机 GPU 型号和 GPU 计数与最佳模型配置文件匹配。

NIM_NUM_MODEL_INSTANCES

要部署的模型实例数。

未设置(此值会覆盖特定于硬件的配置值)

NIM_NUM_TOKENIZERS

要使用的令牌化器实例数。

min(max(os.cpu_count() // 2, 1), 16)

NIM_SERVED_MODEL_NAME

指定 API 中使用的模型名称。在逗号分隔列表中指定多个名称。如果您指定多个名称,服务器将响应任何名称。响应的模型字段中的名称是此列表中的第一个名称。默认情况下,模型从 model_manifest.yaml 推断。

NIM_TRITON_DYNAMIC_BATCHING_MAX_QUEUE_DELAY_MICROSECONDS

设置最大队列延迟时间,以允许其他请求加入 NVIDIA Triton 推理服务器的动态批处理。有关更多信息,请参阅 Triton 用户指南

100us (微秒)

NIM_TRITON_LOG_VERBOSE

当设置为 1 时,容器以详细日志记录启动 NVIDIA Triton 推理服务器。

0

NIM_TRITON_REQUEST_TIMEOUT

指定 NVIDIA Triton 推理服务器的超时时间,以微秒为单位。默认值 0 表示没有超时。

0

NIM_TRITON_GRPC_PORT

指定 NVIDIA Triton 推理服务器的 gRPC 端口号。

8001

#

下表标识了容器中使用的路径。使用此信息来规划要绑定挂载到容器中的本地路径。

容器路径

描述

示例

/opt/nim/.cacheNIM_CACHE_PATH

指定已下载模型的路径,相对于容器的根目录。

此路径的典型用途是将主机上的目录与容器内的此路径绑定挂载。例如,要在主机上使用 ~/.cache/nim,请在启动容器之前运行 mkdir -p ~/.cache/nim。当您启动容器时,为 docker run 命令指定 -v ~/.cache/nim:/opt/nim/.cache -u $(id -u) 参数。

如果您未指定绑定或卷挂载(如前面命令中的 -v 参数所示),则容器每次启动时都会下载模型。

-u $(id -u) 参数使用您的用户 ID 运行容器,以避免文件系统权限问题和错误。

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