NVIDIA AI Foundation 模型:使用生产就绪型 LLM 构建自定义企业聊天机器人和 Co-Pilot

这篇文章最初发表在 NVIDIA 技术博客上。

大型语言模型(LLM)正在革新数据科学领域,特别是在自然语言理解、AI 以及 机器学习 方面。针对特定领域的见解量身打造的自定义 LLM 在企业应用程序中的吸引力越来越大。

NVIDIA NeMo Megatron-3 8B 系列 基础模型 是一款功能强大的新工具,用于构建生产就绪型 生成式 AI。从客户服务 AI 聊天机器人到尖端 AI 产品,它在企业中促进创新的应用广泛。

这些新的基础模型 NVIDIA NeMo 端到端框架,用于构建、自定义和部署为企业量身打造的 LLM。企业现在可以使用这些工具快速、经济高效地大规模开发 AI 应用程序。这些应用程序可以在云、数据中心以及 Windows 台式机和笔记本电脑上运行。

Nemotron-3 8B 系列可在 Azure AI 模型目录、HuggingFace 和 NVIDIA NGC 的 NVIDIA AI 基础模型中心找到。它包括了一系列旨在解决各种下游任务的基础模型、聊天模型和问答 (Q&A) 模型。表 1 展示了完整的基础模型系列。

模型 变体 主要优势
基础 Nemotron-3-8B 碱基 支持自定义,包括针对适用于领域的 LLM 进行参数高效的微调和持续预训练
聊天 Nemotron-3-8B 聊天 -- SFT 用于指令调整自定义模型 或用户定义对齐(例如 RLHF 或 SteerLM 模型)的构建块
Nemotron-3-8B 聊天 RLHF 出色的开箱即用型聊天模型性能
Nemotron-3-8B 聊天转向 LM 开箱即用的聊天模型,可在推理时灵活对齐
问答 Nemotron-3-8B-QA 基于知识库定制的问答 LLM

表 1.Nemotron-3 8B 系列基础模型支持各种 LLM 用例

设计用于生产的基础模型

基础模型是一个强大的构建块,可减少构建有用的自定义应用程序所需的时间和资源。但是,组织必须确保这些模型满足其企业需求。

NVIDIA AI 基础模型基于负责任的来源数据集进行训练,捕捉各种声音和体验。严格的监控可提供数据保真度,并符合不断变化的法律规定。任何出现的数据问题都会得到迅速解决,确保企业配备的 AI 应用程序符合法律规范和用户隐私。这些模型可以同化公开可用的数据集和专有数据集。

Nemotron-3 -8B 底座

Nemotron-3 -8B 基础模型是一种紧凑的高性能模型,用于生成类似人类的文本或代码。该模型的 MMLU 5 分平均值为 54.4.该基础模型还满足具有多语种功能的全球企业的需求,因为它精通 53 种语言,包括英语、德语、俄语、西班牙语、法语、日语、中文、意大利语和荷兰语。该基础模型还使用 37 种不同的编码语言进行训练。

Nemotron-3 -8B 聊天

在此套件中添加了 Nemotron-3-8B 聊天模型,这些模型面向由 LLM 提供支持的聊天机器人交互。有三个聊天模型版本,每个版本都设计为独特的用户特定调整:

Nemotron-3-8B-SFT 模型是指令调整的第一步,我们借此构建在 8B 类别(最受引用的聊天质量指标)中 MT-Bench 得分最高的 RLHF 模型。我们建议用户从 8B-chat-RLHF 开始,以实现最佳的即时聊天交互,但对于有兴趣以唯一方式符合最终用户偏好的企业,我们建议在应用自己的 RLHF 时使用 SFT 模型。

最后,最新的比对方法 SteerLM 为在推理中训练和自定义 LLM 提供了更高的灵活性。借助 SteerLM,用户可以定义他们想要的所有属性,并将其嵌入到单个模型中。然后,他们可以在模型运行时为给定用例选择所需的组合。

此方法实现了持续的改进周期。来自自定义模型的响应可以作为未来训练运行的数据,从而将模型的实用性提升到新的水平。

Nemotron-3-8B 问答

Nemotron-3-8B-QA 模型是一个问答 (QA) 模型,根据专注于目标用例的大量数据进行了微调。

