NVIDIA NIM 与 Hugging Face 的集成

NVIDIA NIM 现在通过提供一个统一的 Docker 容器,实现对来自 Hugging Face 的超过 100,000 个大型语言模型(LLM)的快速部署,该容器可自动化优化和服务过程。此集成消除了手动管理多种推理框架的瓶颈,从而在不同模型架构上实现最佳性能。

统一的 LLM 部署推理微服务

NVIDIA NIM 提供一个单一的 Docker 容器,能够通过集成领先的推理框架(包括 NVIDIA TensorRT-LLM、vLLM 和 SGLang)部署广泛的 LLM。该容器通过四个不同的适配阶段,实现从模型权重文件到运行中的推理服务器的自动转换:

  • 模型分析:NIM 自动识别模型格式,支持 Hugging Face 模型、TensorRT-LLM 检查点或预构建的 TensorRT-LLM 引擎。
  • 架构和量化检测:系统检测模型的架构(例如 Llama、Mistral)及其量化格式(例如 FP16、FP8、INT4)。
  • 后端选择:NIM 根据前述分析选择最合适的推理后端(TensorRT-LLM、vLLM 或 SGLang)。
  • 性能设置:容器为所选模型和后端应用预配置设置,启动推理服务器,无需手动调优。

支持的模型权重格式

为确保广泛兼容性,NIM 容器支持多种常见的权重格式:

  • Hugging Face Transformers 检查点:直接从使用 .safetensors 文件的仓库部署。
  • GGUF 检查点:支持来自 Hugging Face 或本地存储的量化 GGUF 检查点。
  • TensorRT-LLM 检查点:模型打包在 trtllm_ckpt 目录中。
  • TensorRT-LLM 引擎:来自 trtllm_engine 目录的预构建引擎,以实现最大 GPU 性能。

部署工作流与配置

通过 NIM 部署模型需要配备 CUDA 12.1+ 驱动的 NVIDIA GPU、Docker、NVIDIA NGC 账户以及用于认证模型的 Hugging Face API 令牌。

模型部署示例

用户可以使用 NIM_MODEL_NAME 环境变量直接从 Hugging Face 部署模型。例如,部署 Codestral-22B 需要运行 NIM Docker 镜像,并使用模型 URI hf://mistralai/Codestral-22B-v0.1

对于本地存储的模型,NIM_MODEL_NAME 指向本地目录路径,并且该目录必须挂载到 Docker 容器中。

后端自定义与量化

虽然 NIM 自动化后端选择,用户仍可使用 list-model-profiles 命令查看兼容的配置文件,然后通过设置 NIM_MODEL_PROFILE 环境变量手动指定后端。

NIM 还简化了量化模型(如 AWQ 或 GGUF)的部署。系统会自动检测量化格式,并使用与全精度模型相同的标准部署命令选择相应的后端。

高级性能调优

对于企业级部署,NIM 提供环境变量用于细粒度调优:

  • NIM_MAX_MODEL_LEN:调整上下文长度。
  • NIM_TENSOR_PARALLEL_SIZE:为大模型启用多 GPU 部署。这需要向 Docker 传递 --shm-size 标志,以促进多 GPU 通信。

Sources