使用 NVIDIA NIM 加速 Hugging Face 上的 LLM 世界
AI 开发者希望选择最新的大型语言模型 (LLM) 架构和专门的变体,用于AI 代理和其他应用程序,但处理所有这些多样性会减慢测试和部署管道。特别是,管理和优化不同的推理软件框架以在各种 LLM 和服务要求下实现最佳性能,是阻碍将高性能 AI 应用程序交付给最终用户的耗时瓶颈。
NVIDIA AI 客户和生态系统合作伙伴利用 NVIDIA NIM 推理微服务,以简化在 NVIDIA 加速基础设施上部署最新 AI 模型,包括来自 NVIDIA、Meta、Mistral AI、Google 和数百个更多创新模型构建者的 LLM、多模态和领域特定模型。我们看到客户和合作伙伴通过简化、可靠的模型部署方法更快地实现了更多创新,今天我们很高兴能通过 NIM 快速可靠地部署 Hugging Face 上的超过 100,000 个 LLM。
用于部署各种 LLM 的单个 NIM 微服务
NIM 现在提供一个单一的 Docker 容器,用于部署 NVIDIA 和社区(包括 NVIDIA TensorRT-LLM、vLLM 和 SGLang)领先的推理框架支持的各种 LLM。当 LLM 提供给 NIM 容器时,它无需手动配置即可执行部署和性能优化的几个步骤。
LLM 适应阶段 | NIM 的作用 |
---|---|
模型分析 | NIM 自动识别模型的格式,包括 Hugging Face 模型、TensorRT-LLM 检查点或预构建的 TensorRT-LLM 引擎,确保兼容性。 |
架构和量化检测 | 它识别模型的架构(例如 Llama、Mistral)和量化格式(例如 FP16、FP8、INT4)。 |
后端选择 | 基于此分析,NIM 选择一个推理后端(NVIDIA TensorRT-LLM、vLLM 或 SGLang)。 |
性能设置 | NIM 对所选模型和后端应用预配置设置,然后启动推理服务器,减少手动调整工作。 |
表 1. NVIDIA NIM LLM 适应阶段和功能
单个 NIM 容器支持常见的 LLM 权重格式,包括
- Hugging Face Transformers 检查点:LLM 可以直接从 Hugging Face 仓库部署,使用
.safetensors
文件,无需复杂的转换。 - GGUF 检查点:支持的模型架构的量化 GGUF 检查点可以直接从 Hugging Face 或从本地下载的文件部署。
- TensorRT-LLM 检查点:打包在
trtllm_ckpt
目录中,并为 TensorRT-LLM 优化的模型可以部署。 - TensorRT-LLM 引擎:来自
trtllm_engine
目录的预构建 TensorRT-LLM 引擎可用于 NVIDIA GPU 上的最佳性能。
开始使用
要使用 NIM,请确保您的环境已安装 NVIDIA GPU(带有合适的驱动程序,CUDA 12.1+)、Docker,并拥有用于 NIM Docker 镜像的 NVIDIA NGC 账户和 API 密钥,以及用于需要身份验证的模型的 Hugging Face 账户和 API 令牌。有关环境先决条件的更多信息,请参阅 NIM 文档。
环境设置涉及设置环境变量和创建持久缓存目录。确保 nim_cache
目录具有正确的 Unix 权限,理想情况下由启动 Docker 容器的同一 Unix 用户拥有,以防止权限问题。命令使用 -u $(id -u)
来管理此问题。
为了方便使用,让我们将一些常用信息存储在环境变量中。
# A variable for storing the NIM docker image specification
NIM_IMAGE=llm-nim
# Populate with your Hugging Face API token.
HF_TOKEN=<your_huggingface_token>
示例 1:部署模型
使用 Codestral-22B 演示了从 Hugging Face 部署 LLM。
docker run --rm --gpus all \
--shm-size=16GB \
--network=host \
-u $(id -u) \
-v $(pwd)/nim_cache:/opt/nim/.cache \
-v $(pwd):$(pwd) \
-e HF_TOKEN=$HF_TOKEN \
-e NIM_TENSOR_PARALLEL_SIZE=1 \
-e NIM_MODEL_NAME="hf://mistralai/Codestral-22B-v0.1" \
$NIM_IMAGE
对于本地下载的模型,将 NIM_MODEL_NAME
指向路径并挂载目录。
docker run --rm --gpus all \
--shm-size=16GB \
--network=host \
-u $(id -u) \
-v $(pwd)/nim_cache:/opt/nim/.cache \
-v $(pwd):$(pwd) \
-v /path/to/model/dir:/path/to/model/dir \
-e HF_TOKEN=$HF_TOKEN \
-e NIM_TENSOR_PARALLEL_SIZE=1 \
-e NIM_MODEL_NAME="/path/to/model/dir/mistralai-Codestral-22B-v0.1" \
$NIM_IMAGE
在部署模型时,请随意检查输出日志,以了解 NIM 在模型部署期间所做的选择。部署的模型可在 https://:8000
访问,API 端点在 https://:8000/docs
。
底层引擎提供了额外的参数。您可以通过在容器中运行 nim-run --help 来查看此类参数的完整列表,如下所示。
docker run --rm --gpus all \
--network=host \
-u $(id -u) \
$NIM_IMAGE nim-run --help
示例 2:指定后端
要检查兼容的后端或选择特定后端,请使用 list-model-profiles
。
docker run --rm --gpus all \
--shm-size=16GB \
--network=host \
-u $(id -u) \
-v $(pwd)/nim_cache:/opt/nim/.cache \
-v $(pwd):$(pwd) \
-e HF_TOKEN=$HF_TOKEN \
$NIM_IMAGE list-model-profiles --model "hf://meta-llama/Llama-3.1-8B-Instruct"
此命令显示兼容的配置文件,包括 LoRA 适配器。要使用特定后端(如 vLLM)进行部署,请使用 NIM_MODEL_PROFILE
环境变量,并使用 list-model-profiles
提供的输出。
docker run --rm --gpus all \
--shm-size=16GB \
--network=host \
-u $(id -u) \
-v $(pwd)/nim_cache:/opt/nim/.cache \
-v $(pwd):$(pwd) \
-e HF_TOKEN=$HF_TOKEN \
-e NIM_TENSOR_PARALLEL_SIZE=1 \
-e NIM_MODEL_NAME="hf://meta-llama/Llama-3.1-8B-Instruct" \
-e NIM_MODEL_PROFILE="e2f00b2cbfb168f907c8d6d4d40406f7261111fbab8b3417a485dcd19d10cc98" \
$NIM_IMAGE
示例 3:量化模型部署
NIM 方便了量化模型的部署。它会自动检测量化格式(例如 GGUF、AWQ),并使用标准部署命令选择合适的后端。
# Choose a quantized model and populate the MODEL variable, for example:
# MODEL="hf://modularai/Llama-3.1-8B-Instruct-GGUF"
# or
# MODEL="hf://Qwen/Qwen2.5-14B-Instruct-AWQ"
docker run --rm --gpus all \
--shm-size=16GB \
--network=host \
-u $(id -u) \
-v $(pwd)/nim_cache:/opt/nim/.cache \
-v $(pwd):$(pwd) \
-e HF_TOKEN=$HF_TOKEN \
-e NIM_TENSOR_PARALLEL_SIZE=1 \
-e NIM_MODEL_NAME=$MODEL \
$NIM_IMAGE
对于高级用户,NIM 提供了通过环境变量(例如用于上下文长度的 NIM_MAX_MODEL_LEN
)进行自定义的功能。对于大型 LLM,NIM_TENSOR_PARALLEL_SIZE
启用多 GPU 部署。确保将 --shm-size=<shared memory size>
传递给 Docker 以进行多 GPU 通信。
NIM 容器支持 NVIDIA TensorRT-LLM、vLLM 和 SGLang 支持的各种 LLM,包括 Hugging Face 上的流行 LLM 和专门的变体。有关支持的 LLM 的更多详细信息,请参阅文档。
使用 Hugging Face 和 NVIDIA 进行构建
NIM 旨在简化 NVIDIA 加速基础设施上的 AI 模型部署,加快高性能 AI 开发者和企业 AI 团队的创新和价值实现。我们期待与 Hugging Face 社区的交流和反馈。
访问 build.nvidia.com,在 NVIDIA 托管的计算环境中开始使用开发者示例。