fix: fix vlm cuda graph shape stability (#30868)

This commit is contained in:
Mick
2026-07-19 22:35:51 +08:00
committed by GitHub
parent a03ca46a28
commit d4801be447
11 changed files with 327 additions and 27 deletions
@@ -0,0 +1,56 @@
from unittest.mock import MagicMock
import pytest
import torch
from sglang.test.ci.ci_register import register_cuda_ci
register_cuda_ci(est_time=5, stage="base-b", runner_config="1-gpu-small")
if not torch.cuda.is_available():
pytest.skip("CUDA piecewise backend requires CUDA", allow_module_level=True)
import sglang.srt.compilation.cuda_piecewise_backend as cuda_backend
from sglang.srt.compilation.cuda_piecewise_backend import (
ConcreteSizeEntry,
CUDAPiecewiseBackend,
)
def test_runtime_recompile_without_capture_stream_falls_back(monkeypatch):
"""A Dynamo replacement backend cannot capture outside a PCG session."""
compile_config = MagicMock()
compile_config.get_capture_sizes.return_value = []
backend = CUDAPiecewiseBackend(
graph=MagicMock(),
compile_config=compile_config,
inductor_config={},
graph_pool=None,
piecewise_compile_index=0,
total_piecewise_compiles=1,
sym_shape_indices=[0],
compiled_graph_for_general_shape=MagicMock(),
sglang_backend=MagicMock(),
)
backend.first_run_finished = True
fallback = MagicMock(return_value="fallback-result")
backend.concrete_size_entries = {
4: ConcreteSizeEntry(
runtime_shape=4,
need_to_compile=False,
use_cudagraph=True,
runnable=fallback,
num_finished_warmup=1,
)
}
monkeypatch.setattr(cuda_backend, "get_pcg_capture_stream", lambda: None)
monkeypatch.setattr(cuda_backend, "is_in_torch_compile_warmup", lambda: False)
monkeypatch.setattr(cuda_backend, "print_warning_once", lambda _message: None)
assert backend(4) == "fallback-result"
fallback.assert_called_once_with(4)
if __name__ == "__main__":
raise SystemExit(pytest.main([__file__, "-v"]))