Llama 3.1 NemoGuard 8B 主题控制部署#
TopicControl 模型将通过 HuggingFace 以 LoRA 适配器模块的形式提供下载,并以 NVIDIA NIM 的形式提供,用于使用 NVIDIA TensorRT-LLM 进行低延迟优化推理。
本指南介绍了如何将 TopicControl 模型部署为 NIM,以及如何在 NeMo Guardrails 配置中使用已部署的 NIM。
NIM 部署#
访问#
第一步是确保通过 NGC 使用 NVAIE 许可证访问 NVIDIA NIM 资产。获得具有必要权限的 NGC API 密钥后,设置以下环境变量
export NGC_API_KEY=<your NGC API key>
docker login nvcr.io -u "$oauthtoken" -p <<< <your NGC API key>
测试您是否能够通过拉取最新的 TopicControl 容器来使用 NVIDIA NIM 资产。
export NIM_IMAGE=<Path to latest NIM docker container>
export MODEL_NAME="llama-3.1-nemoguard-8b-topic-control"
docker pull $NIM_IMAGE
开始!
docker run -it --name=$MODEL_NAME \
--gpus=all --runtime=nvidia \
-e NGC_API_KEY="$NGC_API_KEY" \
-e NIM_SERVED_MODEL_NAME=$MODEL_NAME \
-e NIM_CUSTOM_MODEL_NAME=$MODEL_NAME \
-u $(id -u) \
-p 8123:8000 \
$NIM_IMAGE
在您的 Guardrails 应用程序中使用正在运行的 NIM#
任何本地运行的 NIM 都在 v1/completions
和 v1/chat/completions
端点上公开标准的 OpenAI 接口。NeMo Guardrails 提供了开箱即用的支持引擎,这些引擎支持标准的 LLM 接口。对于本地部署的 NIM,您需要使用引擎 nim
。
因此,您的 Guardrails 配置文件可以如下所示
models:
- type: main
engine: openai
model: gpt-3.5-turbo-instruct
- type: "topic_control"
engine: nim
parameters:
base_url: "http://127.0.0.1:8123/v1"
model_name: "llama-3.1-nemoguard-8b-topic-control"
rails:
input:
flows:
- topic safety check input $model=topic_control
需要注意的几点
parameters.base_url
应包含 NIM 托管机器的 IP 地址,端口应与 docker run 命令中指定的隧道转发端口匹配。Guardrails 配置中的
parameters.model_name
需要与运行 NIM 容器时使用的$MODEL_NAME
匹配。rails
定义应将topic_control
列为模型。
奖励:缓存优化的 TRTLLM 推理引擎#
如果您不想每次运行 NIM 容器时都从头开始构建 TRTLLM 引擎,您可以在第一次运行时缓存它,只需添加一个标志来挂载 docker 内部的本地目录以存储模型缓存。
为了实现这一点,您只需在使用 -v $LOCAL_NIM_CACHE:/opt/nim/.cache
运行 docker 容器时,将包含缓存的 TRTLLM 资产的文件夹挂载到 docker 容器上。有关完整命令,请参见以下说明。重要提示:确保 docker 具有写入缓存文件夹的权限 (sudo chmod 666 $LOCAL_NIM_CACHE
)。
### To bind a $LOCAL_NIM_CACHE folder to "/opt/nim/.cache"
export LOCAL_NIM_CACHE=<PATH TO DIRECTORY WHERE YOU WANT TO SAVE TRTLLM ENGINE ASSETS>
mkdir -p $LOCAL_NIM_CACHE
sudo chmod 666 $LOCAL_NIM_CACHE
现在,在运行 docker 容器时挂载此目录以将缓存的资产存储在此目录中,以便随后挂载它将导致容器读取缓存的资产而不是重建它们。
docker run -it --name=$MODEL_NAME \
--gpus=all --runtime=nvidia \
-e NGC_API_KEY="$NGC_API_KEY" \
-e NIM_SERVED_MODEL_NAME=$MODEL_NAME \
-e NIM_CUSTOM_MODEL_NAME=$MODEL_NAME \
-v $LOCAL_NIM_CACHE:"/opt/nim/.cache/" \
-u $(id -u) \
-p 8123:8000 \
$NIM_IMAGE
有关 TopicControl 模型的更多详细信息#
有关 TopicControl 模型的更多详细信息,请查看其他资源
NeMo Guardrails 库,用于 NVIDIA NemoGuard 模型