优化#

NeMo Retriever Text Embedding NIM (文本嵌入 NIM) 自动利用特定于模型和硬件的优化,旨在提高模型的性能。

NIM 使用 TensorRT 后端 для Triton Inference Server,以优化跨多个NVIDIA GPU 的常用模型的推理。如果正在使用的 SKU 没有优化的引擎,则会使用 GPU 不相关的 ONNX 后端(使用 CUDA Execution Provider)代替。

NIM 包括多个优化配置文件,这些文件迎合每个 SKU 支持的浮点精度类型。

自动配置文件选择#

文本嵌入 NIM 旨在根据检测到的硬件,从兼容配置文件列表中自动选择最合适的配置文件。每个配置文件都包含不同的参数。这些参数会影响选择过程。下面概述了基于相关参数的选择过程

  • 兼容性检查:文本嵌入 NIM 排除与检测到的配置不兼容的配置文件,这基于 GPU 的数量和 GPU 型号。

  • 后端:可以是 TensorRT 或 ONNX。优化的 TensorRT 配置文件是首选。

  • 精度:较低精度的配置文件是首选。例如,FP8 的配置文件优先于 FP16。

此选择记录在启动时。例如

MODEL PROFILES
- Compatible with system and runnable:
  - ea95501d4e68ce0adf88f962526d1fbac0fa64032495b6f6a421b2c37b62433f (type=ONNX,precision=FP16)
  - ef90a4689f79683f170e365ac4d6988f8c9eb9c4f81f2c58827c3f27ed7cd5a8 (type=TensorRT,precision=fp16,gpu=NVIDIA-A100)
Selected profile: ef90a4689f79683f170e365ac4d6988f8c9eb9c4f81f2c58827c3f27ed7cd5a8
Profile metadata: type: TensorRT
Profile metadata: precision: FP8
Profile metadata: gpu: NVIDIA-A100
Profile metadata: trt_version: 10.0.1
Profile metadata: cuda_major_version: 12

覆盖配置文件选择#

注意

要覆盖此行为,请使用 -e NIM_MODEL_PROFILE=<value> 设置特定的配置文件 ID。以下 list-model-profiles 命令列出 IMG_NAME 文本嵌入 NIM 的可用配置文件

docker run --rm --runtime=nvidia --gpus=all $IMG_NAME list-model-profiles

MODEL PROFILES
- Compatible with system and runnable:
  - f6ecf987d3acacf363a4125195c7f84cd4110520157f9091702a3061e2fd69fa (h100-nvl-fp8-triton-tensorrt)
  - 58610f044b526218e323a350f3bc22d6fdaa775b3b634fc3b671ca29ba8848d6 (h100-pcie-fp8-triton-tensorrt)
  - 761a1460449bba9831b61bcc1e4e2ce93bfc66f5badecf6157009a0e0d18d934 (h100-hbm3-80gb-fp8-triton-tensorrt)
  ...

在前面的示例中,设置 -e NIM_MODEL_PROFILE="f6ecf987d3acacf363a4125195c7f84cd4110520157f9091702a3061e2fd69fa" 以运行 H100 NVL FP8 配置文件。

要在没有可用 GPU 的主机上运行 list-model-profiles,请将 -e NIM_CPU_ONLY=1 传递给 docker run 命令,以设置 NIM_CPU_ONLY 环境变量。