Nemotron-3-8B-QA 模型提供了先进的性能,在 GPU 上实现了 41.99% 的零射击 F1 分数 Natural Questions 数据集**。**此指标用于测量生成的答案与真值在 QA 中的接近程度。

Nemotron-3-8B-QA 模型已经过其他参数大小更大的先进语言模型的测试。此测试基于 NVIDIA 创建的数据集以及自然问题和 Doc2Dial 数据集进行。结果表明,此模型表现良好。

使用 NVIDIA NeMo 框架构建自定义 LLM

NVIDIA NeMo 通过为多个模型架构提供端到端功能和容器化方法,简化了构建自定义企业生成式 AI 模型的路径。借助 Nemotron-3 -8B 模型系列,开发者可以访问 NVIDIA 的预训练模型,这些模型可以轻松适应其特定用例。

快速模型部署

使用 NeMo 框架时,无需收集数据或设置基础设施。NeMo 简化了流程。开发者可以自定义现有模型,并快速将其部署到生产环境中。

最佳模型性能

此外,它还与 NVIDIA TensorRT-LLM 开源库无缝集成,可优化模型性能,NVIDIA Triton 推理服务器 加速推理服务过程。这种工具组合可实现出色的准确性、低延迟和高吞吐量。

数据隐私和安全

NeMo 支持安全、高效且符合安全和保密法规的大规模部署。例如,如果数据隐私是您企业的主要关注点,您可以使用 NeMo 护栏 来在不牺牲性能或可靠性的前提下安全地存储客户数据。

总体而言,使用 NeMo 框架构建自定义 LLM 是在不牺牲质量或安全标准的情况下快速创建企业 AI 应用的有效方式。它为开发者提供了自定义方面的灵活性,同时提供了大规模快速部署所需的可靠工具。

Nemotron-3 -8B 入门

您可以在 Nemotron-3 -8B 模型上轻松运行推理,通过使用 NeMo 框架,它利用了 TensorRT-LLM,这是一个开源库,可提供高级优化,以便在 NVIDIA GPU 上轻松高效地进行 LLM 推理。它内置了对各种优化技术的支持,包括:

  • KV 缓存
  • 高效 Attention 模块(包括 MQA、GQA 和 Paged Attention)
  • 动态(或连续)批处理
  • 支持低精度 (INT8/FP8) 量化等其他优化

NeMo 框架推理容器包含所有必要的脚本和依赖项,以便在 NeMo 模型(例如 Nemotron-3 -8B 系列)上应用 TensorRT-LLM 优化,并使用 Triton 推理服务器托管这些模型。通过部署,它可以显示您可以向其发送推理查询的端点。

预备知识

要按照说明进行部署和推理,您需要访问:

  • NVIDIA 数据中心 GPU:至少 (1) A100 -- 40 GB/80 GB,(2) H100 -- 80 GB,或 (3) L40S.
  • NVIDIA NeMo 框架:提供训练和推理容器,助您自定义或部署 Nemotron-3 -8B 系列模型。

在 Azure ML 上部署的步骤

Nemotron-3 -8B 系列中的模型可在 Azure ML 模型目录中获取,以便在 Azure ML 管理的端点中进行部署。AzureML 提供易于使用的"无代码部署"流帽,因此可以轻松部署 Nemotron -- 3 -- 8B 系列模型。平台内集成了底层管道,即 NeMo 框架推理容器。

图 1.在 Azure ML 中选择实时端点

要在 Azure ML 上部署 NVIDIA 基础模型以进行推理,请执行以下步骤:

  1. 登录您的 Azure 账户:portal.azure.com/#home
  2. 前往 Azure ML 机器学习工作室
  3. 选择您的工作空间并导航至模型目录

NVIDIA AI 基础模型可用于在 Azure 上进行微调、评估和部署。可以使用 NeMo 训练框架在 Azure ML 中完成模型自定义。由训练和推理容器组成的 NeMo 框架已集成在 AzureML 中。

如要微调基础模型,请选择您喜欢的模型变体,单击fine-tune(微调),然后填写任务类型、自定义训练数据、训练和验证分割以及计算集群等参数。

