安裝¶
預編譯二進位制檔案¶
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。
最簡單的方法是使用您選擇的方法安裝 bazelisk https://github.com/bazelbuild/bazelisk
否則,您可以使用以下說明安裝二進位制檔案 https://docs.bazel.build/versions/master/install.html
最後,如果您需要從源編譯(例如,在 bazel 為該架構分發二進位制檔案之前,針對 aarch64),可以使用這些說明
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)
如果不是正在構建的分支中使用的版本,請在此處指定您的 CUDA 版本:https://github.com/pytorch/TensorRT/blob/4e5b0f6e860910eb510fa70a76ee3eb9825e7a4d/WORKSPACE#L46
bazel 將為您拉取正確的 LibTorch 和 TensorRT 版本。
注意:預設情況下,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_win、libtorch_win 和 tensorrt_win 是特定於 Windows 的模組,可以進行自定義。例如,如果您想使用不同版本的 CUDA 進行構建,或者您的 CUDA 安裝位於非標準位置,請更新 cuda_win 模組中的 path。
同樣,如果您想使用不同版本的 pytorch 或 tensorrt,請分別自定義 libtorch_win 和 tensorrt_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=傳遞您的 libtorch 安裝路徑/share/cmake/Torch 如果使用提供的 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。
將
WORKSPACE替換為//toolchains/jp_workspaces中對應的 WORKSPACE 檔案在
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 標誌