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 通信。