Skip to content

Commit 10ef2e2

Browse files
committed
refactor(//py)!: Build system is now PEP517 compatible
BREAKING CHANGE: A ton of files have been moved in order to support PEP517 standards based builds. Users are now advised to use commands such as the following: Editable installs: python -m pip install --verbose --pre -e . [if necessary add --index-url to access nightly builds of pytorch] Wheel files: python -m pip wheel --verbose --pre . [if necessary add --index-url to access nightly builds of pytorch] --config-setting="--build-option=<options you would pass to setup.py>" -w dist Alternative build processes are also supported pypa/build: python -m build --wheel --skip-dependency-check --no-isolation > Skip dependency check means you need to install py/requirements.txt first due to issues with TensorRT's python package Signed-off-by: Naren Dasan <[email protected]> Signed-off-by: Naren Dasan <[email protected]> tools: adding a pyproject.toml linter Signed-off-by: Naren Dasan <[email protected]> Signed-off-by: Naren Dasan <[email protected]> chore: update CI for new build path Signed-off-by: Naren Dasan <[email protected]> Signed-off-by: Naren Dasan <[email protected]> Adding no deps flag refactor: Formally define package contents in setup.py Signed-off-by: Naren Dasan <[email protected]> Signed-off-by: Naren Dasan <[email protected]>
1 parent 50aeb5e commit 10ef2e2

19 files changed

+515
-354
lines changed

.circleci/config.yml

+125-64
Large diffs are not rendered by default.

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,5 @@ bazel-tensorrt
6666
*.cache
6767
*cifar-10-batches-py*
6868
bazel-project
69-
build/
69+
build/
70+
wheelhouse/

.pre-commit-config.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ repos:
3030
args:
3131
- --warnings=all
3232
- id: buildifier-lint
33+
- repo: https://github.com/abravalheri/validate-pyproject
34+
rev: v0.13
35+
hooks:
36+
- id: validate-pyproject
3337
- repo: local
3438
hooks:
3539
- id: dont-commit-upstream

py/Dockerfile

-11
This file was deleted.

py/build_whl.sh

-44
This file was deleted.

py/ci/Dockerfile.ci

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM pytorch/manylinux-builder:cuda11.7
1+
FROM pytorch/manylinux-builder:cuda12.1
22
ARG trt_version
33

44
RUN echo -e "Installing with TensorRT ${trt_version}"

py/ci/build_manifest.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
py38
22
py39
33
py310
4+
py311
45
libtorchtrt_pre_cxx11_abi

py/ci/build_whl.sh

+49-46
Original file line numberDiff line numberDiff line change
@@ -8,84 +8,87 @@ export PROJECT_DIR=/workspace/project
88

99
cp -r $CUDA_HOME /usr/local/cuda
1010

11-
py37() {
12-
cd /workspace/project/py
13-
PY_BUILD_CODE=cp37-cp37m
14-
PY_VERSION=3.7
15-
PY_NAME=python${PY_VERSION}
16-
PY_DIR=/opt/python/${PY_BUILD_CODE}
17-
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
18-
${PY_DIR}/bin/python -m pip install --upgrade pip
19-
${PY_DIR}/bin/python -m pip install -r requirements.txt
20-
${PY_DIR}/bin/python -m pip install setuptools wheel auditwheel
21-
${PY_DIR}/bin/python setup.py bdist_wheel --release --ci
22-
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PY_PKG_DIR}/torch/lib:${PY_PKG_DIR}/tensorrt/:${CUDA_HOME}/lib64:${CUDA_HOME}/lib64/stubs ${PY_DIR}/bin/python -m auditwheel repair $(cat ${PROJECT_DIR}/py/ci/soname_excludes.params) --plat manylinux_2_17_x86_64 dist/torch_tensorrt-*-${PY_BUILD_CODE}-linux_x86_64.whl
11+
build_wheel() {
12+
$1/bin/python -m pip install --upgrade pip
13+
$1/bin/python -m pip wheel . --config-setting="--build-option=--release" --config-setting="--build-option=--ci" -w dist
14+
}
15+
16+
patch_wheel() {
17+
$2/bin/python -m pip install auditwheel
18+
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$1/torch/lib:$1/tensorrt/:${CUDA_HOME}/lib64:${CUDA_HOME}/lib64/stubs $2/bin/python -m auditwheel repair $(cat ${PROJECT_DIR}/py/ci/soname_excludes.params) --plat manylinux_2_34_x86_64 dist/torch_tensorrt-*-$3-linux_x86_64.whl
2319
}
2420

2521
py38() {
26-
cd /workspace/project/py
22+
cd /workspace/project
2723
PY_BUILD_CODE=cp38-cp38
2824
PY_VERSION=3.8
2925
PY_NAME=python${PY_VERSION}
3026
PY_DIR=/opt/python/${PY_BUILD_CODE}
3127
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
32-
${PY_DIR}/bin/python -m pip install --upgrade pip
33-
${PY_DIR}/bin/python -m pip install -r requirements.txt
34-
${PY_DIR}/bin/python -m pip install setuptools wheel auditwheel
35-
${PY_DIR}/bin/python setup.py bdist_wheel --release --ci
36-
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PY_PKG_DIR}/torch/lib:${PY_PKG_DIR}/tensorrt/:${CUDA_HOME}/lib64:${CUDA_HOME}/lib64/stubs ${PY_DIR}/bin/python -m auditwheel repair $(cat ${PROJECT_DIR}/py/ci/soname_excludes.params) --plat manylinux_2_17_x86_64 dist/torch_tensorrt-*-${PY_BUILD_CODE}-linux_x86_64.whl
28+
build_wheel ${PY_DIR}
29+
patch_wheel ${PY_PKG_DIR} ${PY_DIR} ${PY_BUILD_CODE}
3730
}
3831