要部署模型,请选择您喜欢的模型变体,单击"Real-time endpoint"(实时端点),然后选择实例、端点和其他参数以自定义部署。单击"Deploy"(部署)将推理模型部署到端点。

Azure CLI 和 SDK 的支持也可用于在 Azure ML 上运行微调作业和部署。有关更多信息,请参阅 Azure ML 中的基础模型 文档。

在本地或其他云上部署的步骤

Nemotron-3 -8B 系列中的模型具有独特的推理请求提示模板,推荐将其作为最佳实践,但它们的部署说明相似,因为它们共享相同的基础架构。

要获取使用 NeMo 框架推理容器的最新部署说明,请参阅NVIDIA NGC。为了演示,我们将部署 Nemotron-3-8B-Base-4k。

  1. 登录 NGC 目录,然后获取推理容器。
bash 复制代码
# log in to your NGC organization
docker login nvcr.io

# Fetch the NeMo framework inference container
docker pull nvcr.io/ea-bignlp/ga-participants/nemofw-inference:23.10
  1. 下载 Nemotron-3 -8B-Base-4k 模型。8B 系列模型可在 NGC 目录 以及 Hugging Face 上找到。您可以从这两个平台中任选其一下载模型。

NVIDIA NGC

使用 CLI 是从 NGC 下载模型的最简单方法。如果您还没有安装 NGC CLI,请根据入门指南进行安装和配置。

vbnet 复制代码
# Downloading using CLI. The model path can be obtained from it's page on NGC
ngc registry model download-version "dztrnjtldi02/nemotron-3-8b-base-4k:1.0"

拥抱面部识别技术

以下命令使用 git-lfs,但您也可以通过 Hugging Face 支持的方法 下载模型。

bash 复制代码
git lfs install
git clone https://huggingface.co/nvidia/nemotron-3-8b-base-4knemotron-3-8b-base-4k_v1.0
  1. 以交互模式运行 NeMo 推理容器,并安装相关路径
bash 复制代码
# Create a folder to cache the built TRT engines. This is recommended so they don't have to be built on every deployment call. 
mkdir -p trt-cache

# Run the container, mounting the checkpoint and the cache directory
docker run --rm --net=host \
                     --gpus=all \
                     -v $(pwd)/nemotron-3-8b-base-4k_v1.0:/opt/checkpoints/  \
                     -v $(pwd)/trt-cache:/trt-cache  \
                     -w /opt/NeMo \
                     -it nvcr.io/ea-bignlp/ga-participants/nemofw-inference:23.10 bash

4.在具有 TensorRT-LLM 后端的 Triton 推理服务器上转换和部署模型。

css 复制代码
python scripts/deploy/deploy_triton.py \
                     --nemo_checkpoint /opt/checkpoints/Nemotron-3-8B-Base-4k.nemo \
                     --model_type="gptnext" \
                     --triton_model_name Nemotron-3-8B-4K \
                     --triton_model_repository /trt-cache/ \
                     --max_input_len 3000 \
                     --max_output_len 1000 \
                     --max_batch_size 2

成功完成此命令后,它会显示您可以查询的端点。我们来看看如何做到这一点。

运行推理的步骤

根据您想要的服务集成方式,有几个可用于运行推理的选项:

  1. 通过 NeMo 框架推理容器 使用 NeMo 客户端 API
  2. 使用 PyTriton 在您的环境中创建客户端应用
  3. 使用任何可以发送 HTTP 请求的库/工具,因为部署的服务会公开 HTTP 端点。

以下是使用 NeMo 客户端 API 的选项 1 示例。您可以在同一台机器上的 NeMo 框架推理容器中使用它,也可以在访问服务 IP 和端口的其他机器上使用它。

ini 复制代码
from nemo.deploy import NemoQuery

# In this case, we run inference on the same machine
nq = NemoQuery(url="localhost:8000", model_name="Nemotron-3-8B-4K")

output = nq.query_llm(prompts=["The meaning of life is"], max_output_token=200, top_k=1, top_p=0.0, temperature=0.1)
print(output)

您可以在README中找到其他示例推理容器的信息。

这促使了 80 亿个模型系列

