模型配置文件#
NIM 模型配置文件定义了两件事——NIM 可以使用哪些模型引擎,以及 NIM 应该使用哪些标准来选择这些引擎。基于配置文件内容哈希的唯一字符串标识每个配置文件。
用户可以在部署时按照 配置文件选择 步骤选择配置文件。如果用户在部署时未手动选择配置文件,NIM 将根据 自动配置文件选择 中的规则自动选择配置文件。要了解如何创建配置文件及其对应的引擎,请参阅 如何创建配置文件。
模型配置文件嵌入在 NIM 容器的 Model Manifest 文件中,默认情况下该文件位于容器文件系统内的 /etc/nim/config/model_manifest.yaml
。
配置文件选择#
要选择用于部署的配置文件,请使用 -e NIM_MODEL_PROFILE=<value>
设置特定的配置文件 ID。您可以使用 list-model-profiles 实用工具找到有效的配置文件 ID,如下例所示
docker run --rm --runtime=nvidia --gpus=all $IMG_NAME list-model-profiles
MODEL PROFILES
- Compatible with the system and runnable:
- a93a1a6b72643f2b2ee5e80ef25904f4d3f942a87f8d32da9e617eeccfaae04c (tensorrt_llm-A100-fp16-tp2-latency)
- 751382df4272eafc83f541f364d61b35aed9cce8c7b0c869269cea5a366cd08c (tensorrt_llm-A100-fp16-tp1-throughput)
- 19031a45cf096b683c4d66fff2a072c0e164a24f19728a58771ebfc4c9ade44f (vllm-fp16-tp2)
- 8835c31752fbc67ef658b20a9f78e056914fdef0660206d82f252d62fd96064d (vllm-fp16-tp1)
要进行选择,您可以设置 -e NIM_MODEL_PROFILE="tensorrt_llm-A100-fp16-tp1-throughput"
或 -e NIM_MODEL_PROFILE="751382df4272eafc83f541f364d61b35aed9cce8c7b0c869269cea5a366cd08c"
来运行 A100 TP1 配置文件。
自动配置文件选择#
NIM 旨在根据检测到的硬件,从兼容配置文件列表中自动选择最合适的配置文件。每个配置文件都包含不同的参数,这些参数会影响选择过程。下面概述了基于所涉及参数的排序逻辑
兼容性检查: 首先,NIM 会根据可用 GPU 的数量和类型,筛选掉与检测到的配置不兼容的配置文件。
后端: 这可以是 TensorRT-LLM 或 vLLM。在可用时,优化的 TensorRT-LLM 配置文件优先于 vLLM。
精度: 在可用时,较低精度的配置文件优先。例如,NIM 将自动选择
FP8
配置文件而不是FP16
。有关更多详细信息,请参阅 量化。优化配置文件: 默认情况下,延迟优化配置文件优先于吞吐量优化配置文件。
张量并行性: 具有较高张量并行值的配置文件优先。例如,需要 8 个 GPU 才能运行的配置文件将优先于需要 4 个 GPU 的配置文件。
此选择将在启动时记录。例如
Detected 2 compatible profile(s).
Valid profile: 751382df4272eafc83f541f364d61b35aed9cce8c7b0c869269cea5a366cd08c (tensorrt_llm-A100-fp16-tp1-throughput) on GPUs [0]
Valid profile: 8835c31752fbc67ef658b20a9f78e056914fdef0660206d82f252d62fd96064d (vllm-fp16-tp1) on GPUs [0]
Selected profile: 751382df4272eafc83f541f364d61b35aed9cce8c7b0c869269cea5a366cd08c (tensorrt_llm-A100-fp16-tp1-throughput)
Profile metadata: precision: fp16
Profile metadata: feat_lora: false
Profile metadata: gpu: A100
Profile metadata: gpu_device: 20b2:10de
Profile metadata: tp: 1
Profile metadata: llm_engine: tensorrt_llm
Profile metadata: pp: 1
Profile metadata: profile: throughput
如何创建配置文件#
NIM 微服务有两种主要的配置文件类别:optimized
和 generic
。optimized
配置文件是为 GPU 和模型子集创建的,并利用模型和硬件特定的优化,旨在提高大型语言模型的性能。随着时间的推移,存在 optimized
引擎的模型和 GPU 的范围将会扩大。但是,如果特定的模型和 GPU 配置组合不存在优化的引擎,则会使用 generic
后端作为后备方案。
目前,optimized
配置文件利用预编译的 TensorRT-LLM 引擎,而 generic
配置文件则使用 vLLM。
优化目标#
optimized
配置文件可以有不同的优化目标,旨在最大限度地减少延迟或最大限度地提高吞吐量。这些引擎配置文件在 NIM 随附的模型清单中分别标记为 latency
和 throughput
。
latency
配置文件旨在最大限度地减少
首个令牌时间 (TTFT): 从初始推理请求到模型返回首个令牌之间的延迟。
令牌间延迟 (ITL): 第一个令牌之后每个令牌之间的延迟。
throughput
配置文件旨在最大限度地提高
每个 GPU 的总吞吐量: NIM 每秒生成的令牌总数,除以使用的 GPU 数量。
虽然吞吐量和延迟变体之间可能存在许多差异以满足这些标准,但最显着的差异之一是吞吐量变体利用托管模型所需的最小 GPU 数量(通常受内存利用率的限制)。延迟变体使用额外的 GPU 来减少请求延迟,但代价是相对于吞吐量变体,每个 GPU 的总吞吐量降低。
量化#
对于某些模型和 GPU 配置,可以使用具有降低数值精度的量化引擎。这些可以通过配置文件名称中包含的数字格式来识别。例如,fp8
用于已量化为 8 位浮点值的模型,而不是 fp16
用于非量化的 16 位浮点值。所有量化引擎都经过严格测试,以满足与默认 fp16
引擎相同的精度标准。由于这种精度,测试和量化导致内存需求减少,因此,延迟和吞吐量显着提高,因此,在可用时默认选择 fp8
模型。要部署非量化的 fp16
引擎,请按照 配置文件选择 步骤操作。