Skip to content

Commit 2c4f59a

Browse files
authored
Update PyTorch to 2.7.0 (#16859)
1 parent 1c2bc7e commit 2c4f59a

File tree

18 files changed

+102
-77
lines changed

18 files changed

+102
-77
lines changed

.buildkite/release-pipeline.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
steps:
2-
- label: "Build wheel - CUDA 12.4"
2+
- label: "Build wheel - CUDA 12.8"
33
agents:
44
queue: cpu_queue_postmerge
55
commands:
6-
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.4.0 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
6+
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.8.1 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
77
- "mkdir artifacts"
88
- "docker run --rm -v $(pwd)/artifacts:/artifacts_host vllm-ci:build-image bash -c 'cp -r dist /artifacts_host && chmod -R a+rw /artifacts_host'"
99
- "bash .buildkite/scripts/upload-wheels.sh"
1010
env:
1111
DOCKER_BUILDKIT: "1"
1212

13-
- label: "Build wheel - CUDA 12.1"
13+
- label: "Build wheel - CUDA 12.6"
1414
agents:
1515
queue: cpu_queue_postmerge
1616
commands:
17-
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.1.0 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
17+
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.6.3 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
1818
- "mkdir artifacts"
1919
- "docker run --rm -v $(pwd)/artifacts:/artifacts_host vllm-ci:build-image bash -c 'cp -r dist /artifacts_host && chmod -R a+rw /artifacts_host'"
2020
- "bash .buildkite/scripts/upload-wheels.sh"
@@ -48,7 +48,7 @@ steps:
4848
queue: cpu_queue_postmerge
4949
commands:
5050
- "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
51-
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.4.0 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT --target vllm-openai --progress plain -f docker/Dockerfile ."
51+
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.8.1 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT --target vllm-openai --progress plain -f docker/Dockerfile ."
5252
- "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT"
5353

5454
- label: "Build and publish TPU release image"

.buildkite/scripts/upload-wheels.sh

+9-9
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ aws s3 cp "$normal_wheel" "s3://vllm-wheels/$BUILDKITE_COMMIT/"
5050
if [[ $normal_wheel == *"cu118"* ]]; then
5151
# if $normal_wheel matches cu118, do not upload the index.html
5252
echo "Skipping index files for cu118 wheels"
53-
elif [[ $normal_wheel == *"cu121"* ]]; then
54-
# if $normal_wheel matches cu121, do not upload the index.html
55-
echo "Skipping index files for cu121 wheels"
53+
elif [[ $normal_wheel == *"cu126"* ]]; then
54+
# if $normal_wheel matches cu126, do not upload the index.html
55+
echo "Skipping index files for cu126 wheels"
5656
else
57-
# only upload index.html for cu124 wheels (default wheels)
57+
# only upload index.html for cu128 wheels (default wheels)
5858
aws s3 cp index.html "s3://vllm-wheels/$BUILDKITE_COMMIT/vllm/index.html"
5959
aws s3 cp "s3://vllm-wheels/nightly/index.html" "s3://vllm-wheels/$BUILDKITE_COMMIT/index.html"
6060
fi
@@ -66,12 +66,12 @@ aws s3 cp "$normal_wheel" "s3://vllm-wheels/nightly/"
6666
if [[ $normal_wheel == *"cu118"* ]]; then
6767
# if $normal_wheel matches cu118, do not upload the index.html
6868
echo "Skipping index files for cu118 wheels"
69-
elif [[ $normal_wheel == *"cu121"* ]]; then
70-
# if $normal_wheel matches cu121, do not upload the index.html
71-
echo "Skipping index files for cu121 wheels"
69+
elif [[ $normal_wheel == *"cu126"* ]]; then
70+
# if $normal_wheel matches cu126, do not upload the index.html
71+
echo "Skipping index files for cu126 wheels"
7272
else
73-
# only upload index.html for cu124 wheels (default wheels)
73+
# only upload index.html for cu128 wheels (default wheels)
7474
aws s3 cp index.html "s3://vllm-wheels/nightly/vllm/index.html"
7575
fi
7676

77-
aws s3 cp "$wheel" "s3://vllm-wheels/$version/"
77+
aws s3 cp "$wheel" "s3://vllm-wheels/$version/"

.buildkite/test-pipeline.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ steps:
455455
- tests/models/encoder_decoder/language
456456
commands:
457457
# Install causal-conv1d for plamo2 models here, as it is not compatible with pip-compile.
458-
- pip install causal-conv1d
458+
- pip install 'git+https://github.com/Dao-AILab/causal-conv1d@v1.5.0.post8'
459459
- pytest -v -s models/decoder_only/language -m 'core_model or quant_model'
460460
- pytest -v -s models/embedding/language -m core_model
461461

.github/workflows/lint-and-deploy.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ jobs:
6666
export AWS_SECRET_ACCESS_KEY=minioadmin
6767
sleep 30 && kubectl -n ns-vllm logs -f "$(kubectl -n ns-vllm get pods | awk '/deployment/ {print $1;exit}')" &
6868
helm install --wait --wait-for-jobs --timeout 5m0s --debug --create-namespace --namespace=ns-vllm test-vllm examples/online_serving/chart-helm -f examples/online_serving/chart-helm/values.yaml --set secrets.s3endpoint=http://minio:9000 --set secrets.s3bucketname=testbucket --set secrets.s3accesskeyid=$AWS_ACCESS_KEY_ID --set secrets.s3accesskey=$AWS_SECRET_ACCESS_KEY --set resources.requests.cpu=1 --set resources.requests.memory=4Gi --set resources.limits.cpu=2 --set resources.limits.memory=5Gi --set image.env[0].name=VLLM_CPU_KVCACHE_SPACE --set image.env[1].name=VLLM_LOGGING_LEVEL --set-string image.env[0].value="1" --set-string image.env[1].value="DEBUG" --set-string extraInit.s3modelpath="opt-125m/" --set-string 'resources.limits.nvidia\.com/gpu=0' --set-string 'resources.requests.nvidia\.com/gpu=0' --set-string image.repository="vllm-cpu-env"
69-
69+
7070
- name: curl test
7171
run: |
7272
kubectl -n ns-vllm port-forward service/test-vllm-service 8001:80 &
@@ -79,4 +79,4 @@ jobs:
7979
"max_tokens": 7,
8080
"temperature": 0
8181
}'):$CODE"
82-
echo "$CODE"
82+
echo "$CODE"

