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 |
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 |
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 |
使用在 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 NIM 是 NVIDIA AI Enterprise 軟件平臺的一部分,可為 Llama 3.2 和 NVIDIA 及其合作伙伴生態系統的其他模型提供經 NVIDIA TensorRT 優化的推理。
致謝?
我們要感謝 George Yuan、Alex Settle 和 Chenjie Luo 為支持這篇博文而付出的努力。