NVIDIA Nemotron-3 -8B 系列中的模型所有 NVIDIA Nemotron -- 3 -- 8B 数据集都有一个共同的预训练基础。但是,用于调整聊天的数据集(SFT、RLHF、SteerLM)和 QA 模型都是针对其特定目的而定制的。此外,构建这些模型采用不同的训练方法。因此,这些模型在遵循类似于其训练方式的模板的定制提示下最为有效。

这些模型的推荐提示模板可在其各自的模型卡上找到。

例如,以下是适用于 Nemotron-3 -8B-Chat-SFT 和 Nemotron -- 3 -- 8B -- Chat-RLHF 模型的单圈和多圈格式:

| |
|--------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Nemotron-3 -8B-Chat-SFT 和 Nemotron -- 3 -- 8B -- Chat-RLHF |
| 一次性提示 | 多圈或几次射击 |
| <extra_id_0>System <extra_id_1>User{prompt}<extra_id_1>Assistant | <extra_id_0>System <extra_id_1>User{prompt 1}<extra_id_1>Assistant{response 1}<extra_id_1>User{prompt 2}<extra_id_1>Assistant{response 2}...<extra_id_1>User{prompt N}<extra_id_1>Assistant |

prompt 和 response 字段对应输入的去向。以下是使用一次性模板格式化输入的示例。

ini 复制代码
PROMPT_TEMPLATE = """<extra_id_0>System
{system}
<extra_id_1>User
{prompt}
<extra_id_1>Assistant
"""
system = ""
prompt = "Write a poem on NVIDIA in the style of Shakespeare"

prompt = PROMPT_TEMPLATE.format(prompt=prompt, system=system)
print(prompt)

注意:对于 Nemotron-3 -8B-Chat-SFT 和 Nemotron -- 3 -- 8B -- Chat-RLHF 型号,我们建议将系统提示保留为空。

进一步训练和自定义

NVIDIA NeMo Megatron-3 -8B 模型系列适合针对特定领域的数据集进行进一步定制。为此,我们提供多种选项,例如从检查点继续进行预训练、SFT 或参数高效微调、使用 RLHF 对人类演示进行比对,或使用来自 NVIDIA 的新技术 SteerLM

NeMo 框架训练容器中包含了易于使用的脚本,这些脚本整合了上述技术。我们还提供了数据管理工具,帮助识别用于训练和推理的最佳超参数,并支持在您选择的本地硬件上运行 NeMo 框架,包括 DGX 云、支持 Kubernetes 的平台,或各种 云服务提供商

欲了解更多信息,请参阅NeMo 框架用户指南或查看相关容器的README文件。

Nemotron-3 -8B 系列模型专为各种用例而设计,不仅在各种基准测试中表现出色,而且还能够支持多种语言。

尝试一下并在评论中分享您的想法。

阅读原文

相关推荐
gs8014012 天前
ubuntu下 如何将 NVIDIA 内核驱动 升级到特定版本 如550.127
ubuntu·gpu·nvidia
扫地的小何尚18 天前
什么是大型语言模型
人工智能·语言模型·自然语言处理·机器人·gpu·nvidia
点云兔子20 天前
NX系列-使用 `nmcli` 命令创建 Wi-Fi 热点并设置固定 IP 地址
wifi·ip·nvidia·nx·hotspot·nano
self-motivation23 天前
gpu硬件架构
硬件架构·gpu·nvidia·tensor·cuda
程序员非鱼1 个月前
深入解析神经网络的GPU显存占用与优化
人工智能·深度学习·神经网络·机器学习·nvidia·cuda
扫地的小何尚2 个月前
NVIDIA RTX 系统上使用 llama.cpp 加速 LLM
人工智能·aigc·llama·gpu·nvidia·cuda·英伟达
布鲁格若门2 个月前
AMD CPU下pytorch 多GPU运行卡死和死锁解决
人工智能·pytorch·python·nvidia
centurysee2 个月前
【一文搞懂】GPU硬件拓扑与传输速度
gpu·nvidia
算家云2 个月前
moffee模型部署教程
人工智能·python·github·markdown·nvidia·ppt·幻灯片制作
坐望云起2 个月前
Ubuntu20.04 更新Nvidia驱动 + 安装CUDA12.1 + cudnn8.9.7
linux·ubuntu·nvidia·cuda·onnx·1024程序员节