ci: Migrate AMD workflows to new MI325 runners; temporarily disabled failed CI's to be added back (#14226)

This commit is contained in:
sunxxuns
2025-12-03 14:33:27 -05:00
committed by GitHub
parent abf6272bdd
commit 5bbd83a2c8
6 changed files with 86 additions and 16 deletions

View File

@@ -19,7 +19,7 @@ jobs:
if: github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request'
strategy:
matrix:
runner: [linux-mi300-gpu-2, linux-mi325-gpu-2-nightly]
runner: [linux-mi325-gpu-2]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code

View File

@@ -58,7 +58,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-1]
runner: [linux-mi325-gpu-1]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -95,7 +95,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-1]
runner: [linux-mi325-gpu-1]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -125,7 +125,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-1]
runner: [linux-mi325-gpu-1]
part: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
runs-on: ${{matrix.runner}}
steps:
@@ -155,7 +155,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-2]
runner: [linux-mi325-gpu-2]
part: [0, 1]
runs-on: ${{matrix.runner}}
steps:
@@ -180,7 +180,8 @@ jobs:
unit-test-backend-8-gpu-amd:
needs: [check-changes, unit-test-backend-2-gpu-amd]
if: always() && !failure() && !cancelled() &&
# Temporarily disabled - uncomment when ready to re-enable
if: false && always() && !failure() && !cancelled() &&
((needs.check-changes.outputs.main_package == 'true') || (needs.check-changes.outputs.sgl_kernel == 'true'))
env:
RUNNER_LABELS: linux-mi300-gpu-8
@@ -188,7 +189,7 @@ jobs:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-8]
part: [0, 1, 2]
part: [0, 1]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -205,10 +206,16 @@ jobs:
- name: Install dependencies
run: bash scripts/ci/amd_ci_install_dependency.sh
- name: Test RCCL multi-GPU communication
timeout-minutes: 5
run: |
echo "Testing RCCL multi-GPU communication with debug info..."
docker exec ci_sglang bash -c "cd /sglang-checkout && NCCL_DEBUG=INFO RCCL_DEBUG=INFO torchrun --nproc_per_node=8 scripts/ci/test_rccl_multi_gpu.py"
- name: Run test
timeout-minutes: 60
run: |
bash scripts/ci/amd_ci_exec.sh python3 run_suite.py --suite per-commit-8-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 3 --timeout-per-file 3600
bash scripts/ci/amd_ci_exec.sh python3 run_suite.py --suite per-commit-8-gpu-amd --auto-partition-id ${{ matrix.part }} --auto-partition-size 2 --timeout-per-file 3600
performance-test-1-gpu-part-1-amd:
needs: [check-changes, stage-a-test-1-amd]
@@ -217,7 +224,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-1]
runner: [linux-mi325-gpu-1]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -262,7 +269,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-1]
runner: [linux-mi325-gpu-1]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -301,7 +308,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-2]
runner: [linux-mi325-gpu-2]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -350,7 +357,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-1]
runner: [linux-mi325-gpu-1]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -381,7 +388,7 @@ jobs:
strategy:
fail-fast: false
matrix:
runner: [linux-mi300-gpu-2]
runner: [linux-mi325-gpu-2]
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
@@ -401,7 +408,7 @@ jobs:
- name: Evaluate accuracy (TP=2)
timeout-minutes: 30
run: |
bash scripts/ci/amd_ci_exec.sh -e SGLANG_USE_AITER=0 python3 test_moe_eval_accuracy_large.py
bash scripts/ci/amd_ci_exec.sh -e SGLANG_USE_AITER=0 -e HF_HUB_ENABLE_HF_TRANSFER=0 python3 test_moe_eval_accuracy_large.py
pr-test-amd-finish:
needs:
@@ -414,7 +421,7 @@ jobs:
stage-a-test-1-amd,
unit-test-backend-1-gpu-amd,
unit-test-backend-2-gpu-amd,
unit-test-backend-8-gpu-amd,
# unit-test-backend-8-gpu-amd, # Temporarily disabled
performance-test-1-gpu-part-1-amd,
performance-test-1-gpu-part-2-amd,
performance-test-2-gpu-amd,

1
.gitignore vendored
View File

@@ -247,3 +247,4 @@ lmms-eval
**/.claude/
**/.serena/
ctags/

View File

@@ -151,7 +151,7 @@ echo "Launching container: ci_sglang"
docker run -dt --user root --device=/dev/kfd ${DEVICE_FLAG} \
-v "${GITHUB_WORKSPACE:-$PWD}:/sglang-checkout" \
$CACHE_VOLUME \
--ipc=host --group-add video \
--group-add video \
--shm-size 32g \
--cap-add=SYS_PTRACE \
-e HF_TOKEN="${HF_TOKEN:-}" \

View File

@@ -0,0 +1,60 @@
#!/usr/bin/env python3
"""
Simple RCCL test for multi-GPU communication.
This test verifies that RCCL can initialize and communicate across multiple GPUs.
"""
import os
import sys
import torch
import torch.distributed as dist
def test_rccl_allreduce():
"""Test basic RCCL allreduce operation across all GPUs."""
if not torch.cuda.is_available():
print("CUDA not available, skipping test")
sys.exit(1)
# Initialize process group with NCCL (RCCL on AMD)
dist.init_process_group(backend="nccl")
rank = dist.get_rank()
world_size = dist.get_world_size()
print(f"[Rank {rank}/{world_size}] Initialized successfully")
# Set device
device = torch.device(f"cuda:{rank}")
torch.cuda.set_device(device)
print(f"[Rank {rank}] Device: {torch.cuda.get_device_name(device)}")
print(
f"[Rank {rank}] Device memory: {torch.cuda.get_device_properties(device).total_memory / 1e9:.2f} GB"
)
# Create a tensor and perform allreduce
tensor = torch.ones(1000, device=device) * rank
print(f"[Rank {rank}] Before allreduce: tensor sum = {tensor.sum().item()}")
dist.all_reduce(tensor, op=dist.ReduceOp.SUM)
expected_sum = sum(range(world_size)) * 1000
actual_sum = tensor.sum().item()
print(
f"[Rank {rank}] After allreduce: tensor sum = {actual_sum}, expected = {expected_sum}"
)
if abs(actual_sum - expected_sum) < 0.1:
print(f"[Rank {rank}] ✓ RCCL allreduce test PASSED")
dist.destroy_process_group()
sys.exit(0)
else:
print(f"[Rank {rank}] ✗ RCCL allreduce test FAILED")
dist.destroy_process_group()
sys.exit(1)
if __name__ == "__main__":
test_rccl_allreduce()

View File

@@ -39,6 +39,8 @@ MODEL_SCORE_THRESHOLDS = {
failing_models = {
"neuralmagic/gemma-2-2b-it-FP8",
"neuralmagic/DeepSeek-Coder-V2-Lite-Instruct-FP8", # RuntimeError: This GEMM is not supported!
"zai-org/GLM-4.5-Air-FP8", # TypeError: cannot unpack non-iterable ForwardMetadata object
}