[CI] Bound the CUDA graph capture range in test launches and lift the spec fixture's admission cap (#33776)
This commit is contained in:
@@ -58,8 +58,12 @@ class SpecEagleServerBase(CustomTestCase):
|
||||
attention_backend = "flashinfer"
|
||||
# Primary axis: False -> overlap scheduler; True -> synchronous (non-overlap).
|
||||
disable_overlap = False
|
||||
mem_fraction_static = 0.85
|
||||
max_running_requests = 8
|
||||
# Leaves ~3.3GB on a 32GB card for the verify logits and activations at a
|
||||
# cap of 64; higher OOMs, lower starves the KV pool into capping the batch.
|
||||
mem_fraction_static = 0.80
|
||||
# The eval kits drive 128 client threads, so a small cap just serializes them.
|
||||
# Capture follows: capture_bs is clipped to req_to_token_pool.size (cap + 1).
|
||||
max_running_requests = 64
|
||||
chunked_prefill_size = 128
|
||||
# bf16 rather than fp16: fp16 activations can overflow (-> Inf -> NaN) on
|
||||
# degenerate draft branches in verify and trip the CI NaN asserts.
|
||||
|
||||
@@ -952,6 +952,15 @@ def popen_launch_server(
|
||||
other_args = list(other_args)
|
||||
other_args += ["--device", str(device)]
|
||||
|
||||
# Prefill dominates capture time: the bucket list runs to chunked_prefill_size
|
||||
# (8192 on H100-class GPUs) and its largest buckets cost seconds each, while
|
||||
# 97% of CI prefill batches are under 1024 tokens -- a server that serves one
|
||||
# test file captures the rest and never replays it. Decode is left alone: its
|
||||
# capture cost is per-phase, not per-bucket. Pass the flag to opt out.
|
||||
prefill_flag = "--cuda-graph-max-bs-prefill"
|
||||
if not any(str(arg).startswith(prefill_flag) for arg in other_args):
|
||||
other_args = list(other_args) + [prefill_flag, "1024"]
|
||||
|
||||
# CI-specific: Validate cache and enable offline mode if complete
|
||||
if env is None:
|
||||
env = os.environ.copy()
|
||||
|
||||
Reference in New Issue
Block a user