A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 5, 04:45 UTC
[CI] Add PyTorch nightly build and test pipeline (#37226)
Signed-off-by: atalman <atalman@fb.com>
Andrey Talman committed
Apr 14, 2026 at 20:13 UTC
b569620f720d0c07bcb90bcc29dacaf0ce318d85
3 files changed
+83
-9
.buildkite/image_build/image_build_torch_nightly.sh
new
+68
@@ -0,0 +1,68 @@
1
+#!/bin/bash
2
+set -euo pipefail
3
+
4
+# Build a vLLM test image with PyTorch nightly installed.
5
+# Called by the pipeline generator's "vLLM Against PyTorch Nightly" group.
6
+
7
+if [[ $# -lt 5 ]]; then
8
+ echo "Usage: $0 <registry> <repo> <commit> <branch> <image_tag>"
9
+ exit 1
10
+fi
11
+
12
+REGISTRY=$1
13
+REPO=$2
14
+BUILDKITE_COMMIT=$3
15
+BRANCH=$4
16
+IMAGE_TAG=$5
17
+
18
+# --- Arguments ---
19
+echo "--- :mag: Arguments"
20
+echo "REGISTRY: ${REGISTRY}"
21
+echo "REPO: ${REPO}"
22
+echo "BUILDKITE_COMMIT: ${BUILDKITE_COMMIT}"
23
+echo "BRANCH: ${BRANCH}"
24
+echo "IMAGE_TAG: ${IMAGE_TAG}"
25
+
26
+# --- ECR login ---
27
+echo "--- :key: ECR login"
28
+aws ecr-public get-login-password --region us-east-1 \
29
+ | docker login --username AWS --password-stdin "$REGISTRY"
30
+aws ecr get-login-password --region us-east-1 \
31
+ | docker login --username AWS --password-stdin 936637512419.dkr.ecr.us-east-1.amazonaws.com
32
+
33
+# --- Set up buildx ---
34
+echo "--- :docker: Setting up buildx"
35
+docker buildx create --name vllm-builder --driver docker-container --use || true
36
+docker buildx inspect --bootstrap
37
+docker buildx ls
38
+
39
+# --- Skip if image already exists ---
40
+echo "--- :mag: Checking if image already exists"
41
+if docker manifest inspect "$IMAGE_TAG" >/dev/null 2>&1; then
42
+ echo "Image found: $IMAGE_TAG — skipping build"
43
+ exit 0
44
+fi
45
+echo "Image not found, proceeding with build..."
46
+
47
+# --- CUDA 13.0 for nightly builds ---
48
+# Nightly CI uses CUDA 13.0 while regular CI stays on CUDA 12.9
49
+NIGHTLY_CUDA_VERSION="13.0.0"
50
+NIGHTLY_BUILD_BASE_IMAGE="nvidia/cuda:${NIGHTLY_CUDA_VERSION}-devel-ubuntu22.04"
51
+NIGHTLY_FINAL_BASE_IMAGE="nvidia/cuda:${NIGHTLY_CUDA_VERSION}-base-ubuntu22.04"
52
+
53
+echo "--- :docker: Building torch nightly image (CUDA ${NIGHTLY_CUDA_VERSION})"
54
+docker buildx build --file docker/Dockerfile \
55
+ --build-arg max_jobs=16 \
56
+ --build-arg buildkite_commit="$BUILDKITE_COMMIT" \
57
+ --build-arg USE_SCCACHE=1 \
58
+ --build-arg PYTORCH_NIGHTLY=1 \
59
+ --build-arg CUDA_VERSION="${NIGHTLY_CUDA_VERSION}" \
60
+ --build-arg BUILD_BASE_IMAGE="${NIGHTLY_BUILD_BASE_IMAGE}" \
61
+ --build-arg FINAL_BASE_IMAGE="${NIGHTLY_FINAL_BASE_IMAGE}" \
62
+ --build-arg torch_cuda_arch_list="8.0 8.9 9.0 10.0 12.0" \
63
+ --tag "$IMAGE_TAG" \
64
+ --push \
65
+ --target test \
66
+ --progress plain .
67
+
68
+echo "--- :white_check_mark: Torch nightly image build complete: $IMAGE_TAG"
.buildkite/test_areas/models_basic.yaml
+7
-4
@@ -1,5 +1,5 @@
1
group: Models - Basic
2
-depends_on:
2
+depends_on:
3
- image-build
4
steps:
5
- label: Basic Models Tests (Initialization)
@@ -13,10 +13,11 @@ steps:
13
commands:
14
# Run a subset of model initialization tests
15
- pytest -v -s models/test_initialization.py::test_can_initialize_small_subset
16
+ mirror:
17
+ torch_nightly: {}
18
19
- label: Basic Models Tests (Extra Initialization) %N
20
timeout_in_minutes: 45
19
- torch_nightly: true
21
source_file_dependencies:
22
- vllm/model_executor/models/
23
- tests/models/test_initialization.py
@@ -27,6 +28,8 @@ steps:
28
# test.) Also run if model initialization test file is modified
29
- pytest -v -s models/test_initialization.py -k 'not test_can_initialize_small_subset' --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB
30
parallelism: 2
31
+ mirror:
32
+ torch_nightly: {}
33
34
- label: Basic Models Tests (Other)
35
timeout_in_minutes: 45
@@ -42,10 +45,10 @@ steps:
45
device: mi325_1
46
depends_on:
47
- image-build-amd
45
-
48
+
49
50
- label: Basic Models Test (Other CPU) # 5min
48
- depends_on:
51
+ depends_on:
52
- image-build-cpu
53
timeout_in_minutes: 10
54
source_file_dependencies:
.buildkite/test_areas/models_language.yaml
+8
-5
@@ -1,10 +1,9 @@
1
group: Models - Language
2
-depends_on:
2
+depends_on:
3
- image-build
4
steps:
5
- label: Language Models Tests (Standard)
6
timeout_in_minutes: 25
7
- torch_nightly: true
7
source_file_dependencies:
8
- vllm/
9
- tests/models/language
@@ -12,10 +11,11 @@ steps:
11
# Test standard language models, excluding a subset of slow tests
12
- pip freeze | grep -E 'torch'
13
- pytest -v -s models/language -m 'core_model and (not slow_test)'
14
+ mirror:
15
+ torch_nightly: {}
16
17
- label: Language Models Tests (Extra Standard) %N
18
timeout_in_minutes: 45
18
- torch_nightly: true
19
source_file_dependencies:
20
- vllm/model_executor/models/
21
- tests/models/language/pooling/test_embedding.py
@@ -27,10 +27,11 @@ steps:
27
- pip freeze | grep -E 'torch'
28
- pytest -v -s models/language -m 'core_model and slow_test' --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB
29
parallelism: 2
30
+ mirror:
31
+ torch_nightly: {}
32
33
- label: Language Models Tests (Hybrid) %N
34
timeout_in_minutes: 75
33
- torch_nightly: true
35
source_file_dependencies:
36
- vllm/
37
- tests/models/language/generation
@@ -42,6 +43,8 @@ steps:
43
# Shard hybrid language model tests
44
- pytest -v -s models/language/generation -m hybrid_model --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB
45
parallelism: 2
46
+ mirror:
47
+ torch_nightly: {}
48
49
- label: Language Models Test (Extended Generation) # 80min
50
timeout_in_minutes: 110
@@ -62,7 +65,7 @@ steps:
65
- image-build-amd
66
commands:
67
- uv pip install --system --no-build-isolation 'git+https://github.com/AndreasKaratzas/mamba@fix-rocm-7.0-warp-size-constexpr'
65
- - uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.5.2'
68
+ - uv pip install --system --no-build-isolation 'git+https://github.com/Dao-AILab/causal-conv1d@v1.6.0'
69
- pytest -v -s models/language/generation -m '(not core_model) and (not hybrid_model)'
70
71
- label: Language Models Test (PPL)