3932
py39() {
40-
cd /workspace/project/py
33+
cd /workspace/project
4134
PY_BUILD_CODE=cp39-cp39
4235
PY_VERSION=3.9
4336
PY_NAME=python${PY_VERSION}
4437
PY_DIR=/opt/python/${PY_BUILD_CODE}
4538
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
46-
${PY_DIR}/bin/python -m pip install --upgrade pip
47-
${PY_DIR}/bin/python -m pip install -r requirements.txt
48-
${PY_DIR}/bin/python -m pip install setuptools wheel auditwheel
49-
${PY_DIR}/bin/python setup.py bdist_wheel --release --ci
50-
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PY_PKG_DIR}/torch/lib:${PY_PKG_DIR}/tensorrt/:${CUDA_HOME}/lib64:${CUDA_HOME}/lib64/stubs ${PY_DIR}/bin/python -m auditwheel repair $(cat ${PROJECT_DIR}/py/ci/soname_excludes.params) --plat manylinux_2_17_x86_64 dist/torch_tensorrt-*-${PY_BUILD_CODE}-linux_x86_64.whl
39+
build_wheel ${PY_DIR}
40+
patch_wheel ${PY_PKG_DIR} ${PY_DIR} ${PY_BUILD_CODE}
5141
}
5242

5343
py310() {
54-
cd /workspace/project/py
44+
cd /workspace/project
5545
PY_BUILD_CODE=cp310-cp310
5646
PY_VERSION=3.10
5747
PY_NAME=python${PY_VERSION}
5848
PY_DIR=/opt/python/${PY_BUILD_CODE}
5949
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
60-
${PY_DIR}/bin/python -m pip install --upgrade pip
61-
${PY_DIR}/bin/python -m pip install -r requirements.txt
62-
${PY_DIR}/bin/python -m pip install setuptools wheel auditwheel
63-
${PY_DIR}/bin/python setup.py bdist_wheel --release --ci
64-
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PY_PKG_DIR}/torch/lib:${PY_PKG_DIR}/tensorrt/:${CUDA_HOME}/lib64:${CUDA_HOME}/lib64/stubs ${PY_DIR}/bin/python -m auditwheel repair $(cat ${PROJECT_DIR}/py/ci/soname_excludes.params) --plat manylinux_2_17_x86_64 dist/torch_tensorrt-*-${PY_BUILD_CODE}-linux_x86_64.whl
50+
build_wheel ${PY_DIR}
51+
patch_wheel ${PY_PKG_DIR} ${PY_DIR} ${PY_BUILD_CODE}
6552
}
6653

67-
#build_py311() {
68-
# /opt/python/cp311-cp311/bin/python -m pip install -r requirements.txt
69-
# /opt/python/cp311-cp311/bin/python setup.py bdist_wheel --release --ci
70-
# #auditwheel repair --plat manylinux2014_x86_64
71-
#}
54+
py311() {
55+
cd /workspace/project
56+
PY_BUILD_CODE=cp311-cp311
57+
PY_VERSION=3.11
58+
PY_NAME=python${PY_VERSION}
59+
PY_DIR=/opt/python/${PY_BUILD_CODE}
60+
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
61+
build_wheel ${PY_DIR}
62+
patch_wheel ${PY_PKG_DIR} ${PY_DIR} ${PY_BUILD_CODE}
63+
}
64+
65+
py312() {
66+
cd /workspace/project
67+
PY_BUILD_CODE=cp312-cp312
68+
PY_VERSION=3.12
69+
PY_NAME=python${PY_VERSION}
70+
PY_DIR=/opt/python/${PY_BUILD_CODE}
71+
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
72+
build_wheel ${PY_DIR}
73+
patch_wheel ${PY_PKG_DIR} ${PY_DIR} ${PY_BUILD_CODE}
74+
}
7275

