• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 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 解決方案

    ?

    0

    標簽

    人人超碰97caoporen国产