3 月 19 日下午 2 点,锁定 NVIDIA AI 网络中文专场。立即注册观看
AI 平台/部署

借助 NVIDIA DriveOS LLM SDK 简化自动驾驶汽车应用的 LLM 部署

大语言模型 (LLMs) 在自然语言处理 (NLP) 中表现出非凡的泛化能力。它们广泛应用于翻译、数字助理、推荐系统、上下文分析、代码生成、网络安全等。汽车应用对基于 LLMs 的自动驾驶和座舱功能解决方案的需求与日俱增。在通常资源受限的汽车平台上部署 LLMs 和 视觉语言模型 (VLMs) 已成为一项严峻的挑战。

本文将介绍 NVIDIA DriveOS LLM SDK,该库旨在优化自动驾驶汽车 DRIVE AGX 平台 上先进 LLM 和 VLM 的推理。它是基于 NVIDIA TensorRT 推理引擎构建的轻量级工具包。它整合了针对 LLM 的特定优化,例如自定义注意力内核和量化技术,以便在汽车平台上部署 LLM。

该工具包提供易于使用的 C++ 库和示例代码,用于导出、构建 TensorRT 引擎、执行推理,以及使用完整的端到端工作流对 LLM 进行基准测试。我们将带您了解 SDK 的关键组件,并介绍其支持的模型和部署工作流。

NVIDIA DriveOS SDK 的关键组件

DriveOS LLM SDK 包含多个专为高效 LLM 推理而设计的关键组件。这些组件可确保在汽车平台上高效部署 LLM,包括:

  • 插件库 :LLMs 需要专用插件来实现高级功能和优化性能。DriveOS LLM SDK 包含这些自定义插件,以及一组用于处理上下文相关组件的内核,例如旋转位置嵌入、multihead attention 和 KV-cache 管理。AttentionPlugin 还支持动态批量大小和动态输入序列长度。
  • 标记器/detokenizer :该 SDK 为 LLM 推理提供高效的标记器/detokenizer,遵循 Llama 式字节对编码 (BPE) 标记器,并带有正则表达式匹配。此模块将多模态用户输入 (例如文本或图像) 转换为令牌流,从而实现不同数据类型之间的无缝集成。
  • 采样器 :采样器对于文本生成、翻译和对话等任务至关重要,因为它控制着模型在推理过程中如何生成文本和选择标记。DriveOS LLM SDK 实现了基于 CUDA 的采样器来优化此过程。为了平衡推理效率和输出多样性,采样器使用单束采样方法和 Top-K 选项。这种方法可提供快速且合理多样化的输出,而不会产生探索多个束所需的计算成本。这对于汽车应用非常重要,因为需要考虑延迟和效率。
  • 解码器 :在 LLM 推理期间,解码器模块根据模型的预测迭代生成 token,从而生成文本或序列。DriveOS LLM SDK 提供灵活的解码循环,支持静态批量大小、填充输入序列,以及生成批量中最长的序列。

这些组件共同支持在多个 NVIDIA DRIVE 平台上实现灵活、轻量级的高性能 LLM 部署和定制 (图 1)。

Graphic showing DriveOS LLM SDK components, including TensorRT and plugins, decoder loop, sampler, C++ interfaces, and LLM sample.

图 1. DriveOS LLM SDK 主要组件和架构计划

支持的模型、精度格式和平台

DriveOS LLM SDK 在 DRIVE 平台上支持一系列先进的 LLM,包括 NVIDIA DRIVE AGX Orin NVIDIA DRIVE AGX Thor 。作为预览功能,该 SDK 还可以在 x86 系统上运行,这对于开发非常有用。目前支持的模型包括以下内容,未来预计还会有其他模型:

  • Llama 3 8B Instruct
  • Llama 3.1 8B
  • Llama 3.2 3B
  • Qwen2.5 7B Instruct
  • Qwen2 7B Instruct
  • Qwen2 VL

该 SDK 支持多种精度格式,可在不同平台 (包括 FP16、FP8、NVFP4 和 INT4) 上解锁大型 LLM。对于 INT4 (W4A16) 精度,使用 AWQ recipe 将模型权重量化为 INT4,并在 FP16 中执行计算。这种方法可显著减少内存占用。该 SDK 还在 NVIDIA DRIVE AGX Thor 平台上支持 TensorRT 版本大于 10.4 的 FP8 (W8A8) 精度,以及 TensorRT 版本大于 10.8 的 NVFP4 精度。

