[CI] Clean DeepSeek V4 tests and installation scripts (#26609)

This commit is contained in:
Baizhou Zhang
2026-05-28 15:22:59 -07:00
committed by GitHub
parent f838adb7d4
commit 435c4ffb30
13 changed files with 66 additions and 198 deletions
+15
View File
@@ -214,6 +214,20 @@ jobs:
run_timeout_minutes: '60' run_timeout_minutes: '60'
secrets: inherit secrets: inherit
extra-b-test-deepep-4-gpu-b200:
needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: ${{ !failure() && !cancelled() && needs.check-changes.result == 'success' && (needs.call-gate.result == 'success' || needs.call-gate.result == 'skipped') }}
uses: ./.github/workflows/_pr-test-stage.yml
with:
self_name: extra-b-test-deepep-4-gpu-b200
runner_config: deepep-4-gpu-b200
check_changes: ${{ toJson(needs.check-changes.outputs) }}
caller_inputs: ${{ toJson(inputs) }}
partitions: ${{ needs.check-changes.outputs.partitions }}
run_timeout_minutes: '60'
timeout_per_file: '1800'
secrets: inherit
extra-b-test-deepep-8-gpu-h200: extra-b-test-deepep-8-gpu-h200:
needs: [check-changes, call-gate, sgl-kernel-build-wheels] needs: [check-changes, call-gate, sgl-kernel-build-wheels]
if: ${{ !failure() && !cancelled() && needs.check-changes.result == 'success' && (needs.call-gate.result == 'success' || needs.call-gate.result == 'skipped') }} if: ${{ !failure() && !cancelled() && needs.check-changes.result == 'success' && (needs.call-gate.result == 'success' || needs.call-gate.result == 'skipped') }}
@@ -243,6 +257,7 @@ jobs:
extra-b-test-4-gpu-h100, extra-b-test-4-gpu-h100,
extra-b-test-4-gpu-b200, extra-b-test-4-gpu-b200,
extra-b-test-8-gpu-h200, extra-b-test-8-gpu-h200,
extra-b-test-deepep-4-gpu-b200,
extra-b-test-deepep-8-gpu-h200, extra-b-test-deepep-8-gpu-h200,
] ]
if: always() if: always()
+12 -12
View File
@@ -462,13 +462,13 @@ jobs:
warmup_server_models: 'lmsys/sglang-ci-dsv3-test:4' warmup_server_models: 'lmsys/sglang-ci-dsv3-test:4'
secrets: inherit secrets: inherit
base-c-test-4-gpu-b200: base-c-test-deepep-4-gpu-b200:
needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels] needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels]
if: ${{ !failure() && !cancelled() }} if: ${{ !failure() && !cancelled() }}
uses: ./.github/workflows/_pr-test-stage.yml uses: ./.github/workflows/_pr-test-stage.yml
with: with:
self_name: base-c-test-4-gpu-b200 self_name: base-c-test-deepep-4-gpu-b200
runner_config: 4-gpu-b200 runner_config: deepep-4-gpu-b200
check_changes: ${{ toJson(needs.check-changes.outputs) }} check_changes: ${{ toJson(needs.check-changes.outputs) }}
caller_inputs: ${{ toJson(inputs) }} caller_inputs: ${{ toJson(inputs) }}
partitions: ${{ needs.check-changes.outputs.partitions }} partitions: ${{ needs.check-changes.outputs.partitions }}
@@ -476,27 +476,27 @@ jobs:
timeout_per_file: '1800' timeout_per_file: '1800'
secrets: inherit secrets: inherit
base-c-test-dsv4-4-gpu-b200: base-c-test-deepep-8-gpu-h200:
needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels] needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels]
if: ${{ !failure() && !cancelled() }} if: ${{ !failure() && !cancelled() }}
uses: ./.github/workflows/_pr-test-stage.yml uses: ./.github/workflows/_pr-test-stage.yml
with: with:
self_name: base-c-test-dsv4-4-gpu-b200 self_name: base-c-test-deepep-8-gpu-h200
runner_config: dsv4-4-gpu-b200 runner_config: deepep-8-gpu-h200
check_changes: ${{ toJson(needs.check-changes.outputs) }} check_changes: ${{ toJson(needs.check-changes.outputs) }}
caller_inputs: ${{ toJson(inputs) }} caller_inputs: ${{ toJson(inputs) }}
partitions: ${{ needs.check-changes.outputs.partitions }} partitions: ${{ needs.check-changes.outputs.partitions }}
run_timeout_minutes: '45' run_timeout_minutes: '30'
timeout_per_file: '1800' timeout_per_file: '1800'
secrets: inherit secrets: inherit
base-c-test-dsv4-8-gpu-h200: base-c-test-4-gpu-b200:
needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels] needs: [check-changes, call-gate, wait-for-base-b, sgl-kernel-build-wheels]
if: ${{ !failure() && !cancelled() }} if: ${{ !failure() && !cancelled() }}
uses: ./.github/workflows/_pr-test-stage.yml uses: ./.github/workflows/_pr-test-stage.yml
with: with:
self_name: base-c-test-dsv4-8-gpu-h200 self_name: base-c-test-4-gpu-b200
runner_config: dsv4-8-gpu-h200 runner_config: 4-gpu-b200
check_changes: ${{ toJson(needs.check-changes.outputs) }} check_changes: ${{ toJson(needs.check-changes.outputs) }}
caller_inputs: ${{ toJson(inputs) }} caller_inputs: ${{ toJson(inputs) }}
partitions: ${{ needs.check-changes.outputs.partitions }} partitions: ${{ needs.check-changes.outputs.partitions }}
@@ -531,9 +531,9 @@ jobs:
base-c-test-8-gpu-h20, base-c-test-8-gpu-h20,
base-c-test-8-gpu-h200, base-c-test-8-gpu-h200,
base-c-test-deepep-4-gpu-h100, base-c-test-deepep-4-gpu-h100,
base-c-test-deepep-4-gpu-b200,
base-c-test-deepep-8-gpu-h200,
base-c-test-4-gpu-b200, base-c-test-4-gpu-b200,
base-c-test-dsv4-4-gpu-b200,
base-c-test-dsv4-8-gpu-h200,
# base-c-test-4-gpu-gb200, # Temporarily disabled — no GB200 runner # base-c-test-4-gpu-gb200, # Temporarily disabled — no GB200 runner
] ]
if: always() if: always()
-8
View File
@@ -548,20 +548,12 @@ RUN --mount=type=cache,target=/root/.cache/pip \
# the `nixl` import path) but unconditionally requires nixl-cu12, so we install # the `nixl` import path) but unconditionally requires nixl-cu12, so we install
# it with --no-deps and pair it with the matching nixl-cu12 / nixl-cu13 binary # it with --no-deps and pair it with the matching nixl-cu12 / nixl-cu13 binary
# to avoid shipping wrong-CUDA libs on cu13 images. # to avoid shipping wrong-CUDA libs on cu13 images.
# The upstream flash-mla packages are required for running deepseek-v4 models
RUN --mount=type=cache,target=/root/.cache/pip if [ "${CUDA_VERSION%%.*}" = "12" ]; then \ RUN --mount=type=cache,target=/root/.cache/pip if [ "${CUDA_VERSION%%.*}" = "12" ]; then \
python3 -m pip install nixl nixl-cu12 --no-deps ; \ python3 -m pip install nixl nixl-cu12 --no-deps ; \
python3 -m pip install cuda-python==12.9 ; \ python3 -m pip install cuda-python==12.9 ; \
cd /sgl-workspace && git clone https://github.com/deepseek-ai/FlashMLA.git flash-mla \
&& cd flash-mla && git submodule update --init --recursive \
&& pip install --no-build-isolation -v . ; \
elif [ "${CUDA_VERSION%%.*}" = "13" ]; then \ elif [ "${CUDA_VERSION%%.*}" = "13" ]; then \
python3 -m pip install nixl nixl-cu13 --no-deps ; \ python3 -m pip install nixl nixl-cu13 --no-deps ; \
python3 -m pip install cuda-python==13.2.0 ; \ python3 -m pip install cuda-python==13.2.0 ; \
cd /sgl-workspace && git clone https://github.com/deepseek-ai/FlashMLA.git flash-mla \
&& ln -s /usr/local/cuda/include/cccl/cuda /usr/local/cuda/include/cuda \
&& cd flash-mla && git submodule update --init --recursive \
&& pip install --no-build-isolation -v . ; \
fi fi
# Add yank script # Add yank script
+24 -1
View File
@@ -150,5 +150,28 @@ else
if [ "$NVCC_MAJOR" = "13" ]; then if [ "$NVCC_MAJOR" = "13" ]; then
sed -i "/^ include_dirs = \['csrc\/'\]/a\ include_dirs.append('${CUDA_HOME:-/usr/local/cuda}/include/cccl')" setup.py sed -i "/^ include_dirs = \['csrc\/'\]/a\ include_dirs.append('${CUDA_HOME:-/usr/local/cuda}/include/cccl')" setup.py
fi fi
python3 setup.py install
# Build for both Hopper (sm_90) and Blackwell (sm_100) so the same wheel
# runs on H200 and B200 runners. Mirrors the CUDA-version-keyed list in
# docker/Dockerfile's DeepEP build stage.
if [ -n "${NVCC_VER:-}" ]; then
CUDA_VERSION="$NVCC_VER"
elif command -v nvcc >/dev/null 2>&1; then
CUDA_VERSION=$(nvcc --version | grep -oP 'release \K[0-9]+\.[0-9]+')
else
CUDA_VERSION=$(nvidia-smi | grep "CUDA Version" | head -n1 | awk '{print $9}' || true)
fi
if [ -z "${CUDA_VERSION:-}" ]; then
echo "FATAL: could not determine CUDA toolkit version (NVCC_VER unset, nvcc missing, nvidia-smi empty)"
exit 1
fi
if [ "$CUDA_VERSION" = "12.8" ]; then
CHOSEN_TORCH_CUDA_ARCH_LIST='9.0;10.0'
elif awk -v ver="$CUDA_VERSION" 'BEGIN {exit !(ver > 12.8)}'; then
# CUDA > 12.8 supports sm_103 (Blackwell)
CHOSEN_TORCH_CUDA_ARCH_LIST='9.0;10.0;10.3'
else
CHOSEN_TORCH_CUDA_ARCH_LIST='9.0'
fi
TORCH_CUDA_ARCH_LIST="${CHOSEN_TORCH_CUDA_ARCH_LIST}" python3 setup.py install
fi fi
-161
View File
@@ -1,161 +0,0 @@
#!/bin/bash
set -euxo pipefail
source scripts/ci/cuda/ci_install_dependency.sh
if [ -z "${PIP_CMD:-}" ]; then
echo "FATAL:PIP_CMD is unset after sourcing ci_install_dependency.sh"
exit 1
fi
export GDRCOPY_HOME=/usr/src/gdrdrv-2.5.1/
export CUDA_HOME=/usr/local/cuda
# Detect architecture
ARCH=$(uname -m)
if [ "$ARCH" != "x86_64" ] && [ "$ARCH" != "aarch64" ]; then
echo "Unsupported architecture: $ARCH"
exit 1
fi
###############################################################################
# Install FlashMLA
###############################################################################
INSTALL_FLASH_MLA=1
if [ "${FORCE_REBUILD_FLASH_MLA:-0}" = "1" ]; then
echo "FORCE_REBUILD_FLASH_MLA=1; uninstalling any cached flash_mla before rebuild."
${PIP_UNINSTALL_CMD:-pip uninstall -y} flash_mla ${PIP_UNINSTALL_SUFFIX:-} || true
elif python3 -c "import flash_mla" >/dev/null 2>&1; then
echo "flash_mla is already installed or importable. Skipping installation."
INSTALL_FLASH_MLA=0
fi
if [ "$INSTALL_FLASH_MLA" = "1" ]; then
# CUDA 13.0 puts CCCL headers under /usr/local/cuda/include/cccl/cuda but
# FlashMLA's build expects them at /usr/local/cuda/include/cuda. Symlink so
# the compiler finds them. Idempotent: skip if the link/dir already exists.
if [ ! -e /usr/local/cuda/include/cuda ] && [ -d /usr/local/cuda/include/cccl/cuda ]; then
ln -s /usr/local/cuda/include/cccl/cuda /usr/local/cuda/include/cuda
fi
FLASH_MLA_DIR=/root/.cache/flash-mla
rm -rf ${FLASH_MLA_DIR}
git clone https://github.com/deepseek-ai/FlashMLA.git ${FLASH_MLA_DIR}
pushd ${FLASH_MLA_DIR}
git submodule update --init --recursive
${PIP_CMD:-pip} install --no-build-isolation -v . ${PIP_INSTALL_SUFFIX:-}
popd
fi
###############################################################################
# Install DeepEP
###############################################################################
# Default to a forced rebuild so changes to TORCH_CUDA_ARCH_LIST or any other
# build-time input don't silently reuse a cached deep_ep from a prior run.
INSTALL_DEEPEP=1
if [ "${FORCE_REBUILD_DEEPEP:-1}" = "1" ]; then
echo "FORCE_REBUILD_DEEPEP=1; uninstalling any cached deep_ep before rebuild."
${PIP_UNINSTALL_CMD:-pip uninstall -y} deep_ep ${PIP_UNINSTALL_SUFFIX:-} || true
elif python3 -c "import deep_ep" >/dev/null 2>&1; then
echo "deep_ep is already installed or importable. Skipping installation."
INSTALL_DEEPEP=0
fi
if [ "$INSTALL_DEEPEP" = "1" ]; then
# Install system dependencies
# Use fallback logic in case apt fails due to unrelated broken packages on the runner
DEEPEP_SYSTEM_DEPS="curl wget git sudo rdma-core infiniband-diags openssh-server perftest libibumad3 libibverbs-dev libibverbs1 ibverbs-providers ibverbs-utils libnl-3-200 libnl-route-3-200 librdmacm1 build-essential cmake"
apt-get install -y --no-install-recommends $DEEPEP_SYSTEM_DEPS || {
echo "Warning: apt-get install failed, checking if required packages are available..."
for pkg in $DEEPEP_SYSTEM_DEPS; do
if ! dpkg -l "$pkg" 2>/dev/null | grep -q "^ii"; then
echo "ERROR: Required package $pkg is not installed and apt-get failed"
exit 1
fi
done
echo "All required packages are already installed, continuing..."
}
# Install GDRCopy
rm -rf /opt/gdrcopy && mkdir -p /opt/gdrcopy
cd /opt/gdrcopy
git clone https://github.com/NVIDIA/gdrcopy.git .
git checkout v2.5.1
apt-get update || true # May fail due to unrelated broken packages
GDRCOPY_DEPS_1="nvidia-dkms-580"
GDRCOPY_DEPS_2="build-essential devscripts debhelper fakeroot pkg-config dkms"
GDRCOPY_DEPS_3="check libsubunit0 libsubunit-dev python3-venv"
for deps_group in "$GDRCOPY_DEPS_1" "$GDRCOPY_DEPS_2" "$GDRCOPY_DEPS_3"; do
apt-get install -y --no-install-recommends $deps_group || {
echo "Warning: apt-get install failed for '$deps_group', checking if packages are available..."
for pkg in $deps_group; do
if ! dpkg -l "$pkg" 2>/dev/null | grep -q "^ii"; then
echo "ERROR: Required package $pkg is not installed and apt-get failed"
exit 1
fi
done
echo "All required packages from '$deps_group' are already installed, continuing..."
}
done
cd packages
CUDA=/usr/local/cuda ./build-deb-packages.sh
dpkg -i gdrdrv-dkms_*.deb
dpkg -i libgdrapi_*.deb
dpkg -i gdrcopy-tests_*.deb
dpkg -i gdrcopy_*.deb
# Set up library paths based on architecture
LIB_PATH="/usr/lib/$ARCH-linux-gnu"
if [ ! -e "$LIB_PATH/libmlx5.so" ]; then
ln -s $LIB_PATH/libmlx5.so.1 $LIB_PATH/libmlx5.so
fi
apt-get update || true
apt-get install -y --no-install-recommends libfabric-dev || {
if ! dpkg -l libfabric-dev 2>/dev/null | grep -q "^ii"; then
echo "ERROR: Required package libfabric-dev is not installed and apt-get failed"
exit 1
fi
echo "libfabric-dev is already installed, continuing..."
}
# Install DeepEP
DEEPEP_DIR=/root/.cache/deepep
rm -rf ${DEEPEP_DIR}
git clone https://github.com/deepseek-ai/DeepEP.git ${DEEPEP_DIR}
pushd ${DEEPEP_DIR}
git checkout 9af0e0d0e74f3577af1979c9b9e1ac2cad0104ee
popd
cd ${DEEPEP_DIR}
# CUDA 13.0 puts CCCL headers in /usr/local/cuda/include/cccl/ but nvshmem
# includes them as <cuda/__cccl_config> expecting /usr/local/cuda/include/cuda/.
# Add the cccl path to setup.py include_dirs so the compiler finds them.
NVCC_MAJOR=$(nvcc --version 2>/dev/null | grep -oP 'release \K[0-9]+' || echo "0")
if [ "$NVCC_MAJOR" = "13" ]; then
sed -i "/^ include_dirs = \['csrc\/'\]/a\ include_dirs.append('${CUDA_HOME:-/usr/local/cuda}/include/cccl')" setup.py
fi
# Build for both Hopper (sm_90) and Blackwell (sm_100) so the same wheel
# runs on H200 and B200 runners. Mirrors the CUDA-version-keyed list in
# docker/Dockerfile's DeepEP build stage.
if [ -n "${NVCC_VER:-}" ]; then
CUDA_VERSION="$NVCC_VER"
elif command -v nvcc >/dev/null 2>&1; then
CUDA_VERSION=$(nvcc --version | grep -oP 'release \K[0-9]+\.[0-9]+')
else
CUDA_VERSION=$(nvidia-smi | grep "CUDA Version" | head -n1 | awk '{print $9}' || true)
fi
if [ -z "${CUDA_VERSION:-}" ]; then
echo "FATAL: could not determine CUDA toolkit version (NVCC_VER unset, nvcc missing, nvidia-smi empty)"
exit 1
fi
if [ "$CUDA_VERSION" = "12.8" ]; then
CHOSEN_TORCH_CUDA_ARCH_LIST='9.0;10.0'
elif awk -v ver="$CUDA_VERSION" 'BEGIN {exit !(ver > 12.8)}'; then
# CUDA > 12.8 supports sm_103 (Blackwell)
CHOSEN_TORCH_CUDA_ARCH_LIST='9.0;10.0;10.3'
else
CHOSEN_TORCH_CUDA_ARCH_LIST='9.0'
fi
TORCH_CUDA_ARCH_LIST="${CHOSEN_TORCH_CUDA_ARCH_LIST}" python3 setup.py install
fi
+2 -4
View File
@@ -17,7 +17,6 @@
_anchors: _anchors:
default_install: &default scripts/ci/cuda/ci_install_dependency.sh default_install: &default scripts/ci/cuda/ci_install_dependency.sh
deepep_install: &deepep scripts/ci/cuda/ci_install_deepep.sh deepep_install: &deepep scripts/ci/cuda/ci_install_deepep.sh
dsv4_install: &dsv4 scripts/ci/cuda/ci_install_dsv4_dep.sh
runner_configs: runner_configs:
1-gpu-small: { install: *default, artifact_version: v4, install_timeout: "20", runs_on: 1-gpu-5090 } 1-gpu-small: { install: *default, artifact_version: v4, install_timeout: "20", runs_on: 1-gpu-5090 }
@@ -28,6 +27,5 @@ runner_configs:
8-gpu-h200: { install: *default, artifact_version: v4, install_timeout: "20", runs_on: 8-gpu-h200 } 8-gpu-h200: { install: *default, artifact_version: v4, install_timeout: "20", runs_on: 8-gpu-h200 }
8-gpu-h20: { install: *deepep, artifact_version: v4, install_timeout: "20", runs_on: 8-gpu-h20, rdma_devices: "mlx5_1,mlx5_2,mlx5_3,mlx5_4" } 8-gpu-h20: { install: *deepep, artifact_version: v4, install_timeout: "20", runs_on: 8-gpu-h20, rdma_devices: "mlx5_1,mlx5_2,mlx5_3,mlx5_4" }
deepep-4-gpu-h100: { install: *deepep, artifact_version: v4, install_timeout: "20", runs_on: 4-gpu-h100 } deepep-4-gpu-h100: { install: *deepep, artifact_version: v4, install_timeout: "20", runs_on: 4-gpu-h100 }
deepep-8-gpu-h200: { install: *deepep, artifact_version: v4, install_timeout: "20", runs_on: 8-gpu-h200-deepep } deepep-4-gpu-b200: { install: *deepep, artifact_version: v6, install_timeout: "20", runs_on: $b200_runner }
dsv4-4-gpu-b200: { install: *dsv4, artifact_version: v6, install_timeout: "30", runs_on: $b200_runner } deepep-8-gpu-h200: { install: *deepep, artifact_version: v4, install_timeout: "20", runs_on: 8-gpu-h200 }
dsv4-8-gpu-h200: { install: *dsv4, artifact_version: v4, install_timeout: "30", runs_on: 8-gpu-h200 }
@@ -21,7 +21,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=235, stage="extra-b", runner_config="4-gpu-b200") register_cuda_ci(est_time=235, stage="extra-b", runner_config="deepep-4-gpu-b200")
MODEL = "deepseek-ai/DeepSeek-V4-Flash" MODEL = "deepseek-ai/DeepSeek-V4-Flash"
SERVER_LAUNCH_TIMEOUT = 3600 SERVER_LAUNCH_TIMEOUT = 3600
@@ -11,7 +11,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=250, stage="base-c", runner_config="dsv4-8-gpu-h200") register_cuda_ci(est_time=250, stage="base-c", runner_config="deepep-8-gpu-h200")
DSV4_FLASH_MODEL = "sgl-project/DeepSeek-V4-Flash-FP8" DSV4_FLASH_MODEL = "sgl-project/DeepSeek-V4-Flash-FP8"
@@ -4,7 +4,7 @@ Launches TP=4 with flashinfer_mxfp4 MoE runner + EAGLE speculative decoding.
Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism) Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism)
plus a GSM8K accuracy gate. plus a GSM8K accuracy gate.
Registry: base-c-test-dsv4-4-gpu-b200 (per-commit, 4x B200) Registry: base-c-test-deepep-4-gpu-b200 (per-commit, 4x B200)
""" """
import unittest import unittest
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=465, stage="base-c", runner_config="dsv4-4-gpu-b200") register_cuda_ci(est_time=465, stage="base-c", runner_config="deepep-4-gpu-b200")
MODEL = "deepseek-ai/DeepSeek-V4-Flash" MODEL = "deepseek-ai/DeepSeek-V4-Flash"
SERVER_LAUNCH_TIMEOUT = 3600 SERVER_LAUNCH_TIMEOUT = 3600
@@ -4,7 +4,7 @@ Launches TP=4 with Marlin FP4 MoE runner + EAGLE speculative decoding.
Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism) Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism)
plus a GSM8K accuracy gate. plus a GSM8K accuracy gate.
Registry: base-c-test-dsv4-8-gpu-h200 (per-commit, 8x H200 — only 4 used by TP=4) Registry: base-c-test-deepep-8-gpu-h200 (per-commit, 8x H200 — only 4 used by TP=4)
""" """
import unittest import unittest
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=370, stage="base-c", runner_config="dsv4-8-gpu-h200") register_cuda_ci(est_time=370, stage="base-c", runner_config="deepep-8-gpu-h200")
def _flashinfer_has_sm90_cutlass_mxfp4() -> bool: def _flashinfer_has_sm90_cutlass_mxfp4() -> bool:
@@ -4,7 +4,7 @@ Launches TP=4 with flashinfer_mxfp4 MoE runner + EAGLE speculative decoding.
Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism) Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism)
plus a GSM8K accuracy gate. plus a GSM8K accuracy gate.
Registry: base-c-test-dsv4-4-gpu-b200 (per-commit, 4x B200) Registry: extra-b-test-deepep-4-gpu-b200 (label-gated, 4x B200)
""" """
import unittest import unittest
@@ -20,7 +20,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=900, stage="base-c", runner_config="dsv4-4-gpu-b200") register_cuda_ci(est_time=900, stage="extra-b", runner_config="deepep-4-gpu-b200")
MODEL = "deepseek-ai/DeepSeek-V4-Flash" MODEL = "deepseek-ai/DeepSeek-V4-Flash"
SERVER_LAUNCH_TIMEOUT = 3600 SERVER_LAUNCH_TIMEOUT = 3600
@@ -5,7 +5,7 @@ with FP4 experts disabled via SGLANG_DSV4_FP4_EXPERTS=0.
Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism) Runs 12 ServerSanity probes (correctness, streaming, concurrency, determinism)
plus a GSM8K accuracy gate. plus a GSM8K accuracy gate.
Registry: base-c-test-dsv4-8-gpu-h200 (per-commit, 8x H200 — only 4 used by TP=4) Registry: extra-b-test-deepep-8-gpu-h200 (label-gated, 8x H200 — only 4 used by TP=4)
""" """
import unittest import unittest
@@ -21,7 +21,7 @@ from sglang.test.test_utils import (
try_cached_model, try_cached_model,
) )
register_cuda_ci(est_time=280, stage="base-c", runner_config="dsv4-8-gpu-h200") register_cuda_ci(est_time=280, stage="extra-b", runner_config="deepep-8-gpu-h200")
MODEL_FP8 = "sgl-project/DeepSeek-V4-Flash-FP8" MODEL_FP8 = "sgl-project/DeepSeek-V4-Flash-FP8"
SERVER_LAUNCH_TIMEOUT = 3600 SERVER_LAUNCH_TIMEOUT = 3600
+3 -2
View File
@@ -59,8 +59,8 @@ PER_COMMIT_SUITES = {
"base-c-test-8-gpu-h200", "base-c-test-8-gpu-h200",
"base-c-test-8-gpu-b200", "base-c-test-8-gpu-b200",
"base-c-test-deepep-4-gpu-h100", "base-c-test-deepep-4-gpu-h100",
"base-c-test-dsv4-4-gpu-b200", "base-c-test-deepep-4-gpu-b200",
"base-c-test-dsv4-8-gpu-h200", "base-c-test-deepep-8-gpu-h200",
# extra-a / extra-b: label-gated PR opt-in suites in pr-test-extra.yml # extra-a / extra-b: label-gated PR opt-in suites in pr-test-extra.yml
# (tests still tagged per-commit but skipped on default PR runs). # (tests still tagged per-commit but skipped on default PR runs).
"extra-a-test-1-gpu-small", "extra-a-test-1-gpu-small",
@@ -69,6 +69,7 @@ PER_COMMIT_SUITES = {
"extra-b-test-4-gpu-h100", "extra-b-test-4-gpu-h100",
"extra-b-test-4-gpu-b200", "extra-b-test-4-gpu-b200",
"extra-b-test-8-gpu-h200", "extra-b-test-8-gpu-h200",
"extra-b-test-deepep-4-gpu-b200",
"extra-b-test-deepep-8-gpu-h200", "extra-b-test-deepep-8-gpu-h200",
], ],
HWBackend.NPU: [ HWBackend.NPU: [