NVIDIA 喺 23 日喺自家技術部落格(Atom)一次過刊咗兩篇文章,介紹 TensorRT 11.1 嘅 Global Performance Tuner(自動性能調優)功能。Part 1 講排程(scheduling)問題係點樣影響深度學習編譯器嘅優化,同埋呢個功能嘅設計動機與數學框架;Part 2 用同一套記號描述演算法、架構設計,再附使用實務指南。

要明 Global Performance Tuner 係乜,首先要明 TensorRT 構建引擎(build engine)嗰陣做緊乜。TensorRT 將訓練好嘅神經網絡部署到 GPU,唔單止係將每個算子逐個翻譯成 kernel,而係要就圖 IR 轉換、融合(fusion)、實現選擇、記憶體擺放同量化,做一連串互相關聯嘅決策——呢個過程就係排程。同樣語義嘅模型,排程唔同,推論效能可以差好遠。

文仲最關鍵嘅一點:唔存在一套排程策略對所有模型同所有部署環境都係最佳。一個對某網絡有效嘅轉換,對另一個網絡可能拖慢;某 kernel 獨立睇得快,同圖入面其他節嘅融合、tensor 排布或記憶體流量互相作用,整體反而變慢。激進排程可以提升效能,但同時可能違背應用嘅精度要求(accuracy requirement)。呢啲耦合效應往往要等完整引擎編譯完、量度完先至出現,令「揀邊套策略先啱」越嚟越難預測。

NVIDIA 用咗一個廚師比喻嚟講明設計動機:一個廚師有返一道招牌菜,多年嚟滿足三個熟客——一個鍾意辣、一個鍾意糖醋、一個鍾意多啲鹽。廚師將辣椒、糖漿、檸檬同鹽一齊調喺同一個配方入面,三個人都食得飽。一日新客到咗,唔鍾意辣。保留辣椒,新客唔食;拿咗辣椒,第一個熟客即起離席。根因喺度:調味嘅做法冇規模化——例外越嚟越多,改一個人的口味可以令另外一個人食唔到。可擴展嘅做法係菜底保持不變,但將調味變成為可配置:為每個熟客記錄一套啱用嘅組合,新客則請佢試味,唔啱就換,揀到最啱嗰個。映射返去編譯:TensorRT 係廚師,共享 pipeline 係基本菜式,可調嘅編譯設定係調味,編譯出嚟嘅引擎係成品菜,每個 ONNX 模型就係一個顧客。

Part 2 將呢個想法落實入數學:核心設計理念係將不同排程策略表示為可搜尋嘅「build routes」(編譯路徑)。每個編譯開關(compiler knob,亦稱 compiler flag)暴露有限數值集合同預設值;一個 build route 即係開關取值的具體組合。唔指定嘅話,TensorRT 用預設 build route,每個開關保持預設值。

文章舉咗一個假設性例子:編譯器有 f₁、f₂、f₃ 三個 pass,二值開關 p 控制 f₂ 嘅融合策略——p=1 用水平融合,p=0 用垂直融合。兩個取值定義兩條 build route,對輸入模型 m 產生大小為二嘅候選解集。水平融合未必普遍更好:對某模型可能水平融合引擎更快,對另一模型則垂直融合更有效;即使模型唔變,結果都可以因 tensor shape 同目標 GPU 而變。揀邊條路,要將兩條嘅候選引擎都編譯落嚟,再比較端到端效能。

文仲特別點明:build route 只係「可調配置空間」(tunable configuration space)內嘅「請求選擇」,唔取代 TensorRT builder 嘅其餘階段,包括 tactic selection;開關組合同網絡約束之間可能要做協調(reconcile)。

模姐驗嚇貨:兩篇文章皆為 NVIDIA 自家技術部落格內容,描述嘅係 TensorRT 11.1 嘅設計理念同數學框架,冇提供獨立第三方跑分或實測數據。Global Performance Tuner 嘅實際調優效果、覆蓋模型範圍,以官方後續文件同技術文檔為準。排程對推論效能嘅影響係業界共識,但「自動調優」嘅實際加速幅度,要等部署環境內嘅量度結果先至有意義。

來源:

  • NVIDIA Technical Blog (Atom) – Part 1: Scaling NVIDIA TensorRT Performance Optimization Beyond a Single Build Route with the Global Performance Tuner, Part 1(2026-10-23)
  • NVIDIA Technical Blog (Atom) – Part 2: Scaling NVIDIA TensorRT Performance Optimization Beyond a Single Build Route with the Global Performance Tuner, Part 2(2026-10-23)

模姐|深度調教