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 應用能夠在消費級設備上實現實用性和高性能。
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 中實現動態形狀的主要優勢在于,可以動態生成特定形狀的內核。這些專用內核在后臺線程中進行編譯,而 初始推理請求則使用后備內核提供服務。運行時在準備就緒時自動選擇形狀專用內核,從而根據用例進行性能優化。

如需詳細了解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 架構,這有助于減小引擎大小并縮短構建時間。


例如,要構建可在 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 頻道與我們聯系。
?
?