重要提示
您正在查看 NeMo 2.0 文档。此版本对 API 和新的库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
在框架中部署 NeMo 模型#
本节演示如何使用 NVIDIA Triton Inference Server 在框架内(称为“框架内”)部署 PyTorch 级别的 NeMo LLM。
快速示例#
按照 部署 NeMo LLM 主页 中的步骤下载 nemotron-3-8b-base-4k 模型。
使用下面显示的命令拉取并运行 Docker 容器镜像。将
:vr
标签更改为您要使用的容器版本docker pull nvcr.io/nvidia/nemo:vr docker run --gpus all -it --rm --shm-size=4g -p 8000:8000 -v ${PWD}/Nemotron-3-8B-Base-4k.nemo:/opt/checkpoints/Nemotron-3-8B-Base-4k.nemo -w /opt/NeMo nvcr.io/nvidia/nemo:vr
运行以下部署脚本以验证一切正常。该脚本直接在 Triton 服务器上提供 .nemo 模型
python scripts/deploy/nlp/deploy_inframework_triton.py --nemo_checkpoint /opt/checkpoints/Nemotron-3-8B-Base-4k.nemo --triton_model_name nemotron
如果测试产生与共享内存相关的错误,请使用
--shm-size
增加共享内存大小(例如,逐渐增加 50%)。在单独的终端中,运行以下命令以获取正在运行的容器的容器 ID。请查找
nvcr.io/nvidia/nemo:vr
镜像以获取容器 ID。docker ps
访问正在运行的容器并将
container_id
替换为实际的容器 ID,如下所示docker exec -it container_id bash
要向 Triton 服务器发送查询,请运行以下脚本
python scripts/deploy/nlp/query_inframework.py -mn nemotron -p "What is the color of a banana?" -mol 5
任何与 collections/nlp/models/language_modeling
中的 MegatronGPTModel
类兼容的模型都应与此脚本一起使用。
使用脚本在 Triton 服务器上部署 NeMo LLM#
您可以使用提供的脚本从 Triton 上的 NeMo 检查点部署 LLM。
部署 NeMo LLM 模型#
执行该脚本将直接部署框架内 (.nemo) 模型并在 Triton 上启动服务。
使用快速示例部分中描述的步骤启动容器。
要开始提供下载的模型,请运行以下脚本
python scripts/deploy/nlp/deploy_inframework_triton.py --nemo_checkpoint /opt/checkpoints/Nemotron-3-8B-Base-4k.nemo --triton_model_name nemotron
以下参数在
deploy_inframework_triton.py
脚本中定义--nemo_checkpoint
:.nemo 或 .qnemo 检查点文件的路径。--triton_model_name
:Triton 上的模型名称。--triton_model_version
:模型版本。默认为 1。--triton_port
:Triton 服务器侦听请求的端口。默认为 8000。--triton_http_address
:Triton 服务器的 HTTP 地址。默认为 0.0.0.0。--num_gpus
:用于推理的 GPU 数量。大型模型需要多 GPU 导出。此参数已弃用。--max_batch_size
:模型的最大批处理大小。默认为 8。--debug_mode
:启用来自脚本的其他调试日志消息
要部署不同的模型,只需在 scripts/deploy/nlp/deploy_inframework_triton.py 脚本中更改
--nemo_checkpoint
。任何与 NeMo 的MegatronLLMDeployable
类兼容的模型都可以在此处使用。Nemotron、Llama2 和 Mistral 已经过测试并确认可以工作。使用 Hugging Face 令牌访问模型。
如果要使用 StarCoder1、StarCoder2 或 LLama3 模型运行推理,您需要生成一个有权访问这些模型的 Hugging Face 令牌。访问 Hugging Face 了解更多信息。获得令牌后,执行以下步骤之一。
登录 Hugging Face
huggingface-cli login
或者,设置 HF_TOKEN 环境变量
export HF_TOKEN=your_token_here
使用 NeMo 部署模块 API 运行推理#
到目前为止,我们已经使用脚本来部署 LLM 模型。但是,NeMo 的部署模块为将模型部署到 Triton 提供了简单的 API。
将 LLM 模型部署到 TensorRT-LLM#
您可以使用 deploy 模块中的 API 将框架内模型部署到 Triton。以下代码示例假定 Nemotron-3-8B-Base-4k.nemo
检查点已下载并挂载到 /opt/checkpoints/
路径。
运行以下命令
from nemo.deploy.nlp import MegatronLLMDeployable from nemo.deploy import DeployPyTriton megatron_deployable = MegatronLLMDeployable("/opt/checkpoints/Nemotron-3-8B-Base-4k.nemo") nm = DeployPyTriton(model=megatron_deployable, triton_model_name="nemotron", port=8000) nm.deploy() nm.serve()