快捷方式

安裝

預編譯二進位制檔案

Torch-TensorRT 2.x 主要圍繞 Python 構建。因此,可以在 pypi.org 上找到預編譯版本

依賴項

您需要安裝 CUDA、PyTorch 和 TensorRT(Python 包即可)才能使用 Torch-TensorRT

安裝 Torch-TensorRT

您可以使用以下命令安裝 Python 包

python -m pip install torch torch-tensorrt tensorrt

已上傳適用於 x86 Linux 和 Windows 的軟體包

為特定 CUDA 版本安裝 Torch-TensorRT

與 PyTorch 類似,Torch-TensorRT 具有針對不同 CUDA 版本編譯的構建。這些構建釋出在 PyTorch 的軟體包索引上

例如 CUDA 11.8

python -m pip install torch torch-tensorrt tensorrt --extra-index-url https://download.pytorch.org/whl/cu118

安裝夜間構建版本

Torch-TensorRT 釋出了針對 PyTorch 夜間構建版本的夜間構建版本。可以從 PyTorch 夜間構建版本的軟體包索引安裝這些版本(按 CUDA 版本分開)

python -m pip install --pre torch torch-tensorrt tensorrt --extra-index-url https://download.pytorch.org/whl/nightly/cu128

C++ 預編譯二進位制檔案(僅限 TorchScript)

釋出版本的預編譯 tar 包在此處提供:https://github.com/pytorch/TensorRT/releases

從源編譯

在 Linux 上構建

依賴項

  • Torch-TensorRT 使用 Bazel 構建,因此首先安裝 Bazel。

    export BAZEL_VERSION=$(cat <PATH_TO_TORCHTRT_ROOT>/.bazelversion)
    mkdir bazel
    cd bazel
    curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-dist.zip
    unzip bazel-$BAZEL_VERSION-dist.zip
    bash ./compile.sh
    cp output/bazel /usr/local/bin/
    
  • 您還需要在系統上安裝 CUDA(如果在容器中執行,則系統必須安裝 CUDA 驅動程式,容器必須安裝 CUDA)

  • bazel 將為您拉取正確的 LibTorchTensorRT 版本。

    注意:預設情況下,bazel 將從 pytorch.org 拉取最新的夜間構建版本。對於構建主分支來說,這通常足夠,但是如果您的目標是特定的 PyTorch 版本,請使用更新的 URL/路徑編輯這些位置

  • 系統上不需要安裝 TensorRT 即可構建 Torch-TensorRT,實際上這樣更利於確保構建的可重現性。如果需要非預設版本,請將 WORKSPACE 檔案指向 tarball 的 URL,或者從 https://developer.nvidia.com 下載 TensorRT 的 tarball 並在此處更新 WORKSPACE 檔案中的路徑 https://github.com/pytorch/TensorRT/blob/4e5b0f6e860910eb510fa70a76ee3eb9825e7a4d/WORKSPACE#L71

    例如

    http_archive(
        name = "tensorrt",
        build_file = "@//third_party/tensorrt/archive:BUILD",
        sha256 = "<TENSORRT SHA256>", # Optional but recommended
        strip_prefix = "TensorRT-<TENSORRT VERSION>",
        urls = [
            "https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/<TENSORRT DOWNLOAD PATH>",
            # OR
            "file:///<ABSOLUTE PATH TO FILE>/TensorRT-<TENSORRT VERSION>.Linux.x86_64-gnu.cuda-<CUDA VERSION>.tar.gz"
        ],
    )
    

    請記住,在執行時,必須將這些庫顯式新增到您的 LD_LIBRARY_PATH

如果您安裝了本地版本的 TensorRT,也可以使用它,方法是註釋掉上面的行並取消註釋下面的行 https://github.com/pytorch/TensorRT/blob/4e5b0f6e860910eb510fa70a76ee3eb9825e7a4d/WORKSPACE#L114C1-L124C3

構建軟體包

正確配置 WORKSPACE 後,構建 torch-tensorrt 所需的命令如下

python -m pip install --pre . --extra-index-url https://download.pytorch.org/whl/nightly/cu128