7376
libtorchtrt() {
74-
cd /workspace/project/py
77+
cd /workspace/project
7578
mkdir -p /workspace/project/py/wheelhouse
7679
PY_BUILD_CODE=cp310-cp310
7780
PY_VERSION=3.10
7881
PY_NAME=python${PY_VERSION}
7982
PY_DIR=/opt/python/${PY_BUILD_CODE}
8083
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
8184
${PY_DIR}/bin/python -m pip install --upgrade pip
82-
${PY_DIR}/bin/python -m pip install -r requirements.txt
85+
${PY_DIR}/bin/python -m pip install -r py/requirements.txt
8386
${PY_DIR}/bin/python -m pip install setuptools wheel auditwheel
8487
bazel build //:libtorchtrt --platforms //toolchains:ci_rhel_x86_64_linux -c opt --noshow_progress
85-
CUDA_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __cuda_version__;print(__cuda_version__)")
86-
TORCHTRT_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __version__;print(__version__)")
87-
TRT_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __tensorrt_version__;print(__tensorrt_version__)")
88-
CUDNN_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __cudnn_version__;print(__cudnn_version__)")
88+
CUDA_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.cuda_version()")
89+
TORCHTRT_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.torch_tensorrt_version()")
90+
TRT_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.tensorrt_version()")
91+
CUDNN_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.cudnn_version()")
8992
TORCH_VERSION=$(${PY_DIR}/bin/python -c "from torch import __version__;print(__version__.split('+')[0])")
9093
cp ${PROJECT_DIR}/bazel-bin/libtorchtrt.tar.gz ${PROJECT_DIR}/py/wheelhouse/libtorchtrt-${TORCHTRT_VERSION}-cudnn${CUDNN_VERSION}-tensorrt${TRT_VERSION}-cuda${CUDA_VERSION}-libtorch${TORCH_VERSION}-x86_64-linux.tar.gz
9194
}
@@ -99,13 +102,13 @@ libtorchtrt_pre_cxx11_abi() {
99102
PY_DIR=/opt/python/${PY_BUILD_CODE}
100103
PY_PKG_DIR=${PY_DIR}/lib/${PY_NAME}/site-packages/
101104
${PY_DIR}/bin/python -m pip install --upgrade pip
102-
${PY_DIR}/bin/python -m pip install -r requirements.txt
105+
${PY_DIR}/bin/python -m pip install -r ${PROJECT_DIR}/py/requirements.txt
103106
${PY_DIR}/bin/python -m pip install setuptools wheel auditwheel
104107
bazel build //:libtorchtrt --config pre_cxx11_abi --platforms //toolchains:ci_rhel_x86_64_linux -c opt --noshow_progress
105-
CUDA_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __cuda_version__;print(__cuda_version__)")
106-
TORCHTRT_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __version__;print(__version__)")
107-
TRT_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __tensorrt_version__;print(__tensorrt_version__)")
108-
CUDNN_VERSION=$(cd ${PROJECT_DIR}/py && ${PY_DIR}/bin/python3 -c "from versions import __cudnn_version__;print(__cudnn_version__)")
108+
CUDA_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.cuda_version()")
109+
TORCHTRT_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.torch_tensorrt_version()")
110+
TRT_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.tensorrt_version()")
111+
CUDNN_VERSION=$(cd ${PROJECT_DIR} && ${PY_DIR}/bin/python3 -c "import versions; versions.cudnn_version()")
109112
TORCH_VERSION=$(${PY_DIR}/bin/python -c "from torch import __version__;print(__version__.split('+')[0])")
110113
cp ${PROJECT_DIR}/bazel-bin/libtorchtrt.tar.gz ${PROJECT_DIR}/py/wheelhouse/libtorchtrt-${TORCHTRT_VERSION}-pre-cxx11-abi-cudnn${CUDNN_VERSION}-tensorrt${TRT_VERSION}-cuda${CUDA_VERSION}-libtorch${TORCH_VERSION}-x86_64-linux.tar.gz
111114
}

py/ci/soname_excludes.params

