快捷鍵

安裝

預先編譯的二進位檔

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

安裝 Nightly Builds

Torch-TensorRT 分發的 nightly 版本以 PyTorch nightly 為目標。這些可以從 PyTorch nightly 套件索引 (依 CUDA 版本分隔) 安裝

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

C++ 預先編譯的二進位檔 (僅限 TorchScript)

發行版本的預先編譯 tarball 在此處提供:https://github.com/pytorch/TensorRT/releases

從原始碼編譯

在 Linux 上建置

相依性

  • Torch-TensorRT 是使用 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 提取最新的 nightly 版本。對於建置 main 分支,這通常已足夠,但是,如果您有特定的 PyTorch 目標版本,請使用更新的 URL/路徑編輯這些位置

  • 建置 Torch-TensorRT 不需要在系統上安裝 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/cu124

如果您使用 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/cu124 -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/cu124
無 TorchScript 前端

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

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

獨立建置 C++ 函式庫 (僅限 TorchScript)

發行版本建置
bazel build //:libtorchtrt -c opt

然後可以在 bazel-bin 中找到包含 include 檔案和函式庫的 tarball

偵錯建置

若要使用偵錯符號進行建置,請使用以下命令

bazel build //:libtorchtrt -c dbg

然後可以在 bazel-bin 中找到包含 include 檔案和函式庫的 tarball

Pre CXX11 ABI 建置

若要使用 pre-CXX11 ABI 進行建置,請使用 pre_cxx11_abi 設定

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

然後可以在 bazel-bin 中找到包含 include 檔案和函式庫的 tarball

選擇正確的 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

注意:對於以上所有情況,您都必須在 Python 和 C++ 建置的 WORKSPACE 檔案中正確宣告您打算使用的 PyTorch 來源。請參閱下文以取得更多資訊

在 Windows 上建置

  • Microsoft VS 2022 工具

  • Bazelisk

  • CUDA

建置步驟

  • 開啟應用程式「適用於 VS 2022 的 x64 Native Tools 命令提示字元」- 請注意,可能需要管理員權限

  • 確保 Bazelisk (Bazel 啟動器) 已安裝在您的電腦上,且可從命令列取得。套件安裝程式 (例如 Chocolatey) 可用於安裝 Bazelisk

  • 安裝最新版本的 Torch (即使用 pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu124)

  • 複製 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 上使用。請參閱 toolchains\\ci_workspaces\\WORKSPACE.win.release.tmpl,以取得在 Windows 上使用 TensorRT 本機版本的範例。

替代建置系統

使用 CMake 建置 (僅限 TorchScript)

可以使用 CMake 而非 Bazel 來建置 API 函式庫 (在 cpp/ 中) 和 torchtrtc 可執行檔。目前,python API 和測試無法使用 CMake 建置。首先安裝 CMake。

一些有用的 CMake 選項包括

  • TensorRT 的 CMake 尋找器在 cmake/Modules 中提供。為了讓 CMake 使用它們,請在使用 CMake 設定專案時傳遞 -DCMAKE_MODULE_PATH=cmake/Modules

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

  • 如果使用提供的 cmake 尋找器找不到 TensorRT,請指定 -DTensorRT_ROOT=<TensorRT 路徑>

  • 最後,使用來自 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 的完整開發人員文件

檢視文件

教學

取得適用於初學者和進階開發人員的深入教學課程

檢視教學

資源

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

檢視資源