安裝¶
預先編譯的二進位檔¶
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 建置的,因此請先安裝它。
最簡單的方法是使用您選擇的方法安裝 bazelisk https://github.com/bazelbuild/bazelisk
否則,您可以使用以下指示安裝二進位檔 https://docs.bazel.build/versions/master/install.html
最後,如果您需要從原始碼編譯 (例如,aarch64,直到 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)
如果您的 CUDA 版本與正在建置的分支中使用的版本不同,請在此處指定您的 CUDA 版本:https://github.com/pytorch/TensorRT/blob/4e5b0f6e860910eb510fa70a76ee3eb9825e7a4d/WORKSPACE#L46
bazel 會為您提取正確的 LibTorch 和 TensorRT 版本。
注意:依預設,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_win
、libtorch_win
和 tensorrt_win
是 Windows 特定的模組,可以自訂。例如,如果您想要使用不同版本的 CUDA 進行建置,或您的 CUDA 安裝位置為非標準位置,請更新 cuda_win 模組中的 path。
同樣地,如果您想要使用不同版本的 pytorch 或 tensorrt,請分別自訂 libtorch_win
和 tensorrt_win
模組中的 urls。
這些套件的本機版本也可以在 Windows 上使用。請參閱 toolchains\\ci_workspaces\\WORKSPACE.win.release.tmpl
,以取得在 Windows 上使用 TensorRT 本機版本的範例。
替代建置系統¶
使用 CMake 建置 (僅限 TorchScript)¶
可以使用 CMake 而非 Bazel 來建置 API 函式庫 (在 cpp/ 中) 和 torchtrtc 可執行檔。目前,python API 和測試無法使用 CMake 建置。首先安裝 CMake。
CMake 的最新版本和有關如何安裝的指示適用於不同的平台 [在其網站上](https://cmake.dev.org.tw/download/)。
一些有用的 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
。
將
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
旗標