+6
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,9 @@
3131
--exclude libcublasLt.so.11
3232
--exclude libnvinfer.so.8
3333
--exclude libcudnn.so.8
34+
--exclude libcublas.so.12
35+
--exclude libcublasLt.so.12
36+
--exclude libcublas.so.12.1.3.1
37+
--exclude libcublasLt.so.12.1.3.1
38+
--exclude libcudart.so.11.8.89
39+
--exclude libcudart.so.11

py/requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ torch==2.1.0.dev20230703+cu121
66
torchvision==0.16.0.dev20230703+cu121
77
--extra-index-url https://pypi.ngc.nvidia.com
88
tensorrt==8.6.1
9+
pyyaml

py/versions.py

-4
This file was deleted.

pyproject.toml

+66-13
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,78 @@
11
[build-system]
22
requires = [
3-
"setuptools",
4-
"wheel",
5-
"numpy",
6-
"ninja",
7-
"pyyaml",
8-
"setuptools",
9-
"cffi",
10-
"typing_extensions",
11-
"future",
12-
"tensorrt >=8.6,<8.7"
3+
"setuptools>=68.0.0",
4+
"packaging>=23.1",
5+
"wheel>=0.40.0",
6+
"numpy>=1.25.0",
7+
"ninja>=1.11.0",
8+
"pyyaml>=6.0",
9+
"cffi>=1.15.1",
10+
"typing_extensions>=4.7.0",
11+
"future>=0.18.3",
12+
"tensorrt>=8.6,<8.7",
13+
#"torch >=2.0.0,<2.1.0",
14+
"torch==2.1.0.dev20230703+cu121",
15+
"pybind11==2.6.2"
1316
]
17+
build-backend = "setuptools.build_meta"
1418

15-
# Use legacy backend to import local packages in setup.py
16-
#build-backend = "setuptools.build_meta:__legacy__"
19+
[project]
20+
name = "torch_tensorrt"
21+
authors = [
22+
{name="NVIDIA Corporation", email="[email protected]"}
23+
]
24+
description = "Torch-TensorRT is a package which allows users to automatically compile PyTorch and TorchScript modules to TensorRT while remaining in PyTorch"
25+
license = {file = "LICENSE"}
26+
classifiers = [
27+
"Development Status :: 5 - Production/Stable",
28+
"Environment :: GPU :: NVIDIA CUDA",
29+
"License :: OSI Approved :: BSD License",
30+
"Intended Audience :: Developers",
31+
"Intended Audience :: Science/Research",
32+
"Operating System :: POSIX :: Linux",
33+
"Programming Language :: C++",
34+
"Programming Language :: Python",
35+
"Programming Language :: Python :: Implementation :: CPython",
36+
"Topic :: Scientific/Engineering",
37+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
38+
"Topic :: Software Development",
39+
"Topic :: Software Development :: Libraries",
40+
]
41+
readme = {file = "py/README.md", content-type = "text/markdown"}
42+
requires-python = ">=3.8"
43+
keywords = ["pytorch", "torch", "tensorrt", "trt", "ai", "artificial intelligence", "ml", "machine learning", "dl", "deep learning", "compiler", "dynamo", "torchscript", "inference"]
44+
dependencies = [
45+
#"torch>=2.0.0,<2.1.0",
46+
"torch==2.1.0.dev20230703+cu121",
47+
"tensorrt>=8.6,<8.7",
48+
"packaging>=23",
49+
"numpy>=1.25.0",
50+
]
51+
dynamic = ["version"]
52+
53+
[project.optional-dependencies]
54+
torchvision = ["torchvision >=0.16.dev,<0.17.0"]
55+
56+
[project.urls]
57+
Homepage = "https://pytorch.org/tensorrt"
58+
Documentation = "https://pytorch.org/tensorrt"
59+
Repository = "https://github.com/pytorch/tensorrt.git"
60+
Changelog = "https://github.com/pytorch/tensorrt/releases"
1761

1862

1963
[tool.black]
2064
# Uncomment if pyproject.toml worked fine to ensure consistency with flake8
2165
# line-length = 120
22-
target-versions = ["py38", "py39", "py310"]
66+
target-versions = ["py38", "py39", "py310", "py311", "py312"]
2367
force-exclude = """
2468
elu_converter/setup.py
2569
"""
70+
71+
[tool.mypy]
72+
show_error_codes = true
73+
disable_error_code = "attr-defined"
74+
no_implicit_optional = true
75+
76+
[tool.setuptools]
77+
package-dir = {"" = "py"}
78+
include-package-data = false

0 commit comments

Comments
 (0)