快捷鍵

系統概述

Torch-TensorRT 主要是一個 C++ 程式庫,並計畫提供 Python API。我們使用 Bazel 作為我們的建置系統,目前目標平台為 Linux x86_64 和 Linux aarch64(僅限原生)。我們使用的編譯器是 GCC 7.5.0,且此程式庫未在該版本之前的編譯器上進行測試,因此如果您嘗試使用較舊的編譯器,可能會發生編譯錯誤。

儲存庫的結構分為

  • core:主要編譯器原始碼

  • cpp:C++ API

  • tests:C++ API、核心和轉換器的測試

  • py:Python API

  • notebooks:使用 Torch-TensorRT 建置的範例應用程式

  • docs:文件

  • docsrc:文件來源

  • third_party:相依性程式庫的 BUILD 檔案

  • toolchains:不同平台的工具鏈

C++ API 不穩定,且在程式庫成熟之前可能會變更,儘管大多數工作都在核心的底層完成。

核心有幾個主要部分:頂層編譯器介面,其協調處理模組的攝取、降低、轉換和產生新模組,並將其返回給使用者。編譯器有三個主要階段,即降低階段、轉換階段和執行階段。

編譯器階段

降低

降低階段

降低是由一組在圖形 IR 上執行的傳遞(某些來自 PyTorch,某些特定於 Torch-TensorRT)組成,以將大型 PyTorch 運算子集對應到簡化的運算子集,後者更容易轉換為 TensorRT。

分割

分割階段

此階段是選用的,且由使用者啟用。它指示編譯器將節點分成應在 PyTorch 中執行的節點和應在 TensorRT 中執行的節點。分離的標準包括:缺少轉換器、運算子由使用者明確設定為在 PyTorch 中執行,或節點具有一個旗標,該旗標告知分割透過模組回退傳遞在 PyTorch 中執行。

轉換

轉換階段

在轉換階段,我們遍歷降低的圖形並建構等效的 TensorRT 圖形。轉換階段由三個主要元件組成:用於管理編譯時間資料的上下文、將執行可在編譯時間解析的運算的評估器程式庫,以及將 JIT 中的運算子對應到 TensorRT 的轉換器程式庫。

編譯和執行階段

部署 Torch-TensorRT 程式

最終編譯階段會建構一個 TorchScript 程式來執行轉換後的 TensorRT 引擎。它會取得序列化的引擎並在引擎管理器中實例化,然後編譯器將建置一個 JIT 圖形,該圖形參考此引擎並將其包裝在模組中以返回給使用者。當使用者執行模組時,JIT 程式會在由 Torch-TensorRT 擴充的 JIT 執行階段中執行,並使用使用者提供的資料。

文件

存取 PyTorch 的綜合開發人員文件

檢視文件

教學

取得初學者和進階開發人員的深入教學

檢視教學

資源

尋找開發資源並獲得問題解答

檢視資源