这些精度可以进一步减少 LLM 推理期间的内存占用,同时增强内核性能。在此配置中,权重和 GEMM 运算采用 FP8 或 NVFP4 格式,而 LayerNorm、KV 缓存、LM 头和注意力层保留在 FP16 中。总体而言,DriveOS LLM SDK 旨在高效支持各种 LLM,包括多模态输入和跨多个平台的各种精度格式。

LLM 部署工作流

LLM 部署通常是一个复杂的过程,需要大量的工程工作,尤其是在边缘设备上。DriveOS LLM SDK 为在 DRIVE 平台上部署 LLM 提供了简化的解决方案。所提议的 SDK 将部署工作流程简化为两个简单的步骤:导出 ONNX 模型和构建引擎(图 2)。此过程与使用 TensorRT 部署深度学习模型的标准程序十分相似。

Flow chart showing that DriveOS LLM SDK streamlines the LLM deployment into two major steps, model export and quantization, and build TensorRT Engine. This procedure is lightweighted and easy to deploy an LLM model on an autonomous vehicle.

图 2、使用 DriveOS LLM SDK 部署 LLM 的步骤

量化在优化 LLM 部署方面发挥着至关重要的作用,尤其是对于资源受限的平台而言。它可以显著提高 LLM 的效率和可扩展性。DriveOS LLM SDK 通过在 ONNX 模型导出阶段提供多个量化选项来满足这一需求,您可以通过一条命令轻松调用这些量化选项:

python3 llm_export.py --torch_dir $TORCH_DIR --dtype [fp16|fp8|int4] --output_dir $ONNX_DIR

此命令可将 Hugging Face 格式的 LLM 转换为具有指定量化精度的 ONNX 模型。建议在 x86 数据中心 GPU 上执行此步骤,以避免内存不足 (OOM) 问题。

将模型导出到 ONNX 后,可以使用 llm_build 二进制文件来创建相应的 TensorRT 引擎。构建过程与特定模型或精度无关,因为 IO 接口在所有 ONNX 模型中保持标准化。应使用以下命令在 DRIVE 平台上构建引擎:

./build/examples/llm/llm_build --onnxPath=model.onnx --enginePath=model.engine --batchSize=B --maxInputLen=N --maxSeqLen=M

该 SDK 还包括交叉编译构建系统,支持在 x86 机器上编译 AArch64 目标。此功能可加速部署并简化边缘计算平台上的特征验证。

除了其用户友好型部署流程外,DriveOS LLM SDK 还提供各种 C++ 代码示例,用于端到端 LLM 推理、性能基准测试和实时聊天实现。这些示例使开发者能够使用静态批量大小和输入/输出序列长度来评估 DRIVE 平台上不同模型的准确性和性能,或自定义自己的应用程序。

要使用 SDK 提供的 C++ 代码来启用 LLM 聊天机器人,请使用以下示例命令:

./build/examples/llm/llm_chat --tokenizerPath=llama-v3-8b-instruct-hf/ --enginePath=llama3_fp16.engine --maxLength=64

此命令的整个推理工作流如图 3 所示,其中与 DriveOS LLM SDK 相关的组件以蓝色块表示。

Pipeline using DriveOS LLM SDK for inference, including text input, tokens, tokenizer, detokenizer, text output, samplers, plugins.

图 3、使用 DriveOS LLM SDK 进行推理的管道

多模态 LLM 部署

与传统 LLM 不同,汽车应用中使用的语言模型通常需要多模态输入,例如摄像头图像、文本等。DriveOS LLM SDK 通过提供专为先进 VLM 设计的专用推理和模块来满足这些需求。

目前,该 SDK 基于官方的 Qwen2 VL GitHub 资源库 ,支持 Qwen2 VL 模型,并采用 C++ 实现的图像预处理器。此模块可高效加载图像、调整图像大小、将图像分成小分块 (通过合并)、对像素值进行归一化,并以与语言模型保持一致的时间格式存储分块。

要部署多模态 LLM,必须导出视觉编码器和语言模型,并单独构建引擎。为了简化这一过程,DriveOS LLM SDK 提供了 Python 脚本和 C++ 实用程序,通过标准化步骤简化了 TensorRT 模型引擎构建。

总结

NVIDIA DriveOS LLM SDK 简化了 LLM 和 VLM 在 DRIVE 平台 上的部署。通过利用强大的 NVIDIA TensorRT 推理引擎以及 LLM 特定优化技术,如量化,先进的 LLM 和 VLM 可以在 DRIVE 平台上轻松部署。此 SDK 为在生产环境中部署强大的 LLM 奠定了基础,最终提高了 AI 驱动的应用的性能。

详细了解适用于自动驾驶汽车的 NVIDIA DRIVE 解决方案

 

标签