立即下载 DOCA,开启高性能AI 网络之旅,实现“一站式” 编程
数据中心/云端

Llama 3.2 全栈优化释放 NVIDIA GPU 的高性能

Meta 最近发布了 Llama 3.2 系列视觉语言模型(VLM),其中包含 11B 参数和 90B 参数变体。这些模型是多模态模型,支持文本和图像输入。此外,Meta 还推出了 Llama 3.2 的纯文本 小语言模型(SLM) 变体,具有 1B 和 3B 参数。NVIDIA 已对 Llama 3.2 模型集合进行优化,以便在全球数百万个 GPU 上提供出色的性能和经济高效的服务 – 从我们功能强大的数据中心和云 GPU 到本地 NVIDIA RTX 工作站 ,甚至是使用 NVIDIA Jetson 的低功耗边缘设备。

Llama 3.2 VLM 支持长达 128K 的文本标记,以及分辨率为 1120 x 1120 像素的单张图像输入。为了实现低延迟响应,提供出色的用户体验,同时提供高吞吐量以经济高效地提供这些模型,NVIDIA 平台在技术堆栈的每一层都进行了优化。

同样,Llama 3.2 SLM 已经过优化,可在全球数百万 NVIDIA RTX PC 和工作站上良好运行。它们还经过量化,允许在边缘设备上使用 NVIDIA Jetson 进行本地部署。有关更多信息,请参阅 将加速的 Llama 3.2 从边缘部署到云端

本文将介绍如何通过全栈优化实现 Llama 3.2 模型的高吞吐量和低延迟服务。

加速 Llama 3.2 AI 推理吞吐量 

Llama 3.2 11B 和 Llama 3.2 90B 模型包括一个带有文本解码器的视觉编码器。编码器使用 NVIDIA TensorRT 库 针对高性能推理进行了优化,文本解码器使用 NVIDIA TensorRT-LLM 库 进行了优化。

通过 TensorRT-LLM 中支持的交叉注意力机制,视觉编码器的视觉信息融合到 Llama 文本解码器中。这使得 Llama 3.2 VLM 能够高效生成文本,在文本输入的上下文中考虑视觉推理和理解。

TensorRT 支持视觉编码器在 BF16 数据格式下运行。TensorRT-LLM 支持文本解码器在 FP16 和 BF16 格式下运行。Meta 发布的官方 recipe 使用了 BF16 文本解码器,这也用于我们的基准性能测量。为了进一步提高性能,NVIDIA 利用 NVIDIA Hopper 架构中的 第四代 FP8 Tensor Core 开发了自定义的 FP8 后训练量化(PTQ)recipe。

此方法通过 TensorRT Model Optimizer 库 提供,可实现更高的 Llama 3.2 吞吐量和更低的延迟,同时在众多基准测试(包括 ScienceQA OCRBench TextVQA MMMU )中提供相同的准确性。这意味着开发者现在可以更经济高效地运行模型。

TensorRT、TensorRT-LLM 和 TensorRT Model Optimizer 库中的优化经过组合,可通过使用 NVIDIA NIM 微服务的生产就绪型部署获得。

提供高吞吐量和低延迟 

表 1 显示了在一系列输入和输出序列长度以及单输入图像 (最大支持分辨率为 1120 x 1120 像素) 中的最大吞吐量性能 (代表离线用例)。我们使用基于 NVIDIA HGX H200 平台的系统,在 8 个 NVIDIA H200 Tensor Core GPU 上运行 Llama 3.2 90B 模型,每个 GPU 均具有 141 GB 的快速 HBM3e 内存,通过 NVLink 和 NVLink Switch 连接,可在 GPU 之间提供 900 GB/s 的 GPU 到 GPU 带宽。

最大吞吐量性能 – 每秒输出令牌数 八个 NVIDIA H200 Tensor Core GPU
输入|输出序列长度|图像大小 8000|2000|1120*1120 20000|2000|1120*1120 60000|2000|1120*1120
带 FP8 解码器的 BF16 编码器 2646 1417 480
表 1. 通过 NVIDIA 内部测量获得的最大吞吐量性能

