• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • AI 平臺/部署

    使用 NVIDIA TensorRT for RTX 運行高性能 AI 應用

    NVIDIA TensorRT for RTX 現可作為 SDK 下載,該 SDK 可集成到 Windows 和 Linux 的 C++ 和 Python 應用中。在 Microsoft Build 上,我們推出了這款用于高性能 AI 推理的精簡解決方案,支持從 NVIDIA Turing 到 NVIDIA Blackwell 各代產品 (包括最新的 NVIDIA RTX PRO 系列) 的 NVIDIA GeForce RTX GPU。

    此首個版本可為各種工作負載(包括卷積神經網絡(CNN)、語音模型和擴散模型)提供高性能推理。TensorRT for RTX 是創意、游戲和生產力應用的理想選擇。我們還有一個 GitHub 項目資源庫,其中包含入門 API 示例和演示,可幫助開發者快速入門。

    什么是 TensorRT for RTX?

    TensorRT for RTX 基于 NVIDIA TensorRT 推理庫的成熟性能構建,但簡化了 NVIDIA RTX GPU 上的 AI 模型在臺式機、筆記本電腦和工作站中的部署。

    TensorRT for RTX 是 NVIDIA TensorRT 的直接替代品。TensorRT for RTX 在運行時中引入了即時 (JIT) 優化器,可直接在最終用戶的 RTX 加速 PC 上編譯改進的推理引擎。這消除了漫長的預編譯步驟,并實現了快速引擎生成、改進的應用程序可移植性、部署工作流程和運行時性能,從而實現了較高的推理速度。

    為了支持在內存受限的環境中集成輕量級應用程序和進行部署,TensorRT for RTX 是一款緊湊型產品,不到 200 MB。

    這使得用于圖像處理、語音合成和生成式 AI 的響應式實時 AI 應用能夠在消費級設備上實現實用性和高性能。

    視頻 1。借助 TensorRT for RTX 縮短引擎構建時間,同時提供峰值性能

    TensorRT for RTX SDK 包括:

    • 支持 Windows (zip) 和 Linux (tar)
    • 用于 C++ 開發的 Header files
    • 用于快速原型設計的 Python 綁定
    • 用于部署的Optimizer和runtime library
    • 用于導入 ONNX 模型的 Parser 庫
    • 用于簡化部署和基準測試的開發者工具

    有關下載和安裝 TensorRT for RTX SDK 的信息,請參閱安裝指南

    TensorRT for RTX 的主要特性

    用于 RTX 優化的 TensorRT 分為兩個階段。

    • 第 1 階段:在 Ahead-Of-Time (AOT) 優化中,模型圖形得到改進并轉換為可序列化部署的引擎。
    • 第 2 階段:在運行時,JIT 優化器專門用于在已安裝的 RTX GPU 上執行引擎。

    請參閱我們的 helloWorld 示例,了解此優化和部署工作流程。

    對于 ONNX 模型部署,我們還提供了一個命令行工具 tensorrt_rtx,用于為 RTX 引擎構建和分析 TensorRT。請參閱文檔了解詳情。

    其他新功能可以更好地控制部署工作流程,并提高現實世界應用的性能。以下是其中一些進展的簡要概述。

    動態形狀

    動態形狀功能可將為網絡輸入和輸出指定部分或全部tensor維度的時間推遲到運行時。

    通過將 -1 分配給其大小來指定動態維度。

    auto input = network->addInput("input", nvinfer1::DataType::kFLOAT, nvinfer1::Dims2{-1, kInputSize});

    必須在構建器配置中指定描述輸入維度動態范圍的Optimization profile(s)。

    nvinfer1::IOptimizationProfile* profile = builder->createOptimizationProfile();
    profile->setDimensions("input", nvinfer1::OptProfileSelector::kMIN, nvinfer1::Dims2(1, kInputSize));
    profile->setDimensions("input", nvinfer1::OptProfileSelector::kOPT, nvinfer1::Dims2(4, kInputSize));
    profile->setDimensions("input", nvinfer1::OptProfileSelector::kMAX, nvinfer1::Dims2(32, kInputSize));
     
    builderConfig->addOptimizationProfile(profile);

    在運行時,創建執行上下文時,JIT 優化會生成后備內核,這些內核可以對整個輸入形狀范圍運行推理。在推理之前,必須選擇所有動態維度的所需優化配置文件和運行時形狀。

    context->setOptimizationProfileAsync(0, stream);
    context->setInputShape("input", nvinfer1::Dims2(1, kInputSize));

    與 TensorRT 相比,在 TensorRT for RTX 中實現動態形狀的主要優勢在于,可以動態生成特定形狀的內核。這些專用內核在后臺線程中進行編譯,而 初始推理請求則使用后備內核提供服務。運行時在準備就緒時自動選擇形狀專用內核,從而根據用例進行性能優化。

    A line graph showing GPU processing time on the Y-axis and Step Number on the X axis when using Dynamic Shapes. Step Number 1 shows a GPU processing time of 270ms, and steps 2 through 50 show a processing time of 100ms.
    圖 1。在穩定狀態下 (使用形狀專用內核) 執行 FLUX.1-dev transformer 模型的速度比第一次迭代 (使用后備內核) 快 60%。這種免費的性能提升無需更改任何代碼

    如需詳細了解dynamic shapes,請參閱文檔

    運行時緩存

    運行時緩存可用于存儲 JIT-compiled 內核,并使用運行時配置對象創建。

    auto runtimeCache =
    std::unique_ptr<nvinfer1::IRuntimeCache>(runtimeConfig->createRuntimeCache());
     
    runtimeConfig->setRuntimeCache(*runtimeCache);

    執行上下文將附加的runtime cache用于所有推理執行,并將新的JIT-compiled kernels附加到緩存中。或者,可以將緩存序列化為文件,以在應用程序調用和安裝過程中保持持久性,從而避免JIT重新編譯。這可縮短應用程序啟動時間,并實現開箱即用的峰值性能。

    auto serializedRuntimeCache =
    std::unique_ptr<nvinfer1::IHostMemory>(runtimeCache->serialize());

    如需了解有關runtime cache的更多信息,請參閱文檔

    無 GPU 的 AOT

    適用于 RTX AOT 優化引擎的 TensorRT 可在 NVIDIA Ampere、Ada 和 Blackwell 架構的 NVIDIA RTX GPU 上運行 (請參閱完整的支持矩陣) ,并且無需 GPU 即可構建。如果不需要廣泛的可移植性,開發者可以使用 TensorRT for RTX 計算能力 API 來限制用于部署的目標 NVIDIA RTX GPU 架構,這有助于減小引擎大小并縮短構建時間。

    Bar chart showing size reduction of engine files across different compute capability specifications. Compute capabilities 8.6, 8.9, and 12.0 show a reduction of 28.3 MB. Compute capabilities 8.9 and 12.0 show a reduction of 33.9 MB. Compute capability 12.0 shows a reduction of 39.4 MB.
    圖 2。引擎尺寸減小 (越小越好) ,通過專門化編譯以逐漸減少 GPU 計算能力來實現
    Bar chart showing compilation time reduction of engines across different compute capability specifications. Compute capabilities 8.6, 8.9, and 12.0 show a reduction of 16.2%. Compute capabilities 8.9 and 12.0 show a reduction of 22%. Compute capability 12.0 shows a reduction of 28.3%.
    圖 3。圖例展示了在將編譯專門化為逐漸減少的 GPU 計算能力時,AOT 優化所花費的時間 (越小越好)

    例如,要構建可在 Ada 和 Blackwell RTX GPU 上運行的引擎,可以使用構建器配置將相應的 SM 版本顯式枚舉為構建目標。查看 NVIDIA RTX GPU 及其計算能力的完整列表

    builderConfig->setNbComputeCapabilities(2);
    builderConfig->setComputeCapability(nvinfer1::ComputeCapability::kSM89, 0);
    builderConfig->setComputeCapability(nvinfer1::ComputeCapability::kSM120, 1);

    TensorRT for RTX 還可以自動查詢 GPU 功能,并構建針對該功能優化的引擎。這是通過將 kCURRENT 指定為計算能力目標來完成的。

    builderConfig->setNbComputeCapabilities(1);
    builderConfig->setComputeCapability(nvinfer1::ComputeCapability::kCURRENT, 0);

    適用于 RTX API 的 TensorRT 是強類型的,這意味著在優化期間無法更改模型圖形中表示的運算精度。但是,某些精度僅在較新的 GPU 架構中受支持。對于使用它們的網絡,計算能力目標 (如果指定) 必須限于這些 GPU 架構 (請參閱支持矩陣) 。例如:

    • FP4 僅在 NVIDIA Blackwell (SM120) 及以上版本上受支持。
    • FP8 僅在 NVIDIA Ada (SM89) 及以上版本上受支持。

    如需了解有關 AOT 優化的更多信息,請參閱文檔

    失重式引擎和改裝

    TensorRT for RTX 支持無權重構建引擎。如果權重也與引擎一起發送 (例如,作為 ONNX 模型) ,這有助于最大限度地減小應用程序包的配送大小。

    在構建weight-stripped引擎時,還必須將其標記為refittable,以便稍后更新。

    builderConfig->setFlag(nvinfer1::BuilderFlag::kSTRIP_PLAN);
    builderConfig->setFlag(nvinfer1::BuilderFlag::kREFIT);

    在推理過程中,可使用 Refitter 對象為 weightless 引擎加油。

    auto refitter = std::unique_ptr<nvinfer1::IRefitter>(
    nvinfer1::createInferRefitter(*inferenceEngine, logger));
     
    refitter->setNamedWeights("fc1 weights", fc1Weights);
    refitter->setNamedWeights("fc2 weights", fc2Weights);
    refitter->refitCudaEngine();

    如需了解有關weightless engines和refit的更多信息,請參閱文檔

    查看我們的 apiUsage 示例,了解所有這些新功能的實際應用。

    開始使用 TensorRT for RTX 進行構建

    開發者可以下載 SDK,在 GitHub 上探索代碼示例,并深入了解我們的文檔以開始使用。

    有關實際示例,請查看我們使用 TensorRT for RTX 實現 FLUX.1 [dev] 加速的演示

    有關更多詳細信息,請參閱我們的文檔,包括 TensorRT 應用的移植指南性能最佳實踐

    我們期待收到您的反饋。在我們的 GitHub 問題頁面TensorRT for RTX 開發者論壇上分享您的反饋、提問或開始討論。您也可以通過我們的 Discord 頻道與我們聯系。

    ?

    ?

    0

    標簽

    人人超碰97caoporen国产