如果您使用 uv (https://docs.astral.sh/uv/) 工具管理 python 和您的專案,命令會稍微簡單一些

uv pip install -e .

構建 wheel 檔案

python -m pip wheel --no-deps --pre . --extra-index-url https://download.pytorch.org/whl/nightly/cu128 -w dist

其他構建選項

庫中的某些功能是可選的,可以使構建更輕量或更具可移植性。

僅限 Python 分發版

庫中有多個功能需要啟用 C++ 元件。這包括接受 TorchScript 模組進行編譯的 TorchScript 前端,以及 Torch-TensorRT 執行時(它是使用 Torch-TensorRT 編譯的模組的預設執行器,無論是使用 TorchScript 還是 Dynamo 前端)。

如果您想要不需要 C++ 的構建,可以停用這些功能並避免構建這些元件。因此,唯一可用的執行時將是基於 Python 的執行時,這會影響序列化等功能。

PYTHON_ONLY=1 python -m pip install --pre . --extra-index-url https://download.pytorch.org/whl/nightly/cu128
不包含 TorchScript 前端

TorchScript 前端是 Torch-TensorRT 的一箇舊版功能,現在處於維護狀態,因為 TorchDynamo 已成為此專案首選的編譯器技術。它包含相當多的 C++ 程式碼,對大多數使用者來說不再必要。因此,您可以從構建中排除此元件以加快構建時間。基於 C++ 的執行時仍然可用。

NO_TORCHSCRIPT=1 python -m pip install --pre . --extra-index-url https://download.pytorch.org/whl/nightly/cu128

單獨構建 C++ 庫(僅限 TorchScript)

Release 版本構建
bazel build //:libtorchtrt -c opt

包含標頭檔案和庫的 tarball 可以在 bazel-bin 中找到

Debug 版本構建

要構建包含除錯符號的版本,請使用以下命令

bazel build //:libtorchtrt -c dbg

包含標頭檔案和庫的 tarball 可以在 bazel-bin 中找到

Pre CXX11 ABI 版本構建

要使用 pre-CXX11 ABI 構建,請使用 pre_cxx11_abi 配置

bazel build //:libtorchtrt --config pre_cxx11_abi -c [dbg/opt]

包含標頭檔案和庫的 tarball 可以在 bazel-bin 中找到

選擇正確的 ABI

可能 Torch-TensorRT 編譯中最複雜的事情是選擇正確的 ABI。有兩個相互不相容的選項:pre-cxx11-abi 和 cxx11-abi。複雜性在於,雖然最流行的 PyTorch 分發版(直接從 pytorch.org/pypi 下載的 wheel 檔案)使用 pre-cxx11-abi,但您可能會遇到的大多數其他分發版(例如來自 NVIDIA 的 - NGC 容器、適用於 Jetson 的構建以及某些 libtorch 構建,如果您從源構建 PyTorch,也可能如此)使用 cxx11-abi。重要的是您使用正確的 ABI 編譯 Torch-TensorRT 以使其正常工作。下面是 PyTorch 分發源和推薦命令的一般配對錶

PyTorch 來源

推薦的 Python 編譯命令

推薦的 C++ 編譯命令

來自 PyTorch.org 的 PyTorch whl 檔案

python -m pip install .

bazel build //:libtorchtrt -c opt --config pre_cxx11_abi

來自 PyTorch.org 的 libtorch-shared-with-deps-*.zip

python -m pip install .

bazel build //:libtorchtrt -c opt --config pre_cxx11_abi

來自 PyTorch.org 的 libtorch-cxx11-abi-shared-with-deps-*.zip

python setup.py bdist_wheel

bazel build //:libtorchtrt -c opt

預裝在 NGC 容器中的 PyTorch

python setup.py bdist_wheel

bazel build //:libtorchtrt -c opt

來自 NVIDIA Jetson 論壇的 PyTorch

python setup.py bdist_wheel

bazel build //:libtorchtrt -c opt

從源構建的 PyTorch

python setup.py bdist_wheel

bazel build //:libtorchtrt -c opt

注意:對於所有上述情況,您必須在 WORKSPACE 檔案中正確宣告您打算在 Python 和 C++ 構建中使用的 PyTorch 來源。請參見下方瞭解更多資訊

在 Windows 上構建

  • Microsoft VS 2022 工具

  • Bazelisk

  • CUDA

構建步驟

  • 開啟應用程式“適用於 VS 2022 的 x64 本機工具命令提示符” - 請注意,可能需要管理員許可權

  • 確保 Bazelisk (Bazel 啟動器) 已安裝在您的機器上並可透過命令列訪問。可以使用 Chocolatey 等軟體包安裝程式安裝 Bazelisk

  • 安裝最新版本的 Torch(例如,使用 pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu128 命令)

  • 克隆 Torch-TensorRT 倉庫並導航到其根目錄

  • 執行 pip install ninja wheel setuptools

  • 執行 pip install --pre -r py/requirements.txt

  • 執行 set DISTUTILS_USE_SDK=1

  • 執行 python setup.py bdist_wheel

  • 執行 pip install dist/*.whl

高階設定和故障排除

WORKSPACE 檔案中,cuda_winlibtorch_wintensorrt_win 是特定於 Windows 的模組,可以進行自定義。例如,如果您想使用不同版本的 CUDA 進行構建,或者您的 CUDA 安裝位於非標準位置,請更新 cuda_win 模組中的 path。

同樣,如果您想使用不同版本的 pytorch 或 tensorrt,請分別自定義 libtorch_wintensorrt_win 模組中的 urls

這些軟體包的本地版本也可以在 Windows 上使用。有關在 Windows 上使用本地版本 TensorRT 的示例,請參閱 toolchains\\ci_workspaces\\WORKSPACE.win.release.tmpl

其他構建系統

使用 CMake 構建(僅限 TorchScript)

可以使用 CMake 而不是 Bazel 構建 API 庫 (位於 cpp/) 和 torchtrtc 可執行檔案。目前,python API 和測試無法使用 CMake 構建。首先安裝 CMake。

  • 最新版本的 CMake 和安裝說明可在 [其網站](https://cmake.org/download/) 上找到,適用於不同平臺。

一些有用的 CMake 選項包括

  • TensorRT 的 CMake finder 位於 cmake/Modules 中。為了讓 CMake 使用它們,在使用 CMake 配置專案時傳遞 -DCMAKE_MODULE_PATH=cmake/Modules

  • Libtorch 提供了自己的 CMake finder。如果 CMake 找不到它,請使用 -DTorch_DIR=/share/cmake/Torch 傳遞您的 libtorch 安裝路徑

  • 如果使用提供的 cmake finder 未找到 TensorRT,請指定 -DTensorRT_ROOT=

  • 最後,在您選擇的構建目錄中配置和構建專案,從 Torch-TensorRT 專案的根目錄執行以下命令

cmake -S. -B<build directory> \
    [-DCMAKE_MODULE_PATH=cmake/Module] \
    [-DTorch_DIR=<path to libtorch>/share/cmake/Torch] \
    [-DTensorRT_ROOT=<path to TensorRT>] \
    [-DCMAKE_BUILD_TYPE=Debug|Release]
cmake --build <build directory>

在 aarch64 (Jetson) 上原生構建

前提條件

安裝或編譯適用於 aarch64 的 PyTorch/LibTorch 構建版本

NVIDIA 在此託管 Jetson 的最新發布分支構建版本

環境設定

要在 aarch64-linux-gnu 平臺上原生構建,請使用本地可用依賴項配置 WORKSPACE

  1. WORKSPACE 替換為 //toolchains/jp_workspaces 中對應的 WORKSPACE 檔案

  2. new_local_repository 規則中配置包含本地依賴項的目錄根路徑

    注意:如果您使用 pip 軟體包安裝了 PyTorch,則正確的路徑是 python torch 軟體包的根路徑。如果您使用 sudo pip install 進行安裝,路徑將是 /usr/local/lib/python3.8/dist-packages/torch。如果您使用 pip install --user 進行安裝,路徑將是 $HOME/.local/lib/python3.8/site-packages/torch

如果您使用的是 NVIDIA 編譯的 pip 軟體包,請將兩個 libtorch 源的路徑設定為相同的路徑。這是因為與 x86_64 上的 PyTorch 不同,NVIDIA aarch64 PyTorch 使用 CXX11-ABI。如果您使用 pre_cxx11_abi 從源編譯,並且只想使用該庫,請將路徑設定為相同的路徑,但在編譯時確保新增 --config=pre_cxx11_abi 標誌

new_local_repository(
    name = "libtorch",
    path = "/usr/local/lib/python3.8/dist-packages/torch",
    build_file = "third_party/libtorch/BUILD"
)

new_local_repository(
    name = "libtorch_pre_cxx11_abi",
    path = "/usr/local/lib/python3.8/dist-packages/torch",
    build_file = "third_party/libtorch/BUILD"
)
編譯 C++ 庫和編譯器 CLI

注意:由於 Jetpack 4.5 和 4.6 之間依賴項位置的變化,現在有一個標誌用於通知 bazel Jetpack 版本

--platforms //toolchains:jetpack_x.x

使用 bazel 命令編譯 Torch-TensorRT 庫

bazel build //:libtorchtrt --platforms //toolchains:jetpack_5.0
編譯 Python API

注意:由於 Jetpack 4.5 和更新的 Jetpack 版本之間依賴項位置的變化,現在 setup.py 有一個用於設定 jetpack 版本的標誌(預設:5.0)

//py 目錄使用以下命令編譯 Python API

python3 setup.py install

如果您的 PyTorch 構建版本使用 Pre-CXX11 ABI,請移除 --use-pre-cxx11-abi 標誌

如果您正在為 Jetpack 4.5 構建,新增 --jetpack-version 5.0 標誌

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源