.pre-commit-config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ repos:
4646
rev: 0.6.17
4747
hooks:
4848
- id: pip-compile
49-
args: [requirements/test.in, -o, requirements/test.txt]
49+
args: [requirements/test.in, -o, requirements/test.txt, --index-strategy, unsafe-best-match]
5050
files: ^requirements/test\.(in|txt)$
5151
- repo: local
5252
hooks:

CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ set(HIP_SUPPORTED_ARCHS "gfx906;gfx908;gfx90a;gfx942;gfx950;gfx1030;gfx1100;gfx1
4646
# requirements.txt files and should be kept consistent. The ROCm torch
4747
# versions are derived from docker/Dockerfile.rocm
4848
#
49-
set(TORCH_SUPPORTED_VERSION_CUDA "2.6.0")
50-
set(TORCH_SUPPORTED_VERSION_ROCM "2.6.0")
49+
set(TORCH_SUPPORTED_VERSION_CUDA "2.7.0")
50+
set(TORCH_SUPPORTED_VERSION_ROCM "2.7.0")
5151

5252
#
5353
# Try to find python package with an executable that exactly matches

docker/Dockerfile

+32-14
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
# docs/source/contributing/dockerfile/dockerfile.md and
66
# docs/source/assets/contributing/dockerfile-stages-dependency.png
77

8-
ARG CUDA_VERSION=12.4.1
8+
ARG CUDA_VERSION=12.8.1
99
#################### BASE BUILD IMAGE ####################
1010
# prepare basic build environment
1111
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04 AS base
12-
ARG CUDA_VERSION=12.4.1
12+
ARG CUDA_VERSION=12.8.1
1313
ARG PYTHON_VERSION=3.12
1414
ARG TARGETPLATFORM
1515
ENV DEBIAN_FRONTEND=noninteractive
@@ -37,6 +37,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
3737
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
3838
# Reference: https://github.com/astral-sh/uv/pull/1694
3939
ENV UV_HTTP_TIMEOUT=500
40+
ENV UV_INDEX_STRATEGY="unsafe-best-match"
4041

4142
# Upgrade to GCC 10 to avoid https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92519
4243
# as it was causing spam when compiling the CUTLASS kernels
@@ -69,7 +70,8 @@ RUN --mount=type=cache,target=/root/.cache/uv \
6970
COPY requirements/common.txt requirements/common.txt
7071
COPY requirements/cuda.txt requirements/cuda.txt
7172
RUN --mount=type=cache,target=/root/.cache/uv \
72-
uv pip install --system -r requirements/cuda.txt
73+
uv pip install --system -r requirements/cuda.txt \
74+
--extra-index-url https://download.pytorch.org/whl/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
7375

7476
# cuda arch list used by torch
7577
# can be useful for both `dev` and `test`
@@ -92,9 +94,11 @@ COPY requirements/build.txt requirements/build.txt
9294
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
9395
# Reference: https://github.com/astral-sh/uv/pull/1694
9496
ENV UV_HTTP_TIMEOUT=500
97+
ENV UV_INDEX_STRATEGY="unsafe-best-match"
9598

9699
RUN --mount=type=cache,target=/root/.cache/uv \
97-
uv pip install --system -r requirements/build.txt
100+
uv pip install --system -r requirements/build.txt \
101+
--extra-index-url https://download.pytorch.org/whl/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
98102

99103
COPY . .
100104
ARG GIT_REPO_CHECK=0
@@ -161,22 +165,25 @@ FROM base as dev
161165
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
162166
# Reference: https://github.com/astral-sh/uv/pull/1694
163167
ENV UV_HTTP_TIMEOUT=500
168+
ENV UV_INDEX_STRATEGY="unsafe-best-match"
169+
170+
# Workaround for #17068
171+
RUN --mount=type=cache,target=/root/.cache/uv \
172+
uv pip install --system --no-build-isolation "git+https://github.com/state-spaces/mamba@v2.2.4"
164173

165174
COPY requirements/lint.txt requirements/lint.txt
166175
COPY requirements/test.txt requirements/test.txt
167176
COPY requirements/dev.txt requirements/dev.txt
168-
# Workaround for #17068
169-
RUN --mount=type=cache,target=/root/.cache/uv \
170-
uv pip install --system mamba-ssm==2.2.4 --no-build-isolation
171177
RUN --mount=type=cache,target=/root/.cache/uv \
172-
uv pip install --system -r requirements/dev.txt
178+
uv pip install --system -r requirements/dev.txt \
179+
--extra-index-url https://download.pytorch.org/whl/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
173180
#################### DEV IMAGE ####################
174181

175182
#################### vLLM installation IMAGE ####################
176183
# image with vLLM installed
177184
# TODO: Restore to base image after FlashInfer AOT wheel fixed
178185
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu22.04 AS vllm-base
179-
ARG CUDA_VERSION=12.4.1
186+
ARG CUDA_VERSION=12.8.1
180187
ARG PYTHON_VERSION=3.12
181188
WORKDIR /vllm-workspace
182189
ENV DEBIAN_FRONTEND=noninteractive
@@ -209,6 +216,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
209216
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
210217
# Reference: https://github.com/astral-sh/uv/pull/1694
211218
ENV UV_HTTP_TIMEOUT=500
219+
ENV UV_INDEX_STRATEGY="unsafe-best-match"
212220

213221
# Workaround for https://github.com/openai/triton/issues/2507 and
214222
# https://github.com/pytorch/pytorch/issues/107960 -- hopefully
@@ -229,7 +237,8 @@ RUN --mount=type=cache,target=/root/.cache/uv \
229237
# Install vllm wheel first, so that torch etc will be installed.
230238
RUN --mount=type=bind,from=build,src=/workspace/dist,target=/vllm-workspace/dist \
231239
--mount=type=cache,target=/root/.cache/uv \
232-
uv pip install --system dist/*.whl --verbose
240+
uv pip install --system dist/*.whl --verbose \
241+
--extra-index-url https://download.pytorch.org/whl/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
233242

234243
# If we need to build FlashInfer wheel before its release:
235244
# $ export FLASHINFER_ENABLE_AOT=1
@@ -246,19 +255,26 @@ RUN --mount=type=bind,from=build,src=/workspace/dist,target=/vllm-workspace/dist
246255
RUN --mount=type=cache,target=/root/.cache/uv \
247256
. /etc/environment && \
248257
if [ "$TARGETPLATFORM" != "linux/arm64" ]; then \
249-
uv pip install --system https://github.com/flashinfer-ai/flashinfer/releases/download/v0.2.1.post2/flashinfer_python-0.2.1.post2+cu124torch2.6-cp38-abi3-linux_x86_64.whl ; \
258+
# TESTING: install FlashInfer from source to test 2.7.0 final RC
259+
FLASHINFER_ENABLE_AOT=1 TORCH_CUDA_ARCH_LIST='7.5 8.0 8.6 8.9 9.0+PTX' \
260+
uv pip install --system --no-build-isolation "git+https://github.com/flashinfer-ai/flashinfer@v0.2.2.post1" ; \
250261
fi
251262
COPY examples examples
252263
COPY benchmarks benchmarks
253264
COPY ./vllm/collect_env.py .
254265

266+
RUN --mount=type=cache,target=/root/.cache/uv \
267+
. /etc/environment && \
268+
uv pip list
269+
255270
# Although we build Flashinfer with AOT mode, there's still
256271
# some issues w.r.t. JIT compilation. Therefore we need to
257272
# install build dependencies for JIT compilation.
258273
# TODO: Remove this once FlashInfer AOT wheel is fixed
259274
COPY requirements/build.txt requirements/build.txt
260275
RUN --mount=type=cache,target=/root/.cache/uv \
261-
uv pip install --system -r requirements/build.txt
276+
uv pip install --system -r requirements/build.txt \
277+
--extra-index-url https://download.pytorch.org/whl/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
262278

263279
#################### vLLM installation IMAGE ####################
264280

@@ -272,11 +288,13 @@ ADD . /vllm-workspace/
272288
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
273289
# Reference: https://github.com/astral-sh/uv/pull/1694
274290
ENV UV_HTTP_TIMEOUT=500
291+
ENV UV_INDEX_STRATEGY="unsafe-best-match"
275292

276-
# install development dependencies (for testing)
277293
# Workaround for #17068
278294
RUN --mount=type=cache,target=/root/.cache/uv \
279-
uv pip install --system mamba-ssm==2.2.4 --no-build-isolation
295+
uv pip install --system --no-build-isolation "git+https://github.com/state-spaces/mamba@v2.2.4"
296+
297+
# install development dependencies (for testing)
280298
RUN --mount=type=cache,target=/root/.cache/uv \
281299
uv pip install --system -r requirements/dev.txt
282300

docs/source/getting_started/installation/gpu/cuda.inc.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Installation
22

3-
vLLM contains pre-compiled C++ and CUDA (12.1) binaries.
3+
vLLM contains pre-compiled C++ and CUDA (12.6) binaries.
44

55
## Requirements
66

@@ -23,12 +23,12 @@ Therefore, it is recommended to install vLLM with a **fresh new** environment. I
2323
You can install vLLM using either `pip` or `uv pip`:
2424

2525
```console
26-
# Install vLLM with CUDA 12.4.
26+
# Install vLLM with CUDA 12.6.
2727
pip install vllm # If you are using pip.
2828
uv pip install vllm # If you are using uv.
2929
```
3030

31-
As of now, vLLM's binaries are compiled with CUDA 12.4 and public PyTorch release versions by default. We also provide vLLM binaries compiled with CUDA 12.1, 11.8, and public PyTorch release versions:
31+
As of now, vLLM's binaries are compiled with CUDA 12.6 and public PyTorch release versions by default. We also provide vLLM binaries compiled with CUDA 12.8, 11.8, and public PyTorch release versions:
3232

3333
```console
3434
# Install vLLM with CUDA 11.8.

examples/online_serving/chart-helm/values.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ image:
88
# -- Image tag
99
tag: "latest"
1010
# -- Container launch command
11-
command: ["vllm", "serve", "/data/", "--served-model-name", "opt-125m", "--dtype", "bfloat16", "--host", "0.0.0.0", "--port", "8000"]
11+
command: ["vllm", "serve", "/data/", "--served-model-name", "opt-125m", "--dtype", "float32", "--block-size", "16", "--host", "0.0.0.0", "--port", "8000"]
1212

1313
# -- Container port
1414
containerPort: 8000

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ requires = [
66
"packaging",
77
"setuptools>=61",
88
"setuptools-scm>=8.0",
9-
"torch == 2.6.0",
9+
"torch == 2.7.0",
1010
"wheel",
1111
"jinja2",
1212
]

requirements/build.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ ninja
44
packaging
55
setuptools>=61
66
setuptools-scm>=8
7-
torch==2.6.0
7+
torch==2.7.0
88
wheel
99
jinja2>=3.1.6

requirements/cpu.txt

+6-5
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@
22
-r common.txt
33

44
# Dependencies for CPUs
5-
torch==2.6.0+cpu; platform_machine == "x86_64"
6-
torch==2.6.0; platform_system == "Darwin"
7-
torch==2.6.0; platform_machine == "ppc64le" or platform_machine == "aarch64"
5+
--extra-index-url https://download.pytorch.org/whl/cpu
6+
torch==2.7.0+cpu; platform_machine == "x86_64"
7+
torch==2.7.0; platform_system == "Darwin"
8+
torch==2.7.0; platform_machine == "ppc64le" or platform_machine == "aarch64"
89
torch==2.7.0.dev20250304; platform_machine == "s390x"
910

1011
# required for the image processor of minicpm-o-2_6, this must be updated alongside torch
1112
torchaudio; platform_machine != "ppc64le" and platform_machine != "s390x"
12-
torchaudio==2.6.0; platform_machine == "ppc64le"
13+
torchaudio==2.7.0; platform_machine == "ppc64le"
1314

1415
# required for the image processor of phi3v, this must be updated alongside torch
1516
torchvision; platform_machine != "ppc64le" and platform_machine != "s390x"
16-
torchvision==0.21.0; platform_machine == "ppc64le"
17+
torchvision==0.22.0; platform_machine == "ppc64le"
1718
datasets # for benchmark scripts
1819

1920
# cpu cannot use triton 3.3.0

requirements/cuda.txt

+5-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ numba == 0.61.2; python_version > '3.9'
66

77
# Dependencies for NVIDIA GPUs
88
ray[cgraph]>=2.43.0, !=2.44.* # Ray Compiled Graph, required for pipeline parallelism in V1.
9-
torch==2.6.0
10-
torchaudio==2.6.0
9+
torch==2.7.0
10+
torchaudio==2.7.0
1111
# These must be updated alongside torch
12-
torchvision==0.21.0 # Required for phi3v processor. See https://github.com/pytorch/vision?tab=readme-ov-file#installation for corresponding version
13-
xformers==0.0.29.post2; platform_system == 'Linux' and platform_machine == 'x86_64' # Requires PyTorch 2.6.0
12+
torchvision==0.22.0 # Required for phi3v processor. See https://github.com/pytorch/vision?tab=readme-ov-file#installation for corresponding version
13+
# https://github.com/facebookresearch/xformers/releases/tag/v0.0.30
14+
xformers==0.0.30; platform_system == 'Linux' and platform_machine == 'x86_64' # Requires PyTorch >= 2.7

requirements/rocm-build.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
-r common.txt
33

44
--extra-index-url https://download.pytorch.org/whl/rocm6.2.4
5-
torch==2.6.0
6-
torchvision==0.21.0
7-
torchaudio==2.6.0
5+
torch==2.7.0
6+
torchvision==0.22.0
7+
torchaudio==2.7.0
88

99
triton==3.2
1010
cmake>=3.26,<4

requirements/test.in

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ sentence-transformers # required for embedding tests
2323
soundfile # required for audio tests
2424
jiwer # required for audio tests
2525
timm # required for internvl test
26-
torch==2.6.0
27-
torchaudio==2.6.0
28-
torchvision==0.21.0
26+
torch==2.7.0
27+
torchaudio==2.7.0
28+
torchvision==0.22.0
2929
transformers_stream_generator # required for qwen-vl test
3030
mamba_ssm # required for plamo2 test
3131
matplotlib # required for qwen-vl test

0 commit comments

Comments
 (0)