部署與效率
tensorrt
在 NVIDIA GPU 上能正確執行的模型,通常遠未跑到 GPU 的極限速度。TensorRT 是 NVIDIA 的推論最佳化器與執行環境:你餵給它一個訓練好的模型(常透過 ONNX),它便編譯出一個高度最佳化、針對你確切 GPU、所選精度與輸入形狀特化的「引擎」(engine)——常比同一網路天真的 PyTorch 推論快上數倍。
它的主要最佳化有四項。(1)層與張量融合:把 conv+bias+activation,或注意力的各部件,合併成單一核心,以削減核心啟動的額外開銷與記憶體往返。(2)降低精度:以 FP16、int8(需校準)或 FP8 執行,逐層選擇精度以權衡速度與準確率。(3)核心自動調校,稱為策略選擇(tactic selection):在實際 GPU 上對多個候選核心實作做基準測試,留下最快者。(4)記憶體規劃:重用激活緩衝區以縮小佔用。產出是一個你載入後執行的序列化引擎。
代價是可移植性。一個引擎特化於某 GPU 架構與某個 TensorRT 版本——為 Ampere 建的,在 Hopper 上既非最佳也無法載入——而建構步驟本身可能很慢;動態形狀需要預先定義的最佳化設定檔(optimization profile)。TensorRT 是 NVIDIA 硬體上即時視覺的標準:偵測、分割與自動駕駛(DRIVE),並透過 Torch-TensorRT 整合,常以 Triton Inference Server 提供服務。
TensorRT 中的 int8 需要一個具代表性的校準集(熵或最小/最大值),或是一個帶有內嵌 Q/DQ 節點的 QAT 模型。略過校準不會報錯——它會無聲地產出一個快速但準確率崩壞的引擎。
又称