Skip to content

Commit f8dc0fb

Browse files
authored
[REFACTOR][CI] Modernize Python dependency management with uv (#18812)
This PR modernizes Python tooling in CI by migrating Python interpreter installation, venv creation and package installation to uv.
1 parent 8fe6c8a commit f8dc0fb

20 files changed

Lines changed: 93 additions & 111 deletions

docker/Dockerfile.ci_arm

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
# tag: v0.02
2020

2121
FROM ubuntu:22.04
22+
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
2223

2324
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
2425
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -47,11 +48,15 @@ ENV PATH=/opt/sccache:$PATH
4748
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
4849
RUN bash /install/ubuntu_install_llvm.sh
4950

51+
ENV UV_NO_CACHE=1
52+
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
53+
ENV UV_MANAGED_PYTHON=1
54+
5055
ENV TVM_VENV=/venv/apache-tvm-py3.10
51-
COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
5256
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
5357
RUN bash /install/ubuntu_install_python.sh 3.10
5458
ENV PATH=${TVM_VENV}/bin:$PATH
59+
ENV VIRTUAL_ENV=${TVM_VENV}
5560
ENV PYTHONNOUSERSITE=1
5661

5762
COPY install/ubuntu_install_python_package.sh /install/ubuntu_install_python_package.sh

docker/Dockerfile.ci_cpu

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
# CI docker CPU env
1919
FROM ubuntu:22.04
20+
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
2021

2122
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
2223
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -35,11 +36,16 @@ RUN bash /install/ubuntu_install_cmake.sh
3536
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
3637
RUN bash /install/ubuntu_install_googletest.sh
3738

39+
ENV UV_NO_CACHE=1
40+
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
41+
ENV UV_MANAGED_PYTHON=1
42+
3843
ENV TVM_VENV=/venv/apache-tvm-py3.10
39-
COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
4044
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
4145
RUN bash /install/ubuntu_install_python.sh 3.10
46+
RUN uv --version
4247
ENV PATH=${TVM_VENV}/bin:$PATH
48+
ENV VIRTUAL_ENV=${TVM_VENV}
4349

4450
# Disable .local directory from affecting CI.
4551
ENV PYTHONNOUSERSITE=1

docker/Dockerfile.ci_gpu

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
# CI docker GPU env
1919
# tag: v0.60
2020
FROM nvidia/cuda:12.8.1-cudnn-devel-ubuntu22.04
21+
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
2122

2223
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
2324
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -42,18 +43,20 @@ RUN bash /install/ubuntu_install_cmake.sh
4243
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
4344
RUN bash /install/ubuntu_install_googletest.sh /googletest
4445

46+
ENV UV_NO_CACHE=1
47+
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
48+
ENV UV_MANAGED_PYTHON=1
49+
4550
ENV TVM_VENV=/venv/apache-tvm-py3.10
46-
COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
4751
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
4852
RUN bash /install/ubuntu_install_python.sh 3.10
53+
RUN uv --version
4954
ENV PATH=${TVM_VENV}/bin:$PATH
55+
ENV VIRTUAL_ENV=${TVM_VENV}
5056

5157
# Disable .local directory from affecting CI.
5258
ENV PYTHONNOUSERSITE=1
5359

54-
# Globally disable pip cache
55-
RUN pip config set global.no-cache-dir false
56-
5760
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
5861
RUN bash /install/ubuntu_install_llvm.sh
5962

docker/Dockerfile.ci_lint

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
# CI docker lint env
2020
# tag: v0.60
2121
FROM ubuntu:22.04
22+
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
2223

2324
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
2425
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -31,16 +32,20 @@ RUN bash /install/ubuntu_setup_tz.sh
3132
RUN apt-get update && \
3233
apt-install-and-clear -y wget git sudo make parallel doxygen graphviz curl shellcheck ca-certificates curl gnupg
3334

35+
ENV UV_NO_CACHE=1
36+
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
37+
ENV UV_MANAGED_PYTHON=1
38+
3439
ENV TVM_VENV=/venv/apache-tvm-py3.10
35-
COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
3640
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
3741
RUN bash /install/ubuntu_install_python.sh 3.10
3842
ENV PATH=${TVM_VENV}/bin:$PATH
43+
ENV VIRTUAL_ENV=${TVM_VENV}
3944

4045
# Disable .local directory from affecting CI.
4146
ENV PYTHONNOUSERSITE=1
4247

43-
RUN pip3 install cpplint==1.6.1 pylint==2.17.2 mypy==0.902 black==22.12.0 flake8==3.9.2 blocklint==0.2.3 jinja2==3.0.3
48+
RUN uv pip install cpplint==1.6.1 pylint==2.17.2 mypy==0.902 black==22.12.0 flake8==3.9.2 blocklint==0.2.3 jinja2==3.0.3
4449

4550
# java deps for rat
4651
COPY install/ubuntu_install_java.sh /install/ubuntu_install_java.sh

docker/Dockerfile.ci_wasm

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717
FROM ubuntu:22.04
18+
COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
1819

1920
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
2021
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -33,11 +34,15 @@ RUN bash /install/ubuntu_install_cmake.sh
3334
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
3435
RUN bash /install/ubuntu_install_googletest.sh
3536

37+
ENV UV_NO_CACHE=1
38+
ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
39+
ENV UV_MANAGED_PYTHON=1
40+
3641
ENV TVM_VENV=/venv/apache-tvm-py3.10
37-
COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
3842
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
3943
RUN bash /install/ubuntu_install_python.sh 3.10
4044
ENV PATH=${TVM_VENV}/bin:$PATH
45+
ENV VIRTUAL_ENV=${TVM_VENV}
4146

4247
# Disable .local directory from affecting CI.
4348
ENV PYTHONNOUSERSITE=1

docker/install/ubuntu_install_core.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ apt-get update && apt-install-and-clear -y --no-install-recommends \
3030
g++ \
3131
gdb \
3232
git \
33+
gnupg \
3334
graphviz \
3435
libcurl4-openssl-dev \
3536
libopenblas-dev \

docker/install/ubuntu_install_coreml.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ set -e
2020
set -u
2121
set -o pipefail
2222

23-
pip3 install coremltools
23+
uv pip install coremltools==8.3.0

docker/install/ubuntu_install_cuda_python.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ set -e
2020
set -u
2121
set -o pipefail
2222

23-
pip3 install cuda-python
23+
uv pip install cuda-python==12.8.0

docker/install/ubuntu_install_dgl.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ set -e
2020
set -u
2121
set -o pipefail
2222

23-
pip3 install dgl==v1.0.0 -f https://data.dgl.ai/wheels/repo.html
23+
uv pip install dgl==v1.0.0 -f https://data.dgl.ai/wheels/repo.html

docker/install/ubuntu_install_gluoncv.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ set -e
2020
set -u
2121
set -o pipefail
2222

23-
pip3 install gluoncv
23+
uv pip install gluoncv==0.10.5.post0

0 commit comments

Comments
 (0)