TensorRT 针对 VLM 版本 1.1.0 recipe 优化的 NIM。在每个 ISL/OSL 配置之间重新启动 NIM 服务器,以设置最佳 KV 缓存分割。数据测量时间:11 月 14 日,2024 年。输出 tokens/second 包含生成第一个 token 的时间 – tok/s = total generated tokens / total latency。DGX H200,标准化为 8 个 GPUs (通过采用 TP 配置文件最大限度地提高每个 GPU 的吞吐量,并将该值乘以 8 以模拟副本并行设置),针对最大节点吞吐量调整了批量大小,TensorRT Model Optimizer 版本 0.21 (预发布),TensorRT-LLM 版本 0.16.0.dev,TensorRT 版本 10.4.0。

表 2 显示了使用相同的输入和输出序列长度以及输入图像大小时的最小延迟性能。

最低延迟性能 – 输出令牌/秒 八个 NVIDIA H200 Tensor Core GPUs
输入|输出序列长度|图像大小 8000|2000|1120*1120 20000|2000|1120*1120 60000|2000|1120*1120
带 FP8 解码器的 BF16 编码器 64 63 55
表 2、NVIDIA 内部测量的最低延迟性能

TensorRT 针对 VLM 版本 1.1.0 recipe 优化的 NIM。数据测量时间:2024 年 11 月 4 日。输出 tokens/second 包含生成第一个 token 的时间 – tok/s = 生成的 tokens 总数/总延迟。DGX H200、TP8,批量大小 = 1,TensorRT Model Optimizer 版本 0.21 (预发布),TensorRT-LLM 版本 0.16.0.dev,TensorRT 版本 10.4.0 以上。

这些结果表明, 搭载 TensorRT 优化软件的 NVIDIA H200 GPU 可在 Llama 3.2 90B VLM 上提供出色的性能,适用于延迟优化和吞吐量优化的场景。

采用 ONNX Runtime 的 GeForce RTX 4090 在 NVIDIA RTX 上的吞吐量性能

对于 Windows 部署,NVIDIA 已对 Llama 3.2 SLM 进行优化,以便使用带有 DirectML 后端的 ONNX Runtime Generative API 高效工作。使用 NGC 目录上提供的 模型检查点 进行性能测量。检查点是 Llama 3.2 3B Instruct 模型的量化版本,使用 AutoAWQ 量化为 AWQ INT4 ,并使用 ONNX Runtime Generative API 转换为 ONNX。

最大吞吐量性能 – 输出令牌/秒 NVIDIA GeForce RTX 4090 GPU
输入|输出序列长度 100|100 2000|100 4000|100
采用 DirectML 的 Onnx-GenAI 运行时,BS = 1 253 203 165
支持 DirectML 的 Onnx-GenAI 运行时,BS = 4 615 374 251
表 3、通过 NVIDIA 内部测量获得的最大吞吐量性能

使用在 2024 年 10 月 7 日测量的 DirectML 数据的 ONNX Runtime Generative API。输出 token/s 包含生成第一个 token 的时间 – tok/s = 总生成 token 数 / 总延迟。GeForce RTX 4090 GPU。

跨平台在 Llama 3.2 上获得更好的性能 

借助 NVIDIA 加速计算平台,您可以在任何平台 (从数据中心、云到本地工作站) 上构建模型并使用性能超强的 Llama 3.2 模型增强您的应用。NVIDIA NIMNVIDIA AI Enterprise 软件平台的一部分,可为 Llama 3.2 和 NVIDIA 及其合作伙伴生态系统的其他模型提供经 NVIDIA TensorRT 优化的推理。

致谢 

我们要感谢 George Yuan、Alex Settle 和 Chenjie Luo 为支持这篇博文而付出的努力。

标签